Square brackets in mini-notation subdivide one step into a nested sub-sequence
Wrapping tokens in square brackets [...] creates a sub-sequence that occupies the time of a single step in its parent sequence. The bracketed group is treated as one rhythmic unit and its contents share that slice equally, so in sound("bd [sd hh] cp") the three outer steps each take a third of the cycle, and sd and hh split the middle third between them. Brackets nest recursively — [[bd bd] hh] subdivides again inside the first half — which is how compact polyrhythmic subdivisions are expressed. This is distinct from the comma separator inside brackets: [cp,sn] layers its contents so they sound simultaneously (stacked patterns), whereas a space-separated group subdivides them in sequence. The two uses combine, e.g. [cp,sn casio].
Examples
sound("bd [sd hh] cp") — sd and hh share the second of three steps.
sound("bd [[rim rim] hh] bd cp") — nested subdivision.
d1 $ sound "bd [bd cp] bd bd" — a pair inside step 2.
s "bd [cp,sn]" — comma layers cp and sn simultaneously in the second half.
Assessment
Map the timing of each hit in s "[bd bd] [cp sn hh]" as fractions of a cycle. Then write a pattern where a kick hits three times in the first half of a cycle and a snare once in the second half using bracket notation, and rewrite it with one extra level of nesting. Explain how [a b] differs from [a,b].