I3) SuperCollider
The Swiss Army Knife of Synthesis
Where does this article fit in?
This article is part of the Introduction (I) series. It introduces SuperCollider, the target audio synthesis environment for the BP2SC project (Bol Processor to SuperCollider, the transpiler that converts BP3 grammars into SuperCollider code). Article I1 explains how BP3 (Bol Processor 3, see I2) and SuperCollider come together.
A programming language that makes sound
SuperCollider is not an ordinary music software. It’s not a DAW (Digital Audio Workstation) with a timeline. It’s not a synthesizer with knobs. It’s a programming language dedicated to sound.
You write code. The code produces music.
{ SinOsc.ar(440) * 0.1 }.play;
This line generates an A 440 Hz. Simple. But behind this simplicity lies considerable power.
A bit of history
SuperCollider was born in 1996, created by James McCartney. At the time, synthesis software was either very limited or proprietary and expensive.
McCartney wanted something else: an open, flexible environment where the musician-programmer had total control.
In 2002, SuperCollider became open source. The community exploded. Today, it is used by:
- Electroacoustic composers
- Live coders (real-time algorithmic performance)
- Researchers in acoustics and MIR (Music Information Retrieval)
- Sound artists and installers
- Computer music educators
Architecture: server + language
SuperCollider has a unique architecture: two distinct programs that communicate.
scsynth: the audio server
This is the synthesis engine. It generates sound, mixes signals, applies effects. It is optimized for real-time — minimal latency, maximum stability.
The server knows nothing about “music.” It receives instructions: “create an oscillator,” “change its frequency,” “stop this sound.”
sclang: the language
This is the interpreter. You write sclang code, and it sends commands to the server.
sclang is an object-oriented language, inspired by Smalltalk (a pioneering programming language where everything is an object and all interaction happens through message passing). It has classes, methods, inheritance. But above all, it has abstractions specific to music.
Why this separation?
Robustness. If your code crashes, the server keeps running. You can fix and restart without interrupting the sound.
This is crucial for live coding — nobody wants an awkward silence in the middle of a concert because a parenthesis is missing.
Patterns: composing through abstraction
The true power of SuperCollider for composition lies in Patterns.
A Pattern describes how to generate a sequence, not the sequence itself.
// A sequence of notes
Pbind(
\midinote, Pseq([60, 62, 64, 65, 67], inf),
\dur, 0.25
).play;
This code plays C-D-E-F-G in a loop, each note lasting 0.25 seconds.
Why it’s powerful
Compare with MIDI (Musical Instrument Digital Interface, see M1):
- MIDI: fixed list of events with timestamps
- Patterns: abstract description, generated on the fly
Patterns can be:
- Random:
Prand([60, 62, 64], inf)— random notes - Conditional: changing according to context
- Nested: patterns of patterns
- Modified in real-time: without stopping the music
Pdef: named and modifiable patterns
// Define a named pattern
Pdef(\melody, Pbind(\midinote, Pseq([60, 64, 67], inf), \dur, 0.5));
// Play it
Pdef(\melody).play;
// Modify it WHILE it's playing
Pdef(\melody, Pbind(\midinote, Pseq([72, 71, 69, 67], inf), \dur, 0.25));
The melody changes instantly. No reloading, no interruption.
This is exactly what we need to connect BP3 to SuperCollider.
Live coding: coding on stage
SuperCollider is one of the flagship tools for live coding — the practice where musicians write code in real-time in front of an audience.
Collectives like Toplap, festivals like Algorave, artists like Alex McLean or Thor Magnusson use SuperCollider on stage.
Code becomes a score. The screen becomes an instrument.
// A minimal beat, modifiable live
(
Pdef(\kick, Pbind(\instrument, \kick, \dur, 1));
Pdef(\hat, Pbind(\instrument, \hat, \dur, 0.25));
Pdef(\kick).play;
Pdef(\hat).play;
)
Change \dur, 0.25 to \dur, 0.125 and the hi-hat speeds up. In concert. In front of 500 people.
Synthesis: from oscillators to granular
SuperCollider is not limited to samples (prerecorded sound snippets) or predefined synths. You build your own instruments.
UGens: the basic building blocks
Unit Generators (UGens) are the primitives:
SinOsc: sine wave oscillatorSaw: sawtooth waveLFNoise0: low-frequency noiseRLPF: resonant low-pass filter- Hundreds of others…
Building a sound
(
SynthDef(\pad, { |freq = 440, amp = 0.1|
var sig = Saw.ar(freq) + Saw.ar(freq * 1.01);
sig = RLPF.ar(sig, freq * 2, 0.3);
sig = sig * EnvGen.kr(Env.perc(0.01, 2), doneAction: 2);
Out.ar(0, sig * amp ! 2);
}).add;
)
Synth(\pad, [\freq, 220]);
Two slightly detuned oscillators, filtered, with an envelope. A basic pad built from scratch.
Why SuperCollider for BP2SC?
We could have targeted other environments. Why SuperCollider?
1. Patterns preserve structure
BP3 expresses musical structures. SuperCollider’s Patterns do too. The translation is natural:
- BP3 Rule →
Pdef - Sequence →
Pseq - Random choice →
Prand - Polymetry → calculated durations
2. Real-time modification
A BP3 grammar transpiled to SuperCollider (see B7) becomes modifiable live. You can:
- Replace a motif
- Transpose
- Change the tempo
- All without stopping the music
3. Rich ecosystem
SuperCollider has 25+ years of development. Thousands of SynthDefs (reusable synthesizer definitions), extensions, tutorials. Our code integrates into this ecosystem.
4. Open source
No proprietary license, no dependence on a company. SuperCollider will exist as long as its community maintains it.
Getting Started with SuperCollider
Installation
SuperCollider is free and available on:
- macOS/Windows/Linux: supercollider.github.io
First sound
- Launch SuperCollider
- Type:
{ SinOsc.ar(440) * 0.1 }.play; - Select the line
- Press Ctrl+Enter (or Cmd+Enter on Mac)
- You hear an A 440 Hz
- Press Ctrl+. to stop
Resources
- Official documentation: doc.sccode.org + integrated Help (Ctrl+D on a word)
- The SuperCollider Book: MIT Press — complete reference
- Eli Fieldsteel: YouTube tutorials — excellent pedagogical series
- sccode.org: sccode.org — community examples
Conclusion
SuperCollider is more than a tool — it’s a philosophy. Code as musical expression. Programming as composition.
That’s why we chose it as the target for BP2SC. It shares with BP3 this vision: music as a formal, manipulable, generative structure.
In the next article, we will see how these two worlds come together in our approach.
In this series
- I2 — Bol Processor: 40 years of innovation
- I3 — SuperCollider: The Swiss Army Knife of Synthesis ← you are here
- I1 — Why I built a bridge between two worlds
roomi-fields explores the intersection between formal musical grammars and modular synthesis.