From 1732015dd975fe2cf560923eb7e24ca8219f9258 Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Sat, 8 May 2021 19:40:42 -0600 Subject: quantize note length and pitch --- src/main.rs | 9 +++++++-- 1 file 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 = 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); -- cgit v1.2.3