LINUX.ORG.RU

Audio


17

0

Всего сообщений: 4

Преобразование звука в MIDI в реальном времени

Спустя 2,5 месяца работы я готов вам представить свою программу wave2midi. Она анализирует спектр нот в звуковом сигнале в реальном времени и выдает на выход MIDI события, которые можно записывать в таких программах, как MuseScore, или проигрывать в синтезаторе Yoshimi. Моя программа может воспринимать даже аккорды!

Программа работает в среде UNIX подобных систем с звуковой системой JACK Audio Connection Kit.

К ней можно подключать любые программы, поддерживающие JACK.

Я использую w2midi для того, чтобы получать звук синтезатора, играя на электрогитаре и для того, чтобы получать звук синтезатора своим голосом в микрофон! Вы можете придумать свой способ её использовать. Можно, например, для более точного распознавания пропускать входящий сигнал через компрессор, а выходящие ноты транспонировать (я думаю есть такие утилиты, если нет, то напишу).

>>> Видео демонстрация

Программа состоит из интерфейса командной строки (w2midi) и графического интерфейса (w2midi_qt). CLI часть написана на C99, а графическая - на C++ с использованием фреймворка Qt5.

w2midi распространяется под лицензией Apache 2.0, w2midi_qt под GPL-3.0-only.

Хочу обратить внимание на настройку:

  • Чем выше буфер, тем выше задержка и точность
  • Если программа улавливает лишние звуки, измените порог срабатывания в Дб

Программа распознает частоты с помощью преобразования Фурье, а конкретно, с помощью библиотеки FFTW3. Частоты преобразуются в ноты по простой формуле: 12 * \log_2 \frac{f}{d}, где f - полученная частота, d - опорная. Гармонический ряд - относителен, я считаю его относительно частоты 440 герц (нота ля первой октавы).

Отдельно хочу обратить внимание на обертоны. Если просто анализировать ноты по такому алгоритму, то получается настоящая какафония… Это из за того, что музыкальные инструменты издают не чистую синусоиду, а еще и дополнительные гармоники, называемые обертонами, придающие тембр. Но они нам не нужны во время записи нот. Чтобы их побороть я придумал очень простой алгоритм: из полутонов, стоящий в интервале (расстояние между нотами) секунда (1-2 полутона) выбирается самый громкий. Да, все так просто… В музыке НИКОГДА не используются секунды. Самое интересное, что об этом нигде не написано, просто заметил эмпирическим путём такое интересное свойство.

Вот такая история. Инструкции по сборке из исходных кодов находятся в README.

>>> Видео демонстрация

>>> Репозиторий w2midi

>>> Репозиторий w2midi_qt

>>> Просмотр (1920x1080, 1088 Kb)

 , , , ,

realbarmaley
()

Мой пульт управления GrandOrgue для Sway WM

Я заметил что на форуме много музыкантов, поэтому возможно, кому-то будет интересно.

Когда я решил добавить планшет к моему самодельному органу, я не смог найти программы, которая позволяла бы контролировать Sway экран посредством планшета. Поэтому, решил потратить пару дней на разработку своего решения. Получилось довольно неплохо, задержка до секунды, что в принципе допустимо для моей задачи: обеспечить возможность включать/выключать регистры органа с планшета.

Написано полностью на Джаваскрипте. Требует Sway и node.js.

Важный момент: коммуникации не шифруются и нет проверки логина/пароля. Данное решение только для использования в локальной (домашней) сети, в которую не имеют доступ посторонние.

Репозиторий на гитхабе: https://github.com/alexkh/gorc

>>> Просмотр (3000x2244, 3510 Kb)

 , , , ,

svyatozar
()

Рабочее место музыканта-линуксоида

Сфотографировал свою кухню, пока на ней никто не бренчал. Люблю её.

Итак, что мы имеем на фото.

