From fb9912865033915bdb7a14f0f4e2deb4c58b369a Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 10 May 2025 16:38:00 +0300 Subject: [PATCH] groovebox: reenable sampler record_finish --- config/keys_sampler.edn | 11 ++++++----- crates/device/src/sampler/sampler_api.rs | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/config/keys_sampler.edn b/config/keys_sampler.edn index 97b66858..036342a0 100644 --- a/config/keys_sampler.edn +++ b/config/keys_sampler.edn @@ -1,5 +1,6 @@ -(@up sampler select :sample-above) -(@down sampler select :sample-below) -(@left sampler select :sample-to-left) -(@right sampler select :sample-to-right) -(@r sampler record-toggle :sample-selected) +(@up sampler select :sample-above) +(@down sampler select :sample-below) +(@left sampler select :sample-to-left) +(@right sampler select :sample-to-right) +(@r sampler record-toggle :sample-selected) +(@shift-R sampler record-cancel) diff --git a/crates/device/src/sampler/sampler_api.rs b/crates/device/src/sampler/sampler_api.rs index aa169341..5d1279da 100644 --- a/crates/device/src/sampler/sampler_api.rs +++ b/crates/device/src/sampler/sampler_api.rs @@ -55,7 +55,7 @@ impl Sampler { impl SamplerCommand { fn record_toggle (sampler: &mut Sampler, sample: usize) -> Perhaps { if sampler.recording.is_some() { - Self::record_cancel(sampler) + Self::record_finish(sampler) } else { Self::record_begin(sampler, sample) } @@ -72,6 +72,17 @@ impl SamplerCommand { )); Ok(None) } + fn record_finish (sampler: &mut Sampler) -> Perhaps { + let recording = sampler.recording.take(); + let _sample = if let Some((index, sample)) = recording { + let old = sampler.mapped[index].clone(); + sampler.mapped[index] = Some(sample); + old + } else { + None + }; + Ok(None) + } fn record_cancel (sampler: &mut Sampler) -> Perhaps { sampler.recording = None; Ok(None) @@ -86,17 +97,6 @@ impl SamplerCommand { //self.mapped[i] = sample; //Some(Self::Set(old)) //} - //fn record_finish (&self, state: &mut Sampler) -> Option { - //let recording = self.recording.take(); - //let _sample = if let Some((index, sample)) = recording { - //let old = self.mapped[index].clone(); - //self.mapped[index] = Some(sample); - //old - //} else { - //None - //}; - //None - //} //fn set_start (&self, state: &mut Sampler, pitch: u7, frame: usize) -> Option { //todo!() //}