From ea48dd6fa1d1e5907458a32ab70ba6e635089b58 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 11 May 2025 19:20:58 +0300 Subject: [PATCH] sampler: wip: add play_sample and stop_sample --- config/keys_sampler.edn | 2 ++ crates/device/src/sampler/sampler_api.rs | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/config/keys_sampler.edn b/config/keys_sampler.edn index 036342a0..0e8aa127 100644 --- a/config/keys_sampler.edn +++ b/config/keys_sampler.edn @@ -4,3 +4,5 @@ (@right sampler select :sample-to-right) (@r sampler record-toggle :sample-selected) (@shift-R sampler record-cancel) +(@p sampler play-sample :sample-selected) +(@P sampler stop-sample :sample-selected) diff --git a/crates/device/src/sampler/sampler_api.rs b/crates/device/src/sampler/sampler_api.rs index f490350e..514ccf5f 100644 --- a/crates/device/src/sampler/sampler_api.rs +++ b/crates/device/src/sampler/sampler_api.rs @@ -81,6 +81,16 @@ impl SamplerCommand { sampler.recording = None; Ok(None) } + fn play_sample (sampler: &mut Sampler, pitch: usize) -> Perhaps { + if let Some(ref sample) = sampler.mapped[pitch] { + sampler.voices.write().unwrap().push(Sample::play(sample, 0, &u7::from(128))); + } + Ok(None) + } + fn stop_sample (sampler: &mut Sampler, pitch: usize) -> Perhaps { + todo!(); + Ok(None) + } //fn select (&self, state: &mut Sampler, i: usize) -> Option { //Self::Select(state.set_note_pos(i)) //}