Collin sent me a pre-release sample of his MidiVox kit to try out, so I dutifully soldered it up, and then proceeded to have some fun with :-). It’s a cool little add-on shield for the Arduino, consisting of a MIDI input jack, DAC and audio output jack, allowing the Arduino to act as a MIDI synthesizer. The board and components are beautiful, with cool curvy traces (which I suggest you consider from an aesthetic standpoint, not an engineering one) and solid connectors, and I had little trouble assembling it. The kit included 5-banded resistors, which I didn’t remember how to decode, (it turns out they are higher precision then their 4-banded cousins), but a multimeter did the job just fine.
Once it was all put together, I grabbed the pre-release version of the software, and after working through some issues to get it to compile on my Linux system (filename case sensitivity, we make everything difficult!), and uncovering (and fixing) a bug in the Arduino environment that prevented a supporting library from compiling, the sketch uploaded fine. I plugged in a MIDI patch cable and was busting out melodies from my MIDI keyboard in no time.
Then, OCD mode kicked in, and strange things were made to happen… Becasue my keyboard only has one adjustment knob, I wasn’t able to use it to tweak all of the synth parameters, so I wrote a PD sketch to expose all of the knobs:
Then, I decided that I really wanted to use a sequencer to feed the MidiVox, so I fired up Seq24 and made some patterns, throwing in a drum track generated by QSynth. This was all working great using the MIDI out through my keyboard, but I realized it would be much more convenient if I could control it directly through the USB connection. Well, Steven Hobley recently made a program to achieve this in Windows, but I couldn’t find anything like it for Linux. Instead, I hacked up a copy of ttymidi to work backwards. It’s a pretty incomplete implementation of a serial->MIDI bridge (ideally, it would support bidirectional messages of all kinds, not just note on/note off/control), but it seems to do the job. If you are interested, the hacked-up mess is here, and be sure to set your Arduino to 38400 baud.
At the end of it all, I was able to relax on my couch and control the MidiVox directly from my laptop, without a MIDI cable in sight… quite a bit of fun! If I get inspired sometime soon, I’ll try to clean up the hack job I did to ttymidi, and release it properly.