From b9ac36af4059a9c48288c6e9c252b2cbacd4c0d5 Mon Sep 17 00:00:00 2001 From: Eskil Q Date: Fri, 25 Dec 2020 00:47:52 +0100 Subject: solve pitch bug --- mumd/src/audio.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'mumd/src') diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 812bb4c..b578256 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -231,12 +231,18 @@ impl Audio { .map(|e| cpal::Sample::to_f32(&e.unwrap())) .collect::>(), }; - let mut signal = signal::from_iter(samples.iter().cloned()); + let iter: Box> = match spec.channels { + 1 => Box::new(samples.into_iter().flat_map(|e| vec![e, e])), + 2 => Box::new(samples.into_iter()), + _ => unimplemented!() // TODO handle gracefully (this might not even happen) + }; + let mut signal = signal::from_interleaved_samples_iter::<_, [f32; 2]>(iter); let interp = Linear::new(signal.next(), signal.next()); let samples = signal .from_hz_to_hz(interp, spec.sample_rate as f64, SAMPLE_RATE as f64) .until_exhausted() - .collect::>(); + .flat_map(|e| if output_config.channels == 1 { vec![e[0]] } else { e.to_vec() }) + .collect::>(); (*event, samples) }) .collect(); -- cgit v1.2.1