Repository navigation
0.3.0 - 2026-10-11
Release Notes
Breaking
-
All presets and the
Configdefault have been retuned, so output differs from 0.2.0 for every preset. Each preset now scores higher on the HydrogenAudio SRC test suite and runs faster;PRESET_HIGHis much faster.Preset Quality Bandwidth Taper PRESET_FAST5120.92Kaiser(30.0)PRESET_GOOD(default)23040.975Kaiser(30.0)PRESET_HIGH70560.996Kaiser(34.0), alias floor0dB -
PRESET_EXTREMEis removed, along withardftsrc-rs --preset extreme.PRESET_HIGHnow permits aliasing at the lower Nyquist (alias floor0dB) and scores higher thanPRESET_EXTREMEdid, with a quarter of its FFT size. UsePRESET_HIGHinstead. -
PRESET_HIGHnow supportsf32processing (its quality is within thef32limit of 8192). -
TaperType::default()is nowKaiser(30.0)(wasCosine(3.4375)). -
The
besselfeature is removed. The Kaiser taper no longer depends onpxfmand is always available. -
TaperType::Bessel(alpha)is replaced byTaperType::Kaiser(beta), which takes the Kaiser window'sbetaas MATLAB and SciPy do:Bessel(alpha)corresponds toKaiser(PI * alpha). It integrates the window exactly and samples it at bin centres, so it is exactly amplitude-complementary and centred on its transition. When the transition straddles Nyquist it samples from unity to zero inclusive, putting −6 dB on Nyquist. -
Kaiseracceptsbetain(0, 300]and otherwise fails validation with the newError::InvalidKaiserBeta. -
TaperType::KbdandTaperType::HalfKaiserare removed. -
ardftsrc-rs:--taper-type besselis nowkaiserand takes--beta(default30) instead of--alpha.kbdandhalf_kaiserare removed. -
CpuCoreis no longer exported. It could not be constructed outside the crate, since its constructor takes a crate-internal configuration type. UsePlanarResamplerwithchannels = 1for single-channel resampling.
Fixed
- With a lowered alias floor, the transition is now centred on the lower Nyquist, so every pair of bins mirrored about it sums to unity gain and Nyquist sits at −6 dB. Taper samples that had underflowed to zero were trimmed, which pushed the transition above Nyquist: with the default taper and the widest floor at 44.1 kHz → 96 kHz, −6 dB sat 9 bins high and Nyquist was at −3.4 dB. This affects
PRESET_HIGH, which now uses an alias floor of0dB. Without aliasing the layout is unchanged. - Taper profiles are now computed in
f64for every sample type. Inf32,CosineandPlancktails underflowed earlier and shifted the transition toward Nyquist (by up to 280 bins forCosine(3.4375)over 5000 transition bins). - End-of-stream stop extrapolation no longer reads its input history from a buffer the forward FFT had already used as scratch. With the default FFT backend, the synthesized tail was built from corrupted samples, degrading the final chunk; outputs now match the high-precision backends.
- With
decimateenabled, output is now exactly time-aligned with the input. The decimation cascade's group delay was rounded to whole output samples, leaving a fractional-sample offset; the remainder is now compensated in the spectral stage.
Documentation
- Quality reports regenerated for the new presets, with an
f32report forPRESET_FAST. - Added guidance on compiler optimization settings for realtime resampling.
Install ardftsrc-rs 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/phayes/ardftsrc-rs/releases/download/v0.3.0/ardftsrc-rs-installer.sh | shInstall prebuilt binaries via Homebrew
brew install phayes/tap/ardftsrc-rsDownload ardftsrc-rs 0.3.0
| File | Platform | Checksum |
|---|---|---|
| ardftsrc-rs-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| ardftsrc-rs-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| ardftsrc-rs-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| ardftsrc-rs-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| ardftsrc-rs-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |