sound-guard: aqua-ear checks over every shipped Dings and Earcon clip #28
Loading…
Reference in a new issue
No description provided.
Delete branch "aqua/sound-guard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up chat-s6251-6252.
python3 tools/sound-guard/guard.py [--dings OUT] [--earcon DIR]renders (or reads) every shipped Dings clip (8 senders x 4 events, neutral fallbacks) and every Earcon Workshop clip (60 total) and asserts per clip: one onset per intended note (RHYTHM / earcon EVENTS times, full band and >2 kHz band), no click/step/DC, no clipped or flat-topped samples, true peak under a ceiling, tail settled (or ring-over only where the voice is declared to), loudness within +-0.5 dB of the sender median. Thresholds with awhyeach live in tools/sound-guard/thresholds.json; a test proves no magic numbers.Fails today: nothing except the four neutral fallback clips' loudness (+4.3..+13.7 dB over the equalised senders, shipped unmodified by finish.py); recorded as explicit
known_failuresthat print every run and go stale loudly. No threshold loosened, no source changed.Falsification: 18 tests with generated mutants (v3 knock at three levels, clipped tail, flat-top, click, step, DC, truncation, loudness outlier, echoes, deleted/late note, ring-over), 19 hand-mutated thresholds all killed (one survivor led to a new test). Maintainer reran tests (18 OK), the guard (0 failing, 4 known) and swapped the REAL v3 Void ogg clips (the heard double hit) into a copy of the published v4 output: all four fail with onsets/stray_hf at 94/189/332 ms and the invite ring-over.
Survivors, stated: a v3 knock at -22 dB is caught only on the loudest Void clip; echoes <20 ms with <4 dB rise are missed; Eureka/Heimdall full-band onsets are not asserted; flat-topping is invisible on a decoded Ogg. Not wired into any CI job (run by hand). Signal facts only: the guard cannot judge annoyance, timbre or feel.
Generated with Claude Code (https://claude.com/claude-code)