mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
connect track 1 to output; reenable switching scenes/phrases
This commit is contained in:
parent
8e6d9fcdd4
commit
f2774e67a6
3 changed files with 79 additions and 21 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -26,4 +26,3 @@ impl JackDevice {
|
|||
self.state.lock().unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
46
src/main.rs
46
src/main.rs
|
|
@ -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),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue