From f8581a866ca3ac7f3a098499c87169c09459670b Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 12 Oct 2024 07:29:09 +0300 Subject: [PATCH] wip: phrase_get --- crates/tek_sequencer/src/arranger.rs | 19 ++++++++++++------- crates/tek_sequencer/src/arranger_cmd.rs | 2 ++ crates/tek_sequencer/src/lib.rs | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/tek_sequencer/src/arranger.rs b/crates/tek_sequencer/src/arranger.rs index e12bdba6..77f9be01 100644 --- a/crates/tek_sequencer/src/arranger.rs +++ b/crates/tek_sequencer/src/arranger.rs @@ -293,8 +293,18 @@ impl Arrangement { .map(|scene|scene.clips[track_index] = None); }); } + pub fn phrase_put (&mut self) { + if let ArrangementFocus::Clip(track, scene) = self.selected { + self.scenes[scene].clips[track] = Some(self.phrases.read().unwrap().phrase().clone()); + } + } + pub fn phrase_get (&mut self) { + if let ArrangementFocus::Clip(track, scene) = self.selected { + todo!("phrase_get") + } + } pub fn phrase_next (&mut self) { - todo!(); + todo!("phrase_next"); //let track_index = self.selected.track(); //let scene_index = self.selected.scene(); //track_index @@ -318,7 +328,7 @@ impl Arrangement { //}); } pub fn phrase_prev (&mut self) { - todo!(); + todo!("phrase_prev"); //let track_index = self.selected.track(); //let scene_index = self.selected.scene(); //track_index @@ -341,11 +351,6 @@ impl Arrangement { //}) //}); } - pub fn phrase_put (&mut self) { - if let ArrangementFocus::Clip(track, scene) = self.selected { - self.scenes[scene].clips[track] = Some(self.phrases.read().unwrap().phrase().clone()); - } - } } impl ArrangementTrack { pub fn new (name: &str, color: Option) -> Self { diff --git a/crates/tek_sequencer/src/arranger_cmd.rs b/crates/tek_sequencer/src/arranger_cmd.rs index ce001bb1..c5dad34d 100644 --- a/crates/tek_sequencer/src/arranger_cmd.rs +++ b/crates/tek_sequencer/src/arranger_cmd.rs @@ -34,6 +34,8 @@ impl Handle for Arranger { key!(KeyCode::Right) => { self.focus_right(); }, // Put selected phrase at position key!(KeyCode::Char('s')) => { self.arrangement.phrase_put(); }, + // Select phrase at current position + key!(KeyCode::Char('g')) => { self.arrangement.phrase_get(); }, // Global play/pause binding key!(KeyCode::Char(' ')) => match self.transport { Some(ref mut transport) => { transport.write().unwrap().toggle_play()?; }, diff --git a/crates/tek_sequencer/src/lib.rs b/crates/tek_sequencer/src/lib.rs index cd8e15fe..6f853e9f 100644 --- a/crates/tek_sequencer/src/lib.rs +++ b/crates/tek_sequencer/src/lib.rs @@ -39,8 +39,8 @@ tui_style!(STYLE_VALUE = pub fn random_okhsl () -> Okhsl { let mut rng = thread_rng(); UniformOkhsl::new( - Okhsl::new(-180.0, 0.01, 0.05), - Okhsl::new( 180.0, 0.9, 0.5), + Okhsl::new(-180.0, 0.01, 0.1), + Okhsl::new( 180.0, 0.9, 0.5), ).sample(&mut rng) }