Chirp generation, FFT matched filter, first-arrival detection with
sub-sample peak fitting, the BeepBeep pair solve, triangle-inequality
outlier rejection and classical MDS, plus a virtual room that
synthesizes what each device would have recorded so the pipeline can be
exercised without microphones.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
In-memory rooms with a background service that opens a round per room,
rotates which device chirps first, and broadcasts the raw peak table once
everyone has reported or the deadline passes. Rounds are announced ahead
of time with a server timestamp so devices schedule against a shared
reference rather than against message arrival.
The server only ever holds sample indices; the geometry is solved on the
clients and no audio is uploaded.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Worklet capture into a ring buffer indexed by AudioContext frame, with
the chirp scheduled on the audio clock. Timers are avoided throughout:
a hidden tab has its timers throttled to roughly once a second, which is
long enough to put its chirp in another device's slot and misattribute
every arrival in the round. A device that cannot reach its slot in time
sits the round out rather than chirping late.
Echo cancellation, noise suppression and auto gain are all requested off
and warned about if the device refuses, since echo cancellation exists to
delete exactly the sound being measured.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
The DSP tests drive the same files the page loads, so there is no second
implementation to drift. The room tests put two real browsers through a
real room with a synthetic microphone, which covers everything except the
acoustics: slot rotation, leave and rejoin, and the stalled-device case
where a chirp must be withheld rather than sent late.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.