mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
use def_command
This commit is contained in:
parent
5ccbb9719f
commit
cfd19062fd
37 changed files with 1578 additions and 1594 deletions
|
|
@ -50,56 +50,51 @@ pub enum LaunchMode {
|
|||
|
||||
impl Cli {
|
||||
pub fn run (&self) -> Usually<()> {
|
||||
let name = self.name.as_ref().map_or("tek", |x|x.as_str());
|
||||
let config = Config::init()?;
|
||||
let empty = &[] as &[&str];
|
||||
let mut midi_ins = vec![];
|
||||
let mut midi_outs = vec![];
|
||||
let tracks = vec![];
|
||||
let scenes = vec![];
|
||||
let midi_froms = Connect::collect(&self.midi_from, empty, &self.midi_from_re);
|
||||
let midi_tos = Connect::collect(&self.midi_to, empty, &self.midi_to_re);
|
||||
let left_froms = Connect::collect(&self.left_from, empty, empty);
|
||||
let left_tos = Connect::collect(&self.left_to, empty, empty);
|
||||
let right_froms = Connect::collect(&self.right_from, empty, empty);
|
||||
let right_tos = Connect::collect(&self.right_to, empty, empty);
|
||||
let _audio_froms = &[left_froms.as_slice(), right_froms.as_slice()];
|
||||
let _audio_tos = &[left_tos.as_slice(), right_tos.as_slice()];
|
||||
let name = self.name.as_ref().map_or("tek", |x|x.as_str());
|
||||
let tracks = vec![];
|
||||
let scenes = vec![];
|
||||
let empty = &[] as &[&str];
|
||||
let left_froms = Connect::collect(&self.left_from, empty, empty);
|
||||
let left_tos = Connect::collect(&self.left_to, empty, empty);
|
||||
let right_froms = Connect::collect(&self.right_from, empty, empty);
|
||||
let right_tos = Connect::collect(&self.right_to, empty, empty);
|
||||
let _audio_froms = &[left_froms.as_slice(), right_froms.as_slice()];
|
||||
let _audio_tos = &[left_tos.as_slice(), right_tos.as_slice()];
|
||||
let mut config = Config::new(None);
|
||||
config.init()?;
|
||||
Tui::new()?.run(&Jack::new_run(&name, move|jack|{
|
||||
for (index, connect) in midi_froms.iter().enumerate() {
|
||||
midi_ins.push(jack.midi_in(&format!("M/{index}"), &[connect.clone()])?);
|
||||
}
|
||||
for (index, connect) in midi_tos.iter().enumerate() {
|
||||
midi_outs.push(jack.midi_out(&format!("{index}/M"), &[connect.clone()])?);
|
||||
};
|
||||
let clock = Clock::new(&jack, self.bpm)?;
|
||||
let mode = config.modes.clone().read().unwrap().get(":menu").cloned().unwrap();
|
||||
let app = App {
|
||||
jack: jack.clone(),
|
||||
color: ItemTheme::random(),
|
||||
dialog: Dialog::Menu(0),
|
||||
mode,
|
||||
dialog: Dialog::Menu(0, 0),
|
||||
mode: config.modes.clone().read().unwrap().get(":menu").cloned().unwrap(),
|
||||
config,
|
||||
project: Arrangement {
|
||||
name: Default::default(),
|
||||
color: ItemTheme::random(),
|
||||
jack: jack.clone(),
|
||||
clock,
|
||||
clock: Clock::new(&jack, self.bpm)?,
|
||||
tracks,
|
||||
scenes,
|
||||
selection: Selection::TrackClip { track: 0, scene: 0 },
|
||||
midi_ins,
|
||||
midi_outs,
|
||||
midi_ins: {
|
||||
let mut midi_ins = vec![];
|
||||
for (index, connect) in self.midi_froms().iter().enumerate() {
|
||||
midi_ins.push(jack.midi_in(&format!("M/{index}"), &[connect.clone()])?);
|
||||
}
|
||||
midi_ins
|
||||
},
|
||||
midi_outs: {
|
||||
let mut midi_outs = vec![];
|
||||
for (index, connect) in self.midi_tos().iter().enumerate() {
|
||||
midi_outs.push(jack.midi_out(&format!("{index}/M"), &[connect.clone()])?);
|
||||
};
|
||||
midi_outs
|
||||
},
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
};
|
||||
//if let LaunchMode::Arranger { scenes, tracks, track_width, .. } = self.mode {
|
||||
//app.project.arranger = Default::default();
|
||||
//app.project.selection = Selection::TrackClip { track: 1, scene: 1 };
|
||||
//app.project.scenes_add(scenes)?;
|
||||
//app.project.tracks_add(tracks, Some(track_width), &[], &[])?;
|
||||
//}
|
||||
jack.sync_lead(self.sync_lead, |mut state|{
|
||||
let clock = app.clock();
|
||||
clock.playhead.update_from_sample(state.position.frame() as f64);
|
||||
|
|
@ -110,6 +105,12 @@ impl Cli {
|
|||
Ok(app)
|
||||
})?)
|
||||
}
|
||||
fn midi_froms (&self) -> Vec<Connect> {
|
||||
Connect::collect(&self.midi_from, &[] as &[&str], &self.midi_from_re)
|
||||
}
|
||||
fn midi_tos (&self) -> Vec<Connect> {
|
||||
Connect::collect(&self.midi_to, &[] as &[&str], &self.midi_to_re)
|
||||
}
|
||||
}
|
||||
|
||||
/// CLI header
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue