Being at loose ends this week, I decided to take a close look at SuperCollider. I’ve spoken to musicians who love it and use it extensively. These are experimental musicians, you understand, most of them working in university environments. Even though SuperCollider is entirely free and extremely powerful, it would not be a good choice for a pop musician.
Well, let me qualify that slightly. If you’re doing electronic dance music, you want to build a library of unique sound effects that nobody else will have, and you’re already conversant with computer programming, SuperCollider might be well worth looking at. But only an extreme masochist would try to produce a pop ballad with it.
I’ve already spent a lot of time learning my way around Csound, which is also free, extremely powerful, and unlikely to appeal to anybody but programmers and the academically entrenched. The two systems both require that you create music by typing lines of code. But in other respects they’re very different, and those differences are what I found myself pondering.
SuperCollider is a modern, object-oriented language. Embedded anonymous objects are the norm. To make a simple synthesizer, for instance, you first create an audio output object. You then pass a filter object to the output object as an argument. Inside the filter, as arguments, you embed an envelope generator and an oscillator (both objects).
This whole instrument can be written as one very long line of code, a line marbled with parentheses, curly braces, and perhaps a few square brackets too. And the default editor for SuperCollider doesn’t find matching braces automatically, so you’ll be doing a lot of eyeballing.
Csound, in sharp contrast, is an old-fashioned, primitive language — not with respect to its music-making power, absolutely not! — but in its coding syntax. Csound even has goto statements, like BASIC. It’s procedural; you write a synth line by line. You write a score note by note, one note per line of code.
Csound operates much more the way I think. And I suspect I”m not alone in that. When I create a synth in Csound, a named variable (such as afiltout or kenvout) operates exactly like a patch cord on an analog synth. The types of “patch cords” can even be distinguished by looking at them: Those that begin with an “a” are audio, those that begin with a “k” are control. It’s the same as color-coded physical cords.
When I want to attenuate the filter’s output in Csound using an envelope generator signal, I can create the digital equivalent of an analog VCA like this:
asig = afiltout * kenvout
The multiplication symbol (*) creates a VCA. What could be simpler?
Of course, I have the advantage that I’ve used Csound off and on for years. Never very intensively, but I know how to do stuff. And it’s not the only hobbyist programming language I’ve mastered. I’m not sure how easy Csound would be for the average musician to learn. But I’m pretty sure that for anyone who has worked with hardware synthesizers and racks of outboard gear, Csound makes more intuitive sense than SuperCollider.
Hey there,
I was not aware of these programs and they sound intriguing. I have recently gotten back into recording and have been having some fun in the soft synth world. I wanted to ask you what your opinion of Reaktor is. I just picked it up and after having sat down with it for a couple of days it seems pretty deep and flexible. Judging from your description of these programs they sound similar to Reaktor in their approach. I ask because I now have quite a few soft-synths (Komplete, the Sonar producer stuff, some Arturias, Reason, etc) and I am planing to force myself to learn one of them in and out, backwards and forwards, top to bottom etc., and it is a matter of choosing the right one. This is going to be a real project for me so I want to choose wisely. At the moment I am leaning heavily towards Reaktor but wanted to ask you which one you would choose if you were to dig in to one softsynth exclusively for a couple of months.
On a related note, you mentioned modulars in a later post and there is something about the old beasts isn’t there? The university I went to had a large Buchla 200 and the thing was a blast. Tuning was always ‘interesting’ but that was part of the charm of the thing. It sounded alive. The step sequencer was fantastic and flexible and to this day I still get all warm and fuzzy inside when I hear huge and out of tune modular sequences.
Reaktor is certainly very cool too! It’s been a couple of years since I did any Reaktor patching, so my impressions are hazy. Csound is a bit more of a composition environment, in the sense that you’re creating both a set of instruments (which can, of course, be patched together into one uber-instrument) and a score (a list of notes). With Reaktor, the assumption is probably that you’re going to be doing the sequencing as MIDI tracks in a DAW. This is far easier than using a Csound score, but also far more limiting.
I haven’t used SuperCollider enough to compare it intelligently to the other two systems as a production tool. My post was strictly about the programming syntax — I didn’t get beyond that.
I once wrote a piece for O’Reilly Digital Media in which I described Reaktor as my “desert island synth,” which I think is what you’re talking about in terms of using just one instrument exclusively. If you already own a copy, I’d say go for it. (SuperCollider and Csound are both free.)