mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-11 16:31:04 +00:00
41 lines
863 B
Rust
41 lines
863 B
Rust
|
|
extern crate cpal;
|
|
extern crate hound;
|
|
extern crate sample;
|
|
extern crate sonogram;
|
|
extern crate wavy;
|
|
|
|
use wavy::*;
|
|
|
|
use std::collections::VecDeque;
|
|
|
|
fn main() {
|
|
println!("Run");
|
|
record().unwrap();
|
|
}
|
|
|
|
fn record() -> Result<(), AudioError> {
|
|
// Connect to the speaker and microphone systems.
|
|
let mut mic = MicrophoneSystem::new(SampleRate::Normal)?;
|
|
let mut speaker = SpeakerSystem::new(SampleRate::Normal)?;
|
|
|
|
let mut buffer = VecDeque::new();
|
|
|
|
loop {
|
|
// Record some sound.
|
|
mic.record(&mut |_whichmic, l, r| {
|
|
buffer.push_back((l, r));
|
|
});
|
|
|
|
// Play that sound.
|
|
speaker.play(&mut || {
|
|
if let Some((lsample, rsample)) = buffer.pop_front() {
|
|
AudioSample::stereo(lsample, rsample)
|
|
} else {
|
|
// Play silence if not enough has been recorded yet.
|
|
AudioSample::stereo(0, 0)
|
|
}
|
|
});
|
|
}
|
|
}
|