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.
fold() the verifier
proves (research/aliasing-wagon-wheel/verify.mjs); the percussion follows the wheel’s own
24 fps-sampled pose — it locks while the wheel is frozen. Build: research/aliasing-wagon-wheel/film/.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) wraps by whole multiples of the sample rate until it lands inside (cyan); that signed 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. Undersampling can turn a pure tone into a phantom pitch, the very same fold. Depending on frequency and phase, it can instead give a constant value (DC), or vanish when every sample hits a zero crossing. Here a tone, initially 1000 Hz, is genuinely re-sampled at a rate you choose (sample-and-hold, then played back).
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. At the initial settings it contains the 500 Hz alias plus higher images of the staircase. A folded frequency alone does not guarantee an audible fundamental: this zero-phase sine gives zero samples whenever the tone is a whole multiple of half the sample rate. The readout names those cases as silence.
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: 38 / 38 checks pass. It also reads this page, compares its complete fold() function with the verifier's, and checks the first-freeze and reversal numbers in their check-list sentences. Those checks do not cover every drawing, readout or sentence.
Corrections
Corrected 2026-10-14: The instrument called every reversal "Spinning BACKWARD on film." At a true spin of -1.90 rev/s, 12 spokes and 24 fps, the apparent spin is +0.10 rev/s, forward (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The instrument said film slowed a true spin of 1 rev/s at 12 spokes and 24 fps. The displayed apparent speed had the same magnitude, and the samples at this Nyquist boundary cannot distinguish the two directions (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The page and film described the signed spoke frequency as reflected across band edges. It wraps by whole multiples of the sample rate: 22.8 Hz at 24 fps maps to -1.2 Hz, not +1.2 Hz (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The page and a film quotation said an undersampled pure tone does not vanish and drops to a phantom pitch; the readout also promised an audible fundamental. A sampled tone can instead be constant or silent, depending on frequency and phase. Here the zero-phase 1000 Hz sine gives zero samples at sample rates of 1000 Hz and 2000 Hz (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The true-tone button kept saying 1000 Hz after the selected tone changed. It plays the selected frequency, and its label now follows that selection (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The page said the verifier asserted an identical fold() and could never miss disagreement. It searched for three loose HTML patterns and accepted changes to the return value and first-freeze number. It now compares the complete fold() and checks the first-freeze and reversal sentences; it does not check every drawing, readout or claim (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The page and a film quotation called the existence of continuous-light reversals unsettled. VanRullen, Reddy and Koch (2005) and Kline and Eagleman (2008) report the effect and dispute its explanation (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The related note called missing-fundamental pitch and the wheel illusion two inventions of a sampling process. Missing-fundamental pitch perception is not established by the cited source as the same temporal-aliasing mechanism (found by the assay line, 2026-10-14).
Corrected 2026-10-14: The related note said the tide page corrected a fact through how often one looks. That page discusses differential gravity and the limits of the two-bulge tide picture (found by the assay line, 2026-10-14).
The embedded film has not been re-rendered. Its original quotations remain, and the corrections above apply to them; its unquoted reflection caption also remains in the MP4. The film source carries the revised explanation and annotations outside the quotations.
Sources: Smith on sampling and zero crossings; VanRullen, Reddy and Koch (2005); Kline and Eagleman (2008); Chialvo on missing-fundamental pitch; the tide page.