/ diy

Teensy 4.1 MIDI controller

Идея сделать MIDI контроллер у на основе какого либо популярного микроконтроллера у меня была всегда, и даже некоторое время назад я пытался что то сделать (об этом позже) но до реализации дело тогда не дошло.

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

Итак по порядку, первый попытки и идея у меня появились лет 10 назад (бгг как время идет быстро), вместе с появлением различных эффект процессоров которые я использовал у себя в домшней студии и игры на гитаре. Те процессоры давно уже проданы и куплены другие, да и в планах уже есть "обновление" гитарного сетапа, но проблема MIDI контроллера была всегда, а точнее компромисса между функциональностью/удобству/цены/качетва/размера были и будут всегда и к сожалению идельного контроллера нет. Но можно попытатся сделать.

  1. Ошибки прошлого. Первая задокументированная попытка сделать такой контроллер была задукоментированна в 2011 году и как и ожидалось закончилось провалом. Почему? На то было много причин и основные из которых:
  • неудачно выбрана платформа, а именно Atmega 32, всем хороша, но порог вхождения все таки там не особо низкий, причем именно не с программированием связан, а с железом, и мыслить там все таки надо иначе чем при программировании под обычную OS, вроде учета таймингов работы самого железа и все таки надо предтавлять как работает это железо. В итоге помигал я светодиодом, попытался прикрутить экран и кнопки и на этом все закончилось.
  • Выбран путь сборки с нуля из рассыпухи, возможно тому для кого это хобби всей жизни или даже основное занятие которое приносит доход это норм, под кажлый проект сделать плату (а некоторые "хоббисты" до сих пор делают даже сами платы) или даже несколько версий и опробовать все, залить софт, протестить, переправить плату и т.д. то у меня ни тогда ни тем более сейчас времени на это нет.
  • Собственно программирование, тогда я прямо с ходу полез в дебри ассемблера, и спрашивается зачем, в результате как написано выше только помигал светодиодом и все. Ассемблер хорош если оптимизация это "спорт" и просто для души нравится это дело, и второе экономическая выгода - если девайст разрабатывается чтобы быть продан  тысячами или даже десятками тысяч то понятное дело в оптимизацию надо вкладыватся - можно съэкономить на микроконтроллере, памяти, и прочей обвязке и не хило так удешивить производство. На деле если делать для себя то всегда можно взять контроллер помощьнее и писать на чем то более высокоуровневом и понятном, даже если контроллер будет стоить на 7 или 10 долларов дороже, ну кому это важно? сколько их будет сделано? один? два? пять? вобщем такая оптимизация вообще не играет никакой роли.
  • Далее по софту - стремление разработать свой велосипед, тогда тогда я игнорил все библиотеки и старался сделать все сам, попутно переизобретая все и тратя свое время (которое уже никто не вернет). Это не верный подход, как сказано выше, если только это не ваша работа и каждый сэкономленный байт памяти и пин контроллера это не дополнительный профит в долгосрочной перспективе.
  • Yet another hobby. Опять же ловушка того что сейчас вот как сяду и все изучу за неделю/две/три и буду всякие штуки делать, с таким низкоуровневым железом такое не работает, надо читать тонну даташитов, эксперементировать и расходовать просто тонну времени. Сейчас понимаю что это конечно непозволительная роскошь, поэтому я думаю на следующие проекты если и будет время то 5-6 часов в месяц, на какой нибудь допил софта и пару выходных на собственно начальную разработку это предел
  • Готовые девайсы. Когда я зашел в тупик с моим проектом, осознав то что могут пройти месяцы прежде чем получится то что я хотел я просто купил контроллер Voodoo Labs, все с ним хорошо но оказался он очень громоздким и не очень удобным, функционала впритык, цена была "хорошая" и как по мне за эту цену функционала можно было бы и побольше.

2. MIDI Controller 2.0 Платформа

Учитывая все ошибки выше, можно (и нужно) придти к осознанию того что надо выбрать что то где порог вхождения не так высок, но и возможные результаты позволяют достичь поставленной цели. Для embedded систем таким ответом может быть Arduino. Да для каких нибудь коммерческих разработчиков в силу экономии на всем том чем можно это возможно не вариант, но как для своих проектов где дополнительные 10-20 долларов не будут играть никакой роли это почти идиальный вариант.

Разработка плат, т.к. для основных функций будет юзатся плата контроллера "dev board", но эта же плата будет и в финальном проекте, так что далее будет называться CPU Board. Собственно для самого проекта надо разработать плату для всей перефирии и правильно подключить к различным интерфейсным пинам CPU Board и все, далее этот CPU Board будет вставляться в плату как обычный процессор.

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

3. Реализация.

Как написано выше для платформы и среды разработки было выбрано Arduino и Arduino IDE соотвественно. Так как Arduino IDE есть для всех популярных операционных систем Mac/Linux/Windows, меня как пользователя мака и линукса это очень сильно порадовало.

Железная часть была выбрана Teensy 4.1 новейший микроконтроллер (релизнутый пару месяцев назад) с 32 битным ARM процессором на 600MHz с 8 Mb ROM и RAM, возможностью расширения RAM и ROM в следующих комбинация +16Mb Ram, +16Mb Rom, +8 MB Rom & +8Mb Ram. Так же что немаловажно набортный Ethernet контроллер на 100Mbit.

Фичи самого контроллера:

  • возможность передавать и принимать MIDI сообщения через стандартные 5Pin DIN разъемы на все совместимые устройства используюя базовые 16 каналов и возможность передачи индивидуальных сообщений каждому устройству
  • Возможность конфигурации через WEB интерфейс с любого совместимого устройства
  • возможость передачи кастомных SYSEX сообщний
  • при подключении через USB к компютеру или совместимому устройству работать как MIDI контроллер для любой DAW
  • работа через Ethernet как MIDI устройство (RTP-MIDI)
  • 14 сегментный 12 символьный LED дисплей для отображения текущего банка и названия пресета

To be continue...

Teensy 4.1 MIDI controller
Share this

Subscribe to Somewhere Nowhere