mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
49 lines
1.1 KiB
Rust
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
|
|
}
|
|
}
|