Music engines for dynamic / generative music

I've been having various chats with developers about this and curious if anyone is thinking along the same lines … I think there are some really terrific possibilities for doing live music generation in jME; it's really an ideal environment for exploring some of the possibilities of new adaptive / reactive music scores.

The question is what to use as the music "engine."

OpenAL, while cool, doesn't really cover live synthesis or live-generated musical tracks (though it could complement those nicely with basic audio)…

fmod is very powerful, but it'd be great to be able to work with something that remains in the OSS domain, and even fmod is a bit of a stretch for doing more involved live synthesis and the like.

I wonder if a music/synthesis-specific library might be a good choice, instead. For instance, I had a chat with the fellow who did the music engine for Spore; he actually used the open source Pure Data as the engine, subtracting its GUI. This seems an ideal option, as Pd provides a graphical UI for patching – which could work for prototyping and experimentation – but can also be run "-nogui" as a headless engine, as it is used in Spore. It's also massively well-supported.

Other options:


Csound (which is also getting a Java wrapper…)


Anyway, this will be a much better discussion when I commit and have something to show for it. :slight_smile: But while I'm embarking on that, was curious if I was the only one.

Did you talk to McLeran?

From a certain point of view, I think you should add Midi to the list above.

I think I wouldn't use Midi, though, but I still think is a valid option as a dynamic syntesizer.

…especially for simpler games

@Trussell: yeah, talked to Aaron McLeran. It's also become somewhat common knowledge on the Pd list what he did – and sounds like he's doing some genius work elsewhere, as well!

@jjmontes/Mindgamer – I agree, absolutely. (I'm assuming you mean using MIDI + something like a DLS synth.) JavaSound should be stable for this; there's more support in FMOD, of course.

That said, for research purposes I'm quite keen to see what happens when jME becomes a live performance environment. (I'm a composer first…)

Aaron McLeran was my teacher in my Sophomore year of high school. He definitely IS a genius.

Wow, in high school? That's hilarious. Talk about a small world.

I hope to get out to LA – well worth the drive to Santa Barbara so I can go meet him. So hopefully I can put together a "meet the genius" interview or something!


Hey Peter!  It's been a while since we talked…  

I don't really know Java too well, but I'm convinced that the best way to go for building an interactive music engine is to do it in C++ or a lightweight embedded general purpose (i.e. not a music-based) scripting language like Lua. It's my experience that Java is too slow for serious audio work – but maybe I am wrong. I also think using PD, maxMSP, csound, supercollider, chuck, etc., will have resistance being supported by most normal developers – though I guess if you are working alone, who cares. For synthesis, there are a bunch of quality C++ based synthesis libraries and if you use something like portaudio, you can roll your own. All you need is a decent audio call-back API.

My personal ambition is to develop a C++ generative music library (similar in approach to supercollider's streams) that will be easy to adapt to any audio API system.

But I haven't been able to work on it too much as I've been spending my time in the last few months developing an interface for a new approach to analytical granular synthesis with Curtis Roads out over here at MAT. I and an electrical engineering colleague are presenting our work in like a week for ICMC in Belfast – I'm making a video demo of the software today! I'll send you our paper and a link to the video if you are interested in doing a piece on it at CDM.

Tyler – thanks! Tyler picked up programming like a fish to water… I had very little to do with it. :slight_smile:

I'd take an email with the video link, if it's not too much trouble.