Адаптер USB в MIDI на Arduino

В данной статье мы рассмотрим простейший адаптер USB в MIDI на основе платы Arduino Micro или Arduino Leonardo, опционально с возможностью фильтрации данных MIDI.

Внешний адаптера USB в MIDI на основе платы ArduinoНеобходимые компоненты

  1. Плата Arduino Micro (купить на AliExpress) или Arduino Leonardo.
  2. Оптопара 6n137 (купить на AliExpress).
  3. Переключатель (коммутационный диод) 1N4148 (купить на AliExpress).
  4. Конденсатор 100 нФ (купить на AliExpress).
  5. Резисторы 220 Ом и 10 кОм (купить на AliExpress).
  6. Резистор для сквозного монтажа (Through Hole Resistor) 470 Ом.
  7. Светодиод (купить на AliExpress).
  8. Держатель для светодиода.
  9. DIN Audio / Video Connector, 5 Contacts (аудио/видео коннектор) – 2 шт.
  10. Пластмассовый корпус.
  11. Печатная плата.

Общие принципы работы проекта

MIDI (Musical Instrument Digital Interface) представляет собой цифровой интерфейс музыкальных инструментов (стандарт сопряжения электронных музыкальных инструментов с компьютером и программным обеспечением).

Автор этого проекта потратил достаточно много времени на поиск в сети Интернет адаптера USB в MIDI на основе платы Arduino, но проекты, которые он нашел, не удовлетворили его (по качеству), поэтому он решил сделать собственный адаптер подобного типа.

Первоначально проект рассматриваемого в данной статье адаптера был сконструирован на основе платы Arduino Leonardo, а после того, как автор убедился в его работе, была изготовлена его версия на основе платы Arduino Micro. Обе этих платы построены на основе микроконтроллера ATmega32u4, который, по сути, сам является преобразователем интерфейсов USB в MIDI.

Вид внутренностей адаптера USB в MIDI на основе платы Arduino

Внешний вид корпуса адаптера

В проекте используется оптопара и несколько резисторов чтобы создать два полностью изолированных контура тока. В качестве оптопары в проекте использована 6n137 – она достаточно быстрая и широко распространенная. Как показано ниже на приведенной схеме, у коннектор MIDI OUT два контакта замкнуты на землю – это стандартно для MIDI.

Непосредственно для решения задач преобразования интерфейсов автор проекта использовал библиотеку Control Surface – по его мнению это лучшая библиотека для решения подобных задач, которая отрабатывает все (даже самые сложные) аспекты протокола MIDI.

Также данная библиотека позволяет добавлять все виды дополнительного оборудования в проект. К примеру, вы можете добавить в проект несколько потенциометров, ножных переключателей или кнопок, подключенных к аналоговым/цифровым входам чтобы добавить функциональности в управлении протоколом MIDI.

Также вы можете использовать обратную связь чтобы обрабатывать данные перед тем как они будут поступать из MIDI в USB или в другом направлении. Автор данного проекта использовал это чтобы исправить не совсем корректное применение MIDI в его синтезаторе Roland D50. Дело в том, что его синтезатор передает команду "all notes off" каждый раз когда происходит отжатие последней нажатой клавиши. А многие современные аудио приложения интерпретируют это как немедленное прекращение запущенных процессов. А если мы в нашем адаптере будем фильтровать эту фразу "all notes off", то наш синтезатор D50 снова становится полезным в качестве "ведущей клавиатуры (master keyboard)". В представленный ниже код программы добавлена функция фильтрации фразы "all notes off".

При использовании библиотеки Control Surface было обнаружено, что она не может корректно обрабатывать большие пакеты SysEx (эксклюзивных системных сообщений). Это приводит к ошибкам в работе с редактором синтезатора D50 поскольку он часто использует большие пакеты SysEx. В связи с этим автором проекта в комментариях к программе добавлены инструкции по поводу того, как бороться с данной проблемой. Автор библиотеки Control Surface указал, что эта проблема будет устранена им в версиях библиотеки 2.x, поэтому, когда вы будете читать эту статью, возможно, эта проблема с большими пакетами будет уже устранена.

Также вы можете попробовать использовать другие библиотеки для работы с MIDI или даже написать свой собственный код для этого – представленная в этом проекте схема устройства должна корректно работать с любыми библиотеками, поддерживающими преобразование USB в MIDI и Serial MIDI.

Схема проекта

Схема адаптера USB в MIDI на основе платы Arduino Micro представлена на следующем рисунке.

Схема адаптера USB в MIDI на основе платы Arduino MicroПосле окончательной сборки у автора получилась конструкция следующего вида:

Внешний вид конструкции проекта

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
61 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *