struct
Type: struct :: Pattern Bool -> Pattern a -> Pattern a
struct places a rhythmic 'boolean' structure on the pattern you give it.
For example:
d1 $ struct ("t ~ t*2 ~") $ sound "cp"
... is the same as ...
d1 $ sound "cp ~ cp*2 ~"
The structure comes from a boolean pattern, i.e. a binary one containing true or false values. Above we only used true values, denoted by t
. It's also possible to include false values with f
, which struct
will simply treat as silience. For example, this would have the same outcome as the above:
d1 $ struct ("t f t*2 f") $ sound "cp"
These true/false binary patterns become useful when you conditionally manipulate them, for example 'inverting' the values using every and inv:
d1 $ struct (every 3 inv "t f t*2 f") $ sound "cp"
In the above, the boolean values will be 'inverted' every third cycle, so that the structure comes from the f
s rather than t
.
Note that euclidean patterns also create true/false values, for example:
d1 $ struct (every 3 inv "t(3,8)") $ sound "cp"
In the above, the euclidean pattern creates "t f t f t f f t"
which gets inverted to "f t f t f t t f"
every third cycle.
Note that if you prefer you can use 1
and 0
instead of t
and f
.
See also mask.