connect track 1 to output; reenable switching scenes/phrases

This commit is contained in:
🪞👃🪞 2024-07-04 20:30:56 +03:00
parent 8e6d9fcdd4
commit f2774e67a6
3 changed files with 79 additions and 21 deletions

View file

@ -232,7 +232,43 @@ fn clip_prev (_: &mut App) -> Usually<bool> { Ok(true) }
//Ok(true) //Ok(true)
//} //}
fn activate (_: &mut App) -> Usually<bool> { Ok(true) } fn delete (app: &mut App) -> Usually<bool> {
match app.section {
0 => delete_track(app),
_ => Ok(false)
}
}
fn enter (app: &mut App) -> Usually<bool> {
if app.entered {
activate(app)
} else {
app.entered = true;
Ok(true)
}
}
fn activate (app: &mut App) -> Usually<bool> {
Ok(match app.section {
0 => {
if app.scene_cursor == 0 {
false
} else {
let scene = &app.scenes[app.scene_cursor - 1];
if app.track_cursor == 0 {
for (i, track) in app.tracks.iter_mut().enumerate() {
track.sequence = scene.clips[i];
}
} else {
let track = &mut app.tracks[app.track_cursor - 1];
track.sequence = scene.clips[app.track_cursor - 1];
};
true
}
},
_ => false
})
}
//fn activate (_: &mut Launcher) -> Usually<bool> { //fn activate (_: &mut Launcher) -> Usually<bool> {
//unimplemented!(); //unimplemented!();
////if let ( ////if let (
@ -287,21 +323,6 @@ fn activate (_: &mut App) -> Usually<bool> { Ok(true) }
//Ok(true) //Ok(true)
//} //}
fn delete (app: &mut App) -> Usually<bool> {
match app.section {
0 => delete_track(app),
_ => Ok(false)
}
}
fn enter (app: &mut App) -> Usually<bool> {
if app.entered {
activate(app)
} else {
app.entered = true;
Ok(true)
}
}
fn escape (app: &mut App) -> Usually<bool> { fn escape (app: &mut App) -> Usually<bool> {
if app.entered { if app.entered {

View file

@ -26,4 +26,3 @@ impl JackDevice {
self.state.lock().unwrap() self.state.lock().unwrap()
} }
} }

View file

@ -55,7 +55,29 @@ pub fn main () -> Usually<()> {
"Panagement", "Panagement",
"file:///home/user/.lv2/Auburn Sounds Panagement 2.lv2" "file:///home/user/.lv2/Auburn Sounds Panagement 2.lv2"
)?); )?);
client.connect_ports(&track.midi_out, &track.devices[0].midi_ins()?[0])?; client.connect_ports(
&track.midi_out, &track.devices[0].midi_ins()?[0]
)?;
client.connect_ports(
&track.devices[0].audio_outs()?[0], &track.devices[1].audio_ins()?[0]
)?;
let output_left = client.ports(Some("Komplete.+:playback_FL"), None, PortFlags::empty());
if let Some(
output_left
) = output_left.get(0).map(|name|client.port_by_name(&name)).flatten() {
client.connect_ports(
&track.devices[1].audio_outs()?[0], &output_left
)?;
}
let output_right = client.ports(Some("Komplete.+:playback_FR"), None, PortFlags::empty());
if let Some(
output_right
) = output_right.get(0).map(|name|client.port_by_name(&name)).flatten() {
client.connect_ports(
&track.devices[1].audio_outs()?[0], &output_right
)?;
}
track.sequence = Some(1); // FIXME track.sequence = Some(1); // FIXME
track.add_phrase("4 kicks", ppq * 4, Some(phrase! { track.add_phrase("4 kicks", ppq * 4, Some(phrase! {
00 * ppq/4 => MidiMessage::NoteOn { key: 36.into(), vel: 100.into() }, 00 * ppq/4 => MidiMessage::NoteOn { key: 36.into(), vel: 100.into() },
@ -81,8 +103,24 @@ pub fn main () -> Usually<()> {
state.add_track(Some("Bass"), Some(Box::new(move|client, track|{ state.add_track(Some("Bass"), Some(Box::new(move|client, track|{
track.add_device(Plugin::lv2("Odin2", "file:///home/user/.lv2/Odin2.lv2")?); track.add_device(Plugin::lv2("Odin2", "file:///home/user/.lv2/Odin2.lv2")?);
//client.connect_ports(&track.midi_out, &track.devices[0].midi_ins()?[0])?;
track.sequence = Some(0); // FIXME track.sequence = Some(0); // FIXME
//client.connect_ports(&track.midi_out, &track.devices[0].midi_ins()?[0])?;
//let output_left = client.ports(Some(".+:playback_FL"), None, PortFlags::empty());
//if let Some(
//output_left
//) = output_left.get(0).map(|name|client.port_by_name(&name)).flatten() {
//client.connect_ports(
//&track.devices[0].audio_outs()?[0], &output_left
//)?;
//}
//let output_right = client.ports(Some(".+:playback_FR"), None, PortFlags::empty());
//if let Some(
//output_right
//) = output_right.get(0).map(|name|client.port_by_name(&name)).flatten() {
//client.connect_ports(
//&track.devices[0].audio_outs()?[1], &output_right
//)?;
//}
track.add_phrase("Offbeat", ppq * 4, Some(phrase! { track.add_phrase("Offbeat", ppq * 4, Some(phrase! {
00 * ppq/4 => MidiMessage::NoteOff { key: 40.into(), vel: 100.into() }, 00 * ppq/4 => MidiMessage::NoteOff { key: 40.into(), vel: 100.into() },
02 * ppq/4 => MidiMessage::NoteOn { key: 40.into(), vel: 100.into() }, 02 * ppq/4 => MidiMessage::NoteOn { key: 40.into(), vel: 100.into() },