sound-guard: aqua-ear checks over every shipped Dings and Earcon clip #28

Merged
aqua merged 2 commits from aqua/sound-guard into main 2026-11-10 18:33:57 +00:00
Member

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 a why each 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_failures that 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)

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 a `why` each 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_failures` that 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)
Renders (or takes) the 32 sender and 4 neutral Dings clips and the 24 Earcon Workshop clips and asserts, per clip: one onset per intended
note on the full and high bands, no click/step/DC, no clipping, true peak under a ceiling, settled tails, loudness within a band of the
median. Thresholds live in thresholds.json with a reason each; aqua-ear's own boundaries are pinned. The four neutral fallbacks, 4 to 14 dB
louder than the sender clips, are recorded as expiring known failures. Tests mutate generated clips (v3 knock, clipped tail, click, step,
cut, DC, outlier, echo, late note, ring-over) and require the intended assertion to fail.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
aqua merged commit e8c7cc240c into main 2026-11-10 18:33:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/AquaSynth!28
No description provided.