diff --git a/crates/tek_sequencer/src/sequencer.rs b/crates/tek_sequencer/src/sequencer.rs index 0d1b198c..b0ebf36b 100644 --- a/crates/tek_sequencer/src/sequencer.rs +++ b/crates/tek_sequencer/src/sequencer.rs @@ -138,6 +138,17 @@ impl Arranger { let track_id = self.selected.track()?; self.tracks.get(track_id)?.phrases.get((*self.scene()?.clips.get(track_id)?)?) } + pub fn phrase_del (&mut self) { + let track_index = self.selected.track(); + let scene_index = self.selected.scene(); + track_index + .and_then(|index|self.tracks.get_mut(index).map(|track|(index, track))) + .map(|(track_index, _)|{ + scene_index + .and_then(|index|self.scenes.get_mut(index)) + .map(|scene|scene.clips[track_index] = None); + }); + } pub fn phrase_next (&mut self) { let track_index = self.selected.track(); let scene_index = self.selected.scene(); diff --git a/crates/tek_sequencer/src/sequencer_tui.rs b/crates/tek_sequencer/src/sequencer_tui.rs index dc515fcd..ee8f6e0e 100644 --- a/crates/tek_sequencer/src/sequencer_tui.rs +++ b/crates/tek_sequencer/src/sequencer_tui.rs @@ -90,6 +90,11 @@ impl Handle for Arranger { }; self.show_phrase(); }, + // increment: remove clip + key!(KeyCode::Delete) => { + self.phrase_del(); + self.show_phrase(); + }, // increment: use next clip here key!(KeyCode::Char('.')) => { self.phrase_next();