A real SMPTE Linear Timecode source — it free-runs off the Web Audio clock and verifies itself by decoding its own output. Press Start (audio needs a gesture); leave it muted, the LTC screech isn't the point — the right-hand panel is.
What this proves. The generator builds the full 80-bit SMPTE 12M frame (BCD time bits, drop-frame flag, biphase parity, sync word), biphase-mark-encodes it, and runs on the audio render thread — driven by the sample clock, not requestAnimationFrame or Date.now(). A second, independent decoder reads the emitted samples back and recovers the timecode; Decoded − intended holding at 0 frames while Frames verified climbs is the contract holding in real time — the LED only goes teal because the engine decoded its own output, never because the UI said so. The same encode→decode round-trip is asserted headless across 24 / 25 / 30 / 29.97-DF in test-ltc.js before this ships.
Honest v0 scope. Loopback here is a clean internal signal (proves the frame math + encoder/decoder; analog-noise tolerance for chasing external LTC is later work). LTC-audio-out drives anything with an audio input on the same machine. Web MIDI (MTC) is Chromium-only and needs an OS loopback bus (IAC / loopMIDI) — a sandboxed preview may block it; the status line reports what it found. AudioWorklet falls back to ScriptProcessor if blob workers are blocked. No video genlock; no remote-machine sync (that needs a bridge).