Shared vocabulary
Everything below is the app's actual algebra — the same code path that feeds the speakers feeds the wheel. The recurring symbols, once:
All of it is in the app too, a tap away: the wave button in the corner of the wheel's card opens whichever of these ten sections belongs to the process you are listening to. That copy is generated from this page, so a correction here is a correction there.
- c the drift, in cents (hundredths of a semitone), set on the PHASE DRIFT bezel: −24 … +24
- r the playback-rate ratio that c produces; r > 1 plays faster and sharper
- bpm the tempo, 48–180, set by spinning the record
- step the rhythmic grid: one eighth note at the current tempo, in ms
- a PROCESS AMOUNT, from 0 to 1
- N how many copies of the take a process stacks
- i a copy's (or hit's) index, counted from 0
- T the take's loop length
- t time since playback started (a few sections rescale it locally, and say so)
- offset the right channel's head start, in ms (Phasing only)
- φ the phase: how far the two copies sit apart, as a fraction of the loop
Four of these carry algebra that appears everywhere:
r(c) = 2c/1200
A playback-rate ratio from a detune of c cents (hundredths of a semitone) — tape-style, so pitch and speed move together. +24 ¢, the app's maximum drift, is r ≈ 1.0140: about 1.4% fast, a quarter of a semitone sharp, just below where most ears flag the pitch change. Which is the trick.
step = 60000 / bpm / 2 ms
The grid of every rhythmic process: an eighth note at the current tempo. At 120 BPM, step = 250 ms. A pattern's cycle is its last event plus one step of breathing room.
amount a ∈ [0, 1], quantized as round(a · max)
The PROCESS AMOUNT ring, mapped onto whatever the process counts — loops, revealed beats, rotation steps.
volume per voice = 1 / √N
When N copies stack, each is scaled by 1/√N so the summed power stays constant — eight loops are no louder than two.
Why the pitch moves with the speed
Prompted by an early Android tester: time-stretching without a pitch change is everywhere now — so what's the idea behind the microtonal shift?
Every modern tool offers the opposite bargain — change the tempo, keep the pitch. The app refuses it on purpose, and the refusal is the point.
First, honesty about the instrument. These are tape processes, 1965–67, and on a reel-to-reel machine speed and pitch are one physical quantity: pull the transport and the pitch comes with it. r = 2c/1200 is varispeed algebra, not a stylistic filter. Pitch-independent time-stretch is a different instrument from a different decade — spectral processing rather than a motor running fast.
Second, the drift needs the detune. The phase slip exists because one channel gains (r − 1) seconds every second — but the faint pitch difference is how the ear tells the two copies apart, and where the beating near unison comes from. ±24 ¢ is calibrated to sit below "that's a different note" and above "identical": the voices stay the same material, mysteriously coming apart. Equalize the pitch and the slip would remain — but the thing you hear it by would be gone.
Third, transients survive. Changing playback rate is the only free operation in audio: the waveform is untouched, merely read faster. Time-stretch is spectral surgery, and it smears exactly the sharp attacks — claps, plucks — that make phasing audible at all.
Last, the Reich principle: the process must be audible. The microtonal drift is the audible cause of everything downstream — what you hear is not an effect called "two tempos" but one tape running slightly fast, which is the piece. Time-stretch answers "how do I change the tempo without touching the pitch." This app asks the opposite question: what happens if you refuse to separate them — the way tape refuses.
The ten processes
01Phasing
Two identical copies of the take: one in the left channel, one in the right. The left runs at rate 1, the right at r = 2c/1200, where c is the drift ring (±24 ¢, 1 ¢ detents, default +7). The right copy may also start with a fixed head start of offset ms. To set it, take hold of the right channel's cyan playhead — the one inside the dashed ring — and drag it round to where you want the copy to begin. Easiest paused, where the playhead holds still; while playing, the grab widens as the loop shortens, so a fast one stays catchable. Phasing is the only process with an offset, so it is the only one whose playhead can be grabbed.
The slip accumulates linearly: every second, the right channel gains (r − 1) seconds. The full journey — unison → echo → canon → texture → unison — closes when a whole loop length T has slipped past:
trealign = T / (r − 1)
At +7 ¢ the right gains ≈ 4 ms per second, so a 10-second loop realigns after ≈ 41 minutes. At the full +24 ¢ it gains ≈ 14 ms/s and closes in ≈ 12 minutes. Shorter loops orbit faster.
The angle between the two glowing playheads on the wheel is the phase itself:
φ(t) = frac( offset/T + t·(r − 1)/T )
This is, literally, It's Gonna Rain and Piano Phase: two identical loops, one imperceptibly faster.
02Gradual process
Sixteen restrikes of the take, one per eighth note. Hit i (with t = i/15 running 0 → 1 across the phrase) is placed and shaped by t alone:
pan = −1 + 2t · volume = 0.2 + 0.8t · rate = 1 + ( r(c) − 1 ) · t · a
The phrase starts quiet, untouched, hard left — and ends loud, fully drifted, hard right. Amount a scales how far the detune travels: at c = 24 ¢, a = 100%, the last hit plays 1.4% fast. At 120 BPM the sweep spans 16 × 250 ms = 4 s per cycle.
"Music as a gradual process": the transformation is the piece — you hear every intermediate value, nothing jumps.
03Tape loop multiplication
N copies of the loop, N = 2 + round(a·6) (two to eight). Copy i, with spread s = i/(N−1):
start = 0.015 · T · i · rate = 2c·(s − ½)/1200 · pan = −1 + 2s · volume = 1/√N
The drift fans symmetrically: the leftmost copy runs c/2 cents slow, the rightmost c/2 fast, the middle untouched. Five copies at 24 ¢ span ∓12 ¢ (≈ ∓0.7%); a 1.6 s loop staggers entrances 24 ms apart, so the stack starts as a thickening and slowly becomes weather.
The tape-lab move behind It's Gonna Rain's second half: not two machines but a roomful.
04Rhythmic construction
An eight-slot pattern with three hits — [×··×·×··], slots 0, 3, 5 — revealed one hit at a time: amount uncovers 1 + round(a·7) of them, in order (capped at the three that exist). Every hit strikes at i · step, slightly left of center (pan −0.35).
a = 0 plays only slot 0 — a bare downbeat. a ≥ 30% adds slot 3; a ≥ 60% completes the figure. The cycle is 8 steps: 2 s at 120 BPM.
Reich's "construction by substitution": beats replace rests one at a time, the way Drumming assembles itself.
05Pattern substitution
Eight eighth-note slots, all initially playing the take plain. Amount replaces slots 0 through round(a·7) with a repeating variant cycle:
sample → silence → +1 octave (rate 2) → +fifth (rate 3/2) → −1 octave (rate ½)
A "silence" variant removes its slot entirely — rests are substitutions too. Replaced slots play at volume 0.72 against the plain slots' 0.9, and slots alternate pan ∓0.5, so the ear can track what changed. The rate ratios are just intervals: 2 is an octave, 3/2 a perfect fifth, ½ an octave down.
The mirror of process 04: where construction fills rests with beats, substitution swaps beats for their neighbors.
06Resultant patterns
Two related eight-slot patterns, one per ear. The left plays [×·×··×··] (slots 0, 2, 5) at pan −0.8; the right plays [×··×·×··] (slots 0, 3, 5) rotated by k = round(a·7):
right hits where (i − k) mod 8 ∈ {0, 3, 5}
At k = 3 the right lands on slots 3, 6, 0 — colliding with the left only on the downbeat, interlocking everywhere else. The "resultant" is the third pattern neither side plays: the composite your ear assembles from both ears at once. Each k gives a different one.
Violin Phase's discovery: point at the pattern that isn't there, and listeners hear it leap out.
07Clapping Music
The twelve-beat clapping pattern — [×××·××·×·××·], hits on slots 0, 1, 2, 4, 5, 7, 9, 10 — in both pairs of hands. One player is fixed (pan −0.75); the other plays the same pattern rotated by k = round(a·11) (pan +0.75):
shifted player hits where pattern[(i − k) mod 12]
Amount walks through all twelve rotations: k = 0 is unison, each notch displaces the second player one eighth note, and the pair only re-meets at the wrap. A cycle is 12 steps — 3 s at 120 BPM — and every k has its own interference figure.
This is Clapping Music's exact mechanism: phasing by discrete jumps instead of continuous drift, no tape required.
08Pulse / drone
Two layers. A pulse: 8 + round(a·16) center-panned restrikes, one per eighth, each at volume 0.35. And a drone: the whole take looped at rate ½ — an octave down, twice the length — at volume 0.32 + 0.35a.
Rate ½ is the only "effect" on the drone; everything droning about it is your own material stretched double. Amount deepens both layers together: more pulses over a stronger bed.
Four Organs in miniature: a maintained pulse against ever-longer sustained tones.
09Canon
N = 2 + round(a·4) voices (two to six). Voice i enters a quarter note later than the last — start = i · 2 · step — spread across the stereo field, each at 1/√N volume, and each running very slightly faster than the one before:
ratei = 2c · i/(N−1) / 1200
With four voices at c = 24 ¢ the rates sit at 0, +8, +16, +24 cents. The round starts strict and slowly stops being a canon: the entries stretch apart, imitation loosens into texture, and the drift ring decides how fast the form dissolves.
The oldest process here — a round — aimed at where phasing ends up.
10Speech melody
The take's own loudness curve becomes a melody. The recording is split into slices (eight by default, or its measured amplitude contour); slice i with amplitude amp ∈ [0, 1] selects a chromatic step and a tone:
k = round(amp · 7) · f = 220 · 2k/12 Hz
Quiet slices sit near A3 (220 Hz), the loudest reach seven semitones up (E4, 329.6 Hz). Each slice replays on the eighth-note grid at volume 0.45 + 0.45·amp, so the dynamics you spoke are the dynamics you hear — twice: once as loudness, once as pitch. No drift ring here; the recording's contour is the whole score.
The idea Reich heard inside Brother Walter's sermon: speech already contains its melody. You just have to play it.
Further reading
The seminar that never existed still has a shelf:
- Steve Reich, "Music as a Gradual Process" (1968), in Writings on Music 1965–2000, Oxford University Press, 2002 — the manifesto every section above leans on.
- Paul Epstein, "Pattern Structure and Process in Steve Reich's Piano Phase," The Musical Quarterly 72/4, 1986 — what a listener actually hears at each stage of the phase.
- Richard Cohn, "Transpositional Combination of Beat-Class Sets in Steve Reich's Phase-Shifting Music," Perspectives of New Music 30/2, 1992 — the k-rotations of processes 06 and 07, formalized.
- Keith Potter, Four Musical Minimalists, Cambridge University Press, 2000 — the standard history: Young, Riley, Reich, Glass.
- Brian C. J. Moore, An Introduction to the Psychology of Hearing — why ±24 ¢ fuses instead of splitting: difference limens, beats, and the edge of "same note."