From 4dd91d7fc35685f4ad4c909ba72a03f21185283d Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Wed, 12 Jul 2017 20:35:21 +0200 Subject: Simplified loop for doing calculations from microphone samples In the benchmarks, the correlation can be done in 0.5ms. I'm only expecting new samples from the microphone every 23ms at best. I don't need to worry about dropping frames at this point. --- src/gui.rs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'src') diff --git a/src/gui.rs b/src/gui.rs index f298790..a75e573 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -163,18 +163,7 @@ fn start_listening_current_dropdown_value(dropdown: >k::ComboBoxText, mic_send fn start_processing_audio(mic_receiver: Receiver>, cross_thread_state: Arc>) { thread::spawn(move || { - loop { - let mut samples = None; - - // ignore all pending samples until we get to the most recent one - while let Ok(next_samples) = mic_receiver.try_recv() { - samples = Some(next_samples); - } - let samples = match samples { - Some(samples) => samples, - None => {continue;} - }; - + while let Ok(samples) = mic_receiver.recv() { let signal = ::transforms::align_to_rising_edge(&samples); let correlation = ::transforms::correlation(&samples); let fundamental = ::transforms::find_fundamental_frequency_correlation(&samples, ::audio::SAMPLE_RATE); -- cgit v1.2.3