remove ArrangerMode and Arranger::new

This commit is contained in:
🪞👃🪞 2025-01-09 22:42:14 +01:00
parent 7ddb95d521
commit 2e81549747
4 changed files with 58 additions and 87 deletions

View file

@ -75,32 +75,38 @@ 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 perf = PerfModel::default();
let size = Measure::new();
let default_clip = ||{
let len = 384usize;
let color = ItemColor::random().into();
Arc::new(RwLock::new(MidiClip::new("Clip", true, len, None, Some(color))))
};
Ok(match cli.mode {
TekMode::Clock => engine.run(&jack.activate_with(|jack|Ok(TransportTui {
jack: jack.clone(),
clock: Clock::from(jack),
jack: jack.clone()
}))?)?,
TekMode::Sequencer => engine.run(&jack.activate_with(|jack|Ok({
let length = 384;
let color = Some(ItemColor::random().into());
let clip = Arc::new(RwLock::new(MidiClip::new("Clip", true, length, None, color)));
let clip = default_clip();
let player = MidiPlayer::new(&jack, name, Some(&clip), &midi_froms, &midi_tos)?;
Sequencer {
_jack: jack.clone(),
clock: player.clock.clone(),
player,
editor: MidiEditor::from(&clip),
pool: PoolModel::from(&clip),
compact: true,
transport: true,
selectors: true,
size: Measure::new(),
midi_buf: vec![vec![];65536],
note_buf: vec![],
perf: PerfModel::default(),
status: true,
perf,
size,
}
}))?)?,
@ -109,35 +115,34 @@ pub fn main () -> Usually<()> {
cursor: (0, 0),
editing: None,
mode: None,
size: Measure::new(),
note_lo: 36.into(),
note_pt: 36.into(),
color: ItemPalette::from(Color::Rgb(64, 128, 32)),
state: Sampler::new(jack, &"sampler", &midi_froms,
&[&left_froms, &right_froms], &[&left_tos, &right_tos])?,
size,
}
))?)?,
TekMode::Groovebox => engine.run(&jack.activate_with(|jack|Ok({
let length = 384;
let color = Some(ItemColor::random().into());
let clip = Arc::new(RwLock::new(MidiClip::new("Clip", true, length, None, color)));
let clip = default_clip();
let player = MidiPlayer::new(jack, &"sequencer", Some(&clip), &midi_froms, &midi_tos)?;
let sampler = Sampler::new(jack, &"sampler", &midi_froms,
&[&left_froms, &right_froms], &[&left_tos, &right_tos])?;
jack.read().unwrap().client().connect_ports(&player.midi_outs[0].port, &sampler.midi_in.port)?;
let app = Groovebox {
_jack: jack.clone(),
player,
sampler,
pool: PoolModel::from(&clip),
editor: MidiEditor::from(&clip),
compact: true,
status: true,
size: Measure::new(),
midi_buf: vec![vec![];65536],
note_buf: vec![],
perf: PerfModel::default(),
_jack: jack.clone(),
perf,
size,
};
if let Some(bpm) = cli.bpm {
app.clock().timebase.bpm.set(bpm);
@ -159,7 +164,25 @@ pub fn main () -> Usually<()> {
TekMode::Arranger { scenes, tracks, track_width, .. } =>
engine.run(&jack.activate_with(|jack|Ok({
let mut app = Arranger::new(jack);
let clock = Clock::from(jack);
let clip = default_clip();
let mut app = Arranger {
jack: jack.clone(),
clock,
pool: (&clip).into(),
editor: (&clip).into(),
selected: ArrangerSelection::Clip(0, 0),
scenes: vec![],
tracks: vec![],
color: ItemPalette::random(),
splits: [12, 20],
midi_buf: vec![vec![];65536],
note_buf: vec![],
compact: true,
perf,
size,
};
app.tracks_add(tracks, track_width, &midi_froms, &midi_tos)?;
app.scenes_add(scenes)?;
app