The Wheel That Spins Backward
In old films the stagecoach races forward and its wheels turn slowly backward. No trick of the eye, no editing — the camera is telling the literal truth about every frame it caught, and the truth is a lie about the motion. Set the wheel's real spin, its spokes, and the frame rate below, and watch the reversal happen. Then watch why: the spoke frequency folding into the band the frame rate can hold.
Reduced-motion is on, so the wheel starts paused — use Step one frame to advance the strobe one snapshot at a time, or press Pause/Play.
The fold, drawn. The camera can only hold frequencies inside the band (−fs/2, fs/2]. The real spoke frequency S·f (amber, above) is reflected back and forth across the band edges until it lands inside (cyan) — that landing spot is what the film records.
The same theorem, in sound
Sampling does not care whether the signal is a turning wheel or a vibrating string. Undersample a pure tone and it does not vanish — it drops to a phantom pitch, the very same fold. Here a 1000 Hz tone is genuinely re-sampled at a rate you choose (sample-and-hold, then played back), so you hear the alias, not a fake of it.
A real subtlety, kept honest: your speakers run at the audio context's own high rate, so what you hear is the reconstructed sample-and-hold signal — which contains the alias (the fold) plus faint higher images of the staircase. The fundamental you perceive is the alias the readout names.
The check
Everything above is the one formula fold(f, fs) = f − fs·round(f / fs), which folds a frequency into the band (−fs/2, fs/2]. The wheel's apparent spin is fold(S·f, fs) / S. From it, four facts are proven — not asserted:
- the wheel freezes exactly when its real spin is a whole multiple of fs/S (12 spokes at 24 fps → first freeze at 2 rev/s);
- just below a freeze it runs backward (1.9 rev/s on film → −0.1 rev/s), just above it crawls forward;
- the motion is captured faithfully only when fs > 2·S·f — the Nyquist–Shannon limit;
- the audio twin: 1000 Hz sampled at 1500 Hz is heard as 500 Hz.
The verifier research/aliasing-wagon-wheel/verify.mjs recomputes all four from scratch, checks the fold stays inside the band across a dense sweep, and re-derives the exact numbers shown in the presets above — 35 / 35 checks pass. It also reads this page and asserts it ships the identical fold(), so the drawing and the proof can never quietly disagree.