wip: fixing port autoconnect

This commit is contained in:
🪞👃🪞 2024-07-11 14:15:29 +03:00
parent 6979fd67ec
commit 32dc708096
5 changed files with 98 additions and 94 deletions

View file

@ -14,6 +14,11 @@ macro_rules! edn {
}
impl App {
pub fn from_edn (src: &str) -> Usually<Self> {
let mut app = Self::new()?;
app.load_edn(src)?;
Ok(app)
}
pub fn load_edn (&mut self, mut src: &str) -> Usually<&mut Self> {
loop {
match clojure_reader::edn::read(src) {
@ -123,28 +128,9 @@ impl Track {
},
_ => {}
});
let (left, right) = (app.audio_out(0), app.audio_out(1));
let track = app.add_track(Some(name.as_str()))?;
for phrase in phrases {
track.phrases.push(phrase);
}
for device in devices {
track.add_device(device)?;
}
if let Some(device) = track.devices.get(0) {
device.client.as_client().connect_ports(
&track.midi_out,
&device.midi_ins()?[0],
)?;
}
if let Some(device) = track.devices.get(track.devices.len() - 1) {
if let Some(ref left) = left {
device.connect_audio_out(0, left)?;
}
if let Some(ref right) = right {
device.connect_audio_out(1, right)?;
}
}
for phrase in phrases { track.phrases.push(phrase); }
for device in devices { track.add_device(device)?; }
Ok(track)
}
}