mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-09 13:16:44 +01:00
wip: init shared jack clients
This commit is contained in:
parent
5a325666fd
commit
ec2c96d00e
8 changed files with 74 additions and 35 deletions
|
|
@ -18,34 +18,41 @@ pub struct SequencerCli {
|
|||
|
||||
impl SequencerCli {
|
||||
fn run (&self) -> Usually<()> {
|
||||
let jack = Client::new("tek_arranger", ClientOptions::NO_START_SERVER)?.0;
|
||||
let jack = JackClient::Inactive(jack);
|
||||
let jack = Client::new("tek_arranger", ClientOptions::NO_START_SERVER)?.0;
|
||||
let jack = JackClient::Inactive(jack);
|
||||
let transport = Arc::new(RwLock::new(TransportToolbar::new(None, Some(jack.transport()))));
|
||||
transport.write().unwrap().jack = Some(
|
||||
jack.activate(
|
||||
&transport.clone(),
|
||||
|state: &Arc<RwLock<TransportToolbar<Tui>>>, client, scope| {
|
||||
state.write().unwrap().process(client, scope)
|
||||
}
|
||||
)?.into()
|
||||
);
|
||||
let focus_cursor = (1, 1);
|
||||
let clock = transport.read().unwrap().clock.clone();
|
||||
let transport = self.transport.then_some(transport);
|
||||
let editor = PhraseEditor::new();
|
||||
let phrases = Arc::new(RwLock::new(PhrasePool::new()));
|
||||
let seq = Sequencer { focus_cursor, clock, transport, editor, phrases };
|
||||
let sequencer = Sequencer { jack: None, focus_cursor, clock, transport, editor, phrases };
|
||||
if let Some(_) = self.name.as_ref() {
|
||||
// TODO: seq.name = Arc::new(RwLock::new(name.clone()));
|
||||
// TODO: sequencer.name = Arc::new(RwLock::new(name.clone()));
|
||||
}
|
||||
if let Some(_) = self.ppq {
|
||||
// TODO: seq.ppq = ppq;
|
||||
// TODO: sequencer.ppq = ppq;
|
||||
}
|
||||
if let Some(_) = self.length {
|
||||
// TODO: if let Some(phrase) = seq.phrase.as_mut() {
|
||||
// TODO: if let Some(phrase) = sequencer.phrase.as_mut() {
|
||||
//phrase.write().unwrap().length = length;
|
||||
//}
|
||||
}
|
||||
Tui::run(Arc::new(RwLock::new(seq))).map(|_|())
|
||||
let sequencer = Arc::new(RwLock::new(sequencer));
|
||||
let jack = jack.activate(&sequencer.clone(), sequencer_jack_callback)?;
|
||||
let jack = Some(jack.into());
|
||||
if let Some(ref transport) = sequencer.read().unwrap().transport {
|
||||
transport.write().unwrap().jack = jack.clone();
|
||||
}
|
||||
sequencer.write().unwrap().jack = jack.clone();
|
||||
Tui::run(sequencer).map(|_|())
|
||||
}
|
||||
}
|
||||
|
||||
fn sequencer_jack_callback (
|
||||
state: &Arc<RwLock<Sequencer<Tui>>>,
|
||||
client: &Client,
|
||||
scope: &ProcessScope,
|
||||
) -> Control {
|
||||
state.write().unwrap().process(client, scope)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue