mirror of
https://github.com/mii443/maudio-router.git
synced 2025-08-22 16:05:35 +00:00
ASIO
This commit is contained in:
40
src/main.rs
40
src/main.rs
@ -1,3 +1,5 @@
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
|
||||
|
||||
fn main() {
|
||||
@ -9,15 +11,45 @@ fn main() {
|
||||
|
||||
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(),
|
||||
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),
|
||||
None
|
||||
).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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user