Как стать автором
Обновить

Мидирование синтезатора на примере Korg Monotron

Время на прочтение 3 мин
Количество просмотров 20K


Мидирование — модификация, позволяющая управлять синтезатором с помощью стандартных midi-комманд, передаваемых с внешнего источника. Это дает возможность подключить midi-клавиатуру или какой-то другой midi-контроллер в качестве устройства ввода.

Как-то раз ко мне в руки попал самый настоящий аналоговый синтезатор Korg monotron. Не смотря на свои игрушечные очертания, устройство содержало на борту весь минимум настроек, позволяющий погрузиться в мир аналогового синтеза. Так вот проводя вечера за вращением ручек и экспериментами с LFO-генератором и cuttoff фильтром, я стал ловить себя на мысли, что чего-то тут явно не хватает. Действительно, выполняющая роль клавиатуры резистивная пленка — весьма оригинальное и компактное решение. Но любые попытки исполнить на инструменте какую-то осмысленную партию обречены на провал. Выходит, и применять такой синт можно только как пищалку. С другой стороны, ситуацию могли бы спасти наличие MIDI порта и подключение внешней клавиатуры, но он, увы, отсутствовал.

Как оказалось, мидировать синтезатор не так уж и сложно.

Беглый серф по интернету принес сразу несколько приятных сюрпризов: во-перывх, документация на синтезатор находится в открытом доступе, и любой без особого труда может найти принципиальную схему. Во-вторых, разработчики заботливо вывели точки для CV/GATE управления.



Для тех, кто не знает: CV/Gate (Control Voltage/Gate) — это один из распространенных методов управления аналоговыми синтезаторами. Управляющее напряжение (CV) задавало высоту тона\глубину эффекта, ну а триггер (Gate) управлял выводом звука в зависимости от того, нажата ли нота. Нужен только небольшой переходник, читающий midi-команду и конвертирующий ее в управляющее напряжение. Что я, собственно, реализовал.

Железо

Все достаточно банально: я решил сильно не заморачиваться и использовать для управления любимый и ненавистный многими arduino. Под руку подвернулась валявшаяся без дела платка arduino nano. Был, конечно, соблазн использовать миниатюрный pro mini или вовсе поставить 328 мегу с минимальным обвесом, но, предвидя геморрой с отладкой и допиливанием прошивки, решил не жадничать и остановился на nano.

CV OUTPUT

По SPI я подключил валявшийся без дела 12-битый ЦАП mcp4921, который в дальнейшем должен управлять напряжением, задающим высоту тона осциллятора (PITCH).



MIDI INPUT

Увы, никаких откровений здесь нет. Вполне типичная схема коммутации midi-сигнала.



Осталось повесить GATE на любой свободный пин.


В результате получился такой вот переходник.

Теперь пришло время прокачать сам синтезатор. По сути, требуется просто вывести 4 пина:
PITCH, GATE, GND и +5 для питания. Как не странно, на этом этапе я наткнулся на самое большое количество граблей. Изначально идея была хорошая: вывести разъем под 4-хконтактный миниджек. На деле же я узнал много нового для себя. Сначала стандартный джек оказался коротковат и наотрез отказался целиком заходить в разъем. В итоге разъем пришлось подрезать. Поиск места для разъема тоже оказался не такой просто задачей, но пути назад уже не было. Как я уже говорил, сами точки пайки заботливо выведены инженерами korg на обратную сторону платы.



Где-то на этапе отладки кода сочувствующие люди сделали мне 3D модель корпуса, который позже был напечатан в Лаборатории трехмерной печати. По-моему, вышло очень даже неплохо.



Прошивка

Весь процесс написания ардуино-скетча описывать не хотелось бы, да и по устройству midi протокола и без того статей немало. Остановлюсь лишь на моменте настройки выходных значений ЦАПа. Чтобы посылаемая MIDI нота соответствовала выходному значение на ЦАПе. Чтобы справиться с этой задачей, я устанавливал различные значения на ЦАПе и анализировал получаемую с синтезатора в Ableton Live спектрограмму (там есть прекрасный инструмент Spectrum, отображающий, кроме всего прочего, соответствующую частоте ноту). Возможно, есть более удобное решение, но это было первое, что пришло в голову. Также стоит отметить, что зависимость управляющего напряжения от выдаваемой частоты линейна, поэтому реализация алгоритма не составляет особого труда.

Напоследок приложу еще одну фотографию синтезатора и MIDI2DAC конвертора.



Видео устройств в работе:



Ссылка на github со скетчем для arduino
Теги:
Хабы:
+21
Комментарии 3
Комментарии Комментарии 3

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн