From a92834de42757d4493d1f2385794d3f1f3eed6d0 Mon Sep 17 00:00:00 2001 From: Vasilii Milovidov Date: Wed, 20 Sep 2023 02:31:04 +0400 Subject: [PATCH] sample reverse --- packages/desktopbridge/webaudiobridge.mjs | 1 + src-tauri/src/superdough.rs | 31 ++++++++++++++++------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/desktopbridge/webaudiobridge.mjs b/packages/desktopbridge/webaudiobridge.mjs index e047e62e9..491245906 100644 --- a/packages/desktopbridge/webaudiobridge.mjs +++ b/packages/desktopbridge/webaudiobridge.mjs @@ -70,6 +70,7 @@ export const desktopAudio = async (value, deadline, hapDuration) => { bpenv = 1, } = value; + console.log(begin); value.duration = hapDuration; if (isNote(note)) { note = noteToMidi(note); diff --git a/src-tauri/src/superdough.rs b/src-tauri/src/superdough.rs index 189ff803a..50aa84b74 100644 --- a/src-tauri/src/superdough.rs +++ b/src-tauri/src/superdough.rs @@ -109,16 +109,29 @@ pub fn superdough(message: &WebAudioMessage, context: &mut AudioContext) { } src.stop_at(now + message.duration + message.adsr.release); } else { - src.start_at_with_offset_and_duration( - now, - message.begin * audio_buffer_duration, - audio_buffer_duration / message.speed as f64, - ); - apply_adsr(&env, message, now); - for f in filters { - apply_filter_adsr(&f, message, &f.type_(), now); + if message.speed < 0.0 { + src.start_at_with_offset_and_duration( + now, + (message.begin + 0.5) * audio_buffer_duration, + audio_buffer_duration, + ); + apply_adsr(&env, message, now); + for f in filters { + apply_filter_adsr(&f, message, &f.type_(), now); + } + src.stop_at(now + message.duration + 0.2); + } else { + src.start_at_with_offset_and_duration( + now, + message.begin * audio_buffer_duration , + audio_buffer_duration, + ); + apply_adsr(&env, message, now); + for f in filters { + apply_filter_adsr(&f, message, &f.type_(), now); + } + src.stop_at(now + message.duration + message.adsr.release); } - src.stop_at(now + message.duration + 0.2); } } Err(e) => eprintln!("Failed to open file: {:?}", e),