extern crate sound_stream;
use sound_stream::{CallbackFlags, CallbackResult, SoundStream, Settings, StreamParams};
fn sine_wave(phase: f64) -> f32 {
((phase * ::std::f64::consts::PI * 2.0).sin() * 0.5) as f32
}
fn main() {
let mut count = 3.0;
let mut phase = 0.0;
let callback = Box::new(move |output: &mut[f32], settings: Settings, dt: f64, _: CallbackFlags| {
for frame in output.chunks_mut(settings.channels as usize) {
let amp = sine_wave(phase);
for channel in frame {
*channel = amp;
}
phase += 440.0 / settings.sample_hz as f64;
}
count -= dt;
if count >= 0.0 { CallbackResult::Continue } else { CallbackResult::Complete }
});
let stream = SoundStream::new().output(StreamParams::new()).run_callback(callback).unwrap();
while let Ok(true) = stream.is_active() {}
}