четверг, 28 августа 2014 г.

[Из песочницы] MIDI-контроллер электронной ударной установки на stm32

Введение




MIDI-контроллер — устройство, преобразующее определённый физический процесс в набор цифровых команд формата MIDI. Физическим процессом может являться всё, что угодно — от нажатия пальцем на клавишу до поворота ручки громкости. Полученный поток команд передаётся посредством протокола MIDI другим устройствам — компьютеру, аппаратным семплерам, синтезаторам или внешним секвенсорам и расшифровывается там определённым образом. Наиболее распространённым типом MIDI-контроллера является MIDI-клавиатура — электронный аналог клавиатуры фортепиано. Также существует множество других типов контроллеров, среди которых — электронные ударные установки.



На современном рынке представлено огромное количество разнообразных MIDI-контроллеров электронных установок, различающихся по всевозможным критериям, таким как цена, качество, технические характеристики и т.д. Так же существует несколько законченных пользовательских устройств, которые реализованы как коммерческие проекты (eDrum, megaDrum). Но, не смотря на все это, желание создать подобное устройство своими руками по прежнему живет в умах современных Кулибиных.

Так и я несколько лет назад с небольшим запозданием загорелся созданием подобного устройства, так как принимал участие в музыкальной группе тяжелого направления. Мы играли тяжелый рок, а точнее что-то типа brutaldeath, goregrind, grindcore. Я играл на электрогитаре. Немногим ранее мы прикупили барабанную установку Sonor и шумели по вечерам в гараже. Позже с гаража нас попросили, и встал вопрос о помещении. Ничего путного не найдя, мы решили репетировать дома, что сразу привело к конфликту с соседями. Тут и встал вопрос об электронных барабанах.


Параллельно игре на живых инструментах я занимался написанием электронной музыки и использовал VST инструменты и плагины, в частности для создания ударных партий я отдавал предпочтение Addictive drums и ezDrums, которые имеют возможность работать с MIDI-интерфейсом. Даже не погуглив данную тему, я с головой окунулся в разработку собственного MIDI-контроллера на доступном микроконтроллере ATMega32 в DIP-корпусе, который имел на борту 8 ацп каналов. Городить схему не хотелось, и я решил ограничиться 8-мью входами. Так как аппаратного usb у ATMega32 нет, я использовал стандартное подключение к компьютеру через virtual usb. Повозившись несколько дней с программированием мне удалось запустить устройство. Каково же было мое удивление, когда в интернете я обнаружил готовое устройство со схемой и прошивкой (MegaDrum). Но все что не делается – все к лучшему.


imageimage


Полноценный USB




По специальности я программист, но по роду деятельности я программист-электронщик, кандидат технических наук, и как говаривал мой бывший научный руководитель – и швец, и жнец, и на трубе дудец. Как это часто водится, я зациклился на AVR-ках, не потому что питал к ним чувства, а потому что по работе они полностью устраивали своими техническими характеристиками. Но пришло то время, когда их стало не хватать. И тогда на смену пришел stm32, помимо всего прочего, имеющий на борту полноценный usb интерфейс. Тут то и пришла мысль сделать полноценный MIDI-контроллер. К тому же опыт работы с MIDI-интерфейсом у меня уже был.

С чего начать? stm32 в DIP корпусах у нас не водились (если они вообще есть в природе), поэтому идея паять на монтажной плате сразу отпала. Как раз тогда стали появляться дешевые отладочные платы на базе микроконтроллеров stm32, такие как DISCOVERY. И вот я счастливый обладатель отладочной платы STM32F407DISCOVERY, имеющей в своем составе сразу и программатор ST-Link. Процессор STM32F407 имеет 16-каналов ацп, правда 4 канала заняты под периферию, которой просто нафаршерована отладочная плата. Но для моих целей 12 каналов было достаточно.


image

Потратив какое то время на изучение среды программирования Keil, архитектуры микропроцессора STM32F407 а так же стандартных библиотек периферии для работы с USB я накидал программку опроса всех каналов АЦП с использованием канала прямого доступа к памяти, а так же композитного USB устройства, которое включает в себя MIDI Audio Device и HID для изменения настроек устройства.


image


В качестве датчиков для барабанов я использовал пьезозвонок ЗП-1, который можно было купить в магазине за недорого.


image


Схему обвязки взял от MegaDrum.


image


Управляющую программу написал на Delphi сразу с запасом в 16 каналов. В принципе количество каналов устройства можно увеличивать до бесконечности, путем дополнения схемы аналоговыми мультиплексорами, как это и сделано в Megadrum, но для наших целей достаточно и 16 каналов, так как мы не такие продвинутые музыканты. А для начинающего барабанщика такого количества барабанов будет просто за глаза.


image


Устройство тестировалось как в Windows, так и в Linux с использованием трекера Renoise. Особых проблем в работе обнаружено не было.

Но на этом результате я решил не останавливаться. STM32F407 достаточно навороченный процессор, поэтому относительно не дешевый. Дешевле было сделать устройство на STM32F103. На помощь пришел ebay. Я купил отладочную плату с STM32F103RBT6 на борту.


image


Правда в ее составе нет встроенного программатора. Мне повезло, так как у меня остался от предыдущей работы программатор ST-Link.


image


Пришлось полностью переписать прошивку, так как принципы работы у 407 и 103 процессоров хоть и не кардинально, но различаются.

Далее я наткнулся в интернете на отладочную плату, которая стоила вообще копейки, и решил, что таким образом можно свести стоимость комплектующих к минимуму.


image


Это отладочная плата с процессором STM32F103C8T6. Размеры у нее просто мизерные, правда в этом корпусе в наличии только 10 каналов АЦП. Обвзяку сделал свою, что бы минимизировать затраты и монтаж элементов.


image


Использовал стабилитроны КС568А и резисторы номиналом 10 кОм.

Так же отказался от прошлых датчиков ЗП-1, а взял обычные пьезокерамические сенсоры.


image


При таком раскладе расходы на изготовление практически свелись к нулю.

В следующих статьях я планирую выложить схемы, прошивки и видео.


Ссылки




1. http://ift.tt/1mWkjri

2. www.edrum.info

3. www.megadrum.info

4. http://ift.tt/NhUTU9

5. http://ift.tt/XUVNRK

6. www.renoise.com

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий