You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
app: sound and the reading play receptions the instant they land, so bursts clump, cues click and the mix clips #709
Clicks. A cue starts at ac.currentTime (app/src/sound.js:608) with no margin. When the audio thread is already past that instant, the start of the attack is lost.
Clipping. The master bus has no limiter. Cues, the bed and the music sum, and past 0 dBFS they distort.
Clumps. BLE frames land in batches. Measured over 30 days on the ingestor DB (feat(app): make every recorded reception audible, one instrument per type (+ sound tweaks) #470), 39.2% of consecutive receptions per hunter share a timestamp, in groups of up to 40 (sound.js:125-131). The coalescer lets one cue through per 60 ms, so a clump of 40 sounds as one, and the reading shows it in one step.
Decided (Kasper, 27 September)
A limiter on the master bus.
Cues scheduled 20 to 50 ms ahead of currentTime instead of on it.
A playout buffer of 1 s. The sound, the HUD, the ticker, the map's pulse and the float readout get each reception 1 s after it lands. A clump is spread at the cue gap (60 ms), closer when that does not fit in the second, so the delay never grows past 1 s. Capture, the store and MQTT keep the real rx_at. A fixed second, not a setting.
Refined (Kasper, 27 September). The clumps are not the problem: a mockup that spread them over the second sounded no different. What Kasper hears is a lot of ticking, like buffering, over Bluetooth right after start, while the map loads and the companion syncs, and it stops by itself. That fits the output buffer running dry under load: the AudioContext had no latencyHint, so it got the smallest buffer. The linked PR asks for the playback buffer. The playout buffer and the limiter are dropped. This issue closes once a drive confirms the ticking is gone.
Activity
khagele commentedon Sep 27, 2026
Refined (Kasper, 27 September). The clumps are not the problem: a mockup that spread them over the second sounded no different. What Kasper hears is a lot of ticking, like buffering, over Bluetooth right after start, while the map loads and the companion syncs, and it stops by itself. That fits the output buffer running dry under load: the AudioContext had no latencyHint, so it got the smallest buffer. The linked PR asks for the playback buffer. The playout buffer and the limiter are dropped. This issue closes once a drive confirms the ticking is gone.
fix(app): give the sound the playback buffer instead of the smallest (#…