Как я всё-таки подружил Roland AE-01 с Linux по Bluetooth MIDI

Вчера я наконец добрался до своего нового Roland AE-01. И задача на вечер казалась совершенно элементарной: подключить инструмент к компьютеру по Bluetooth, открыть программный синтезатор и попробовать поиграть.
Что вообще может пойти не так?
Как выяснилось — практически всё.
Компьютер увидел инструмент сразу. Bluetooth торжественно сообщил, что устройство подключено. Linux даже показал его среди MIDI-устройств. Я запустил синтезатор, соединил всё, что положено соединить, взял саксофон, подул...
Тишина.
Нажимаю клавиши — ничего. Сам синтезатор работает, звук из колонок есть, Bluetooth подключён, MIDI-устройство существует. Казалось бы, вся цепочка собрана.
Только музыка почему-то об этом не знает.
Начались раскопки
Поначалу я грешил на настройки звука. Потом на синтезатор. Потом на PipeWire. Потом на MIDI. В какой-то момент подозреваемых стало столько, что проще было объявить виновным весь компьютер.
Но постепенно выяснилась довольно забавная вещь.
Roland с компьютером прекрасно разговаривал. Просто Linux его не понимал.
Сам инструмент действительно передавал по Bluetooth данные о моей игре. Более того, система даже создавала для него MIDI-порт. Но между этими двумя точками что-то терялось.
То есть получалась почти человеческая ситуация:
— Roland, ты меня слышишь?
— Слышу.
— Linux, ты Roland видишь?
— Вижу.
— Ну тогда передайте ноту!
...
Тишина.
Пришлось лезть глубже.
И вот тут Roland наконец заговорил
В Bluetooth есть возможность посмотреть не только само подключённое устройство, но и данные, которыми оно обменивается с компьютером.
И в какой-то момент я добрался непосредственно до потока, который отправлял AE-01.
Я подул в инструмент — и вместо пустого терминала побежали цифры.
Вот это уже был хороший знак.
Потом среди этих цифр обнаружились вполне нормальные музыкальные команды. Компьютер действительно получал:
какую ноту я сыграл, когда начал её играть и когда закончил.
Но самое интересное обнаружилось чуть позже.
Roland передавал ещё и силу дыхания.
Дую тихонько — значение небольшое. Усиливаю поток воздуха — оно растёт. Ослабляю — уменьшается. Перестаю дуть — падает до нуля.
И вот здесь я уже окончательно понял, что эту штуку мы запустим.
Потому что данные есть. Если готовый механизм Linux почему-то не может правильно передать их музыкальной программе, остаётся старый добрый вариант:
сделать свой.
Я написал переводчика с Roland на Linux
В итоге появилась небольшая программа-посредник.
Она сидит между инструментом и музыкальными программами и занимается довольно простой работой:
Roland → Bluetooth → моя программа → обычный MIDI → синтезатор.
Для музыкальной программы после этого всё выглядит совершенно нормально. Она больше не знает и знать не хочет, какие приключения происходят где-то внутри Bluetooth.
Для неё просто появляется обычное MIDI-устройство:
AE-01 Linux MIDI
Подключаю его к Surge XT.
Беру саксофон.
Дую.
И он играет.
Вот этот момент после нескольких часов возни особенно прекрасен. 😄
Причём теперь работает не только выбор нот. В компьютер приходит информация о дыхании, а значит, синтезатор потенциально может реагировать на то, как именно я играю, а не только на то, какую клавишу нажал.
И вот это уже действительно интересно.
А ведь всё начиналось с музыкального тренажёра
Во всей этой истории для меня самое ценное даже не то, что удалось победить Bluetooth.
Я ведь купил AE-01 в первую очередь ради экспериментов с музыкальным тренажёром.
И теперь я получил практически идеальный источник информации.
Тренажёру не придётся гадать по микрофону, какую ноту я пытался сыграть. Электронный инструмент может сообщить это совершенно точно.
Он знает:
какая нота сыграна, когда она началась, сколько продолжалась и как менялось дыхание во время исполнения.
А дальше уже можно сравнивать это с нотами произведения.
Нужно было сыграть Соль — сыграл ли я Соль?
Нужно было вступить через две секунды — когда вступил на самом деле?
Нота должна длиться секунду — сколько я её держал?
Дыхание должно быть ровным — а что происходило с ним у меня?
Вот теперь идея обратной связи в тренажёре становится значительно интереснее.
Причём следующим уровнем как раз может стать тот самый ИИ-преподаватель, о котором я недавно писал. Обычная программа собирает точные данные об исполнении, а искусственный интеллект уже пытается объяснить человеку, что у него получается плохо и над чем стоит поработать.
Самое смешное во всей истории
Изначальный план на вечер был примерно такой:
Подключить саксофон по Bluetooth и проверить, играет ли он через Linux.
Фактический план получился несколько другим:
Подключить Bluetooth, обнаружить MIDI, обнаружить отсутствие MIDI, проверить звук, проверить синтезатор, залезть внутрь Bluetooth, найти настоящий поток данных Roland, разобраться, что именно передаёт инструмент, написать собственный мост и только после этого наконец сыграть ноту.
В общем, обычное:
«Сейчас быстренько проверю».
Зато теперь Roland AE-01 действительно работает с Linux по Bluetooth MIDI.
А главное — вчера я не просто заставил электронный саксофон издать звук через компьютер.
Я фактически получил первый рабочий кусочек той системы, ради которой вся эта история с музыкальным тренажёром и затевалась.
И это уже гораздо интереснее одной сыгранной ноты.
Tux Linux
Поддержать автора
- номер счёта/карты
- 2204 3201 5444 9864
- получатель
- Боев Федор
Комментарии 0
Войдите, чтобы оставить комментарий.
Будьте первым, кто прокомментирует эту запись.