use caw_core::*;
use caw_modules::*;
use caw_player::play_mono;
use rand::Rng;
fn osc(freq: f32) -> Sig<impl SigT<Item = f32>> {
oscillator(waveform::Saw, freq)
.reset_offset_01(rand::rng().random::<f32>() * 0.1)
.build()
}
fn signal() -> Sig<impl SigT<Item = f32>> {
let n = 6000;
(0..n)
.map(move |i| {
osc(60.0 + ((i as f32 / n as f32) * 0.1))
.map(move |x| (x / (n as f32)) * 10.0)
})
.sum()
}
fn main() -> anyhow::Result<()> {
env_logger::init();
let _handle = play_mono(signal(), Default::default());
std::thread::park();
Ok(())
}