partially fix port autoconnect

This commit is contained in:
🪞👃🪞 2024-07-11 14:47:07 +03:00
parent 32dc708096
commit 8f3c83f8c3
3 changed files with 30 additions and 15 deletions

View file

@ -18,6 +18,29 @@ pub fn main () -> Usually<()> {
.with_midi_ins(&["nanoKEY Studio.*capture.*"])?
.with_audio_outs(&["Komplete.+:playback_FL", "Komplete.+:playback_FR"])?
.activate(Some(|app: &Arc<RwLock<App>>| {
let (midi_in, mut midi_outs) = {
let app = app.read().unwrap();
let jack = app.jack.as_ref().unwrap();
let midi_in = jack.register_port("midi-in", MidiIn)?;
let midi_outs = app.tracks.iter()
.map(|t|Some(jack.register_port(&t.name, MidiOut).unwrap()))
.collect::<Vec<_>>();
(midi_in, midi_outs)
};
{
let mut app = app.write().unwrap();
let jack = app.jack.as_ref().unwrap();
for name in app.midi_ins.iter() {
if let Some(port) = jack.client().port_by_name(&name) {
jack.client().connect_ports(&port, &midi_in)?;
}
}
app.midi_in = Some(Arc::new(midi_in));
for (index, track) in app.tracks.iter_mut().enumerate() {
track.midi_out = midi_outs[index].take();
track.connect_first_device()?;
}
}
Ok(())
}))?;
run(app)?;