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)
//}
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> {
//unimplemented!();
////if let (
@ -287,21 +323,6 @@ fn activate (_: &mut App) -> Usually<bool> { 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> {
if app.entered {

View file

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

View file

@ -55,7 +55,29 @@ pub fn main () -> Usually<()> {
"Panagement",
"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.add_phrase("4 kicks", ppq * 4, Some(phrase! {
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|{
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
//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! {
00 * ppq/4 => MidiMessage::NoteOff { key: 40.into(), vel: 100.into() },
02 * ppq/4 => MidiMessage::NoteOn { key: 40.into(), vel: 100.into() },
@ -159,8 +197,8 @@ process!(App |self, _client, scope| {
}
self.playing = Some(transport.state);
self.playhead = transport.pos.frame() as usize;
let frame = scope.last_frame_time() as usize;
let frames = scope.n_frames() as usize;
let frame = scope.last_frame_time() as usize;
let frames = scope.n_frames() as usize;
for track in self.tracks.iter_mut() {
track.process(
self.midi_in.as_ref().unwrap().iter(scope),