Skip to content

cathar v0.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Jun 14:51
· 76 commits to main since this release

Changed

  • De-clip now reconstructs clipped peaks with least-squares autoregressive
    interpolation (LSAR)
    — the classical audio-restoration method (Janssen,
    Veldhuis & Vries, 1986) — instead of a cubic fill. An AR model is fit to the
    reliable audio either side of each clipped run (two-sided autocorrelation →
    Levinson-Durbin) and the gap samples that minimise its prediction error are
    solved for (banded normal equations via Cholesky), so a clipped peak is rebuilt
    toward its true amplitude rather than flattened to the shoulder level. A
    stability guard falls back to the previous smooth fill when a solve rings or
    overshoots, so badly-clipped material softens gracefully. On a +8 dB-clipped
    voice the old fill could only reach the 0.977 plateau; LSAR rebuilds the true
    peaks to ~1.53 (normalise afterwards).

Fixed

  • Mono WAV output played in the left speaker only. hound writes 32-bit float
    WAV as WAVE_FORMAT_EXTENSIBLE and tags a single channel as FRONT_LEFT, so
    layout-aware players (CoreAudio / afplay) routed it hard-left. Mono output is
    now tagged FRONT_CENTER and plays centred. Stereo and FLAC/AIFF were
    unaffected.

Documentation

  • Added "Cleaning Up Sound" (book/) — a from-first-principles book on the
    concepts this toolkit uses, for readers new to DAWs/DSP, with diagrams, a cover
    page, and a GitHub Pages build.
  • Documented every remaining public item (Error + variants, AudioData +
    fields, the Denoiser trait, NoisePrint/SpectralDenoiser fields,
    with_noise_print, generate_wave, variance) and added
    #![deny(missing_docs)] to the cathar crate so public docs can't regress.

Internal

  • Split the ~2,400-line cathar/src/lib.rs into focused modules (audio,
    denoise, restore, enhance, loudness, resample, error, util),
    re-exported flat so the public API is unchanged. No behaviour change.