Euclidean rhythm · step sequencer · finger-drumming practice
What Do Steps, Hits, and Rotation Mean in a Euclidean Drum Pattern?
A Euclidean generator can turn two small numbers into a useful cyclic pattern, but the labels are easy to blur together. Build E(3,8) by hand, prove what rotation preserves, then combine it with a second voice and take the result from the screen to two pads.
Scope: this is a device-neutral programming and finger-practice lab. For the scored exercise, one cycle has eight equal eighth-note steps, x means an onset, and . means a rest. Product labels are not standardized: one tool may say Hits, another Fills, and another may use Density for a different operation. The exact eight-slot output is therefore the evidence, not the knob name. We use “rotate right by one” to mean moving every onset one slot later and wrapping step 8 to step 1; if a product uses the opposite sign, record the resulting string instead of copying the sign. The paper and product manuals cited below support the mathematical pattern and documented implementations. The verification gates, R0a/R1/R0b rotation return, two-voice collision card, no-screen drill, diagnostic codes, and stopping rule are the FingerDrum Editorial Team’s original synthesis. This grid does not teach the cultural practice, articulation, timbre, or feel of any named tradition.
In E(k,n), n is the number of equal steps in the cycle and k is the number of onsets distributed across them as evenly as possible. E(3,8) can be written x..x..x.: hits on steps 1, 4, and 7, with cyclic inter-onset distances 3, 3, and 2. A one-step right rotation gives .x..x..x. It changes which onset meets the bar line, but it must not change eight steps, three hits, or the cyclic 3–3–2 spacing. Count those invariants before judging the groove by ear.
Steps, hits, rotation, division, and voice answer five different questions
Toussaint denotes a Euclidean rhythm as E(k,n), where k is the number of onsets and n is the length of the binary pulse sequence. The construction distributes the onsets as evenly as possible. That notation describes a cyclic onset skeleton. It does not specify a drum sound, hand assignment, velocity, tempo, swing, or genre.
| Control | Question it answers | E(3,8) value | What must stay separate |
|---|---|---|---|
Steps / pulses n | How many equal slots close the cycle? | 8 | Step duration and bar display |
Hits / fills / onsets k | How many slots contain an attack? | 3 | Velocity, probability, and repeated playback |
Rotation r | Where does the same cyclic spacing sit relative to step 1? | 0 for the reference | Changing hit count or interval pattern |
| Division | How long is each step in clock time? | 1/8 note in this lab | The mathematical identity E(3,8) |
| Voice / pad | Which sound receives the pattern? | One short sound first | The onset locations themselves |
The distinction matters when software labels diverge. Native Instruments documents Steps and Fills for Maschine 3.7, while Ableton’s current Euclidean MIDI Tool documents Steps, Division, per-voice Rotation, and its own Density behavior. Do not assume a control called Density always equals k. After every change, count the exported or visible onsets and write the actual x/. string.
Build E(3,8) as x..x..x. before opening a generator
Start with eight equal containers and three hits: x x x . . . . .. Give each hit one rest, leaving two rests: x. | x. | x. | ... Give one remaining rest to each of the first two groups: x.. | x.. | x.. Joined into one cycle, the result is x..x..x.. This is a transparent construction for this one example, not a replacement for the general Bjorklund or Euclidean algorithm.
| Step | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Count | 1 | & | 2 | & | 3 | & | 4 | & |
| Pattern | x | . | . | x | . | . | x | . |
| Action | tap | count | count | tap | count | count | tap | count |
Now verify the cycle numerically. From step 1 to step 4 is three slots; step 4 to step 7 is three; step 7 through the wrap back to step 1 is two. The cyclic interval vector is therefore (3,3,2), and 3 + 3 + 2 = 8. Count the wrap interval every time. Reading only left to right and stopping at step 8 hides the final distance that closes the rhythm.
- Length gate: exactly eight equal steps exist; the loop does not silently use a 16-step bar.
- Onset gate: exactly three onsets exist, at steps 1, 4, and 7.
- Spacing gate: the three cyclic distances are 3, 3, and 2 in some rotation.
- Closure gate: after step 8, the next event belongs to a new step 1—not an extra ninth slot or a clipped last rest.
If your sequencer shows 16 sixteenth-note steps per 4/4 bar, the same eight-step string occupies two beats. Either set an eight-step loop for this lab or repeat the string twice across the bar as x..x..x.x..x..x.. Do not call the two displays identical until step duration and loop length are written down.
Prove rotation with an R0a → R1 → R0b return
Rotation shifts every onset by the same number of slots around the cycle. It can change the phrase strongly against a fixed kick, bar line, or melody, but it cannot add a hit or rewrite the cyclic gap pattern. Because products disagree about positive direction and the location called zero, use the literal strings below as the contract.
| State | Exact pattern | Hit steps | Cyclic distances | Purpose |
|---|---|---|---|---|
R0a / r0 | x..x..x. | 1, 4, 7 | 3, 3, 2 | Reference |
R1 / right 1 | .x..x..x | 2, 5, 8 | 3, 3, 2 | Move the bar-line relationship |
R2 / right 2 | x.x..x.. | 1, 3, 6 | 2, 3, 3 | Same cyclic distances, different written start |
R0b / r0 | x..x..x. | 1, 4, 7 | 3, 3, 2 | Return proof |
Run R0a for four cycles, R1 for four, then restore R0b for four. Each cycle must contain three events and close after eight steps. R1 passes only when its onsets move to 2, 5, and 8 while its cyclic distances remain the same. R0b must reproduce R0a exactly. If returning the rotation control does not recover the reference string, another parameter, a randomizer, an Apply operation, or the loop boundary changed too.
Rotation is not “the same sound” in every arrangement. Against an unrotated second voice, its collisions and accents move. The invariant claim is narrower: the rotated voice keeps the same number of onsets and the same cyclic distance pattern. Musical usefulness is a separate listening decision.
Add E(2,8) as an anchor and predict every collision
Keep both voices on the same eight-step clock. Voice A uses the regular Euclidean pattern E(2,8) = x...x..., with hits on 1 and 5. Voice B uses the E(3,8) pattern you just verified. Map the two voices to two nearby pads with clearly different short sounds. Before playing them together, write the simultaneous-hit locations.
| Step | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| A · E(2,8) | x | . | . | . | x | . | . | . |
| B · E(3,8) r0 | x | . | . | x | . | . | x | . |
| r0 collision | A+B | — | — | — | — | — | — | — |
| B · right 1 | . | x | . | . | x | . | . | x |
| r1 collision | — | — | — | — | A+B | — | — | — |
At r0, both voices start on step 1. After rotating only B one step right, the single collision moves to step 5. The event total does not become four at a collision: A contributes two onsets per cycle and B contributes three, so the combined MIDI plan contains five voice-events even though only four step positions are occupied. Inspect voice identity as well as occupied slots.
Solo A for four cycles, solo B for four, then combine them. If both solos pass but one voice disappears only at the collision, the Euclidean counts are not the first failure. Check whether two intended MIDI events were captured, whether the receiver deliberately chokes one voice, whether the pad layout makes the simultaneous gesture unreliable, and whether the audio path clips. Keep those layers separate; a missed combined gesture does not change the written algorithm.
Use a six-stage pad drill, then remove the visual grid
- Speak all eight slots: count
1 & 2 & 3 & 4 &without tapping. The pulse must continue through every dot. - Tap B alone: on one pad, tap steps 1, 4, and 7 while speaking all slots. Run four cycles and require three audible attacks in each.
- Verify the wrap: record four cycles. Check that the distance from the step-7 onset, through silent step 8, to the next step 1 is a two-step wrap interval.
- Add A: use a second finger or hand for steps 1 and 5. At r0, plan the two-pad gesture on step 1 before starting; do not discover it by collision.
- Rotate and return: play four cycles at r0, four at right 1, then four at r0 again. The combined hit positions change, but A remains fixed and B always has three hits.
- Hide the pattern: turn away from, dim, or close the step display and perform the same R0a/R1/R0b arc. Reopen it only after recording to compare intended and captured voice-events.
| Pass | A events (expected / observed) | B events (expected / observed) | Collision (expected / observed) | Next step 1 clean? | First failure |
|---|---|---|---|---|---|
| R0a cycle 1 | 2 / ___ | 3 / ___ | step 1 / ___ | yes / no | ___ |
| R0a cycle 4 | 2 / ___ | 3 / ___ | step 1 / ___ | yes / no | ___ |
| R1 cycle 1 | 2 / ___ | 3 / ___ | step 5 / ___ | yes / no | ___ |
| R1 cycle 4 | 2 / ___ | 3 / ___ | step 5 / ___ | yes / no | ___ |
| R0b cycle 4 | 2 / ___ | 3 / ___ | step 1 / ___ | yes / no | ___ |
Use a comfortable tempo; this test prescribes no universal BPM or timing tolerance. Speed is not a pass condition. A complete pass has the right voice-event counts, the planned collision, an intact wrap, and an R0b return that matches R0a. If the screen-free version fails, return only to the last passing stage instead of adding velocity changes, probability, swing, or a third voice.
Name the first invariant that fails
| Code | Evidence | Next single check | Do not conclude |
|---|---|---|---|
COUNT | The target voice has other than k onsets in one n-step cycle | Check the actual hit/fill control, missed triggers, probability, repeats, and generated output | That rotation changed the rhythm correctly |
GAP | B has three hits, but its cyclic distances are not 3, 3, and 2 | Write the eight-slot string and recalculate every wrap distance | That any three hits in eight steps are E(3,8) |
START | Count and gaps pass, but the expected bar-line relationship is wrong | Check rotation direction, start marker, and clip offset | That density or timing resolution is wrong |
WRAP | One cycle passes, but the next step 1 is early, late, doubled, or missing | Check loop length, time selection, step division, and wrapped notes | That the seven visible steps were enough |
COLLISION | Each solo passes; a voice-event disappears or distorts only when A and B coincide | Compare intended events, captured MIDI, receiver choke/polyphony, gesture, and audio path in that order | That the Euclidean generator deleted a step |
RETURN | R0b does not reproduce R0a after restoring rotation | Compare every parameter and any destructive Apply/randomize operation | That Voice B alone caused the difference |
LABEL | A product control behaves differently from the generic name you assumed | Use the exact product manual and count its rendered onsets | That “Density” has one industry-wide definition |
Only change the variable named by the first failing row. For example, a correct event count with a wrong starting relationship is a START problem, not permission to change Hits. A clean written grid with a failed simultaneous gesture is a COLLISION investigation, not permission to redraw the cyclic gaps.
Translate the invariant card, not the menu names
Ableton’s Live 12 manual documents a Euclidean MIDI Tool that can generate up to four voices, assign a pitch or drum pad to each voice, rotate voices separately, and set Steps and Division. Its current documentation also describes how shorter patterns may repeat or wrap inside the selected time range. Define the time selection before applying the result—or while previewing if Auto Apply is active—then count the actual note positions. Do not assume the clip boundary from the graphic alone.
Native Instruments’ Maschine 3.7 support page, checked on October 18, 2026, says the update is available now and documents a Euclidean Sequencer with Steps, Fills, Rotate, and Division. That is a specific Maschine implementation. It does not prove that another sequencer uses the same rotation sign, calls hits Fills, or writes identical MIDI at the selection boundary.
The underlying academic source provides the narrower common language: a length-n cyclic sequence with k onsets, written as x and ., whose onsets are distributed as evenly as possible. Toussaint explicitly cautions that the algorithm is not a model of the conscious process by which musicians in any culture created their timelines. Use E(3,8) here as a verifiable coordination skeleton. To learn a named musical tradition, study its musicians, recordings, phrasing, sound, movement, and social context rather than treating an eight-character string as the style.
Euclidean rhythm FAQ
Is E(3,8) the same thing as a 3:2 polyrhythm?
No. E(3,8) distributes three onsets across eight equal steps in one cyclic voice. A 3:2 polyrhythm coordinates two concurrent pulse streams—three evenly spaced events against two over a shared cycle. They answer different counting questions even when both contain the numbers 3 and 2.
Does x..x..x. automatically teach tresillo, reggaeton, or another style?
No. The paper identifies the same onset skeleton in named musical timelines, including a tresillo representation, but the binary grid does not carry culture, instrumentation, articulation, microtiming, accent, or ensemble interaction. This article deliberately tests only the onset skeleton and manual coordination.
Does rotation create a new rhythm?
It preserves the cyclic distance pattern but changes its phase against step 1 and every unrotated voice. Mathematically it belongs to the same rotational family; musically it can function differently in an arrangement. State which meaning you are using.
Why did my Density control change repetitions instead of the number of hits?
Because parameter names are product-specific. Read that version’s manual, then count the visible or exported onsets. In this article, k always means the measured number of onsets per n-step cycle, regardless of the UI label.
Can I add probability, velocity accents, or swing now?
After the deterministic R0a/R1/R0b test passes. Add one of those as a new version while preserving the verified grid. Probability can alter the realized event count, velocity changes dynamics or timbre, and swing changes timing; none is part of the basic E(k,n) identity used here.
Stop when A and B each produce their exact event count, B’s cyclic gaps remain 3–3–2 through rotation, the declared collision moves from step 1 to step 5, every eight-step loop returns cleanly, and the screen-free R0b reproduces R0a. If any gate fails, keep the last passing recording and its literal x/. strings. Do not add randomness, a third voice, or faster tempo until the first failed invariant has one named cause and one reversible correction.
Sources and access date
The research paper supports the E(k,n) notation, binary onset/rest representation, even distribution, E(3,8), cyclic interval vector, and cultural-process caution. Ableton and Native Instruments support the current product-specific examples. They do not prescribe this article’s invariant gates, R0a/R1/R0b arc, two-voice collision card, diagnostic codes, or stopping rule.
- Godfried Toussaint — The Euclidean Algorithm Generates Traditional Musical Rhythms (accessed 2026-10-18)
- Ableton — Live 12 Manual: MIDI Tools, Euclidean (accessed 2026-10-18)
- Native Instruments — What’s New in Maschine 3.7? (accessed 2026-10-18)