qa40x-rs Audio Analyzer v0.3.0
Pre-release
Pre-release
Still an early stage release — but this one comes with a milestone: the A/B loopback bench against the official QA40x application is fully green for the first time (all 24 compared metrics within tolerance, under flat-top AND Hann analysis windows, on the same QA402).
What's fixed
- THD at low fundamentals now matches the official app (#14):
/ThdDbhonors its max-harmonic parameter (it used to stop at 10 harmonics — optimistic, not cleaner), and the REST acquisition no longer analyzes a latency-gated window (the tone is played as a periodic continuation, so the analyzed frame is pure steady state). THD @ 100 Hz went from a −5.2 dB divergence to +0.86 dB agreement. - Output level is factory-calibrated (#8): the per-unit DAC trims are now applied when generating dBV stimuli, not just when reading them — absolute level agrees with the official app to 0.014 dB.
- REST
AudioGenamplitudes are dBV with the official call signatures (#20) — breaking if you scripted the old dBFS behavior: add your output range's dBV (e.g. dBFS + 8 on the +8 dBV range).
What's new
/Settings/Windowing/{Rectangle|Bartlett|Hamming|Hann|FlatTop}— the official (wiki-undocumented) analysis-window endpoint. The REST measurement default is now flat-top, like the official app at startup; set/Settings/Windowing/Hannfor the previous behavior.- "Round to bin" toggle in the Signal Sources panel — the official app's Round to eliminate leakage, on by default; the actually-played frequency is shown next to the ask (e.g.
1000 Hz → 1000.4883 Hz). Off plays the exact asked frequency. - The A/B bench grew a window matrix (same window forced on both apps per pass), a THD-method probe, per-acquisition spread reporting, and an offline
--probemode — that tooling is what found the two bugs above.
Docs
- New verified A/B baseline (24/24 × 2) and a root-cause post-mortem in doc/bench-ab.md.
"Negative Feedback" still welcome ;)