36 lines
846 B
Rust
36 lines
846 B
Rust
//! NB: From wavy library
|
|
//!
|
|
//! This example records audio and plays it back in real time as it's being recorded.
|
|
|
|
extern crate wavy;
|
|
|
|
use wavy::*;
|
|
|
|
use std::collections::VecDeque;
|
|
|
|
fn main() -> Result<(), AudioError> {
|
|
println!("Opening microphone system");
|
|
let mut mic = MicrophoneSystem::new(SampleRate::Studio)?;
|
|
|
|
println!("Opening speaker system");
|
|
let mut speaker = SpeakerSystem::new(SampleRate::Studio)?;
|
|
|
|
println!("Done");
|
|
|
|
let mut buffer = VecDeque::new();
|
|
|
|
loop {
|
|
mic.record(&mut |_index, l, r| {
|
|
buffer.push_back((l, l));
|
|
});
|
|
|
|
speaker.play(&mut || {
|
|
if let Some((lsample, rsample)) = buffer.pop_front() {
|
|
AudioSample::stereo(lsample, rsample)
|
|
} else {
|
|
AudioSample::stereo(0, 0)
|
|
}
|
|
});
|
|
}
|
|
}
|