Mini-notation rhythm construction
Learning objectives
- learner can build rhythms with subdivision, multiplication, rest, replicate and elongate operators
- learner can express polyrhythm and polymetre with bracket syntax
- learner can generate Euclidean rhythms from (k,n) notation
Capstone — one whole task that evidences the objectives
From a blank Tidal/Strudel buffer, construct a polymetric drum pattern that combines nested subdivisions, replication, an elongated accent, and a Euclidean (k,n) hi-hat, then explain how cycle-orientation makes the cross-rhythm emerge.
Prerequisite modules
This module builds the core motor skill of algorave drum programming: typing a full, groove-worthy drum pattern into a blank Tidal or Strudel buffer using mini-notation alone. On stage, the mini-notation string is your drum machine — there is no piano roll to fall back on, so tresillo hats, uneven accents, and drifting polymetres all have to flow from a handful of operators you can type without thinking, mid-set, while the previous pattern is still playing.
The arc starts supported: with a working groove from the prerequisite modules on screen, the learner edits single steps — subdividing one slot with square brackets (“square brackets subdivide one step into a nested sub-sequence”), adding a roll with the asterisk multiplier, punching a hole with the tilde rest. Next come the two operators beginners conflate with those: replicate (”! replicates a step n times at equal duration”) and elongate (”@ elongates a step proportionally”), drilled until the *, !, @ distinction is automatic. The learner then layers with commas, contrasts square-bracket polyrhythm against curly-bracket polymetre, and drops in a Euclidean hi-hat via the (k,n) parenthesis notation. The capstone strips the scaffolding away: a blank buffer, one polymetric pattern combining all of it, plus a spoken explanation of why the cross-rhythm emerges — which is gated by the cycle-as-time-unit and cycle-not-beat atoms, since the explanation only works if you understand that everything is rescaled into one shared cycle.
Supporting atoms enrich rather than gate: the / stretch operator, angle-bracket alternation, the euclid function form, Strudel’s polymeter variants, and the Bol Processor lineage that explains where this notation’s cyclic worldview comes from.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
euclidean-rhythm
s("bd(3,8)")
strudel-0004 · CC0
d1 $ sound "bd(3,8)"
tidal-0004 · CC0
polymeter
s("{bd sd, hh hh hh}%4")
strudel-0007 · CC0
d1 $ sound "{bd sn, hh hh hh}%4"
tidal-0007 · CC0
polyrhythm
s("bd*3, hh*4")
strudel-0006 · CC0
d1 $ sound "bd*3, hh*4"
tidal-0006 · CC0
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Live Coder — zero to performing live-coded music — Patterns, Grooves & Voices required
Unlocks — modules that require this one