Modular analogue synthesis as an extension of a digital system, part 2

A few words about SuperCollider for users of modular synths

SuperCollider is just like a modular synth – a real-time audio synthesis environment, except the sound generation takes place digitally and is put together using a text-based language.

For instance, if I want to play a sine oscillator at 340 hz, I can just enter this:

{ SinOsc.ar(340, 0, 0.8) }.play

The 3 values in brackets correspond to the frequency, phase and amplitude of the sine. Just like the sockets on a modular, other signals can be plugged into these inputs. Now I might want to modulate the phase using a triangle wave:

{ SinOsc.ar(340, LFTri.ar(300, 0, 60), 0.8) }.play

I could carry on expanding this patch, combining signals and modulations until the CPU runs out. It could contain at least a few thousand simple waves like this before that happens.

SuperCollider really consists of two programs: the “Language” and the “Server.” The Server is what generates the sound and can be run as a separate process. The Language is the controlling part: it is used (via text-based commands as seen above) to compile SynthDefs (“synth definitions.”) These are relatively small chunks of code, which are sent to the Server and can then be played. They encapsulate a patch structure, and several based on the same specification can be played with different arguments. Each playing node is termed a “Synth,” and they can themselves be plugged into each other in any order desired.

A few words about modular synths for users of SuperCollider

It’s like Max/MSP, only for real, and generally speaking it sounds better.

“Modular analogue synthesis as an extension of a digital system”

What is meant by this? Well, one thing that modular synths lend themselves to is being constantly tweaked – knobs turned and patch cords plugged and unplugged during a performance (whether that “performance” is on stage or at home for one’s own pleasure.) This kind of dynamism can also be achieved using a text-based computer language, but it’s a bit more difficult! Even spontanious actions require a lot more forethought.

My intended usage of the box of modular synths sitting on my desk is to wire up a patch and have (broadly speaking) absolute control over the sound that emerges, which means very little physical interaction after that. I might want to adjust the resonance of a filter now and again, or balance some levels, but once the patch is wired, it stays. There will be another patch running on SuperCollider which depends on this extension being the way it is, so any carefree re-plugging would probably result more often in silence than another kind of sound. That’s not to say the resulting audio will be static – there are plenty of methods of control which don’t rely on the turn of a knob.

The aim is to use the kind of control only possible via digital means on the kind of sound only possible via analogue components. To pick one example, your average analogue envelope is a very simple 4-stage ADSR affair, but how about having a 24-stage envelope, or changing the envelope every single beat in very precise ways? If there is a module for that, I haven’t found it yet. That leads us onto the first thing on my list: drum sounds.

This entry was posted in code, music and tagged , , , , . Bookmark the permalink.

Leave a Reply