Sunday, October 12, 2008

Archaeopteryx: MIDI In

My biggest thrill at RailsConf had nothing to do with Rails or the conference.



If you're wondering who Richie Hawtin is:



But my big takeaway from the conversation was that Archaeopteryx wasn't actually useful for Hawtin yet. It needed MIDI In. Since I stole all my MIDI Out code from his awesome book Practical Ruby Projects, I e-mailed Topher Cyll, who told me CoreMIDI on OS X handles MIDI In differently from MIDI Out. I would need a callback function in Objective-C, which meant handling it entirely in Ruby via Ruby DL - the same way Archaeopteryx handles MIDI Out - would be impossible. I don't know C or Objective-C. I was screwed.



Things got delayed. Fast forward a few months. Thanks to the work of Markus Prinz and Xavier Shay, a library called rbcoremidi now provides Ruby access to MIDI In (OS X only for now, sorry). Xavier is also working on an implementation of the HTTP drum/visualization idea I explained in my talks on Archaeopteryx.

I haven't had time to integrate this code directly with Archaeopteryx yet, but this makes it possible to transform Archaeopteryx from output-only to input-output. MIDI is to music gear what HTTP is to the Web.

You need to build a bundle file manually in XCode for it to work. I've made a very unpolished screencast. Fair warning, I was pretty tired when I made this, and maybe a little incoherent. I also had to upload it to S3, because of some truly bizarre file import issues on Vimeo.

Screencast (72MB)