Мідування синтезатора на прикладі Korg Monotron

Мідування - модифікація, що дозволяє керувати синтезатором за допомогою стандартних 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