home/ atoms/ tidal-spread-multi-parameter

TidalCycles spread applies a function with each of a list of parameter values in turn, cycling one value per cycle

spread f [v1,v2,...] p applies function f with parameter v1 to pattern p in cycle 1, with v2 in cycle 2, and so on, cycling through the list. This ‘spreads’ a parameterised transformation across multiple values over successive cycles. spread fast [2,3] $ sound "ho ho:2 ho:3 hc" alternates between double-speed and triple-speed. The most powerful use is spread ($) [f1,f2,f3,...] p, which cycles through entirely different transformations: reverse, slow, striate, etc. fastspread squashes all values into one cycle. spreadChoose selects values randomly rather than sequentially. Note: pattern syntax alternatives like fast "<2 3>" are often equivalent and more readable.

Examples

d1 $ spread fast [2,3] $ sound "ho ho:2 ho:3 hc"
-- equivalent to:
d1 $ fast "<2 3>" $ sound "ho ho:2 ho:3 hc"
-- multiple different transforms:
d1 $ spread ($) [density 2, rev, slow 2, striate 3, (# speed "0.8")] $ sound "[bd*2 [~ bd]] [sn future]*2 cp jvbass*4"

Assessment

Explain why spread fast [2,3,4] sounds different from fast "2 3 4". Describe what spread ($) [rev, id, fast 2] does over three cycles. When would you use spreadChoose instead of spread?

“The `spread` function allows you to take a pattern transformation which takes a parameter, such as `slow`, and provide several parameters which are switched between.”
corpus · tidalcycles-alteration-reference-ply-chunk-linger-snowball-s · chunk 3