From 7b09d974731369f70080f988dfd79b4bbca941d7 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 10 May 2025 16:03:06 +0300 Subject: [PATCH] groovebox: reenable sampling but only at pitch 0 --- config/keys_sampler.edn | 10 +++--- crates/device/src/sampler/sampler_api.rs | 43 ++++++++++++++++-------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/config/keys_sampler.edn b/config/keys_sampler.edn index 45641c6f..97b66858 100644 --- a/config/keys_sampler.edn +++ b/config/keys_sampler.edn @@ -1,5 +1,5 @@ -(@up sample-select :sample-up) -(@down sample-select :sample-down) -(@left sample-select :sample-left) -(@right sample-select :sample-right) -(@r sample-record-toggle :sample) +(@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) diff --git a/crates/device/src/sampler/sampler_api.rs b/crates/device/src/sampler/sampler_api.rs index e0bc58f4..aa169341 100644 --- a/crates/device/src/sampler/sampler_api.rs +++ b/crates/device/src/sampler/sampler_api.rs @@ -43,13 +43,39 @@ impl Sampler { //fn selected_pitch () -> u7 { //(self.note_pos() as u8).into() // TODO //} - //fn selected_sample () -> u7 { // TODO - //(self.note_pos() as u8).into() - //} + fn sample_selected (&self) -> usize { + (self.get_note_pos() as u8).into() + } + fn sample_selected_pitch (&self) -> u7 { + (self.get_note_pos() as u8).into() + } } #[tengri_proc::command(Sampler)] impl SamplerCommand { + fn record_toggle (sampler: &mut Sampler, sample: usize) -> Perhaps { + if sampler.recording.is_some() { + Self::record_cancel(sampler) + } else { + Self::record_begin(sampler, sample) + } + } + fn record_begin (sampler: &mut Sampler, sample: usize) -> Perhaps { + sampler.recording = Some(( + sample, + Arc::new(RwLock::new(Sample::new( + "Sample", + 0, + 0, + vec![vec![];sampler.audio_ins.len()] + ))) + )); + Ok(None) + } + fn record_cancel (sampler: &mut Sampler) -> Perhaps { + sampler.recording = None; + Ok(None) + } //fn select (&self, state: &mut Sampler, i: usize) -> Option { //Self::Select(state.set_note_pos(i)) //} @@ -60,17 +86,6 @@ impl SamplerCommand { //self.mapped[i] = sample; //Some(Self::Set(old)) //} - //fn record_begin (&self, state: &mut Sampler, pitch: u7) -> Option { - //self.recording = Some(( - //pitch.as_int() as usize, - //Arc::new(RwLock::new(Sample::new("Sample", 0, 0, vec![vec![];self.audio_ins.len()]))) - //)); - //None - //} - //fn record_cancel (&self, state: &mut Sampler) -> Option { - //self.recording = None; - //None - //} //fn record_finish (&self, state: &mut Sampler) -> Option { //let recording = self.recording.take(); //let _sample = if let Some((index, sample)) = recording {