Нижняя клавиатура - рабочая станция Korg Trinity. Почтенный пожилой японец, родоначальник обширного семейства Trinity/Triton и их многочисленных производных. Несмотря на почтенный возраст (ориентировочно 15-20 лет, точнее сказать не могу, брал с рук), на синтезаторе ни царапинки, работает идеально. С него я обычно играю и пишу всякие пианинки, электропианинки, органы, пады, колокольчики, вот это всё - очень густое, жирное звучание. Электронные тембры, разумеется, по большей части морально устарели и годятся разве что воссоздавать дух эпохи. На таких машинках в конце девяностых - первой половине нулевых было сделано куча радио-хитов, благо, эта техника позволяет делать аранжировки, не задействую какой-либо дополнительный инструментарий: в наличие навороченный секвенсор, большой тачскрин, флоппи-дисковод, а также возможность расширять функционал за счёт установки дополнительного железа - жёстких дисков, плат, реализующих дополнительные алгоритмы синтеза, дополнительных входов/выходов, и т. д. Само собой, сейчас такой функционал гораздо проще реализуется с помощью десктопа и программного секвенсора, так что такие специализированные устройства постепенно уходят в прошлое.

На втором этаже разместилась миди-клавиатура CME UF50. Добротное устройство с кучей контроллеров и возможностью их перенастраивать как угодно под себя, с приятной упругой клавиатурой, хотя, к сожалению, достаточно шумной. Подсоединяется это миди-устройство к ноутбуку через беспроводной USB-свисток. С миди-клавиатуры я обычно играю то, что выигрышнее звучит через программный секвенсер, в основном живые акустические инструменты - скрипочки, дудочки, этнику, иногда рояльки, хотя четырёх октав маловато для комфортной игры на рояле.

На отдельном пюпитре расположился ноутбук Acer Aspire V5. На ноутбуке установлена Slackware 14.2 с Xfce, потому что ультрастабильно и легко пересобрать нужные компоненты системы под себя. Ядро пересобрано с настройками для лучшей отзывчивости, наложены патчи, добавляющие планировщик MuQSS (бывший BFS). Включен rtirq - демон, дающий высокий приоритет реального времени псевдопроцесам ядра, ответственным за работу с аудио, а также компонентам системы, отвечающим за вывод звука, и аудиоприложениям.

На ноутбуке запущен DAW - Reaper, нативный, звук выводится через бэкэнд ALSA. От использования JACK я отказался, при том же размере буфера он иногда потрескивает. Задержка ввода/вывода при игре с миди-клавиатуры составляет чуть больше 11 миллисекунд. Внутри DAW загружено несколько инстанций секвенсера Kontakt. На отдельные дорожки повешены отдельные пресеты/тембры, переключаясь между дорожками через контроллеры миди-клавиатуры или хоткеи, я переключаю тембры.

На заднем плане в кадр попали микшер, здоровенный басовый кабинет, два гитарных кабинета один на другом в углу, барабанка сбоку, в общем, типичное оборудование для «тяжёлой» комнаты на репетиционной базе.

Так и живём.

>>> Просмотр (4160x2336, 1648 Kb)

 , , , ,

meliafaro
()

Сбылась мечта идиота

Таки Subj! Мой маленький, грязный хак визуализации аудио-потока.

Поясню: до сих пор графическое представление звука было отдано на откуп главным образам всевозможным плагинам некоторых плееров. И у каждого плеера они свои, а то их и вообще нет. Т.ч. если вы хотите посмотреть на выхлоп mpd или там mplayer, то увы, скорей всего у вас ничего не выйдет.

Мне известна одна единственная программа, позволяющая подобное: extace, но работает она только с Esound и мне к сожалению запустить её за все эти годы так толком и не удалось.

И вот свершилось: в новом релизе OBSD добавили monitoring mode в родной аудио сервер aucat(1), позволяющий считывать обратно то, что на данный момент проигрывает звуковая карта. Конечно, что-то подобное можно соорудить и с ALSA или PulseAudio, но первое это linux-only, да и второго нет под OBSD.

Рад как слон. За код не ругать: это PoC, да и было уже поздно.

>>> Просмотр (1280x800, 577 Kb)

 , ,

beastie
()