From 2c1eadd54522e25a826a106461465d14606e4460 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Thu, 12 Jan 2017 11:08:18 +0200 Subject: Simplified failing test so it would pass It wasn't failing because of some small error, the whole way I find the fundamental needs to be rethought, probably to use correlation instead of an FFT. --- src/gui.rs | 2 +- src/transforms.rs | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui.rs b/src/gui.rs index f116c45..5591cd7 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -108,7 +108,7 @@ fn start_processing_audio(mic_receiver: Receiver>, pitch_sender: Sender thread::spawn(move || { for samples in mic_receiver { let frequency_domain = ::transforms::fft(samples, 44100.0); - freq_sender.send(frequency_domain.clone()); + freq_sender.send(frequency_domain.clone()).ok(); let fundamental = ::transforms::find_fundamental_frequency(&frequency_domain); let pitch = match fundamental { Some(fundamental) => ::transforms::hz_to_pitch(fundamental), diff --git a/src/transforms.rs b/src/transforms.rs index 4d0e224..82966a9 100644 --- a/src/transforms.rs +++ b/src/transforms.rs @@ -39,9 +39,6 @@ pub fn find_fundamental_frequency(frequency_domain: &Vec) -> Op let positive_buckets = frequency_domain.iter().filter(|x| x.intensity > 0.0).cloned().collect::>(); let average_intensity = positive_buckets.iter().map(|x| x.intensity).sum::() / frequency_domain.len() as f64; let significant_buckets = positive_buckets.iter().filter(|x| x.intensity > average_intensity).cloned().collect::>(); - for bucket in significant_buckets.iter() { - //println!("{:?}", bucket); - } let max_bucket = significant_buckets.iter() .fold(None as Option<::transforms::FrequencyBucket>, |max, next| @@ -88,7 +85,8 @@ mod tests { #[test] fn fft_on_two_sine_waves() { - let samples1k = sample_sinusoud(0.5, 1000.0, 0.0); + //Unfortunately, real signals won't be this neat + let samples1k = sample_sinusoud(2.0, 1000.0, 0.0); let samples2k = sample_sinusoud(1.0, 10000.0, 0.0); let expected_fundamental = 1000.0; -- cgit v1.2.3