home/ modules/ mini-notation-rhythm-construction

Mini-notation rhythm construction

  • 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

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.

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

Mini-notation specifies patterns tersely inside a string, with events spaced evenly across one fixed-length cycle
Concept L1 Foundations F
Tidal's fundamental time unit is the cycle, not the beat, so adding events packs them tighter rather than lengthening the bar
Concept L1 Foundations F
TidalCycles is oriented around cycles rather than beats, so mixing fractional steps yields cross-rhythms easily
Principle L2 First instrument FA
Square brackets in mini-notation subdivide one step into a nested sub-sequence
Concept L1 Foundations F
Asterisk in mini-notation speeds up a step, fitting n repetitions into its allotted time slot
Concept L1 Foundations F
! in mini-notation replicates a step n times at equal duration
Concept L2 First instrument F
A tilde or hyphen in mini-notation inserts a silent step that preserves the grid
Fact L1 Foundations F
@ in mini-notation elongates a step proportionally, weighting its duration relative to neighbours
Concept L2 First instrument F
Comma in mini-notation stacks patterns to play simultaneously in parallel
Concept L1 Foundations F
Square brackets in Tidal mini-notation create sub-patterns that fit multiple events into a single step
Procedure L2 First instrument F
Comma-separated patterns inside square brackets create polyrhythms in Tidal
Procedure L2 First instrument F
In Tidal mini-notation, [] stacks subsequences into one cycle (polyrhythm) while {} aligns them step-for-step (polymetre)
Concept L2 First instrument FA
Tidal's mini-notation parses polymetric rhythms from strings using square and curly bracket operators
Procedure L2 First instrument F
Tidal uses (k,n) notation inside a pattern to generate Euclidean rhythms — evenly distributing k onsets over n steps
Concept L1 Foundations FA
TidalCycles parenthesis notation (k,n) generates Euclidean rhythms directly in mini-notation
Procedure L2 First instrument FA

Supporting — enrichment, not gating

Forward slash in mini-notation stretches a sequence over n cycles
Concept L1 Foundations F
TidalCycles euclid k n places k onsets Euclideanly across n steps, the function form of the (k,n) mini-notation
Procedure L2 First instrument FA
Tidal mini-notation uses *, /, !, and <> to speed up, slow down, repeat, and rotate steps within a cycle
Concept L2 First instrument F
The * and / operators in Tidal mini-notation speed up or slow down individual events and groups
Procedure L2 First instrument F
Tidal * and / operators speed up or slow down pattern steps multiplicatively
Concept L1 Foundations F
Angle brackets in mini-notation pick one value per cycle, rotating through the list
Concept L1 Foundations F
Angle brackets in Tidal mini-notation select one element per cycle, creating slow-cycling pattern variation
Procedure L2 First instrument F
Tidal run and .. generate sequential integer patterns compactly
Concept L1 Foundations F
TidalCycles' pattern model originates from Indian tabla rhythm analysis via Bernard Bel's Bol Processor syntax
Fact L2 First instrument FA
TidalCycles is a live coding environment designed for exploring musical pattern
Fact L1 Foundations FO
TidalCycles was designed to be immediate, so a code change is audible within a few seconds
Concept L1 Foundations F
TidalCycles emerged from the need to make live music without minutes of dead air — Perl was too slow for real-time performance
Fact L1 Foundations FP
TidalCycles is designed exclusively for live coding algorithmic patterns, with a mini-notation for rhythms and an extensive combinator library for pattern manipulation
Fact L2 First instrument F
Tidal Cycles treats music as infinite cycles of patterns in a terse mini-notation manipulated live
Concept L2 First instrument F
TidalCycles step builds a pattern from a step-sequencer string, mapping x to a hit and digits to sample indices
Procedure L2 First instrument F
Curly-brace patterns in Strudel combine sequences of different step counts polymetrically
Concept L2 First instrument F
polymeter aligns patterns by step so patterns of different lengths phase against each other
Concept L3 Craft F
Curly brace syntax in Tidal creates polymeter patterns where sequences of different lengths share the same pulse
Procedure L3 Craft FA
TidalCycles is split across two repos: the Tidal pattern language (Codeberg) and SuperDirt sound engine (GitHub)
Fact L0 Orientation FP
Offsetting loop lengths in polymeter yields minutes of non-repeating combination from short loops with zero randomness
Principle L2 First instrument AF
In Strudel the tempo is set as cps (cycles per second), where bpm = cps × 60 × beats per cycle
Fact L2 First instrument FA
Polyrhythm sounds two conflicting subdivisions at once, creating a rolling tension that resolves periodically
Concept L2 First instrument AF
Polymeter is the cheapest way to make a loop evolve without writing more notes
Principle L2 First instrument AF