diff options
-rw-r--r-- | src/main.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 6b79749..0909b1f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,12 +10,17 @@ fn main() { let (_stream, stream_handle) = OutputStream::try_default().unwrap(); let sink = Sink::try_new(&stream_handle).unwrap(); + let bpm = 140.0; + let seconds_per_beat = (1.0 / bpm) * 60.0; + loop { let mut rng = rand::thread_rng(); - let freq = rng.gen_range((440 / 4)..(440 * 4)); + let freq = (440.0 + * (2f32.powf(1.0 / 12.0)).powf(rng.gen_range((12 * -2)..=(12 * 0)) as f32)) + as u32; let wave = SineWave::new(freq); let zero: Zero<f32> = Zero::new(1, 48_000); - let length = rng.gen_range(0.1..0.3); + let length = (rng.gen_range(1..4) as f32) / 4.0 * seconds_per_beat; let source = wave .take_crossfade_with(zero, Duration::from_secs_f32(length)) .amplify(0.20); |