MIDI и Zero-click solution
Apr. 10th, 2006 10:12 pmПосле некоторого количества экспериментов мне удалось сочинить zero-click solution для MIDI-клавиатуры. То есть чтобы при включении клавиатуры оно сразу начинало прн нажатии клавиш звуки издавать. А заодно позволяло эти звуки в MIDI-файл записывать.
Все оказалось просто и прямолинейно, но времени на выяснение того, как это делать ушло много.
Что-то я никак не могу въехать в эту MIDI-терминологию. Похоже что MIDI - это целый мир, разобраться в котором не помогает ни бэкграунд в области Computer Science, который есть у меня, ни бэкграунд в области музыки, который есть у жены.
Вот где-нибудь бы найти внятное вводное описание...
А конструкция получилась такая
Имеем Linux машину с Debian-Sarge и hotplug. Звуковые драйвера ALSA.
1. Включаем timidity в качестве софтверного синтезатора для ALSA. В Debian уже есть готовый скрипт для этого - /etc/init.d/timidity. Остается только разрешить запуск timidity демоном в /etc/default/timidity
2. Пишем хотплуговский скрипт для модуля snd-usb-audio (который обрабатывает USB-midi клавитару)
вида
Получаем следующую картину - при появлении устройства, обрабатываемого данным модулем, alsa устанавливает соединение между устройством 72:0 (ввод с MIDI-клавиатуры) и устройством 128:0 - вывод через timidity, т.е. все MIDI-события прилетающие с клавиатуры автоматически передаются на синтезатор, что не мешает, например, натравливать на 72 устройство arecordmidi.
При исчезновени устройства 72:0 соединение исчезает автомагически и по ACTION=remove ничего делать не надо.
Недостаток у этой конструкции такой, что когда вклчюена клавиатура, устройство /dev/dsp блокируется timidity. Надо бы это полечить включением альсовского миксера. Но с другой стороны - включил клавиатуру, так играй, и пусть посторонние звуки от всяких jabber-ов не отвлекают.
Все оказалось просто и прямолинейно, но времени на выяснение того, как это делать ушло много.
Что-то я никак не могу въехать в эту MIDI-терминологию. Похоже что MIDI - это целый мир, разобраться в котором не помогает ни бэкграунд в области Computer Science, который есть у меня, ни бэкграунд в области музыки, который есть у жены.
Вот где-нибудь бы найти внятное вводное описание...
А конструкция получилась такая
Имеем Linux машину с Debian-Sarge и hotplug. Звуковые драйвера ALSA.
1. Включаем timidity в качестве софтверного синтезатора для ALSA. В Debian уже есть готовый скрипт для этого - /etc/init.d/timidity. Остается только разрешить запуск timidity демоном в /etc/default/timidity
2. Пишем хотплуговский скрипт для модуля snd-usb-audio (который обрабатывает USB-midi клавитару)
вида
if [ "${ACTION}" = "add" ]; then
aconnect 72:0 128:0
fi
Получаем следующую картину - при появлении устройства, обрабатываемого данным модулем, alsa устанавливает соединение между устройством 72:0 (ввод с MIDI-клавиатуры) и устройством 128:0 - вывод через timidity, т.е. все MIDI-события прилетающие с клавиатуры автоматически передаются на синтезатор, что не мешает, например, натравливать на 72 устройство arecordmidi.
При исчезновени устройства 72:0 соединение исчезает автомагически и по ACTION=remove ничего делать не надо.
Недостаток у этой конструкции такой, что когда вклчюена клавиатура, устройство /dev/dsp блокируется timidity. Надо бы это полечить включением альсовского миксера. Но с другой стороны - включил клавиатуру, так играй, и пусть посторонние звуки от всяких jabber-ов не отвлекают.
no subject
Date: 2006-04-10 11:32 am (UTC)no subject
Date: 2006-04-10 11:41 am (UTC)Статьи о MIDI
Date: 2006-04-10 12:06 pm (UTC)no subject
Date: 2006-04-10 01:01 pm (UTC)+1
Date: 2006-04-10 07:39 pm (UTC)люблю "однорукие" маршрутизаторы
no subject
Date: 2006-04-10 09:48 pm (UTC)Re: Статьи о MIDI
Date: 2006-04-10 09:55 pm (UTC)no subject
Date: 2006-04-11 06:29 am (UTC)no subject
Date: 2006-04-11 06:36 am (UTC)no subject
Date: 2006-04-11 07:03 am (UTC)no subject
Date: 2006-04-11 09:46 am (UTC)no subject
Date: 2006-04-11 11:08 am (UTC)В четвертых, вероятно возможность переключать инструменты мне зачем-нибудь да понадобится.
Re: Статьи о MIDI
Date: 2006-04-11 12:07 pm (UTC)хуки
Date: 2007-03-27 11:08 am (UTC)no subject
Date: 2007-03-29 07:24 am (UTC)Заодно и уровень шума ниже ;)