From ecbbef22b537ad68085498df8f504ad0a75d49e4 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Wed, 23 Oct 2024 20:50:26 +0300 Subject: [PATCH] wrap note end and post-add advance --- crates/tek_sequencer/src/sequencer_cmd.rs | 3 ++- crates/tek_sequencer/src/sequencer_tui.rs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/tek_sequencer/src/sequencer_cmd.rs b/crates/tek_sequencer/src/sequencer_cmd.rs index 6176dc9d..82e186f5 100644 --- a/crates/tek_sequencer/src/sequencer_cmd.rs +++ b/crates/tek_sequencer/src/sequencer_cmd.rs @@ -127,7 +127,8 @@ impl Handle for PhraseEditor { }, key!(KeyCode::Char('a')) => if self.entered { self.put(); - self.time_axis.point = self.time_axis.point.map(|time|{time + self.note_len}); + self.time_axis.point = self.time_axis.point.map(|time|(time + self.note_len) + % self.phrase.as_ref().map(|p|p.read().unwrap().length).unwrap_or(1)); }, key!(KeyCode::Char('s')) => if self.entered { self.put(); diff --git a/crates/tek_sequencer/src/sequencer_tui.rs b/crates/tek_sequencer/src/sequencer_tui.rs index ea0937d6..d1d6a014 100644 --- a/crates/tek_sequencer/src/sequencer_tui.rs +++ b/crates/tek_sequencer/src/sequencer_tui.rs @@ -165,8 +165,10 @@ impl PhraseEditor { let mut phrase = phrase.write().unwrap(); let key: u7 = u7::from((127 - note) as u8); let vel: u7 = 100.into(); + let start = time; + let end = (start + self.note_len) % phrase.length; phrase.notes[time].push(MidiMessage::NoteOn { key, vel }); - phrase.notes[time + self.note_len].push(MidiMessage::NoteOff { key, vel }); + phrase.notes[end].push(MidiMessage::NoteOff { key, vel }); self.buffer = Self::redraw(&phrase); } }