Programming

Controlling a Gakken SX-150 synth with Arduino

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.

The Arduino connection diagram looks like this:
arduinosx150diagram

And the final connections, like this:
arduinosx150-detail

arduinosx150

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!

Music
Programming
Toys
Tutorials

Comments (8)

Permalink

The importance of having an open relationship with your IDE.

IDE’s: you either love them or you hate them, but there is no question about it: they do make a developer’s life easier. Developers that are really good with such a tool can seriously count on them being an extension of their body, an invisible limb, a partner. They physically hurt when the IDE crashes, they clean it, take care of it. But is this good or bad? Are developers leaving part of their brain on software? I think so. The worst part if they leave it there for too long they might not get it back.
Technology changes way too rapidly for programmers to develop such a strong relationship with a tool like this. Is this relationship beneficial? Absolutely, but you have to be ready to dump your software partner at a time when you least expect it. I know of stories where broken software hearts means having to change jobs.
The beauty of this relationship is that cheating on your IDE does actually benefit you as a developer. Besides, the IDE won’t get mad at you, even if it finds out. So my fellow developers, free yourselves. Play with other IDE’s, languages, techonologies and don’t be afraid. Times change rapidly, embrace change.

Programming

Comments (0)

Permalink

Playing JawBreaker with your friends’ head

I wrote this little game a couple of months ago and get a kick out of it every I see the main page. It is a clone of the JawBreaker game that comes with PocketPC, but I changed the “balls” with some friend’s heads. If anyone wants their own custom version (with the heads of _your_ friends instead) drop me a line.

You can click on the images to download the game.

Programming
Toys

Comments (0)

Permalink

Do you want to see what your phone number spells?

Do you ever wonder what your phone number spells?… well now you can easily figure it out with this simple script I wrote some time ago:

http://mrbook.org/spellmyphone

If you find out your phone number deserves a super-cool award, just post it on the comments, then … just let the calls begin!! :)

Programming
Tools
Web

Comments (0)

Permalink