The Gakken SX-150 is a really inexpensive analog synth (about $50, now available at the make store). This synth is included on a Japanese magazine (I wouldn’t expect less from them) so that makes it 2*2 times as cool.
Since its release, someone already has created a module to add midi support to it using the atmel attiny2313, but I’ve wanted to use an Arduino board to do it, to keep things easy to prototype and hack.
My implementation uses a single DAC IC chip, the MCP4921, which sells for about 2 bucks from Mouser. The current version uses the Arduino, only to read one byte, as a midi note, from the serial connection and sends that to the SX-150. I could have created the full midi circuit to make it a standalone solution, but that increases the cost and complexity of the physical connections. I’ll probably do that on a later revision.
So, in order to receive midi data, I wrote a small Processing sketch that receives midi, and sends the note information through the serial port to the Arduino.
And.. the whole thing sounds like this:
On the video, I’m using Ableton Live to send midi data to the processing sketch using a Network Midi connection on the Mac. On windows, you should be able to use Midi Yolke to accomplish the same thing. Then, I make sure that the processing sketch receives midi on that same virtual midi connection and sends the data through serial to the arduino. So, depending on your system configuration, you might have to tweak the Processing sketch a little bit to make sure it is reading and writing to the right midi and serial ports.
The flow of data from the sequencer to the synth looks like this:
Ableton Live => Virtual Midi Connection => Processing Sketch => Serial Port =≶ Arduino => DAC => SX-150
And finally, the source code:
Now, hook it up and make some noise!