WavRead 1.3.0 — Measurement Trust
Measurement trust. This release checked WavRead's own numbers instead of trusting them, and found three real defects.
Fixed
- Peak was measured on the mono fold-down. Averaging the channels before measuring hides a peak that lives in one channel by up to 6 dB, and measures an anti-phase pair as silence. Peak now comes from the actual channels, and crest factor follows. If you have tracks analyzed by an earlier version, their peaks are understated — Settings → Reanalyze all corrects them.
- Loudness points were placed approximately. The loudness series were spread evenly across the track instead of sitting at their real BS.1770 gating-block positions — on a 30-second file that put short-term loudness 0.67 s away from the audio it described, and that data drives the loudness timeline, the per-section averages and every marker's context.
- WavRead understated what it downloads. The app, the site and the README each claimed the speech model was the only thing fetched. The built-in separation also downloads its model (about 80 MB) on first use, and there is now a daily update check. All three are named, in every place, and melody downloads nothing — its model ships with the app.
New measurements
- True peak (dBTP) — what the waveform reaches between samples, which is what a DAC or a lossy encoder reconstructs and what delivery specs are written in. Estimated by 4× oversampling per ITU-R BS.1770 Annex 2, per channel, labelled an estimate.
- Loudness range (LRA) to EBU Tech 3342, and peak-to-loudness (PLR).
- Per-channel peaks, samples at full scale, DC offset, sample rate, channel count and encoding.
- A delivery contract in Mix and in every document — each value naming the standard it was measured to and the exact DSP stack that produced it.
Trust
- A measurement that could not be taken now reads "unavailable", never a dash or a zero. An analysis from before these measurements says so and offers to reanalyze.
- The first test suite: 39 assertions against signals whose answers are known on paper — a full-scale tone in one channel, an anti-phase pair, the textbook inter-sample peak, a known DC offset. The first cases fail against the previous code, which is what makes them worth having.
- A pinned build (
requirements.lock.txt), because loudness comes from pyloudnorm and true peak from scipy's resampler — different versions can give different numbers, and every document now records which ones made it.
Free during development, still unsigned (right-click → Open on first launch). Analyses made under the app's former name, SoundScribe, keep working.