use std::thread::sleep;
use std::time::Duration;
use synthizer as syz;
fn main() -> syz::Result<()> {
let args = std::env::args().collect::<Vec<_>>();
if args.len() != 2 {
println!("Usage: {} <file>", args[0]);
return Ok(());
}
let _guard = syz::initialize();
let ctx = syz::Context::new()?;
let gen = syz::BufferGenerator::new(&ctx)?;
let buffer = syz::Buffer::from_file(args[1].as_str())?;
let src = syz::DirectSource::new(&ctx)?;
gen.buffer().set(&buffer)?;
gen.looping().set(true)?;
src.add_generator(&gen)?;
let reverb = syz::GlobalFdnReverb::new(&ctx)?;
reverb.t60().set(10.0)?;
ctx.config_route_simple(&src, &reverb)?;
sleep(Duration::from_secs(5));
ctx.config_route(
&src,
&reverb,
&syz::RouteConfigBuilder::new()
.set_filter(syz::BiquadConfig::design_lowpass(500.0, syz::DEFAULT_Q)?)
.build(),
)?;
sleep(Duration::from_secs(5));
ctx.remove_route(&src, &reverb, 0.1)?;
sleep(Duration::from_secs(5));
Ok(())
}