home/ atoms/ temporal-abstraction-live-coding

Different live coding systems model time differently: metric cycles (Tidal), coroutines with explicit waits (ChucK), and temporal recursion (Extempore)

Live coding systems diverge significantly in how they represent time. TidalCycles uses rational-number cyclic time, treating patterns as functions over cycles with exact metric subdivision. ChucK uses coroutines (‘shreds’) with explicit time advancement via a ‘now’ variable — the programmer writes ‘wait 0.5::second; now’ to advance time precisely. Extempore (and Impromptu before it) uses temporal recursion: a function schedules itself to run at a future time, creating a recursive performance loop. Each model has distinct affordances for different musical tasks — metric patterning, precision timing, and recursive self-modifying structures respectively.

Examples

ChucK: 0.5::second => now; advances time by half a second within a shred. Tidal: fast 2 $ bd doubles the cycle rate. Extempore: (define loop (lambda (beat) ... (callback (*metro* 'beat-to-time (+ beat 1)) 'loop (+ beat 1)))) recurses at each beat.

Assessment

Compare and contrast how TidalCycles and ChucK represent musical time. What musical tasks is each model best suited for, and what tasks does each make difficult?

“Impromptu and Extempore both use graphical overlays to reveal information such as timing of musical sequences”
corpus · the-oxford-handbook-of-algorithmic-music-mclean-and-dean-eds · chunk 73