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).