From 7492c9383ad8c109ec9b8d04c01033b4f3d77e59 Mon Sep 17 00:00:00 2001 From: Vasilii Milovidov Date: Wed, 20 Sep 2023 05:21:43 +0400 Subject: [PATCH] looper and reverse tests --- src-tauri/src/superdough.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src-tauri/src/superdough.rs b/src-tauri/src/superdough.rs index 148d137f3..84134e9e3 100644 --- a/src-tauri/src/superdough.rs +++ b/src-tauri/src/superdough.rs @@ -71,7 +71,7 @@ pub fn superdough(message: &WebAudioMessage, context: &mut AudioContext) { node.connect(env); } }; -println!("{}", now); + match message.waveform.as_str() { "sine" | "square" | "triangle" | "saw" => { let osc = context.create_oscillator(); @@ -100,14 +100,22 @@ println!("{}", now); connect_filter_nodes(&src, &filters, &env); src.playback_rate().set_value(message.speed); + + //TODO + let (start_at, stop_at) = if message.speed < 0.0 { + (audio_buffer_duration, now + message.duration + 0.2) + } else { + (message.begin * audio_buffer_duration, now + message.duration + message.adsr.release) + }; + if message.looper.is_loop > 0 { src.set_loop(true); src.set_loop_start(message.looper.loop_start); + println!("{}", src.loop_start()); src.set_loop_end(message.looper.loop_end); - src.start_at_with_offset_and_duration( + src.start_at_with_offset( now, - src.loop_start(), - audio_buffer_duration / message.speed as f64, + src.loop_start() * start_at, ); if message.adsr.adsr_on == 1 { apply_drum_adsr(&env, message, now); @@ -119,11 +127,6 @@ println!("{}", now); } src.stop_at(now + message.duration + message.adsr.release); } else { - let (start_at, stop_at) = if message.speed < 0.0 { - ((message.begin + 0.5) * audio_buffer_duration, now + message.duration + 0.2) - } else { - (message.begin * audio_buffer_duration, now + message.duration + message.adsr.release) - }; src.start_at_with_offset_and_duration( now, start_at,