mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
port connections; DevicePorts -> PortList
This commit is contained in:
parent
b1df7bf4e6
commit
22b44f562b
8 changed files with 117 additions and 77 deletions
|
|
@ -9,8 +9,8 @@ pub struct Launcher {
|
|||
overdub: bool,
|
||||
position: usize,
|
||||
cursor: (usize, usize),
|
||||
tracks: Vec<DynamicDevice<Sequencer>>,
|
||||
chains: Vec<DynamicDevice<Chain>>,
|
||||
pub tracks: Vec<DynamicDevice<Sequencer>>,
|
||||
pub chains: Vec<DynamicDevice<Chain>>,
|
||||
scenes: Vec<Scene>,
|
||||
show_help: bool,
|
||||
view: LauncherView,
|
||||
|
|
@ -34,6 +34,44 @@ impl Scene {
|
|||
}
|
||||
}
|
||||
impl Launcher {
|
||||
pub fn new_with_controller (name: &str, pattern: &str)
|
||||
-> Result<DynamicDevice<Self>, Box<dyn Error>>
|
||||
{
|
||||
let launcher = Self::new(name)?;
|
||||
{
|
||||
let state = &launcher.state();
|
||||
let (client, _status) = Client::new(&format!("{name}-init"), ClientOptions::NO_START_SERVER)?;
|
||||
let controllers = client.ports(Some(pattern), None, ::jack::PortFlags::IS_OUTPUT);
|
||||
for (i, sequencer) in state.tracks.iter().enumerate() {
|
||||
for sequencer_midi_in in sequencer.midi_ins()?.iter() {
|
||||
for controller in controllers.iter() {
|
||||
client.connect_ports_by_name(
|
||||
&controller,
|
||||
&sequencer_midi_in
|
||||
)?;
|
||||
}
|
||||
}
|
||||
let chain: &DynamicDevice<Chain> = &state.chains[i];
|
||||
for sequencer_midi_out in sequencer.midi_outs()?.iter() {
|
||||
for chain_midi_in in chain.midi_ins()?.iter() {
|
||||
client.connect_ports_by_name(
|
||||
&sequencer_midi_out,
|
||||
&chain_midi_in
|
||||
)?;
|
||||
}
|
||||
}
|
||||
client.connect_ports_by_name(
|
||||
&chain.audio_outs()?[0],
|
||||
"Komplete Audio 6 Analog Stereo 1/2:playback_FL"
|
||||
);
|
||||
client.connect_ports_by_name(
|
||||
&chain.audio_outs()?[1],
|
||||
"Komplete Audio 6 Analog Stereo 1/2:playback_FR"
|
||||
);
|
||||
}
|
||||
}
|
||||
Ok(launcher)
|
||||
}
|
||||
pub fn new (name: &str,) -> Result<DynamicDevice<Self>, Box<dyn Error>> {
|
||||
let (client, _) = Client::new(name, ClientOptions::NO_START_SERVER)?;
|
||||
let transport = client.transport();
|
||||
|
|
@ -127,7 +165,7 @@ impl Launcher {
|
|||
}
|
||||
}
|
||||
}
|
||||
impl DevicePorts for Launcher {}
|
||||
impl PortList for Launcher {}
|
||||
pub fn process (state: &mut Launcher, _: &Client, _: &ProcessScope) -> Control {
|
||||
let transport = state.transport.query().unwrap();
|
||||
state.playing = transport.state;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue