mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-15 16:06:41 +01:00
refactor app/jack init
This commit is contained in:
parent
117f4d5363
commit
23d9910399
7 changed files with 166 additions and 80 deletions
58
src/main.rs
58
src/main.rs
|
|
@ -21,43 +21,25 @@ mod edn;
|
|||
use crate::{core::*, model::*};
|
||||
|
||||
/// Application entrypoint.
|
||||
fn main () -> Usually<()> {
|
||||
let controller = ["nanoKEY Studio.*capture.*"];
|
||||
let soundsystem = ["Komplete.+:playback_FL", "Komplete.+:playback_FR"];
|
||||
pub fn main () -> Usually<()> {
|
||||
let mut app = App::new()?;
|
||||
app
|
||||
.connect_to_midi_ins(&["nanoKEY Studio.*capture.*"])?
|
||||
.connect_to_audio_outs(&["Komplete.+:playback_FL", "Komplete.+:playback_FR"])?
|
||||
.load_edn(include_str!("../demos/project.edn"))?;
|
||||
run(app.activate()?);
|
||||
// Start main loop
|
||||
App::new()?.run(Some(|app: Arc<RwLock<App>>|{
|
||||
let mut state = app.write().unwrap();
|
||||
// Start JACK and setup device graph
|
||||
let jack = jack_run("tek", &app)?;
|
||||
let client = jack.as_client();
|
||||
state.transport = Some(client.transport());
|
||||
state.midi_in = Some(client.register_port("midi-in", MidiIn)?);
|
||||
controller
|
||||
.iter()
|
||||
.map(|name|client
|
||||
.ports(Some(name), None, PortFlags::empty())
|
||||
.iter()
|
||||
.map(|name|{
|
||||
if let Some(port) = client.port_by_name(name) {
|
||||
client.connect_ports(&port, &state.midi_in.as_ref().unwrap())?;
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
.collect::<Usually<()>>())
|
||||
.collect::<Usually<()>>()?;
|
||||
state.audio_outs = soundsystem
|
||||
.iter()
|
||||
.map(|name|client
|
||||
.ports(Some(name), None, PortFlags::empty())
|
||||
.get(0)
|
||||
.map(|name|client.port_by_name(name)))
|
||||
.flatten()
|
||||
.filter_map(|x|x)
|
||||
.map(Arc::new)
|
||||
.collect();
|
||||
state.jack = Some(jack);
|
||||
// Load project
|
||||
state.load_edn(include_str!("../demos/project.edn"))?;
|
||||
Ok(())
|
||||
}))
|
||||
//App::new()?.run(Some(|app: Arc<RwLock<App>>|{
|
||||
//let mut state = app.write().unwrap();
|
||||
//// Start JACK and setup device graph
|
||||
//let jack = jack_run("tek", &app)?;
|
||||
//let client = jack.as_client();
|
||||
//state.transport = Some(client.transport());
|
||||
//state.midi_in = Some(client.register_port("midi-in", MidiIn)?);
|
||||
//state.jack = Some(jack);
|
||||
//// Load project
|
||||
//state.load_edn(include_str!("../demos/project.edn"))?;
|
||||
//Ok(())
|
||||
//}))
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue