browse phrases

This commit is contained in:
🪞👃🪞 2024-06-30 19:38:51 +03:00
parent 625956766e
commit 83830d9cb3
9 changed files with 86 additions and 84 deletions

View file

@ -41,7 +41,7 @@ pub struct Sequencer {
/// Phrase selector
pub sequence: usize,
/// Map: tick -> MIDI events at tick
pub sequences: Vec<Phrase>,
pub phrases: Vec<Phrase>,
/// Red keys on piano roll.
pub notes_on: Vec<bool>,
/// Play sequence to output.
@ -77,13 +77,12 @@ pub enum SequencerView {
impl Sequencer {
pub fn new (
name: &str,
timebase: &Arc<Timebase>,
sequences: Option<Vec<Phrase>>,
name: &str,
timebase: &Arc<Timebase>,
phrases: Option<Vec<Phrase>>,
) -> Usually<DynamicDevice<Self>> {
let (client, _status) = Client::new(name, ClientOptions::NO_START_SERVER)?;
let transport = client.transport();
let ppq = timebase.ppq() as u32;
DynamicDevice::new(render, handle, process, Self {
name: name.into(),
midi_in: client.register_port("in", MidiIn::default())?,
@ -93,7 +92,7 @@ impl Sequencer {
steps: 16,
resolution: 4,
sequence: 0,
sequences: sequences.unwrap_or(vec![]),
phrases: phrases.unwrap_or(vec![]),
notes_on: vec![false;128],
playing: TransportState::Starting,
@ -111,7 +110,7 @@ impl Sequencer {
}
pub fn phrase <'a> (&'a self) -> Option<&'a Phrase> {
self.sequences.get(self.sequence)
self.phrases.get(self.sequence)
}
}
@ -219,7 +218,7 @@ pub fn draw_mon (buf: &mut Buffer, x: u16, y: u16, on: bool) {
fn draw_clips (s: &Sequencer, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let Rect { x, y, .. } = area;
let style = Style::default().gray();
for (i, sequence) in s.sequences.iter().enumerate() {
for (i, sequence) in s.phrases.iter().enumerate() {
let label = format!("{}", &sequence.name);
label.blit(buf, x + 2, y + 3 + (i as u16)*2, Some(if i == s.sequence {
match s.playing {