QuickDaw
Multitrack recorder with a 30-second pre-roll

What it does
The thing a recorder is for is the take nobody pressed record for. QuickDaw holds every input on the interface continuously — up to two minutes of it — so pressing record starts the take in the past. The soundcheck that turned out to be the performance is already on disk before you reach for the button.
The pre-roll is not a second buffer, which is what makes it free. There is one lock-free ring shared between the audio thread and the worker that writes to disk, and pressing record simply starts the writer at a read position that is already thirty seconds behind. Nothing is copied at the moment the take begins, arming costs nothing, and turning the pre-roll off is only a smaller ring.
When a disk stalls for longer than the ring holds, frames are lost and nothing can prevent that. What QuickDaw refuses to do is hide it: the hole is padded with exactly as many frames of silence as were lost, and its position goes into the take's manifest. Writing the survivors end to end instead would shorten every track identically — perfectly in sync with itself, wrong against the world, and impossible to spot afterwards.
- One track per input on the chosen interface, mapped 1:1, each named and armed individually
- A continuous pre-roll buffer from 10 seconds to 2 minutes, so the take starts before the button
- Takes stream straight to a folder you choose as mono WAVs — one per track, plus a take.json recording the rate, the format, the length and any gaps
- 32-bit float or 24-bit, at the interface's own sample rate, with none of the browser's echo cancellation, noise suppression or automatic gain
- A meter bridge across every input — peak, RMS, peak hold and a latching clip flag — running from the moment the device opens, before anything is armed
- Buffer health on screen during a take: ring fill, worst fill, the slowest single disk write, and any frames lost
- Streaming playback of any take in the session, with per-track gain, pan, mute and solo
- A generated eight-channel test signal needing no interface and no microphone permission, whose input 1 is a 1 kHz tone at exactly -18 dBFS
Where it stands
In development, and hosted rather than downloadable. The buffer arithmetic is verified numerically: 80 tests pin the lock-free ring across its 32-bit wrap and through a deliberate overrun, the WAV headers byte by byte, the 24-bit conversion against its own quantisation step, and the mixer's solo and pan rules. The invariant the whole thing rests on — that a take is the same length as the time it covers, with every sample at the position it was captured at — is tested by driving a producer and a consumer against each other through deliberate stalls. Both AudioWorklets have been driven in a real browser, and the header-patching the file format depends on was checked against the real File System Access API, coming back bit-exact and readable by the browser's own decoder. What has not happened is a session with a real multichannel interface: the channel mapping, the sample-rate matching, the disk throughput across many simultaneous files and the behaviour of hours-long takes are correct by construction and by test, and unproven against hardware. The built-in test signal is there so you can check the chain yourself before trusting it with anything. Chrome or Edge on a desktop — it needs the File System Access API to stream to a folder, and cross-origin isolation for the shared buffer the recorder is built on.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead