Tidal's fundamental time unit is the cycle, not the beat, so adding events packs them tighter rather than lengthening the bar
TidalCycles and Strudel use the cycle — not the beat — as the fundamental unit of time, a model inherited from the Bol Processor of Indian classical music. The cycle is an ever-running loop in the background, even when nothing is playing. All events in a pattern are distributed evenly across exactly one cycle regardless of how many there are, so a 2-step and a 12-step pattern take the same wall-clock duration; adding elements packs them proportionally tighter, making each shorter (faster), not extending the bar. Cycle speed is set globally by cps (cycles per second) — Strudel/Estuary default ~0.5 (one cycle every 2 seconds); a common tutorial simplification is ‘one cycle per second’ before correcting to the real default. A tilde ~ is a rest that consumes its share silently. Because every pattern shares the same cycle boundary, patterns of differing event counts run concurrently and produce polyrhythms by default with no special setup.
Examples
d1 $ sound "bd sd" -- 2 events / cycle
d1 $ sound "bd sd hh cp mt arpy drum odx" -- 8 events, same cycle duration (faster)
setcps 0.5 -- 1 cycle = 2 seconds
sound "bd sd hh" (3 events) against sound "cp*5" (5 events) yields a 3-against-5 polyrhythm because both finish at the same cycle boundary. s "bd cp ~" plays two sounds in a three-slot grid with a silent third slot.
Assessment
A learner says ‘I want the kick every 500ms.’ Explain why Tidal does not work that way and give the cycle-based equivalent. To slow one pattern without changing cps, what do you use, and what happens to a second pattern playing alongside it? Predict the rhythm of s "bd ~ sn ~ cp ~" before running it.