High-quality sample rate conversion FIFO using libsamplerate.
ResamplingFifo provides real-time sample rate conversion with buffering, allowing you to push audio at one sample rate and pull it out at another. It uses the Secret Rabbit Code (libsamplerate) library for high-quality resampling with configurable quality levels.
Key Features:
- High-quality resampling (5 quality levels)
- Real-time operation with internal buffering
- Multi-channel support
- Dynamic ratio adjustment
- Read with or without consuming (adding mode)
Quality Levels (0-4):
- 0: SRC_SINC_FASTEST (lowest quality, fastest)
- 1: SRC_SINC_MEDIUM_QUALITY
- 2: SRC_SINC_BEST_QUALITY (highest quality, slowest)
- 3: SRC_ZERO_ORDER_HOLD (for non-audio signals)
- 4: SRC_LINEAR (simple linear interpolation)
Common Use Cases:
- Playing back audio files at different sample rates
- Converting between plugin and host sample rates
- Time-stretching (with dynamic ratio changes)
- Sample rate conversion in offline processing
Usage:
resampler.setResamplingRatio(48000.0, 44100.0);
resampler.setQuality(2);
AudioBuffer<float> input48k(2, 512);
resampler.pushAudioBuffer(input48k);
AudioBuffer<float> output44k(2, 460);
if (resampler.samplesReady() >= 460)
resampler.popAudioBuffer(output44k);
ResamplingFifo(int blockSize, int numChannels=2, int maxSamples=44100)
- See also
- AudioFifo, resampleBuffer