diff --git a/src/device/track.rs b/src/device/track.rs index 42382acf..b53b5512 100644 --- a/src/device/track.rs +++ b/src/device/track.rs @@ -11,11 +11,27 @@ impl Track { devices: Option>>, phrases: Option>, ) -> Usually { - Ok(Self { - name: name.to_string(), - sequencer: Sequencer::new(&name, tempo, phrases)?, - chain: Chain::new(&name, devices)?, - }) + let sequencer = Sequencer::new(&name, tempo, phrases)?; + let chain = Chain::new(&name, devices)?; + { + if let (Some(output), Some(input)) = ( + sequencer.midi_outs()?.get(0).clone(), + if let Some(item) = chain.state().items.get(0) { + if let Some(port) = item.midi_ins()?.get(0) { + Some(port.clone()) + } else { + None + } + } else { + None + } + ) { + if let Some(client) = &sequencer.client { + client.as_client().connect_ports_by_name(&output, &input)?; + } + } + } + Ok(Self { name: name.to_string(), sequencer, chain }) } } impl PortList for Track {