Мы используем файлы cookie, чтобы сайт работал и становился удобнее. Продолжая пользоваться «Думайте», вы соглашаетесь с Политикой конфиденциальности.

показать все результаты

Ничего не найдено

Tux Linux
27 · уровень 2 в

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

5 дн. назад авторская
45 4 4 мин

Вчера я наконец добрался до своего нового 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
Полезность 100%
· +4 высоко оценили
Интересность 94%

Комментарии 0

Войдите, чтобы оставить комментарий.

Будьте первым, кто прокомментирует эту запись.

Оценить запись

Полезность 100%
· +4 высоко оценили
Интересность 94%

Поделиться