Оглавление:

Синтезатор Micro Midi: 5 шагов (с изображениями)
Синтезатор Micro Midi: 5 шагов (с изображениями)

Видео: Синтезатор Micro Midi: 5 шагов (с изображениями)

Видео: Синтезатор Micro Midi: 5 шагов (с изображениями)
Видео: Все что нужно знать о MIDI (запись лекции) 2024, Июль
Anonim
Микро-миди-синтезатор
Микро-миди-синтезатор
Микро-миди-синтезатор
Микро-миди-синтезатор
Микро-миди-синтезатор
Микро-миди-синтезатор

Эта инструкция демонстрирует использование микросхемы VLSI VS1053b Audio и Midi DSP в режиме реального времени Midi. В этом режиме он действует как 64-голосный полифонический MIDI-синтезатор GM (General Midi). Автономный микроконтроллер Arduino Uno управляет OLED-дисплеем, тремя кнопками (Выбор функции и Вверх или Вниз, и передает поток данных Midi через аудио DSP. Выбранной музыкальной платой была коммутационная плата кодека Adafruit VS1053, но музыкальная коммутационная плата Sparkfun Также были успешно протестированы библиотеки Adafruit VS1053b вместо гораздо более крупной библиотеки SFEMP3 (рекомендованной Sparkfun, хотя у них также есть свой собственный набор библиотек), потому что я нашел код Adafruit более легким для понимания.

Большая часть кода, используемого для управления DSP аудио / миди, была разработана с использованием Arduino Uno, подключенного к коммутационной плате аудио / миди через макетную плату. После того, как функции были признаны удовлетворительными, Uno использовался в качестве программатора для автономного ATmega 328, который затем был помещен на небольшую плату Veroboard размером 30x20 вместе с микросхемой оптоизолятора 6N139, необходимой для входного разъема Midi (5-контактный DIN).. Также был подключен небольшой OLED-экран (64x48), три кнопки, светодиод активности Midi, цилиндрический разъем +5 В для питания и добавлен разъем аудиовыхода. Требования к питанию очень скромные - около 20 мА при 5 вольтах.

Шаг 1: Список деталей

ATmega328 Micro 28-контактный DIP + 28-контактный DIP-разъем 6N138 или 6N139 оптоизолятор + 4-контактный DIP-разъем Wemos 64x48 I2C OLED-дисплей или аналогичныйAdafruit VS1053b Коммутационная плата кодека 3 миниатюрных кнопки разъем для подключения усилителя или наушников Резисторы: 7 x 10 кОм, 2 x 470 Ом, 2 x 220 Ом Конденсаторы: 0,1 мкФ, 50 В, электролитические, 10 мкФ, 25 В, керамические, 2 x 27 пФ, небольшие кусочки Veroboard (30 полосок по 20 столбцов и 4 полосы на 16 колонок), корпус из АБС-пластика примерно 85х55х25мм, проводка и несколько винтов, гаек и шайб.

Шаг 2: Строительство

Строительство
Строительство
Строительство
Строительство
Строительство
Строительство

На крышке корпуса находится OLED-дисплей, три кнопки, которые установлены на еще одном небольшом куске Veroboard, и цилиндрический разъем питания. На основной плате Vero есть два отверстия для крепления коммутационной платы Music над ATmega328. Подробные сведения о подключении см. На схеме платы Fritzing Strip.

Запрограммированный ATmega328 (код см. В следующем разделе) затем вставляется в разъем, за которым следует 6N139, и все подключается.

Светодиод используется как индикатор активности Midi и установлен на передней стороне корпуса. Он подключен к выходу D2 ATmega328 через резистор 470 Ом.

Для питания OLED-дисплея используется выход 3,3 В от платы Adafruit - для него требуется менее 20 мА.

Попробуйте поменять местами два соединения Midi Din, если вы не слышите звук при первом использовании синтезатора.

Шаг 3: Программное обеспечение

Подробная информация о скетче, который необходимо загрузить в ATmega328, приведена в MidA.ino. Доступно семь функций:

Вариант P: Изменить программу - изменить инструмент GM Midi с 1 на 128 (я использовал от 0 до 127), например звук фортепиано или синтезатора. Вариант B: изменить банк инструментов между мелодическим (банк 0) и перкуссионным (банк 1). Вариант V: отрегулируйте громкость от 1 до 10. Вариант C: измените MIDI-канал, на который будет реагировать синтезатор. Возможны следующие варианты: канал 0, канал 1, канал 9 (перкуссия), каналы 0 и 9, а также каналы 1 и 9. Вариант R: включить или выключить эффект реверберации. Вариант S: сохранить текущие параметры в памяти EEPROM (вверх) или Прочтите (Вниз) его обратно из памяти EEPROM. Это связано с тем, что в противном случае настройки не сохраняются при отключении питания. Вариант X: отправить сообщение об отключении всех заметок (Midi Reset).

Восьмой вариант еще не реализован - он обойдет ATmega как Midi-фильтр и подключит выход оптоизолятора непосредственно к выводу Rx платы DSP.

Обратите внимание, что VS1053b загружается в режиме Midi в реальном времени, загружая 1039-байтовый сжатый патч во время загрузки - это также увеличивает размер буфера Midi и фильтрует системные байты данных Midi. Подробности этого патча можно найти на сайте VLSI.

Слегка измененная версия библиотеки Adafruit Graphics использовалась для поддержки OLED-дисплея с разрешением 64x48 пикселей - пожалуйста, обратитесь к ссылкам, приведенным в конце для г-на Макаузера. Список необходимых библиотек приведен в коде скетча.

Важно отметить, что когда скетч выполняется впервые на ATmega328, независимо от того, находится он на Uno или автономно, код загружает предустановки параметров из EEPROM ATmega328, которые могут быть недействительными. В этом случае вы можете либо записать все нули в EEPROM, используя опцию X с кнопкой вниз, либо закомментировать строку в функции настройки void, которая загружает значения из Eeprom при первом запуске, настроить ваши инструменты и т. понравившийся, а затем сохраните свои пресеты с помощью кнопки S-варианта «Вверх».

Благодарим всех упомянутых лиц и организаций за их код и библиотеки.

Шаг 4. Ссылки

СБИС:

Адафрут:

Github VS1053b:

Графика Github:

Олед:

Sparkfun:

Шаг 5. Использование Sparkfun Board с библиотеками Adafruit

Использование Sparkfun Board с библиотеками Adafruit
Использование Sparkfun Board с библиотеками Adafruit

Таблица на рисунке объясняет, как подключить музыкальные платы Adafruit или Sparkfun для использования другой библиотеки.

Рекомендуемые: