You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(processor): adopt source-rate anlmdn defaults from matrix spike
Drop the 32 kHz pre-anlmdn sample-rate cap and exit-restore aformat
clauses; run anlmdn at the source sample rate with r=0.0020 (r_min)
and m=3 (m_strict). Downstream filters (gate, LA-2A, de-esser,
analysis) now operate at the source rate throughout.
- Remove NoiseRemovePreSampleRate field and all cap-related plumbing
- Update production constants: ResearchSec 0.0045 -> 0.0020, Smooth 11
-> 3
- Replace anlmdn_sr_32000 / anlmdn_sr_32000_best_r benchmark variants
with anlmdn_production_current
- Drop TestAnlmdnBenchmarkPreSampleRateSpecs; assert no aformat
sample-rate clauses appear in the noise-removal sub-block
- Add scripts/anlmdn-matrix-spike.sh to map the speed/quality frontier
across two voice fixtures with different noise profiles
- Update AGENTS.md, README.md, Levelator gap analysis, and report
formatter to reflect the new defaults
The matrix spike validated the new path against the previous 32 kHz cap
default at ~35% faster Pass 2 with metric-equivalent quality.
Signed-off-by: Martin Wimpress <code@wimpress.io>
Order rationale: downmix to mono first; HP/LP removes frequency extremes before gate (DS201 frequency-conscious side-chain pattern); denoising before gating (lowers noise floor for gate); compression before de-essing (compression emphasises sibilance); analysis measures processed signal; final resample standardises output format last.
72
72
73
-
**Noise removal default:** Production uses `anlmdn_sr_32000_best_r`: resample to 32 kHz before `anlmdn`, use `r=0.0045`, then continue through compand. In benchmark context, refer to the old production path as `anlmdn_legacy_default`.
73
+
**Noise removal default:** Production uses `anlmdn_production_current`: `anlmdn` runs at the source sample rate with `r=0.0020` (`r_min`) and `m=3` (`m_strict`), followed by `compand` for residual suppression when a noise profile is available. No sample-rate cap or exit restore - downstream filters (gate, LA-2A, de-esser, analysis) operate at the source rate throughout. The matrix spike at `.bench/anlmdn-matrix-spike` validated this path against the previous 32 kHz cap default (`r=0.0045`, `m=11`) at ~35 % faster Pass 2 with metric-equivalent quality. In benchmark context, refer to the 0.3.1 historical path as `anlmdn_legacy_default`.
74
74
75
75
**Adeclick default:** Production uses `adeclick=t=2.0:w=55:o=50:m=s` (spline interpolation, halved overlap vs prior default) for ~75% Pass 4 runtime reduction at metric-parity quality; the gentle limiter attack keeps source clicks below the relaxed threshold. In benchmark context, refer to the production path as `adeclick_current_t_2_0_w_55_o_50_m_s`. No legacy variant is retained in the matrix.
|**Noise reduction**| Non-Local Means | Adaptive `anlmdn` denoiser using the production `anlmdn_sr_32000_best_r` path: 32 kHz before `anlmdn`, `r=0.0045`, then compand residual suppression when a noise profile is available |
33
+
|**Noise reduction**| Non-Local Means | Adaptive `anlmdn` denoiser at the source sample rate (`r=0.0020`, `m=3`) followed by compand residual suppression when a noise profile is available |
34
34
|**Gate**| DS201 expander | Soft expansion for natural inter-phrase cleanup; breath reduction option positions threshold between noise floor and quiet speech level |
35
35
|**Compressor**| Teletronix LA-2A | Programme-dependent optical compression; ratio and release adapt to kurtosis and flux. High-crest override pushes ratio, threshold, release, and knee when predicted limiter ceiling deficit is positive |
36
36
|**De-esser**| — | Adaptive intensity (0.0-0.6) based on spectral centroid and rolloff |
@@ -210,7 +210,7 @@ Record → Process → Edit → Finalise
210
210
└─ Each presenter records separately, exports FLAC
211
211
```
212
212
213
-
**Include 10-15 seconds of silence somewhere in your recording.** Just sit quietly and let the room breathe - at the start, between sections, or at the end. Jivetalking scans the entire file to find the cleanest quiet section for building a noise profile, which drives the adaptive noise reduction in Pass 2. Without a clean quiet section, the NR compander is disabled entirely and the 32 kHz`anlmdn` path still runs.
213
+
**Include 10-15 seconds of silence somewhere in your recording.** Just sit quietly and let the room breathe - at the start, between sections, or at the end. Jivetalking scans the entire file to find the cleanest quiet section for building a noise profile, which drives the adaptive noise reduction in Pass 2. Without a clean quiet section, the NR compander is disabled entirely and the source-rate`anlmdn` path still runs.
|**NoiseRemove**| Compand threshold, expansion depth (disabled when no noise profile) | Measured noise floor + 5 dB, noise severity; compand requires an elected silence region; production `anlmdn`uses the `anlmdn_sr_32000_best_r` path|
105
+
|**NoiseRemove**| Compand threshold, expansion depth (disabled when no noise profile) | Measured noise floor + 5 dB, noise severity; compand requires an elected silence region; production `anlmdn`runs at the source sample rate with `r=0.0020` and `m=3`|
### Capabilities Jivetalking Has That Levelator Lacked
222
222
223
-
1.**Noise Reduction:** Non-Local Means denoising (`anlmdn`) always active with the production `anlmdn_sr_32000_best_r` path: 32 kHz before `anlmdn`, `r=0.0045`, then restored to the standard processing/output rate. Adaptive compand applies when a silence region is elected as the noise profile
223
+
1.**Noise Reduction:** Non-Local Means denoising (`anlmdn`) always active, running at the source sample rate with a small research radius (`r=0.0020`) and a tight LUT decay (`m=3`) for sharp rejection of distant patches. Adaptive compand applies when a silence region is elected as the noise profile
224
224
2.**Gating:** Soft expander for inter-speech cleanup
225
225
3.**True Peak Limiting:** Prevents inter-sample peaks
226
226
4.**De-essing:** Automatic sibilance control
@@ -419,5 +419,5 @@ Levelator created its own RMS standard because no spoken-word standard existed.
419
419
420
420
---
421
421
422
-
*Report compiled: February 2026*
422
+
*Report compiled: February 2026 (noise-removal section updated May 2026)*
423
423
*Jivetalking version analyzed: Development branch (AGENTS.md dated prior to February 2026)*
0 commit comments