play with FSK more

This commit is contained in:
2025-03-25 21:49:51 -04:00
parent fd5feaca3f
commit 7ef059fa5b
3 changed files with 58 additions and 15 deletions

View File

@@ -1,20 +1,34 @@
use cpal::{StreamConfig, traits::{DeviceTrait, HostTrait}};
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
use std::sync::{Arc, Mutex};
pub fn play_audio(signal: &[f32]) -> Result<(), Box<dyn std::error::Error>> {
let host = cpal::default_host();
let device = host.default_output_device()?.config();
let device = host.default_output_device().ok_or("No output device found")?;
let config = device.default_output_config()?.config();
let signal = Arc::new(Mutex::new(signal.to_vec()));
let singal_clone = Arc::clone(&signal);
let mut index = 0;
let stream = device.build_output_stream(
&config,
move |data: &mut [f32], _: &cpal::OutputCallbackInfo| {
data.copy_from_slice(&signal[..data.len()]);
let signal = singal_clone.lock().unwrap();
for sample in data.iter_mut() {
*sample = if index < signal.len() {
signal[index]
} else {
0.0
};
index += 1;
}
},
|err| eprintln!("Error: {:?}", err),
None
)?;
stream.play()?;
std::thread::sleep(std::time::Duration::from_secs(5));
std::thread::sleep(std::time::Duration::from_secs(1));
Ok(())
}