TidalCycles select and pickF use a numeric pattern to switch between whole sub-patterns or transforming functions
Where choose picks values, the select family picks whole patterns or functions using a control pattern. select fpat [p1,p2,...] uses a pattern of floats in 0–1 to index into a list of patterns, crossfading control to whichever the float points at. squeeze does the same but indexed by a pattern of integers. selectF fpat [f1,f2,...] p and pickF ipat [f1,f2,...] p do the analogous thing for functions: a float (or integer) pattern chooses which transformation to apply to p each moment. This lets a modulating signal (e.g. a slow sine, or a hand-written index sequence) drive structural or transformational switching, a core technique for evolving live sets.
Examples
d1 $ select (slow 8 sine) [s "bd*4", s "hh*8", s "cp(3,8)"]
d1 $ squeeze "0 1 2" [s "bd*4", s "hh*8", s "cp(3,8)"]
d1 $ pickF "0 1" [fast 2, rev] $ s "bd sn hh cp"
Assessment
Explain how select differs from choose. What is the difference between select and squeeze in how they index the list? Write a pickF line that alternates between reversing and doubling a pattern each cycle.