euphony-buffer 0.1.1

buffer utilities for euphony applications
Documentation
use rubato::{
    InterpolationParameters, InterpolationType, Resampler, Sample, SincFixedIn, WindowFunction,
};

pub fn resample<S: Sample>(
    samples: &[Vec<S>],
    current: f64,
    target: f64,
) -> Result<Vec<Vec<S>>, rubato::ResampleError> {
    let params = InterpolationParameters {
        sinc_len: 256,
        f_cutoff: 0.95,
        interpolation: InterpolationType::Linear,
        oversampling_factor: 256,
        window: WindowFunction::BlackmanHarris2,
    };
    let mut resampler = SincFixedIn::<S>::new(
        target / current,
        2.0,
        params,
        samples[0].len(),
        samples.len(),
    )
    .unwrap();

    resampler.process(samples, None)
}