Twenty years of colliding

I’m just recalling this morning that it was exactly in December 2002 that I (as a recent PhD graduate) was filling in for my former advisor’s undergraduate electronic music course while he was on sabbatical.

To demonstrate convolution reverb, I needed an exponentially-decaying burst of noise. SC 2’s price had just been cut down to $0, and I thought… this would be just the tool to produce that.

It took some 40 minutes to find the right UGens and end up with something like { *, 0.01, 2.0) }.record(2.0).

I had tried to write some DSP in C before (without much success, because I hadn’t learned the UGen concept). To do in one line what would have taken a page of code the other way blew my tiny little mind.

Within a couple of months, I had upgraded to OS X, and SC Server, and lost interest in any other audio software.

If I could remember which day of the month it was, I would say “It was 20 years ago today”… but I don’t, so I’ll celebrate my twenty-year monthaversary.

Cheers to this community for opening a very large territory that redefined me as a musician!



If I were doing that demo in class today, it would look like this. Surprisingly not bad for a dumb impulse response!

b = Buffer.alloc(s, s.sampleRate * 2, 1);

	var sig = *, 0.01, 2.0);, b, loop: 0, doneAction: 2);
	(sig * 0.1).dup

c = Buffer.alloc(s, PartConv.calcBufSize(1024, b), 1);
c.preparePartConv(b, 1024);

a = {
	var trig =;
	var eg =, 0.01, 0.2);
	var sig =, 800, trig)) * eg;
	var rvb =, 1024, c);
	(0.02 * (sig + (0.7 * rvb))).dup



ok quick question!

how long did it take you to be proficient?

…and how long to master?

I’ve been Colliding for ten years - started 2012. When I started I was already in love with making music with code but felt pulled in multiple directions by the different systems available. It was the existence of the sc-users mailing list (RIP) and in particular your prolific help on the list that brought me to SC.

Most people at the NYC SC users group have heard me say a variation of “if it weren’t for JH on the mailing list I’d probably have ended up using [other system].”

A heartfelt thanks, and here’s hoping for many more years!

1 Like

Hmm… I had some programming experience before approaching SC so I’d say “proficiency” might have come more quickly for me than for many others perhaps. It still took upward of a year before I felt ready to perform (I had one live piece in 2004 that very nearly crashed and burned; by the next year it was more stable).

Some of this time was spent making tool sets – I knew I would be unhappy working directly with buses and groups, so one of my first projects was MixerChannel (and I never regretted that – for the most part, I don’t have to worry about routing and execution order at all).

Mastery… This continually evolves so it’s hard to pinpoint a threshold. I’m not even sure how to define it. To be honest, I was struggling with some architectural issues even going into the 2010s, about managing the upper levels of musical form. I guess one definition of mastery is that you already tried all the bad ways of doing things so you don’t waste time on those anymore :laughing: in which case, that’s also a constantly moving goal line.

(Btw “already tried the bad ways” comes from recent experience teaching Pure Data – I thought I knew what I was doing but it still took 2 years to start feeling proficient – from this, I learned that there’s no substitute for making and discarding mistakes.)


thanks so much for taking your time to answer people here james - was moved to read this taking up sc after some time. happy versary still !

happy anniversary! i learned a lot from reading all your thorough answers to even the silliest of questions, so thanks and all the best–


1 Like

I am looking for collaboration with a proficient SuperCollider coder.

For my project called “Planet Drone” (OOSTVEEN | PLANET DRONE) I am in the process of creating/tweaking “patches” (i.e. different sounds or .scd files) and one of those patches is for the module to control over OSC a patch that takes a .wav file (a drum loop) and chops this in x number of slices and rearranges them constantly so it becomes a never ending beat-chopped loop.

I got the OSC part sorted … I just need the SC code that can be executed in one go and it should have 4 or more OSC inputs so to speak (like changing the number of slices on the fly - or playback-speed, rate of randomized chopping etc.)

I am happy to discuss financial incentives for you time on this.

Kind regards, Erik


Thanks, will take that conversation private.