Releases: vbasky/cathar
Release list
cathar v0.8.0
The first Phase 2 restoration and workflow feature release.
Added
- Psychoacoustic denoising — Bark-scale masking-aware spectral denoising
through thepsycho-denoisecommand and library API. - Measured deconvolution — regularised spectral inversion using a measured
impulse response throughdeconvolve. - Co-sparse dequantization — iterative lattice/co-sparse recovery through
dequantize --method cosparse. - Pitch smoothing — pYIN-style confidence and continuity smoothing for
pitch tracks. - Spectral rebalance — match a recording's long-term spectrum to a clean
reference withrebalance. - Stereo modulation effects — stereo-aware
chorus,flanger, and
phaserprocessing with independent channel modulation. - Declarative processing chains — JSON presets through
chain, including
batch execution withbatch --preset.
cathar v0.7.7
VHS noise print no longer eats sibilance, the chain no longer gates pauses,
and a weak 50 Hz line is not mistaken for 60
(#27).
Fixed
vhsnoise print (#27) —
learn_noise_print_quietesttook one contiguous 4 s stretch. On dialogue
that stretch sits well above the true pauses and the print carries
sibilance, so subtraction takes down 8–16 kHz. The chain now stitches
eight non-overlapping 0.75 s windows spread evenly by level over the
quietest 20 % of the file, with 10 ms crossfades
(learn_noise_print_quiet_windows). Digital-silent tiles are skipped so
a dropout is not learned as the floor.vhsalpha (#27) —
default over-subtraction is 2.0 (VhsOptions.alpha,cathar vhs --alpha).
Alpha 3 with coherent subtraction gated pauses to near-silence.detect_mains_hz(#27) —
50 vs 60 is taken from the mean spectrum of the whole recording, not the
quietest 1 s. A weak 50 Hz PAL line was losing to a 60 Hz bump in one
pause; harmonic placement still uses the quietest stretch.
cathar v0.7.6
VHS multiband de-ess no longer takes down everything above 4 kHz
(#26).
Fixed
vhsde-ess (#26) — the
chain calleddeess_multibandwiththreshold_db = -24, the single-band
HF/broadband-ratio default. In multiband mode that value is "dB above each
band's running average", so every frame was over and the region above 4 kHz
was taken down (~30 dB). Default is now 6 dB (VhsOptions.deess_threshold,
cathar vhs --deess-threshold). Negative multiband thresholds are floored
at 0 dB so the same mix-up cannot crush the highs.
cathar v0.7.5
High-frequency enhance methods inspired by DSRE / HRAudioWizard
(#20).
Added
enhance --method harmonic|dsre(#20)
— two inspectable high-frequency restorers on top of the shipped SBR /
log-magnitude pair.harmonicextends detected overtone series into the
empty band (HRAudioWizard HFP family, phase-locked, no Griffin-Lim).
dsrewaveshapes the existing highs and high-passes the new content above
the original ceiling (DSRE / DSEE-like). Both fill a rolled-off top at the
same sample rate;replicate/interpolatestill require a rate increase.
Library:EnhanceMethod::{Harmonic, Dsre}.
cathar v0.7.4
Tape / VHS restoration chain and measured de-hum / de-plosive fixes
(#25).
Added
- Tape / VHS restoration chain (#25)
—cathar vhsruns a gated cascade: DC block, rumble high-pass, stereo
azimuth + bass-mono, declip (only if flat-top runs are present), dropout
inpaint, declick, decrackle, adaptive dehum, event-gated deplosive, coherent
spectral subtraction from the quietest 4 s, multiband de-ess. Library:
vhs_restore,VhsOptions. Inspired by the measured
auto_pure_linearstages in
AI Hybrid VHS Audio Restorer. detect_mains_hz— pick 50 vs 60 from the recording's quiet spectrum.learn_noise_print_quietest— noise print from the quietest N seconds.remove_dc— mean subtraction (DC blocking).
Changed
dehum --adaptive— each harmonic is cancelled at the frequency it
actually sits (tape lines land 1–8 Hz off the exact series); 50 vs 60 is
taken from the recording when the other series is clearly stronger;
harmonics that do not stand out are skipped, so no-hum files pass through
unchanged.--freq 0auto-detects. Envelope bandwidth widens with harmonic
number; a 6 dB cap over the running envelope keeps a voiced partial parked
on a mains line from being taken with it.deplosive— default is now event-gated (--method events): a blast
under 150 Hz that stands over the low band's running level and leads the
mid band is taken down, and nothing else is touched. Undamaged material is
bit-identical.--method transientskeeps the legacy whole-file STFT path,
which was measured harmful on controls.
cathar v0.7.3
Added
statsrestoration triage (#22)
— noise-floor dBFS (quietest 15 % of frames), SNR, and clip-run counts
(flat-topped peaks at|x| ≥ 0.99). Failing checks print one suggested
command (declip,denoise, ornormalize --true-peak -1). Library:
Stats::{noise_floor_dbfs, snr_db, clipped_samples, clipped_runs, suggestions},
Suggestion. No mix-quality score.
cathar v0.7.2
Stereo toolkit and phase-aware alignment / diagnostics
(#19).
Added
stereocommand / mid-side toolkit — exact M/S encode–decode,--width
(scale Side),--mono-below(mono-maker via elliptical crossover),--upmix
(Haas mono→stereo),--haas-ms, and--ms/--from-ms. Library:
ms_encode,ms_decode,stereo_width,mono_below,upmix_mono,
haas_delay,phase_correlation.- GCC-PHAT alignment —
align/azimuthaccept
--method correlation|gcc-phatfor lag estimation on level-mismatched or
mildly reverberant pairs. Library:LagMethod,estimate_lag_with_method,
align_with_method,azimuth_correct_with_method. statsphase correlation — stereo files report zero-lag L/R correlation
in[-1, +1](mono compatibility / out-of-phase check).
cathar v0.7.1
De-click / de-clip method selection and survey-family reconstruction algorithms
(#17).
Added
declick --method ar|cubic— reconstruction is selectable. Default is
autoregressive Janssen interpolation (same family asinpaint);cubickeeps
the legacy Hermite fill. Library:DeclickMethod,declick_with_method.declip --method spade|cubic|social|omp|nmf|neural— A-SPADE remains
the default (survey-preferred sparse Gabor reconstruction). Additional pure-
Rust methods from the Rajmic et al. / Adler / Bilen lineage:social— Persistent Empirical Wiener (PEW) social sparsity on a
time-frequency neighbourhood + consistency projectionomp— constrained matching pursuit on a per-frame DFT dictionarynmf— low-rank NMF of the STFT magnitude, phase retainedneural— deep-unfolded soft-threshold ISTA (LISTA-style, weight-free;
not a supervised DeclipNet — those need trained checkpoints)cubic— fast shoulder-Hermite fill for light clips / previews
Library:DeclipMethod,declip_with_method(moduledeclip).
Changed
declickdefault reconstruction — now AR (Janssen) instead of cubic-
Hermite; detection is unchanged (sliding-window local RMS).- README — algorithm table corrected:
declipdocuments A-SPADE (was stale
cubic text),declickdocuments AR + method flags. - Book — chapter 6 (clicks/clipping) updated for AR de-click and method flags;
cites the Rajmic et al. de-clipping survey for A-SPADE. - Book — brought chapters in line with
v0.6.1–v0.7.0: fixed stale vinyl
workflow text; expanded toolbox table; added adaptive de-hum, WPE de-reverb,
enhance --method, optionalml-denoise, and broadcast/CD de-emphasis;
updated industry comparison, glossary, andbook/README.mdcontents.
cathar v0.7.0
Restoration-depth & transform release: time-stretch/pitch, and a broad
0.7.x sweep of research-backed DSP — pitch detection, separation, inpainting,
adaptive de-hum, pre-emphasis decode, alignment, wow/flutter, WPE de-reverb, and
sinusoidal modeling. All deterministic, pure Rust.
Added
smscommand — sinusoidal-modeling tonal purify (peak tracking + additive
resynthesis). Library:analyze_sms,synthesize_sms,SinusoidalModel.dereverb --wpe— Weighted Prediction Error dereverberation (per-bin
weighted linear prediction in the STFT domain). Library:wpe.dewowcommand — correct wow & flutter (pitch drift) by tracking a
dominant tone's instantaneous frequency and time-warping to flatten it.
Library:dewow.azimuthcommand — correct stereo azimuth skew (align R to L by
sub-sample cross-correlation). Library:azimuth_correct.aligncommand — time-align a recording to a reference track (multi-mic).
Library:align,estimate_lag.dehum --adaptive— track a drifting mains fundamental + per-harmonic
amplitude via an I/Q heterodyne canceller. Library:dehum_adaptive.deemphasiscommand — analog playback de-emphasis (FM 50/75 µs, CD/IEC
50/15 µs). Library:deemphasis,Emphasis.- Constant-Q transform — log-frequency analysis primitive. Library:
cqt,
CqtSpec. hpsscommand — harmonic/percussive separation (Fitzgerald median
filtering); writes both layers, exact reconstruction. Library:hpss.inpaintcommand — reconstruct dropouts/mutes by autoregressive
(Janssen) gap interpolation; explicit--start-ms/--len-msor auto zero/NaN
detection. Library:inpaint_gap,inpaint_auto.decracklecommand — suppress dense vinyl surface crackle via a
Laplacian detector over a running noise floor + cubic-Hermite repair.
Library:decrackle.- YIN pitch detection —
detect_pitch,fundamental_hz;statsnow
reports an f0 line. tempo/pitch/speedcommands — time-scale and pitch-scale audio.
tempo --factorchanges duration with pitch preserved;pitch --semitones
shifts pitch with duration preserved;speed --factorresamples (both change,
like tape). Two engines via--mode wsola|pv. Library:time_stretch,
pitch_shift,StretchMode— WSOLA overlap-add (default, no FFT) and a
phase-vocoder with instantaneous-frequency phase propagation. Closes the0.7
SoX-parity gap for speed/tempo/pitch.
cathar v0.6.1
Added
riaacommand — RIAA playback (de-emphasis) for digitized vinyl, with
optional--elliptical <Hz>to sum lows to mono on stereo captures. Library:
riaa_deemphasis,elliptical_mono,vinyl_restore.dequantizecommand — reduce quantization grain from low-bit-depth
sources via inspectable neighbour-prediction on the quantisation lattice.
Library:dequantize. Foundation for deeper co-sparse methods (see ROADMAP).enhance --method replicate|interpolate— bandwidth extension now selects
SBR band replication (default) or log-magnitude spectral extrapolation.
Library:EnhanceMethod,bandwidth_extend_with_method.- Contributor algorithm specs —
docs/algorithm-specs.mddocuments
conventions and planned restoration-depth implementations. - ROADMAP — marks
0.6.xdigitization items shipped; adds research &
project inspiration index and0.7.xrestoration track. - Book — new chapters on vinyl digitization (RIAA)
and dequantization; toolbox table and glossary
updated.