What the heck is generative music anyway?
So, I don’t have a musical background. I love many forms of music but never learned to play any instruments as a child, don’t feel I have much sense of rhythm, and couldn’t tell you C# from F. Yet music is math and I know math, and much of the music I love has a palpable structure that you can appreciate. Over the years the gulf between these two things has bothered me.
A few months ago I came across (and I can’t remember where, so thank you if you’re the person who linked it for me) a video that changed everything. It was of something called reacTogon and it blew my mind:
The ability to both see and manipulate, in real-time, the structure of the music you are generating fascinated me. “This is something I would love to play with.”, I thought. Building my own reacTogon was far beyond me, but I reasoned that creating something like it in software shoudl not be.
I had, coincidentally, recently bought Topher Cyll’s book ”Practical Ruby Projects” which has a chapter all about generating MIDI. I set about creating something that would let me play with the reacTogon concept in software.
With Topher’s LiveMIDI library in hand it wasn’t that hard to get something up and running. I learned about the harmonic table and built a data structure to represent it and the layers of elements that represent playheads being generated, played, and so forth.
I was kind of surprised that it worked, but it did.
However it was very hard to use. I was programming it using a YAML file and having to more or less guess where things might sound good. What it lacked was the visual feedback and tweakability of the reacTogon.
After spending some time trying to see how feasible it would be to graft a UI on top of my Ruby code I decided to bite the bullet and reimplement the musical engine in Objective-C and build the whole thing as a Cocoa application.
The result is Elysium which is being beta tested by a few brave souls right now. Here’s a screen shot or two and you can listen to this, rather ad hoc, composition too:
Posted by Matt on Monday, September 22, 2008


