wip: connect devices

This commit is contained in:
🪞👃🪞 2024-07-04 00:02:22 +03:00
parent 7f3425fe04
commit 394355331d
10 changed files with 235 additions and 145 deletions

View file

@ -41,46 +41,17 @@ impl LV2Plugin {
}
impl super::Plugin {
pub fn lv2 (name: &str, path: &str) -> Usually<Self> {
let mut host = Self::new(name)?;
pub fn lv2 (name: &str, path: &str) -> Usually<Arc<Mutex<Box<dyn Device>>>> {
let plugin = LV2Plugin::new(path)?;
let client = &host.jack;
let (midi_ins, midi_outs, audio_ins, audio_outs) = (
plugin.plugin.port_counts().atom_sequence_inputs,
plugin.plugin.port_counts().atom_sequence_outputs,
plugin.plugin.port_counts().audio_inputs,
plugin.plugin.port_counts().audio_outputs,
);
host.midi_ins = {
let mut ports = vec![];
for i in 0..midi_ins {
ports.push(client.register_port(&format!("midi-in-{i}"), MidiIn::default())?)
}
ports
};
host.midi_outs = {
let mut ports = vec![];
for i in 0..midi_outs {
ports.push(client.register_port(&format!("midi-out-{i}"), MidiOut::default())?)
}
ports
};
host.audio_ins = {
let mut ports = vec![];
for i in 0..audio_ins {
ports.push(client.register_port(&format!("audio-in-{i}"), AudioIn::default())?)
}
ports
};
host.audio_outs = {
let mut ports = vec![];
for i in 0..audio_outs {
ports.push(client.register_port(&format!("audio-out-{i}"), AudioOut::default())?)
}
ports
};
host.plugin = Some(super::PluginKind::LV2(plugin));
host.path = Some(String::from(path));
Ok(host)
Jack::new(name)?
.ports_from_lv2(&plugin.plugin)?
.run(|ports|Box::new(Self {
name: name.into(),
path: Some(String::from(path)),
plugin: Some(super::PluginKind::LV2(plugin)),
selected: 0,
mapping: false,
ports
}))
}
}