home/ atoms/ strudel-fast-slow

fast(n) and slow(n) scale a whole pattern's tempo, the function forms of * and / in mini-notation

fast(n) compresses a pattern so it repeats n times per cycle; slow(n) stretches it so one repetition takes n cycles. These are global time-scaling operations applied to the entire pattern, and they are the function-form equivalents of mini-notation’s *n and /n, which apply to individual steps. So s(“bd sd hh cp”).fast(2) plays 8 events per cycle, and fast(0.5) equals slow(2). They work by transforming the query timespan rather than the event timespans, so they compose cleanly with every other operator. Their arguments can themselves be patterns — fast(“1 2 4”) applies a different speed each cycle — which is the usual way to build accelerating fills or breakdowns. The function and mini-notation forms can be freely combined.

Examples

sound(“bd sd hh cp”).fast(2) // 8 hits per cycle sound(“bd sd hh cp”).slow(2) // 4 hits spread over 2 cycles sound(“bd*4”).fast(“1 2 4”) // patterned speed, changes each cycle // fast(2) on “bd sd” is equivalent to mini-notation “bd sd bd sd”

Assessment

For note(“c3 e3 g3”).fast(3), state how many notes play per cycle. Then rewrite sound(“bd sd”).fast(3) using mini-notation only (no fast).

“We can use `fast` and `slow` to **change the tempo of a pattern outside of Mini-Notation**”
“Speed up a pattern by the given factor. Used by "*" in mini notation.”