summaryrefslogtreecommitdiff
path: root/src/audio.rs
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2017-12-26 17:00:03 +0200
committerJustin Worthe <justin@worthe-it.co.za>2017-12-26 17:00:03 +0200
commitda50c0294696c3a327db4b2a0a089d7977df488e (patch)
tree229f0acd9016f8911932ba059256b8cd7ff0c7f1 /src/audio.rs
parenta26c2acc49a03b544d54a088b660618b5de9a64c (diff)
Refactored to use more extensive typing
Diffstat (limited to 'src/audio.rs')
-rw-r--r--src/audio.rs8
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
}