home/ atoms/ voice-concurrency-polymeter-realization

Polymeter, polyrhythm, and counter-melody are realized in imperative engines as genuinely separate concurrent timelines that can drift

Voice concurrency — running multiple independent, self-timed threads — is how the imperative engines (ChucK, Sonic Pi, SuperCollider) realize musical concepts like polymeter, polyrhythm, and counter-melody. Each voice runs on its own clock at its own rate, interleaved into one output. This is not the same as layering within a single cycle or pattern: the voices are genuinely separate timelines that drift relative to each other, producing the phase relationships inherent in polymeter. In pattern engines (Strudel/Tidal), polymeter is expressed declaratively within one cycle; in imperative engines it emerges from actual concurrent execution.

Examples

Sonic Pi: two concurrent live_loops, one with sleep 1 (4/4 kick) and one with sleep(4/3) (3/4 hi-hat) — they drift and realign over 12 beats without any explicit phase calculation.

Assessment

Explain why polymeter implemented as two concurrent threads sounds different from polymeter implemented as a single stacked pattern in Strudel. What does ‘genuinely separate timelines’ mean?

“*how* `polymeter`/`polyrhythm`/`counter-melody` get realized in these engines — as genuinely separate timelines that can drift, not as one stacked cycle or one graph.”
context/ · L2-composer/music/time-and-concurrency.md · chunk 1