diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2017-12-26 17:00:03 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2017-12-26 17:00:03 +0200 |
commit | da50c0294696c3a327db4b2a0a089d7977df488e (patch) | |
tree | 229f0acd9016f8911932ba059256b8cd7ff0c7f1 /src/audio.rs | |
parent | a26c2acc49a03b544d54a088b660618b5de9a64c (diff) |
Refactored to use more extensive typing
Diffstat (limited to 'src/audio.rs')
-rw-r--r-- | src/audio.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/audio.rs b/src/audio.rs index 01273d7..ddd7925 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -2,6 +2,8 @@ use portaudio as pa; use std::sync::mpsc::*; +use signal::Signal; + pub const SAMPLE_RATE: f32 = 44100.0; // I want to use the frames constant in contexts where I need to cast // it to f32 (eg for generating a sine wave). Therefore its type must @@ -31,13 +33,13 @@ pub fn get_default_device(pa: &pa::PortAudio) -> Result<u32, pa::Error> { Ok(default_input_index) } -pub fn start_listening_default(pa: &pa::PortAudio, sender: Sender<Vec<f32>>) -> Result<pa::Stream<pa::NonBlocking, pa::Input<f32>>, pa::Error> { +pub fn start_listening_default(pa: &pa::PortAudio, sender: Sender<Signal>) -> Result<pa::Stream<pa::NonBlocking, pa::Input<f32>>, pa::Error> { let default = get_default_device(pa)?; start_listening(pa, default, sender) } pub fn start_listening(pa: &pa::PortAudio, device_index: u32, - sender: Sender<Vec<f32>>) -> Result<pa::Stream<pa::NonBlocking, pa::Input<f32>>, pa::Error> { + sender: Sender<Signal>) -> Result<pa::Stream<pa::NonBlocking, pa::Input<f32>>, pa::Error> { let device_info = try!(pa.device_info(pa::DeviceIndex(device_index))); let latency = device_info.default_low_input_latency; @@ -53,7 +55,7 @@ pub fn start_listening(pa: &pa::PortAudio, device_index: u32, // This callback A callback to pass to the non-blocking stream. let callback = move |pa::InputStreamCallbackArgs { buffer, .. }| { - match sender.send(Vec::from(buffer)) { + match sender.send(Signal::new(buffer, SAMPLE_RATE)) { Ok(_) => pa::Continue, Err(_) => pa::Complete } |