Layering (or Multiplying) Generators
The idea behind multipliers is to provide a shorthand for layers.
Imagine the following ... you want to create a slightly modified version
of the same cycle and spred them over the stereo spectrum. (If you already know
TidalCycles, jux rev
comes to mind here)
(sx 'ba #t
(pear (rate-mul 0.8) (pos -1)
(every :n 32 (haste 2 0.5)
(loop 'fa (bd) (hats) (sn) (hats))))
(pear (pos 1) (loop 'fa2 (bd) (hats) (sn) (hats))))
Multiply and Spread
The 'xspread' multiplyer provides a convenient shorthand for that! here you only need to type the original generator and the modifiers you want to apply:
(sx 'ba #t
(xspread
(pear (rate-mul 0.8) (every :n 32 (haste 2 0.5)))
(loop 'fa (bd) (hats) (sn) (hats))))
Every modifier (or chain of modifiers) adds another layer:
(sx 'ba #t
(xspread
(pear (rate-mul 1.5) (sus 50) :p 30 (rev 0.3) (apple :p 10 (rewind 3)))
(pear (rate-mul 0.8) (every :n 32 (haste 4 0.5)))
(loop 'fa (bd) (hats) (sn) (hats))))
If you're working with more than 2 channels, the sound will be spread over the available channels (i.e. in an 8-channel setup).
Just Multiply
If you don't want to spread them over the stereo spectrum, the 'xdup' multiplyer skips that:
(sx 'ba #t
(xdup
(pear (rate-mul 1.5) (sus 50) :p 30 (rev 0.3) (apple :p 10 (rewind 3)))
(pear (rate-mul 0.8) (every :n 32 (haste 4 0.5)))
(loop 'fa (bd) (hats) (sn) (hats))))
You can apply modifiers to the multiplied result:
(sx 'ba #t
(pear (lvl 0.4) ;; <-- modify level of multiplied generators
(xspread
(pear (rate-mul 0.8) (every :n 32 (haste 2 0.5)))
(loop 'fa (bd) (hats) (sn) (hats)))))
Generator List
In fact, the 'ls' function puts the subsequent generators in a list so you can modify them as a whole:
(sx 'context #t ;; <-- set this to #f to mute this context !
(pear
:for 'sn :p 20 (rev 0.3)
:for 'percussion-generator :p 30 (del 0.5) // every "symbol" (starts with a ') can be a tag
(ls ;; <-- collect generators in list
(loop 'percussion-generator (~) (~) (~) (risset 'a5) (~) (~) (risset 'c6) (~))
(loop 'bassline-generator (saw 'a1) (~) (saw 'ds2) (saw 'e2) (~) (~) (saw 'c3) (~))
(loop 'beat-generator (bd) (~) (hats) (~) (sn) (~) (hats) (~)))))
(clear)