diff --git a/Cargo.toml b/Cargo.toml index b97ec445..c1285f0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,11 +4,10 @@ edition = "2021" version = "0.2.0" [dependencies] -#no_deadlocks = "1.3.2" -#vst3 = "0.1.0" atomic_float = "1.0.0" backtrace = "0.3.72" better-panic = "0.3.0" +clap = { version = "4.5.4", features = [ "derive" ] } clojure-reader = "0.1.0" crossterm = "0.27" jack = { path = "./rust-jack" } @@ -19,14 +18,15 @@ palette = { version = "0.7.6", features = [ "random" ] } quanta = "0.12.3" rand = "0.8.5" ratatui = { version = "0.26.3", features = [ "unstable-widget-ref", "underline-color" ] } -#suil-rs = { path = "../suil" } symphonia = { version = "0.5.4", features = [ "all" ] } toml = "0.8.12" uuid = { version = "1.10.0", features = [ "v4" ] } -#vst = "0.4.0" wavers = "1.4.3" +#no_deadlocks = "1.3.2" +#suil-rs = { path = "../suil" } +#vst = "0.4.0" +#vst3 = "0.1.0" #winit = { version = "0.30.4", features = [ "x11" ] } -clap = { version = "4.5.4", features = [ "derive" ] } [[bin]] name = "tek_arranger" diff --git a/bin/cli_groovebox.rs b/bin/cli_groovebox.rs index b001b633..bb46e003 100644 --- a/bin/cli_groovebox.rs +++ b/bin/cli_groovebox.rs @@ -9,6 +9,9 @@ pub struct GrooveboxCli { /// Whether to include a transport toolbar (default: true) #[arg(short, long, default_value_t = true)] transport: bool, + /// Whether to attempt to become transport master + #[arg(short, long, default_value_t = true)] + sync: bool, /// MIDI outs to connect to MIDI input #[arg(short='i', long)] midi_from: Vec, @@ -31,7 +34,7 @@ pub struct GrooveboxCli { impl GrooveboxCli { fn run (&self) -> Usually<()> { Tui::run(JackClient::new("tek_groovebox")?.activate_with(|jack|{ - let app = tek::GrooveboxTui::try_from(jack)?; + let app = tek::GrooveboxTui::try_from(jack)?; jack.read().unwrap().client().connect_ports(&app.player.midi_outs[0], &app.sampler.midi_in)?; jack.connect_midi_from(&app.player.midi_ins[0], &self.midi_from)?; jack.connect_midi_from(&app.sampler.midi_in, &self.midi_from)?; @@ -40,6 +43,12 @@ impl GrooveboxCli { jack.connect_audio_from(&app.sampler.audio_ins[1], &self.r_from)?; jack.connect_audio_to(&app.sampler.audio_outs[0], &self.l_to)?; jack.connect_audio_to(&app.sampler.audio_outs[1], &self.r_to)?; + if self.sync { + jack.read().unwrap().client().register_timebase_callback(false, |bbt, state, nframes, new_pos|{ + println!("\r{state:?} {nframes} {new_pos}"); + // TODO + })? + } Ok(app) })?)?; Ok(()) diff --git a/rust-jack b/rust-jack index 5256af1d..5a913d4c 160000 --- a/rust-jack +++ b/rust-jack @@ -1 +1 @@ -Subproject commit 5256af1ddea221dd78f22e48c0a72a3842cad26d +Subproject commit 5a913d4c97b18d51bd8175d1bcb55c1b0fd52cb1