Polyrhythm Visualizer
See, hear, and measure composite rhythms — up to eight streams at once.
What a polyrhythm is
A polyrhythm is the simultaneous sounding of two or more pulse streams whose beat counts share a cycle but not a common subdivision — 3 against 4, 5 against 7, 2:3:5. The full cycle repeats every LCM of the pulse counts; between the first coincident downbeat and the next, every attack is at its own irrational-looking fraction of the bar. The effect is deeply unsettling on paper and completely natural in music from West Africa, Bartók, Ligeti, and Aphex Twin.
What the visualizer does
Configure between two and eight pulse streams, set the bar length in beats, pick a tempo, and the module computes the composite rhythm exactly. Each stream appears as a concentric ring around the circular display; every attack is marked on its ring. Points where two or more streams coincide within a configurable tolerance are flagged as coincidence events. You can audition the composite pattern with transport controls, mute or solo individual streams to isolate relationships, and read out the exact timing of every attack.
Inputs
- Streams (2–8) — each with its own pulse count, mute, and solo.
- Beats per cycle — how many quarter-note beats make up one full repetition.
- Tempo — BPM referenced to the quarter note.
- Coincidence tolerance — how close two attacks must be (in milliseconds) to count as simultaneous.
Outputs
- Cycle duration — in both milliseconds and beats.
- Per-stream attack times — exact offsets in ms from the downbeat.
- Coincidence points — every moment where two or more streams line up.
- Composite rhythm — the sorted union of all attacks.
- LCM in beats — useful for notating the grouping and for sanity-checking whether the cycle actually closes.
Use cases
Studying cross-rhythms for a composition. Teaching polyrhythmic independence — mute all but two streams, gradually layer the others back in. Testing whether a 5:7 groove sounds the way you think it does before committing it to notation. Finding which pulse-count combinations have sparse versus dense coincidence patterns, which matters if you're writing for instruments that need landmarks. For nested tuplet durations and equivalent groupings inside a single pulse stream, use Rhythm & Subdivision.