tek/crates/tek_api/src/model_sequencer.rs

49 lines
1.1 KiB
Rust

use crate::*;
pub struct SequencerModel {
/// State of the JACK transport.
transport: TransportModel,
/// State of the phrase pool.
phrases: Vec<Arc<RwLock<Phrase>>>,
/// State of the phrase player.
player: MIDIPlayer,
}
impl HasJack for SequencerModel {
fn jack (&self) -> &Arc<RwLock<JackClient>> {
self.transport.jack()
}
}
impl HasClock for SequencerModel {
fn clock (&self) -> &Arc<Clock> {
self.transport.clock()
}
}
//impl TransportModelApi for SequencerModel {
//fn transport (&self) -> &jack::Transport {
//&self.transport.transport()
//}
//fn metronome (&self) -> bool {
//self.transport.metronome()
//}
//}
impl HasPhrases for SequencerModel {
fn phrases (&self) -> &Vec<Arc<RwLock<Phrase>>> {
&self.phrases
}
fn phrases_mut (&mut self) -> &mut Vec<Arc<RwLock<Phrase>>> {
&mut self.phrases
}
}
impl HasPlayer for SequencerModel {
fn player (&self) -> &MIDIPlayer {
&self.player
}
fn player_mut (&mut self) -> &mut MIDIPlayer {
&mut self.player
}
}