Release Notes
Breaking
- High precision is now a sample type instead of a config option. With the
high_precision feature, the new public types DoubleDouble, F128, and F256 can be used as any resampler's sample type, e.g. InterleavedResampler::<F128>. Convert samples in with From<f64>/From<f32> (exact) and out with to_f64().
- Every stage now runs in the sample type: decimation, edge extrapolation, both FFTs, the spectral taper and phase, overlap-add, and output scaling. Previously only the FFTs ran in the wide type, and the spectrum was rounded to
f64 between them, so high-precision output differs slightly from 0.3.1.
- Removed
Config::high_precision, Config::with_high_precision, HighPrecision, and Error::HighPrecisionIncompatibleWithF32.
InterleavedResampler, PlanarResampler, and RealtimeResampler are bounded by the new Sample trait instead of num_traits::Float + realfft::FftNum. Every Float + FftNum type implements Sample, so f32 and f64 code is unaffected unless it names the bounds.
ardftsrc-rs replaces --high-precision double-double|f128|f256 with --dd, --f128, and --f256, alongside --f32 and --f64. High-precision runs decode and encode in f64.
Added
RodioResampler::reset() discards buffered audio and resamples afresh from wherever the inner source is, without seeking it. Use it when the inner source jumps on its own, such as a cleared queue. With fast-start enabled it re-primes at once. try_seek() now calls it after seeking the inner source.
Changed
- The CPU resampler now reuses per-core FFT scratch buffers instead of allocating them on every chunk.
Documentation
PERFORMANCE.md is regenerated. On one core, PRESET_HIGH converts 44.1 kHz → 48 kHz at 662× realtime (was 374×). rubato and PRESET_FAST are now within 3% of each other when upsampling.
Benchmarks
- The throughput, chunk-time, and rubato benches share one input: 4 minutes of deterministic stereo white noise per input rate, replacing the
test_wavs fixtures, which differed in length and channel count between rates.
Install ardftsrc-rs 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/phayes/ardftsrc-rs/releases/download/v0.4.0/ardftsrc-rs-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install phayes/tap/ardftsrc-rs
Download ardftsrc-rs 0.4.0