diff --git a/crates/app/src/model.rs b/crates/app/src/model.rs index 639cc627..35e51e2e 100644 --- a/crates/app/src/model.rs +++ b/crates/app/src/model.rs @@ -393,6 +393,13 @@ impl Tek { Ok(()) } + pub(crate) fn device_kinds (&self) -> &'static [&'static str] { + &[ + "Sampler", + "Plugin (LV2)", + ] + } + pub(crate) fn device_picker_show (&mut self) { self.modal = Some(Modal::Device(0)); } @@ -403,30 +410,30 @@ impl Tek { pub(crate) fn device_add (&mut self, index: usize) -> Usually<()> { match index { - 0 => { - let jack = self.jack.clone(); - let sampler = if let Ok(sampler) = Sampler::new( - &jack, &"sampler", &[], &[&[], &[]], &[&[], &[]] - ) { - self.modal = None; - Device::Sampler(sampler) - } else { - self.modal = Some(Modal::Message(Message::FailedToAddDevice)); - return Err("failed to add device".into()) - }; - self.track_mut().expect("no active track").devices.push(sampler); - Ok(()) - }, + 0 => self.device_add_sampler(), 1 => todo!(), _ => unreachable!(), } } - pub(crate) fn device_kinds (&self) -> &'static [&'static str] { - &[ - "Sampler", - "Plugin (LV2)", - ] + fn device_add_sampler (&mut self) -> Usually<()> { + let jack = self.jack.clone(); + let midi_port = self.track().expect("no active track").player.midi_outs[0].name(); + let sampler = if let Ok(sampler) = Sampler::new( + &jack, + &"sampler", + &[PortConnect::exact(format!("tek:{}", midi_port))], // FIXME + &[&[], &[]], + &[&[], &[]] + ) { + self.modal = None; + Device::Sampler(sampler) + } else { + self.modal = Some(Modal::Message(Message::FailedToAddDevice)); + return Err("failed to add device".into()) + }; + self.track_mut().expect("no active track").devices.push(sampler); + Ok(()) } pub(crate) fn message_dismiss (&mut self) { diff --git a/crates/engine/src/jack/jack_port.rs b/crates/engine/src/jack/jack_port.rs index 7347269d..925d9fb8 100644 --- a/crates/engine/src/jack/jack_port.rs +++ b/crates/engine/src/jack/jack_port.rs @@ -112,6 +112,7 @@ pub trait JackPortAutoconnect: JackPort + for<'a>JackPortConnect<&'a Port Usually<()> { for connect in self.conn().iter() { + //panic!("{connect:?}"); let status = match &connect.name { Exact(name) => self.connect_exact(name), RegExp(re) => self.connect_regexp(re, connect.scope),