These are fantastic days to be a synth enthusiast. More and more synthesizer manufacturers are releasing old glories at affordable prices thanks to the "analog GAS" and we all can realize the dream to posses devices that would otherwise be unachievable at a reasonable price (Korg MS20 mini, [K]ARP Odissey, just to cite few).
By the way, we are in 2019 and, despite manufacturers efforts, features required in an up-to-date setup are sometimes missing. MIDI automation of parameter change (filters cutoff, VCA level etc.) are some of those functions lacking in most analog synthesizer.
Here is a potential solution: a super easy, super cheap interface that can receive up to 7 different MIDI control change messages over USB and translate them in as many analog control voltages (CV).
Disclaimer: This project is untested on real hardware and there's a chance that it will not work with your synthesizer. It came from the request of a musician that contacted me privately and my latent desire to test MIDIUSB library. I was in the need for a simple and fast project... and this was perfect.Please let me know if everithing is ok with your setup ;)
Step 1: Hardware
The working principle is simple: Arduino receives CC's from the DAW, converts those MIDI events into pulse width modulated output voltages then filtered by a RC filter to obtain a linear voltage.
The minimal hardware needed for this project is:
- 1x Arduino Leonardo (or any other ATmega32u4 based Arduino board)
- 7x 0.1uF poly capacitor
- 7x 1K ohm resistors
- 7x mono jack connectors
You can assemble the circuit both with the use of a breadboard or by creating a simple arduino shell. It's up to you.
Being that Arduino Leonardo has 7 PWM outputs, this interface can handle up to 7 separate control change MIDI messages and translate them into 0 - 5V analog outputs.
You can use less than 7 CV in case you don't need them all.
Attached is the wiring for one of the RC filters. I also attached some pic of my multimeter while probing the voltages coming out of one of the filtered Arduino's PWM outputs for different values of a control change message.
Step 2: Software
You are in the need for the arduino IDE and MIDIUSB library by Gary Grewal in order to compile and upload the sketch. The latest version of the library is 1.0.4 at the date of today.
If you are unfamiliar with the arduino IDE, start here.
To upload the library follow THIS tutorial.
The sketch (attached) monitors the MIDI control change messages incoming from USB and then modifies the output voltages of PWM pins accordingly. Default MIDI channel is "1" but you can set it at your will by modifying the sketch MIDI_RECEIVE_CHANNEL value and then upload.
In particular, these are the correspondences "Control Change input message coming from DAW via USB -> Arduino output Pin":
CC#19 -> Arduino Pin 3
CC#20 -> Arduino Pin 5
CC#21 -> Arduino Pin 6
CC#22 -> Arduino Pin 9
CC#23 -> Arduino Pin 10
CC#24 -> Arduino Pin 11
CC#25 -> Arduino Pin 13