feat: objective audibility of tones in noise (ISO/PAS 20065:2016)
Engineering-method tonal audibility: the critical band about a tone
(Δfc, Formula 2) and its geometric corner frequencies (Formulae 3-5),
the critical-band masking level LG = LS + 10 lg(Δfc/Δf) (Formula 12),
the masking index av = -2 - lg[1 + (f/502)^2.5] (Formula 13), the
per-tone audibility ΔL = LT - LG - av (Formula 14), the energy sum of
spectral lines with the window correction (Formulae 6/8), and the
decisive and energy-mean mean audibility over spectra (Formula 20/21).
The mean narrow-band level LS and tone level LT are inputs, matching
the way the standard tabulates them in Annex E; the iterative spectral
front-end is out of scope.
Conformance is anchored on the Annex E combustion-engine worked example
(Tables E.2/E.3): the per-tone audibility at 137.3 Hz, the masking index
at 137.3/592.2 Hz and the mean audibility of the five spectra (140/140).
- src/phonometry/tone_audibility.py: the audibility chain + ToneAudibilityResult
- _plotting.py: plot_tone_audibility (per-tone ΔL bars, decisive highlighted)
- generate_graphs.py: figure (4 variants) with ES translations
- conformance: 3 ISO/PAS 20065 checks (new domain)
- docs + site guides (EN/ES) + api-reference + sidebar
- tests: 32 tests, full suite 2204 passed