refactor app/jack init

This commit is contained in:
🪞👃🪞 2024-07-10 13:15:53 +03:00
parent 117f4d5363
commit 23d9910399
7 changed files with 166 additions and 80 deletions

View file

@ -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(())
}