This commit is contained in:
Brandon Thomas committed 2019-09-06 03:21:03 -04:00
1 parent 1146bb057d
commit cbb9be2074
1 file changed
+40 -10
+40 -10
View File
@@ -18,10 +18,10 @@ fn main() {
fn record() -> Result<(), AudioError> {
// Connect to the speaker and microphone systems.
let mut mic = MicrophoneSystem::new(SampleRate::Normal)?;
let mut speaker = SpeakerSystem::new(SampleRate::Sparse)?;
let mut mic = MicrophoneSystem::new(SampleRate::Studio)?;
let mut speaker = SpeakerSystem::new(SampleRate::Normal)?;
let mut buffer = VecDeque::new();
let mut buffer = VecDeque::with_capacity(30_000);
/* // Convert a signal to its RMS.
let signal = signal::rate(44_100.0).const_hz(440.0).sine();;
@@ -32,6 +32,7 @@ let mut rms_signal = signal.rms(ring_buffer);*/
// Record some sound.
mic.record(&mut |_whichmic, l, r| {
buffer.push_back((l, r));
//buffer.push_back((l, r));
});
let mut last_rsample = None;
@@ -39,23 +40,52 @@ let mut rms_signal = signal.rms(ring_buffer);*/
// Play that sound.
speaker.play(&mut || {
let mut sample = None;
let mut count = 0;
while sample.is_none() {
sample = buffer.pop_front();
//if let Some((lsample, rsample)) = buffer.pop_front() {
//let rsample = rsample.saturating_mul(2);
count += 1;
if count > 10 {
break;
}
}
match sample {
Some((lsample, rsample)) => {
last_rsample = Some(rsample);
last_lsample = Some(lsample);
AudioSample::stereo(lsample, rsample)
},
None => {
//println!("NOO");
//AudioSample::stereo(0,0)
let rsample = last_rsample.unwrap_or(0);
let lsample = last_lsample.unwrap_or(0);
AudioSample::stereo(lsample, rsample)
}
}
/*//println!("Buffer size {}", buffer.len());
if let Some((lsample, rsample)) = buffer.pop_front() {
//let rsample = rsample.saturating_mul(2);
//let lsample = lsample.saturating_mul(2);
last_rsample = Some(rsample);
last_lsample = Some(lsample);
/*let swap = rsample;
let rsample = lsample;
let lsample = swap;*/
AudioSample::stereo(lsample, rsample)
} else {
// Play silence if not enough has been recorded yet.
//let rsample = last_rsample.unwrap_or(0);
//let lsample = last_lsample.unwrap_or(0);
let rsample = 0;
let lsample = 0;
let rsample = last_rsample.unwrap_or(0);
let lsample = last_lsample.unwrap_or(0);
/*let rsample = 0;
let lsample = 0;*/
println!("zero {},{}", rsample, lsample);
AudioSample::stereo(rsample, lsample)
}
}*/
});
}
}