notes on javascript, linux, and more


synthesizer programming pipe dreams

I have a Nord Modular synthesizer, by Clavia. It is really a fantastic synthesizer; 4 DSPs and there is a nice GUI to create your synth patches with.

There are a plethora of software programs that do the same thing, such as SynthEdit, OpenSoundWorld, MaxMSP, and PureData. I've used them all, and I constantly find myself wishing that there was a more powerful sequencer module built-in to all of these synthesizers. I don't like using multiple programs to make music (sequencer/tracker, audio recording, synthesizer, etc), because I find all the switching modes to be distracting. I like the MSP and PD approach of building it all from scratch and keeping it all together, but the interface is very important to me, and the one thing I don't like to mix are the controls in the same place as the "code behind".

So, early in my computer science career, I decided to write my own modular synthesizer, with a heavy emphasis on the sequencer. First, I played around with C++, then I learned Java, and I tried that, but neither of those languages really seemed very nice for creating a modular synthesizer. I really loved the Scheme programming language, and thought that its functional style and emphasis on tail-recursion would be ideal for DSP and modularity. However, I didn't want to have to build my own MIDI and audio libraries from scratch, and I wasn't a good enough programmer to figure out how to write a foreign-function-interface (once I started mixing C pointers in with Scheme, I just got confused). So, along comes Python. Python has extensive libraries, many related to MIDI, audio, and music, and it has a nice, elegant style somewhat reminiscent of Scheme. I am looking into PySndObj and Csound right now. I'll update here as things progress, if they do.


Ash said...

Why not build a sequncer in Max or PD ? All the logic & storage objects from max are suitable for this kind of thing. You could also encapsulate everything in subpatchers to keep the control & audio stuff separated. I'm guilty of the exact opposite of this: patcher sprawl myself. Hmm - I've been looking at a 2nd-hand Nord Modular - it's a really tempting item I must say.


elijahr said...

Thanks for the suggestion. I have been leaning towards doing something like this in PD lately. Nord Modulars are great, but I would say go for the G2 if you can. Its not exactly the same beast, but the extra horsepower does make a difference. Cheers!

About Me

My photo
chicago, il, United States
I'm a software engineer by profession.