ChucK vs SuperCollider
Two mature audio programming languages with very different ideas about time. ChucK makes time an explicit part of the language; SuperCollider splits the problem into a language and a synthesis server.
Side by side
| ChucK | SuperCollider | |
|---|---|---|
| Timing model | Strongly timed — time is in the language | Server scheduling, client-side patterns |
| Architecture | Single VM | Client (sclang) + server (scsynth) |
| Sample-level control | Yes | Via UGens, less directly |
| Pattern system | Simpler | Rich Pattern/Event system |
| Ecosystem | Smaller | Large |
| Teaching use | Strong — used in courses | Steeper |
| Language | ChucK | sclang |
| License | GPL-2.0 | GPL-3.0 |
| Platforms | macOS Windows Linux Web iOS Android | macOS Windows Linux |
| First released | 2003 | ~1996 |
| Maintained | Yes | Yes |
Where they actually differ
ChucK puts time in the language
The => ChucK operator and advancing time with samp or ms make timing explicit and sample-accurate. You can write code that reasons about individual samples without leaving the language. SuperCollider handles time through server scheduling and patterns, which is powerful but never as directly legible.
SuperCollider’s client/server split cuts both ways
Separating sclang from scsynth means the synthesis server keeps running when the language crashes, and you can drive one server from other clients — including Python via Supriya. It is also the thing newcomers find most confusing, and the source of most "why is there no sound" problems.
The Pattern system is SuperCollider’s strongest card
Patterns and Events give algorithmic composition a vocabulary that ChucK does not match. If generative or process-driven composition is the goal rather than DSP experimentation, this is the deciding feature.
Both are mature and both are idiosyncratic
Neither is a wrapper around someone else’s engine; both have decades of development and their own strong opinions. Expect to learn a worldview, not just syntax.
Which should you choose?
Choose ChucK when…
- You want sample-accurate, explicitly timed code
- You are teaching or learning audio programming fundamentals
- You prefer one process and one mental model
- You are experimenting with DSP at a low level
Choose SuperCollider when…
- You want the deeper synthesis engine and UGen library
- Algorithmic composition via patterns is the goal
- You want the larger ecosystem and community
- You want to drive the server from another language