RSS

// Rhythm Generator

A generative step sequencer for percussion patterns. Latin, Arabic, African and Indian traditions. Pick a rhythm, generate variations, tweak them by hand, play them back, export straight to MIDI.

Built because I didn't want to hand-place every ghost note in Bitwig. Pick a tempo and density, generate a pattern, then drag the exported MIDI straight onto a Drum Machine track.

Also: a polymetric mode. Tap a step to skip it, and that instrument's loop gets shorter than everyone else's, so it drifts in and out of phase against the rest of the pattern instead of locking to the same bar.

Hope you find it useful too.

Controls

102 BPM
sparse ↔ busy
2-side ↔ 3-side
50%

Sequencer

Variation gallery

Generate a batch of patterns at once. Click a card to load it into the sequencer above.

About these patterns

Conga (tumbao): open tones anchor the "&" of 2 and beat 4, a slap accents beat "&4", and soft bass/heel-tip ghost notes fill the gaps. Density controls how many appear.

Bongo (martillo): a steady 8th-note pulse on the high drum (mano), occasional low-drum (hembra) accents on beats 1 and 3, and "repique" 16th-note fills near the end of the bar at higher density.

Clave: the one pattern here that isn't randomised. A real son clave. 3-2 when the slider leans 3-side, 2-3 when it leans 2-side.

Shaker: a steady 8th-note pulse that fills in extra 16th-note subdivisions as density increases, running independently of the Pattern style selector.

The clave slider also biases extra ghost notes toward the first half (3-side) or second half (2-side) of the bar. None of this is strict transcription. A sandbox for exploring idiomatic-feeling variations you can program into a drum machine, DAW, or your own code (use Export JSON).

To do

  • True polyrhythmic sequencing. Polymetric mode (below) isn't polyrhythm, even though the two get used interchangeably. Polymetric is what's implemented now. Rows loop at different lengths and drift in and out of phase, only realigning after the LCM of their lengths. Can take many bars. The Steve Reich phasing effect. Polyrhythm is different: two rhythms with different note groupings over the same time span. 3-against-2 within one bar, realigning every single cycle. That's what real West African cross-rhythm does (Kuku, Djole). A triplet/12-8 bell pulse against duple djembe phrasing, both landing exactly within the same one-bar cycle. Building genuine polyrhythm means moving to a finer shared grid, 24 steps/bar (the LCM of 4 and 6) instead of 16, so duple and triple subdivisions can both land exactly. Bigger change than it sounds: BAR_STEPS=16 is baked into the two-row wrap-at-32, the beat markers, and the MIDI tick math.
  • MIDI and JSON export don't capture polymetric drift. Both are a static snapshot at the current loop length. The drift is a live-playback-only effect right now.
  • Variation gallery cards don't generate or preview skip states. Polymetric mode only applies to the main sequencer, not the 8-variation batch.

Changelog

2026-07-16

  • Added Arabic tradition: Darbuka (Dum/Tek/Ka), Riq (Tek/Jingle), Sagat, four iqa'at (Maqsum, Saidi, Malfuf, Ayyub).
  • Added African tradition: Djembe (Bass/Tone/Slap), Dundunba/Sangban/Kenkeni with bell, Shekere, four rhythms (Kuku, Djole, Sofa, Mendiani).
  • Added Indian tradition: Tabla (Dayan/Bayan/Ka), Dholak (Treble/Bass), Manjira, four talas (Teentaal, Keherwa, Ektaal, Rupak).
  • Added a dimmed trailing stroke behind the playhead to smooth out how it reads as it moves across the grid.
  • Fixed the "Using this" hint paragraphs and instrument row tags, still using the low-contrast muted colour on text. Now light, like everything else.
  • Added polymetric mode. Tap a step to cycle rest/play/skip; skipped steps shorten that row's own loop, so instruments drift in and out of phase against each other.
  • Added Clave and Shaker to the Latin set.
  • Added 2-bar (32-step) length option, wrapping to two stacked rows per instrument.
  • Added Volume control and stereo panning across instruments.
  • Removed the Bitwig preset-format caveat. MIDI note mapping now generates itself from whichever tradition is active.

2026-07-15

  • Initial release: conga (tumbao) and bongo (martillo), generative sequencer grid, variation gallery, MIDI export for Bitwig.

I'd love to tell you more.