wip: unify apps

This commit is contained in:
🪞👃🪞 2025-01-11 20:16:46 +01:00
parent a9cad18891
commit cff87657b9
12 changed files with 291 additions and 247 deletions

View file

@ -76,6 +76,8 @@ pub fn main () -> Usually<()> {
let left_tos = PortConnection::collect(&cli.left_to, empty, empty);
let right_froms = PortConnection::collect(&cli.right_from, empty, empty);
let right_tos = PortConnection::collect(&cli.right_to, empty, empty);
let audio_froms = &[&left_froms, &right_froms];
let audio_tos = &[&left_tos, &right_tos ];
let perf = PerfModel::default();
let size = Measure::new();
let default_clip = ||Arc::new(RwLock::new(MidiClip::new(
@ -116,25 +118,6 @@ pub fn main () -> Usually<()> {
TekMode::Clock => engine.run(&jack.activate_with(|jack|Ok(TransportTui {
jack: jack.clone(), clock: default_clock(jack),
}))?)?,
TekMode::Sequencer => engine.run(&jack.activate_with(|jack|Ok({
let clip = default_clip();
let mut player = default_player(jack, Some(&clip))?;
player.clock = default_bpm(player.clock);
Sequencer {
_jack: jack.clone(),
player,
pool: (&clip).into(),
editor: (&clip).into(),
midi_buf: vec![vec![];65536],
note_buf: vec![],
status: true,
perf,
size,
compact: true,
transport: true,
selectors: true,
}
}))?)?,
TekMode::Sampler => engine.run(&jack.activate_with(|jack|Ok(
SamplerTui {
cursor: (0, 0),
@ -147,53 +130,62 @@ pub fn main () -> Usually<()> {
size,
}
))?)?,
TekMode::Sequencer => engine.run(&jack.activate_with(|jack|Ok({
let clip = default_clip();
let mut player = default_player(jack, Some(&clip))?;
player.clock = default_bpm(player.clock);
App::sequencer(
jack, (&clip).into(), (&clip).into(),
Some(player), &midi_froms, &midi_tos,
)
}))?)?,
TekMode::Groovebox => engine.run(&jack.activate_with(|jack|Ok({
let clip = default_clip();
let mut player = default_player(jack, Some(&clip))?;
player.clock = default_bpm(player.clock);
let sampler = default_sampler(jack)?;
jack.connect_ports(&player.midi_outs[0].port, &sampler.midi_in.port)?;
let app = Groovebox {
_jack: jack.clone(),
player,
sampler,
pool: (&clip).into(),
editor: (&clip).into(),
midi_buf: vec![vec![];65536],
note_buf: vec![],
perf,
size,
compact: true,
status: true,
};
app
App::groovebox(
jack, (&clip).into(), (&clip).into(),
Some(player), &midi_froms, &midi_tos,
sampler, &audio_froms, &audio_tos,
)
}))?)?,
TekMode::Arranger { scenes, tracks, track_width, .. } =>
engine.run(&jack.activate_with(|jack|Ok({
let clock = default_clock(jack);
let mut app = Arranger {
jack: jack.clone(),
midi_ins: vec![JackPort::<MidiIn>::new(jack, format!("M/{name}"), &midi_froms)?,],
midi_outs: vec![JackPort::<MidiOut>::new(jack, format!("{name}/M"), &midi_tos)?, ],
clock,
pool: PoolModel::default(),//(&clip).into(),
editor: MidiEditor::default(),//(&clip).into(),
selected: ArrangerSelection::Clip(0, 0),
scenes: vec![],
tracks: vec![],
splits: [12, 20],
midi_buf: vec![vec![];65536],
note_buf: vec![],
compact: false,
editing: true.into(),
color,
perf,
size,
};
app.tracks_add(tracks, track_width, &midi_froms, &midi_tos)?;
app.scenes_add(scenes)?;
app
}))?)?,
TekMode::Arranger { scenes, tracks, track_width, .. } => engine.run(&jack.activate_with(|jack|Ok({
App::arranger(
jack,
PoolModel::default(),
MidiEditor::default(), &midi_froms, &midi_tos,
default_sampler(jack)?, &audio_froms, &audio_tos,
scenes, tracks, track_width
)
}))?)?,
//let clock = default_clock(jack);
//let mut app = Arranger {
//jack: jack.clone(),
//midi_ins: vec![JackPort::<MidiIn>::new(jack, format!("M/{name}"), &midi_froms)?,],
//midi_outs: vec![JackPort::<MidiOut>::new(jack, format!("{name}/M"), &midi_tos)?, ],
//clock,
//pool: PoolModel::default(),//(&clip).into(),
//editor: MidiEditor::default(),//(&clip).into(),
//selected: ArrangerSelection::Clip(0, 0),
//scenes: vec![],
//tracks: vec![],
//splits: [12, 20],
//midi_buf: vec![vec![];65536],
//note_buf: vec![],
//compact: false,
//editing: true.into(),
//color,
//perf,
//size,
//};
//app.tracks_add(tracks, track_width, &midi_froms, &midi_tos)?;
//app.scenes_add(scenes)?;
//app
//}))?)?,
_ => todo!()
})