SuperCollider: coding synthesis from UGens to patterns
Learning objectives
- learner can work in the SuperCollider client/server model — write SynthDefs from UGens, route buses, manage node order, and play/pattern them safely
- learner can build synthesis instruments in code: additive stacks, granular UGens, envelopes, filters, and effects
- learner can sequence and perform SuperCollider patches with Pbind/Pdef, respond to incoming OSC messages, and update patterns live
Capstone — one whole task that evidences the objectives
Write a SuperCollider SynthDef for a subtractive voice with a bandpass dry/wet filter blend (XFade2), an ADSR, and reverb, sequence it live with a Pdef-wrapped Pbind, and add a second granular SynthDef triggered by incoming OSC messages via OSCdef.
Prerequisite modules
This module turns synthesis theory into a playable instrument you build entirely in text. In a live-coding set — laptop on stage, projector showing your editor, audience hearing every evaluation — SuperCollider is the rig where a subtractive lead, a granular wash, and their sequencing all live in one file you rewrite while it plays. That is the whole task here: author voices as code, wire them safely through the server, and perform them as running patterns you mutate without stopping the music.
The arc starts fully supported. First internalize that SuperCollider is two networked programs (sclang talking OSC to scsynth) and that a Unit Generator is a server-side signal object — then drill the IDE evaluate-a-block workflow until it is reflexive, plotting before playing to protect your ears and monitors. Early exercises hand you working SynthDefs to modify: swap oscillators, remap modulators with .range/.exprange, shape amplitude with ADSR envelopes and doneAction so silent synths free themselves. Mid-module you build from scratch — additive stacks via iteration, buffer playback with PlayBuf and BufRd, an XFade2 dry/wet bandpass blend for the filtered voice, comb-delay effects — and learn why the reverb Synth must sit after its source in the node tree, reading from a properly allocated private bus. Sequencing then layers on: Pbind maps pattern streams onto SynthDef arguments, the pitch hierarchy resolves degrees to frequencies, Pdef lets you re-evaluate patterns mid-stream — the core live-performance move — and OSCdef routes incoming address-patterned OSC messages into the running patch.
The required atoms are exactly what the capstone exercises unsupported: a filtered voice built on a bandpass blend, correct envelope gating, bus-and-node-order routing, Pdef-wrapped sequencing, and a granular layer answering incoming OSC. Supporting atoms widen the palette — wavetable morphing, Klank resonators, polyphonic MIDI, live-input granulation safety, historic UGen lineage — enriching taste and troubleshooting without gating completion.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
fm-timbre
note("c3").s("sine").fm(4).fmh(2).fmi(3)
strudel-0204 · CC0
osc (midicps 24 * (1 ~~ 4 $ osc 110)) >> audio
punctual-0006 · CC0-1.0
live-hot-swap
live_loop :x do; play 60; sleep 1; end
sonicpi-0048 · CC0
Ndef(\a, { SinOsc.ar(220) * 0.1 }).play
supercollider-0037 · CC0
stereo-panning
d1 $ pan (slow 2 sine) # sound "hh*8"
tidal-0037 · CC0
SinOsc s => Pan2 p => dac; -0.7 => p.pan;
chuck-0042 · MIT
additive-synthesis
{ Klang.ar(`[[100, 200, 300, 400], [0.4, 0.3, 0.2, 0.1]]) * 0.1 }.play
supercollider-0022 · CC0
modal-resonator
{ Klank.ar(`[[200, 400, 733], [0.4, 0.3, 0.2], [1, 0.6, 0.4]], Impulse.ar(2) * 0.1) }.play
supercollider-0021 · CC0
pattern-sequencing
Pbind(\degree, Pseq([0, 2, 4, 7], inf), \dur, 0.25).play
supercollider-0023 · CC0
synthdef-abstraction
SynthDef(\beep, { Out.ar(0, SinOsc.ar(\freq.kr(440), 0, 0.1)) }).add; Synth(\beep)
supercollider-0043 · CC0
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Synthesist / Sound Designer — deep DSP to a performed live synth rig — Performance voices in a codable synthesis engine required
Unlocks — modules that require this one