mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-02 08:28:18 +00:00
wip
This commit is contained in:
1 parent
1146bb057d
commit
cbb9be2074
1 file changed
+40
-10
+40
-10
@@ -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)
|
||||
}
|
||||
}*/
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user