qdft 0.1.0

Constant-Q Sliding DFT
Documentation
#[cfg(test)]
mod tests {

    use qdft::QDFT;

    use num::{One, Zero};

    #[allow(non_camel_case_types)]
    type c64 = num::complex::Complex<f64>;

    #[test]
    fn test_one_in_zero_out() {
        let samplerate = 44100.0;
        let bandwidth = (50.0, samplerate / 2.0);
        let resolution = 24.0;
        let latency = 0.0;
        let window = Some((0.5, -0.5));

        let mut qdft = QDFT::new(
            samplerate,
            bandwidth,
            resolution,
            latency,
            window);

        let n = 1;
        let m = qdft.size();

        let mut samples = vec![f32::zero(); n];
        let mut dfts = vec![c64::zero(); n * m];

        dfts[0] = c64::one();
        assert_ne!(dfts[0], c64::zero());

        qdft.qdft(&samples, &mut dfts);
        assert_eq!(dfts[0], c64::zero());

        samples[0] = f32::one();
        assert_ne!(samples[0], f32::zero());

        qdft.iqdft(&dfts, &mut samples);
        assert_eq!(samples[0], f32::zero());
    }
}