This commit is contained in:
mii443
2024-02-12 01:56:45 +09:00
parent 747b2b0a04
commit b7c858c127

View File

@ -1,3 +1,5 @@
use std::sync::{Arc, Mutex};
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
fn main() { fn main() {
@ -9,15 +11,45 @@ fn main() {
let device = host.devices().unwrap().find(|d| d.name().unwrap() == "Voicemeeter Insert Virtual ASIO").unwrap(); let device = host.devices().unwrap().find(|d| d.name().unwrap() == "Voicemeeter Insert Virtual ASIO").unwrap();
let stream = device.build_input_stream( let audio_data = Arc::new(Mutex::new(vec![]));
let input_stream = device.build_input_stream(
&device.default_input_config().unwrap().config(), &device.default_input_config().unwrap().config(),
move |data: &[f32], _: &_| { {
println!("{:?}", data.iter().map(|d| d.clone()).sum::<f32>()); let audio_data = audio_data.clone();
move |data: &[f32], _: &_| {
let audio_data = &mut *audio_data.lock().unwrap();
*audio_data = data.iter().map(|d| d.clone()).collect::<Vec<f32>>();
}
}, },
move |err| eprintln!("error: {}", err), move |err| eprintln!("error: {}", err),
None None
).unwrap(); ).unwrap();
stream.play().unwrap(); let output_stream = device.build_output_stream(
&device.default_output_config().unwrap().config(),
{
let audio_data = audio_data.clone();
let mut count = 0f32;
move |data: &mut [f32], _: &cpal::OutputCallbackInfo| {
let mut audio_data = audio_data.lock().unwrap().clone();
for frame in audio_data.chunks_mut(22) {
let value = count.sin();
let value2 = (count / 2.).sin();
for sample in frame.iter_mut() {
*sample += value * 0.1 + value2 * 0.1;
}
count += 0.05;
}
data.copy_from_slice(&audio_data);
}
},
move |err| eprintln!("error: {}", err),
None
).unwrap();
input_stream.play().unwrap();
output_stream.play().unwrap();
std::thread::sleep(std::time::Duration::from_secs(10)); std::thread::sleep(std::time::Duration::from_secs(10));
} }