![](https://habrastorage.org/files/4d8/76d/2a5/4d876d2a55f64e19a3f7b4a3c858a734.jpg)
Мидирование — модификация, позволяющая управлять синтезатором с помощью стандартных midi-комманд, передаваемых с внешнего источника. Это дает возможность подключить midi-клавиатуру или какой-то другой midi-контроллер в качестве устройства ввода.
Как-то раз ко мне в руки попал самый настоящий аналоговый синтезатор Korg monotron. Не смотря на свои игрушечные очертания, устройство содержало на борту весь минимум настроек, позволяющий погрузиться в мир аналогового синтеза. Так вот проводя вечера за вращением ручек и экспериментами с LFO-генератором и cuttoff фильтром, я стал ловить себя на мысли, что чего-то тут явно не хватает. Действительно, выполняющая роль клавиатуры резистивная пленка — весьма оригинальное и компактное решение. Но любые попытки исполнить на инструменте какую-то осмысленную партию обречены на провал. Выходит, и применять такой синт можно только как пищалку. С другой стороны, ситуацию могли бы спасти наличие MIDI порта и подключение внешней клавиатуры, но он, увы, отсутствовал.
Как оказалось, мидировать синтезатор не так уж и сложно.
Беглый серф по интернету принес сразу несколько приятных сюрпризов: во-перывх, документация на синтезатор находится в открытом доступе, и любой без особого труда может найти принципиальную схему. Во-вторых, разработчики заботливо вывели точки для CV/GATE управления.
![](https://habrastorage.org/files/1aa/ac2/d34/1aaac2d341b94929a6c262047f401cd7.jpg)
Для тех, кто не знает: CV/Gate (Control Voltage/Gate) — это один из распространенных методов управления аналоговыми синтезаторами. Управляющее напряжение (CV) задавало высоту тона\глубину эффекта, ну а триггер (Gate) управлял выводом звука в зависимости от того, нажата ли нота. Нужен только небольшой переходник, читающий midi-команду и конвертирующий ее в управляющее напряжение. Что я, собственно, реализовал.
Железо
Все достаточно банально: я решил сильно не заморачиваться и использовать для управления любимый и ненавистный многими arduino. Под руку подвернулась валявшаяся без дела платка arduino nano. Был, конечно, соблазн использовать миниатюрный pro mini или вовсе поставить 328 мегу с минимальным обвесом, но, предвидя геморрой с отладкой и допиливанием прошивки, решил не жадничать и остановился на nano.
CV OUTPUT
По SPI я подключил валявшийся без дела 12-битый ЦАП mcp4921, который в дальнейшем должен управлять напряжением, задающим высоту тона осциллятора (PITCH).
![](https://habrastorage.org/files/d68/0fe/82e/d680fe82e340413eb16ecaf0d51a5056.png)
MIDI INPUT
Увы, никаких откровений здесь нет. Вполне типичная схема коммутации midi-сигнала.
![](https://habrastorage.org/files/a7d/e38/55b/a7de3855ba634a7f8548b5c113a999bd.png)
Осталось повесить GATE на любой свободный пин.
![](https://habrastorage.org/files/c28/7bc/691/c287bc691e894248a28964b2705625cb.jpg)
В результате получился такой вот переходник.
Теперь пришло время прокачать сам синтезатор. По сути, требуется просто вывести 4 пина:
PITCH, GATE, GND и +5 для питания. Как не странно, на этом этапе я наткнулся на самое большое количество граблей. Изначально идея была хорошая: вывести разъем под 4-хконтактный миниджек. На деле же я узнал много нового для себя. Сначала стандартный джек оказался коротковат и наотрез отказался целиком заходить в разъем. В итоге разъем пришлось подрезать. Поиск места для разъема тоже оказался не такой просто задачей, но пути назад уже не было. Как я уже говорил, сами точки пайки заботливо выведены инженерами korg на обратную сторону платы.
![](https://habrastorage.org/files/e97/9fd/d95/e979fdd95a5e4057ab8082cf7f79bfbc.jpg)
Где-то на этапе отладки кода сочувствующие люди сделали мне 3D модель корпуса, который позже был напечатан в Лаборатории трехмерной печати. По-моему, вышло очень даже неплохо.
![](https://habrastorage.org/files/76b/790/697/76b79069726b4170979594e9f7cd2813.jpg)
Прошивка
Весь процесс написания ардуино-скетча описывать не хотелось бы, да и по устройству midi протокола и без того статей немало. Остановлюсь лишь на моменте настройки выходных значений ЦАПа. Чтобы посылаемая MIDI нота соответствовала выходному значение на ЦАПе. Чтобы справиться с этой задачей, я устанавливал различные значения на ЦАПе и анализировал получаемую с синтезатора в Ableton Live спектрограмму (там есть прекрасный инструмент Spectrum, отображающий, кроме всего прочего, соответствующую частоте ноту). Возможно, есть более удобное решение, но это было первое, что пришло в голову. Также стоит отметить, что зависимость управляющего напряжения от выдаваемой частоты линейна, поэтому реализация алгоритма не составляет особого труда.
Напоследок приложу еще одну фотографию синтезатора и MIDI2DAC конвертора.
![](https://habrastorage.org/files/8b8/faf/0ce/8b8faf0cea0443958559b790d2851b00.jpg)
Видео устройств в работе:
Ссылка на github со скетчем для arduino
ohm
Можно эту схему применять к любому старому синту, где есть CV/Gate?
Gho_st Автор
Да, можно.