MIDI-router на Raspberry Pi

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Хочу рассказать о том, как решить проблему, которая наверняка знакома любителям аппаратных синтезаторов.


Что делать, если хочется состыковать MIDI-контроллер и синтезатор, но у одного из них есть только USB разъем и нет MIDI? Причем, по понятным причинам хочется все это сделать не используя компьютер.


Я несколько раз перерывал интернет в поисках устройства для этого, но так ничего и не нашел — кроме пары ссылок на пару малотиражных устройств за немалые деньги, которые уже сняты с производства.


В какой-то момент меня осенило: можно же взять Raspberry Pi и сделать все на нем — это самый настоящий компьютер, а на нем такие вещи делаются легко.


Он, наверное, будет слабоват для полноценной обработки звука, но поток сообщений MIDI уж должен прокачать.


[К слову, существует звуковой эффект процессор для Raspberry Pi, но он требует последней модели Raspberry Pi, которая намного дороже, плюс дополнительного шилда, который тоже недешев, и я решил не заморачиваться].


Сказано — сделано. Обзавелся Raspberry Pi самой первой модели и за пару вечеров собрал рабочий прототип. В двух словах как он работает.


ALSA Midi


Сперва я планировал взять PureData и написать для него несложный патч, который будет перекладывать midi-сообщения из одного порта в другой.


Но когда я начал заводить в нем MIDI на линуксе я нашел гораздо более простой подход.


В Linux есть стандартная система звукового ввода-вывода — ALSA. Она поддерживает работу как со звуковыми потоками, так и с MIDI.


Для того, чтобы какая-то программа могла принимать MIDI-сообщениям через ALSA сперва нужно ее подключить к источнику этих сообщений. Но это же именно то, что нам нужно для решения этой задачи! Недолго думая я выкинул PureData и сделал все родными средствами ALSA.


Вот что получилось в итоге.


aconnect


При подключении MIDI-устройства в систему оно появляется в устройствах ALSA и с ним можно проводить разные операции стандартными командами. Нас интересует команда aconnect, которая как раз производит подключение-отключение портов. Подробную документацию на нее можно прочитать здесь.


Реально же нам нужны всего две операции: вывести список имеющихся устройств и подключить одно устройство к другому:


# Вывести список MIDI-устройств, имеющихся в системе
aconnect -l

# Пересылать весь вывод с Arturia Keystep на Xio
aconnect 'Arturia KeyStep 32' 'Xio'

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


Альтернативы


Если нужно все же как-то обрабатывать MIDI-поток до пересылки его на выход, можно воспользоваться несколькими вариантами:


  • Каким-то из языков обработки звука:
    • PureData в headless режиме
    • Вероятно, можно использовать SuperCollider
    • ChucK
  • Mididings

Если знаете еще варианты — присылайте.


Ссылки


Когда я в прошлый раз изучал этот вопрос почему-то мне не удалось ничего найти.


На этот раз нашлось довольно много всего, выложу ссылки сюда, чтобы вам не повторять мой путь, если возникнет такая же проблема.


  • https://www.youtube.com/watch?v=neXswJJcatc
  • http://forums.synthstrom.com/discussion/1271/usb-host-midi-interface-with-raspberry-zero
  • https://github.com/nuc/Midi-Connector
  • https://stimresp.wordpress.com/2016/02/08/using-a-raspberry-pi-as-usb-midi-host/

Интересные статьи

Интересные статьи

Существует много webpack пакетов находящих дубли в бандле, самый популярный из них duplicate-package-checker-webpack-plugin, но он требует пересборки проекта, а так как стояла задача автоматизиро...
Автор поместил Raspberry Pi Zero, Bluetooth-«свисток» и кабель внутрь своего нового брайлевского дисплея Handy Tech Active Star 40. Встроенный USB-порт обеспечивает питание. Получился самодос...
На прошлой неделе Raspberry Pi Foundation выпустила первую официальную мышь и клавиатуру (с USB-концентратором) для Raspberry Pi. Продажи клавиатуры только начались, но умельцам потребовалось...
Беспилотное такси «Яндекса» в Сколково «Яндекс» и Hyundai Mobis, один из крупнейших в мире производителей автомобильных компонентов, подписали соглашение о разработке программно-аппаратного...
Согласно многочисленным исследованиям поведения пользователей на сайте, порядка 25% посетителей покидают ресурс, если страница грузится более 4 секунд.