use anyhow::Result;
use knyst::controller::schedule_bundle;
use knyst::graph;
#[allow(unused)]
use knyst::{
audio_backend::{CpalBackend, CpalBackendOptions, JackBackend},
controller::print_error_handler,
prelude::*,
};
fn main() -> Result<()> {
let _backend = setup();
schedule_bundle(graph::Time::Seconds(Seconds::new(3, 0)), || {
let node0 = wavetable_oscillator_owned(Wavetable::sine()).freq(110.);
graph_output(0, node0 * 0.3);
graph_output(1, node0 * 0.3);
});
println!("Playing a sine wave at 110 Hz at an amplitude of 0.3, after 3 seconds");
println!("Press [ENTER] to exit");
let mut input = String::new();
std::io::stdin().read_line(&mut input)?;
Ok(())
}
fn setup() -> impl AudioBackend {
let mut backend =
CpalBackend::new(CpalBackendOptions::default()).expect("Unable to connect to CPAL backend");
let _sphere_id = KnystSphere::start(
&mut backend,
SphereSettings {
..Default::default()
},
print_error_handler,
)
.ok();
backend
}