diff --git a/crates/tek_sequencer/src/sequencer_cmd.rs b/crates/tek_sequencer/src/sequencer_cmd.rs index 301a9be5..306672ef 100644 --- a/crates/tek_sequencer/src/sequencer_cmd.rs +++ b/crates/tek_sequencer/src/sequencer_cmd.rs @@ -115,6 +115,20 @@ impl Handle for PhraseEditor { false => {}, }, key!(KeyCode::Char('a')) => if self.entered { + if let (Some(phrase), Some(time), Some(note)) = ( + &self.phrase, + self.time_axis.point, + self.note_axis.point, + ) { + let mut phrase = phrase.write().unwrap(); + let key: u7 = u7::from((127 - note) as u8); + let vel: u7 = 100.into(); + phrase.notes[time].push(MidiMessage::NoteOn { key, vel }); + phrase.notes[time + self.note_len].push(MidiMessage::NoteOff { key, vel }); + self.time_axis.point = Some(time + self.note_len); + } + }, + key!(KeyCode::Char('s')) => if self.entered { if let (Some(phrase), Some(time), Some(note)) = ( &self.phrase, self.time_axis.point, @@ -127,7 +141,6 @@ impl Handle for PhraseEditor { phrase.notes[time + self.note_len].push(MidiMessage::NoteOff { key, vel }); } }, - key!(KeyCode::Char('s')) => if self.entered {}, _ => { return Ok(None) } }