Euclidean Rhythms and Polyrhythmic Loops
Learning objectives
- learner can generate Euclidean rhythms and explain their maximally-even and world-music correspondences
- learner can relate Euclidean rhythms to the underlying algorithm, necklaces, complements and strings
- learner can build evolving polyrhythmic loops from odd loop lengths and short hat loops
Capstone — one whole task that evidences the objectives
Design a self-evolving polyrhythmic pattern: generate two Euclidean rhythms (state their k,n and whether they are aksak/isochronous), run a short odd-length hat loop against a 16-step base, and show one is the complement/necklace-rotation of the other.
Prerequisite modules
This module builds toward the signature move of a techno or ambient live-coding set: a percussion section that never repeats yet never loses its groove. On stage, two integers typed into a Euclidean function are the fastest way to conjure a credible timeline — and layering a 3- or 5-step hat loop over a 16-step kick grid turns that static timeline into a pattern that visibly evolves over minutes without further edits. That is exactly what the capstone asks you to design, and it is why every modular sequencer and Tidal-style pattern language ships Euclidean generators.
The arc starts supported: generate a single pattern with “Euclidean rhythms spread k onsets as evenly as possible over n steps” and check it against the catalogue of world-music timelines, hearing how E(3,8) is the tresillo you met in the prerequisite clave module. Then work the machinery by hand using Bjorklund’s pulse-distribution algorithm as your just-in-time how-to, classifying results as isochronous, aksak, or neither. Next, practice the transformations — complements and necklace rotations — until deriving E(n−k,n) from E(k,n) is automatic. Finally, add motion: the odd-length loop-phasing principle and the short hat-loop procedure show how incommensurable loop lengths drift and realign, so your last supported exercise is one Euclidean layer plus one phasing hat, and the unsupported capstone combines all of it.
The required atoms gate the capstone directly: you cannot state k,n and aksak/isochronous status, demonstrate a complement-as-necklace-rotation, or make the composite self-evolve without them. Supporting atoms enrich the picture — calendars and Bresenham lines show maximal evenness beyond music, Reich’s phasing and gamelan stratification give the aesthetic lineage, and the additive/divisive distinction frames why your pattern language handles (or resists) these grooves.
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
subdivision
seq [55, 82.5, 110, 82.5] & osc >> audio
punctual-0014 · CC0-1.0
d1 $ n "0 .. 7" # scale "minor" # sound "arpy"
tidal-0030 · 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 — Generative Systems & the SuperCollider Stack recommended
- Sampling Artist — from crate-digging to a curated sample practice — Break-mining, deep capture and the breakbeat tradition optional
Unlocks — modules that require this one