mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-09 13:16:44 +01:00
wip: AudioEngine pt.2 (rewrite activation sanely)
This commit is contained in:
parent
2303b258f6
commit
746e29aeb3
8 changed files with 104 additions and 106 deletions
|
|
@ -18,39 +18,31 @@ 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 transport = Arc::new(RwLock::new(TransportToolbar::new(None, Some(jack.transport()))));
|
||||
let clock = transport.read().unwrap().clock.clone();
|
||||
let sequencer = Sequencer {
|
||||
jack: None,
|
||||
player: None,
|
||||
focus_cursor: (1, 1),
|
||||
phrases: Arc::new(RwLock::new(PhrasePool::new())),
|
||||
editor: PhraseEditor::new(),
|
||||
transport: self.transport.then_some(transport),
|
||||
clock,
|
||||
};
|
||||
if let Some(_) = self.name.as_ref() {
|
||||
// TODO: sequencer.name = Arc::new(RwLock::new(name.clone()));
|
||||
}
|
||||
if let Some(_) = self.ppq {
|
||||
// TODO: sequencer.ppq = ppq;
|
||||
}
|
||||
if let Some(_) = self.length {
|
||||
// TODO: if let Some(phrase) = sequencer.phrase.as_mut() {
|
||||
//phrase.write().unwrap().length = length;
|
||||
//}
|
||||
}
|
||||
let sequencer = Arc::new(RwLock::new(sequencer));
|
||||
let jack = jack.activate(&sequencer.clone(), Sequencer::callback)?;
|
||||
let jack = Arc::new(jack);
|
||||
let player = PhrasePlayer::new(&jack, &clock);
|
||||
if let Some(ref transport) = sequencer.read().unwrap().transport {
|
||||
transport.write().unwrap().jack = Some(jack.clone());
|
||||
}
|
||||
sequencer.write().unwrap().jack = Some(jack.clone());
|
||||
sequencer.write().unwrap().player = player;
|
||||
Tui::run(sequencer).map(|_|())
|
||||
let name = self.name.map(|name|name.as_str()).unwrap_or("tek_arranger");
|
||||
Tui::run(JackClient::new(name)?.activate_with(|jack|{
|
||||
let mut transport = TransportToolbar::new(jack, None);
|
||||
let sequencer = Sequencer {
|
||||
jack: jack.clone(),
|
||||
focus_cursor: (1, 1),
|
||||
phrases: Arc::new(RwLock::new(PhrasePool::new())),
|
||||
editor: PhraseEditor::new(),
|
||||
clock: transport.clock.clone(),
|
||||
player: Some(PhrasePlayer::new(jack, &transport.clock)),
|
||||
transport: self.transport.then_some(Arc::new(RwLock::new(transport))),
|
||||
};
|
||||
if let Some(_) = self.name.as_ref() {
|
||||
// TODO: sequencer.name = Arc::new(RwLock::new(name.clone()));
|
||||
}
|
||||
if let Some(_) = self.ppq {
|
||||
// TODO: sequencer.ppq = ppq;
|
||||
}
|
||||
if let Some(_) = self.length {
|
||||
// TODO: if let Some(phrase) = sequencer.phrase.as_mut() {
|
||||
//phrase.write().unwrap().length = length;
|
||||
//}
|
||||
}
|
||||
sequencer
|
||||
}))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue