Composing systems, not pieces
Learning objectives
- learner can design a rule-system that generates music rather than fixing notes
- learner can apply stochastic, Markov and L-system techniques to pitch and rhythm
- learner can counteract algorithmic flatness with interference, entropy and interactivity
Capstone — one whole task that evidences the objectives
Design and run a generative music system (in SC or Tidal) that combines a Markov or L-system generator with a stochastic layer, deliberately introduces interference between layers, and includes a mechanism countering uniformity — then critique the process-vs-product result by ear.
Prerequisite modules
This module marks the shift from writing notes to writing the machine that writes the notes. In a live-coded techno or ambient set, you cannot hand-place every event mid-performance; what carries a 30-minute set is a generative system whose behaviour you steer. The whole task here is to build such a system — in SuperCollider or TidalCycles, on the same rig your prior pattern modules used — and then judge honestly whether the process produced music worth keeping.
The arc starts supported: you extend a Pbind or Tidal pattern you already know with a single stochastic element, leaning on the bounded random walk (Pbrown) and the survey of algorithmic strategies as just-in-time how-tos. Next you swap flat randomness for memory — training a Markov model on a pitch/rhythm sequence (PPMC in SC, markovPat in Tidal) — and separately grow a rhythm from production rules using Prewrite or lindenmayer. Only then do you combine layers, deliberately letting a structural pattern and a material pattern collide, and add a mechanism (entropy variation, interaction, structural bias) against the dramatic flatness that pure generation drifts toward. The final run is unsupported: your system, your ears, your critique.
The required atoms are exactly what the capstone cannot survive without: the compose-a-system stance and meta-composition concept, one working Markov path and one L-system path, a stochastic layer, and the interference and anti-flatness principles that turn a demo into music. Supporting atoms enrich the edges — Spiegel’s transformation taxonomy, tendency masks, reproducible seeds, the halting problem’s strange resonance — deepening your critique without gating the build.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
scale-constraint
n("0 2 4 6").scale("c:minor")
strudel-0009 · CC0
play (scale :c4, :minor).tick; sleep 0.25
sonicpi-0012 · CC0
random-walk-melody
Pbind(\degree, Pbrown(0, 7, 1, inf), \dur, 0.25).play
supercollider-0027 · CC0
@n = (@n || 0) + [-1, 0, 1].choose; play (scale :e3, :minor)[@n % 8]; sleep 0.25
sonicpi-0019 · CC0
weighted-random-choice
play (ring :e3, :e3, :e3, :g3).choose; sleep 0.25
sonicpi-0020 · CC0
Pbind(\degree, Pwrand([0, 3, 7], [0.6, 0.3, 0.1], inf), \dur, 0.25).play
supercollider-0026 · CC0
pattern-sequencing
Pbind(\degree, Pseq([0, 2, 4, 7], inf), \dur, 0.25).play
supercollider-0023 · CC0
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Live Coder — zero to performing live-coded music — Generative Systems & the SuperCollider Stack required
Unlocks — modules that require this one