[Программирование микроконтроллеров, Разработка под Arduino, 3D-принтеры, DIY или Сделай сам] MIDI браслет для управления синтезаторами (в основном — для органично звучащего вибрато)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
15-Апр-2021 07:30


Для нетерпеливых - ссылка на видео с демонстрацией и полным контентом поста в концеОдной из распространенных привычек среди мультиинструменталистов, когда дело доходит до игры на стандартной фортепианной клавиатуре, является попытка применить выразительность других классов инструментов к простым вкл/выкл переключателем синтезатора, как правило, без какого-либо эффекта. Это распространяется и на другие музыкальные периферии, иногда более подходящие для таких манипуляций.Обычно МИДИ клавиатуры оснащены питчбенд колесами, сенсорными полосками или джостиками, но они редко производят естественно звучащий результат и оккупируют одну из рук полностью. Именно по причине неестественности звучания одна из осей джойстика как правило привязана к вибрато.
Не удивительно, что на рынке полно устройств, которые преобразовывают это усилие в язык музыки. Первый – это Roli Seaboard, мультиполифоническая MIDI-клавиатура которая позволяет сопоставлять жесты со звуковыми параметрами. Другая схожая интерпретация этой идеи – это Хакен Континуум. Оба эти варианта поставляются с премиальным ценником, и по моему мнению - заслужено.
Следующий пример – чуть мене комплексный. Genki Waves, насколько я понимаю, состоит в основном из кольца, которое может управлять программным обеспечением. Но сайт позволяет приобрести модуль eurorack и midi-адаптер 5din, что делает этот сетап вполне универсальным.Другой вариант, если существует необходимость управлять железными синтезаторами – Enhancia Neova ring. Полный комплект состоит из кольца, станции с современными 3,5 - мм MIDI входом и выходом и программного обеспечения для точной интерпретации жестов.Но я не только не могу оправдать трату в 300 долларов на то, что могу сделать сам, я также хочу устройство, свободное от программного хоста в виде ПК, потому что я предпочитаю сетапы без управления с компьютера, и я хочу, чтобы все элементы контроля были рядом с реальным оборудованием. 
Запустив быстрый гугл поиск я нашел библиотеку ESP32BLEMIDI, которая позволяет отправлять миди-сообщения посредством беспроводной блютуз связи, и которую люди, судя по информации, использовали успешно, и начал составлять план.План состоит в использовании двух плат esp32. Один-как наручный сервер, собирающий данные с акселерометра и преобразующий их в сообщения об изменении высоты тона и модуляции. Я привяжу тангаж к бендам и крен к модуляции. Кроме того, поскольку на борту модуля MPU6050 есть встроенный гироскоп, для бендов я также буду собирать информацию о горизонтальном смещении, поскольку оно также отображает это интуитивное движение. Три потенциометра будут контролировать чувствительность каждой оси к соответствующему параметру. Литиевая батарея будет поддерживать беспроводную работу устройства с помощью модуля управления зарядкой. Этот конкретный модуль поддерживает все средства защиты и не имеет никаких ограничений по минимальному току, что, наконец, отправило платы на базе tp4056 для меня в отставку. В таком случае у меня будет возможность подключить свой компьютер к наручному блоку для управления программными синтезаторами с, я надеюсь, низкой задержкой. Для управления любыми железными блоками я также построю стационарный хаб, который сможет конвертировать беспроводные BLEMIDI сообщения в аппаратные MIDI сообщения для взаимодействия с аппаратными синтезаторами. Для этого хаба я выбрал контроллер с OLED-экраном и с помощью поворотного энкодера смогу переназначить бенды и модуляцию как любую другую MIDI CC команду для управления громкостью, панорамированием, позиции уэйвтейбла и всем тем, что конкретный синтезатор сможет изменить на лету. Я не могу собрать простую сквозную схему, она неизбежно повредит данные, это должна быть полноценная смешивающая схема. Я также добавлю 2 CV-выхода для взаимодействия с модульным и полумодульным оборудованием.
После пары вечеров пайки и еще нескольких дней программирования у меня на столе были прототипы. Наручный блок несколько громоздкий, но я уверен, что смогу уменьшить его размер по крайней мере в 3 раза. Я добавил включатель питания и кнопку начала/прекращения передачи данных под большой палец, и переключатель направления, чтобы переключаться между правой и левой рукой. Я также добавил аналоговый акселерометр, чтобы проверить, будет ли он работать с меньшей задержкой, чем цифровой.
Со стороны станции я припаял аппаратные MIDI входы и выходы и операционные усилители для усиления сигналов от ЦАПОВ до уровней CV, идущих на выходы 3,5 мм. Входящие BT-сообщения могут быть реорганизованы как любое MIDI СС-сообщение идущее через любой канал чтобы управлять несколькими синтезаторами одновременно, или переключаться между ними.
Первым делом стоит проверить работу напрямую с компьютером, для этого нужно выполнить сопряжение, выбрать режим драйвера в моей DAW-станции и установить флажок для прослушивания входящих сообщений. Данные с гироскопа создают много шума, все чувствуется слегка неконтролируемо, результаты намного чище когда на бенды влияют только данные с акселерометра. Тестирование показало, что существенной разницы между цифровым и аналоговым акселерометром нет.Есть небольшая задержка, но так как выразительность-главная цель, на это стоит обратить внимание. Кроме того, устройство постоянно отключалось и подключение никогда не следовало одной и той же процедуре и требовало несколько перезагрузок и перезапусков DAW. Это очень неудобно и выбивает из колеи.После отключения всех остальных беспроводных соединений на моем компьютере, включая Wi-Fi, задержка сократилась, и проблема отключения стала менее частой. Это привело меня к выводу, что слабым звеном в этой цепочке являются беспроводные возможности моего компьютера. Поскольку мой конкретный аудиоинтерфейс не имеет MIDI-портов, я схватил Arduino Due и быстренько собрал USB-MIDI-интерфейс, чтобы иметь возможность сопряжать устройство со станцией, подключать станцию к интерфейсу миди-кабелем, подключать интерфейс к ПК и получать MIDI-сообщения таким образом. И проблема отваливания от блютуз исчезла.
На данный момент все еще существует некоторая задержка, поэтому мне пришлось внести несколько коррективов в первоначальный план.Поскольку прямое BT подключение к моему компьютеру немного медленное, и я все равно скован использованием MIDI-USB интерфейса, вместо того чтобы читать значения, преобразовывать их в BT midi и отправлять медленные BT MIDI сообщения для отправки обычных MIDI, я решил полностью лишить сообщения универсального протокола и отправлять необработанные значения и преобразовывать их на принимающем конце в MIDI, уменьшая количество шагов и объем отправляемых данных. Для этого я использовал протокол ESPNOW, который без каких-либо махинаций с рукопожатиями при наличии только mac-адреса может отправлять только 3 байта данных на устройство, которое ожидает только 3 байта данных. Я удалил все куски кода с подтверждением передачи, чтобы уменьшить задержку. И все заработало безупречно.Эта конкретная сборка работает нормально, на этом этапе стоит просто минитюаризовать дизайн и закончить печать всех корпусов. Но некоторые мелочи меня не устраивали.Во-первых, это конструкция из 3 контроллеров, где на самом деле требуется только 2. Прием данных, создание MIDI и преобразование в USB MIDI должны происходить в одном устройстве. И это, как минимум в теории, довольно легко реализовать, потому что более поздняя версия ESP32 под названием S2 способна быть нативным USB устройством, что делает адаптацию кода довольно легкой. Но мало того, что этой штуки у меня нет, существуют и другие проблемы.В основном – энергопотребление. Текущая установка убивает относительно жирную батарейку через полчаса. Именно по этой причине на всех кадрах был шнур, это не связь, это просто для питания. И проблема даже не в емкости, а в возможностях токоотдачи этой батареи – примерно на 3,5 В она просто перестает быть способной питать прожорливый BT/WIFI чип. Это заставляет меня поменять аппаратное обеспечение и перепроектировать все с нуля.Поскольку лучшая прошивка с точки зрения задержки использовала прямую передачу пакетов, не будучи завернутой в очень специфический протокол, я решил использовать модули nrf24l01+, которые очень похожи в этом отношении. Это означает, что я могу соединить этот модуль с DUE, которая раньше был просто MIDI USB – интерфейсом, и использовать его в качестве хаба, который и делает все - прием данных, аппаратное midi, USB midi, CV-напряжение, реорганизацию сообщений и т. Д.В качестве передатчика у меня было 2 варианта – Pro Micro и STM32 blue pill. Второй вариант не только менее энергозатратен, но и имеет гораздо большее разрешение на входах АЦП, что позволит избежать потенциальных резких рывков при изменении уровня эффекта. Не говоря уже о том, насколько большими вычислительными способностями он обладает.Таким образом, сетап меняется от сложного чтения данных об ускорении, обертывания этих данных в протокол BLE MIDI, отправки BLE MIDI, преобразования в MIDI и преобразования из MIDI в USB MIDI к гораздо более простому чтения данных об ускорении, отправки этих необработанных данных, а затем простого преобразования их в USB MIDI. И как всем известно, простое решение – это надежное решение. Так что еще через пару вечеров у меня были очередные рабочие прототипы. Наручный блок намного меньше предыдущей итерации, тоньше и имеет гораздо более удобную кнопку. Я прикрепил ладовую заглушку, чтобы зафиксировать устройство на руке. 
Я могу использовать встроенные в синтезатор бенды и модуляции. Я могу перенаправить разные CC на любой параметр VST на любом канале. Я могу использовать устройство для управления несколькими параметрами одного синтезатора. Я могу использовать устройство для управления параметрами нескольких VST одновременно. Можно во время или после записи прописать автоматизацию трека по параметру. Так что в конце дня у меня было 3 версии одного и того же устройства. BT версия полезна в том случае, когда требуется только подключение к ПК. Будучи по своей сути BT сервером при переключении между ПК и хабом, я должен вручную прерывать соединение и каждый раз устанавливать новое. Поэтому, поскольку я не использую свой компьютер в качестве центра управления железными синтами (не то, чтобы мой аудиоинтерфейс это поддерживает) мне не хочется продолжать реализацию конкретно этой версии. Однако существует открытый проект умных часов, в которые встроен акселерометр. Сенсорный экран должен быть способен вместить в себя все меню, переключать каналы, номера CC сообщений и чувствительность и позволять хранить множество пресетов. Будучи проектом на базе ESP32, перенос проекта не должен вызвать много проблем, если когда-нибудь я заполучу его в свои руки. Я чувствую себя обязанным подчеркнуть, что я протестировал более одного модуля ESP32, и задержка колеблется от юзабельной до невыносимой, и я понятия не имею, как будет вести себя этот конкретный блок. Задержка также коррелировала с энергопотреблением – более медленный модуль был способен жить от батареи гораздо дольше, разряжая ее должным образом.То же самое устройство должно открыть возможность использовать версию на базе ESPNOW, которая показала наименьшую задержку, но я бы связал ее с ESP32-S2 в качестве хаба, чтобы иметь функционал нативного USB. В данный момент у меня нет ни того, ни другого, и я не собираюсь тратить на них деньги.Тем более, что текущая рабочая версия, основанная на DUE и STM32, обеспечивает наилучший баланс между задержкой (она в принципе существует только в контексте версии ESPNOW) и простотой. Энергопотребление очень низкое и я не смог разрядить батарею во время тестирования. Станция поддерживает как USB, так и аппаратный MIDI одновременно, без необходимости ручного подключения, мне просто нужно щелкнуть переключатель и подать питание. Эту версию все еще можно сделать намного меньше, но в данный момент это не принципиально. Что можно поменять, так это железо. Либо поставить более мощную версию NRF24 в хаб, либо перенести весь проект на LORA.
Cсылка на видео (с демонстрацией игры)КодИзвините, данный ресурс не поддреживается. :(
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_razrabotka_pod_arduino (Разработка под Arduino), #_3dprintery (3D-принтеры), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_midi, #_arduino, #_stm32, #_ble__midi, #_usb_midi, #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
)
, #_razrabotka_pod_arduino (
Разработка под Arduino
)
, #_3dprintery (
3D-принтеры
)
, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 16-Май 11:56
Часовой пояс: UTC + 5