Exploring the live-coding language landscape
Learning objectives
- learner can build sound in a graph/grid paradigm (Glicol or Orca)
- learner can sequence and time music in a strongly-timed or agent/score model (ChucK or ixi lang)
- learner can pick a tool by the first skill and time-model it fronts
Capstone — one whole task that evidences the objectives
Recreate the same short groove in two contrasting non-Tidal environments — one grid/graph tool (Orca or Glicol) and one strongly-timed or agent/score tool (ChucK or ixi lang) — and write a comparison of how each tool's time-model and first-skill shaped what you could express.
Prerequisite modules
You already have one groove language under your fingers from the Strudel starter; this module deliberately breaks the monogamy. In a real algorave scene, the performer beside you might be nudging letters around an Orca grid feeding MIDI into a hardware synth, chaining Glicol nodes in a browser tab, advancing now sample-by-sample in ChucK, or shaking a named ixi lang agent whose score rewrites itself on the projector. Being able to translate one musical idea across these paradigms — and to articulate what each tool made easy or impossible — is what separates “knows a tool” from “understands live coding.”
The arc is a ported groove, always crossing both paradigm families. Start in the grid/graph world: build a minimal beat in Orca (using the 2D grid, base-36 encoding, clock/delay timing, track sequencing, and MIDI output) or in Glicol (directed-graph node chaining and the space-divided seq syntax). Then rebuild the same groove in a time-explicit or agent-based world: use ChucK’s strongly-timed now advancement, the => UGen chain, and sporked shreds — or use ixi lang’s named agents, three bracket-syntax modes, and self-rewriting score. Because the capstone always requires one representative from each family, every required atom is genuinely load-bearing: the grid/graph atoms gate the first half, the timed/agent atoms gate the second half, and the time-model and first-skill framings supply the vocabulary for the final write-up.
The supporting set enriches the map — Orca’s self-modifying projectors, ChucK’s analyzers, ixi’s coder mode and SuperCollider parasitism, Glicol’s design philosophy and advanced embedding, and the broader design principles about constraint and notation — deepening the comparison without gating it.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
polymeter
s("{bd sd, hh hh hh}%4")
strudel-0007 · CC0
d1 $ sound "{bd sn, hh hh hh}%4"
tidal-0007 · CC0
polyrhythm
s("bd*3, hh*4")
strudel-0006 · CC0
d1 $ sound "bd*3, hh*4"
tidal-0006 · CC0
voice-concurrency
fun void voice(){ SinOsc s => dac; while(true){ 1::second => now; } } spork ~ voice();
chuck-0010 · MIT
in_thread do
loop { play 60, release: 0.2; sleep 1.0/3 }
end
loop { play 67, release: 0.2; sleep 0.25 }
sonicpi-0052 · CC0
strongly-timed-sequencing
1::samp => now;
chuck-0008 · MIT
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Live Coder — zero to performing live-coded music — Patterns, Grooves & Voices optional