On Wed, 16 Nov 2016 07:04:04 +0000 holger@xxxxxxxxxxxxx wrote: > Hi lista :) > > Using an i3 (https://i3wm.org/docs/userguide.html#exec) > shortcut, I can control my jack transport from everywhere, even when > no jack application has focus : > > bindsym $mod+p exec echo play | jack_transport > bindsym $mod+Shift+p exec echo stop | jack_transport > > Thanks to FalkTX for the pipe trick BTW, I saw that on > linuxmusicians ; This is very cool if you have some sort of wireless > keyboard, but as you can see it's two different keystrokes, how do I > make it so toggles play/pause? Alternatively, how do I know when > jack transport is rolling, so I can hack my way into making my own > toggle script? I did my homework and read the inline --help of all > the available jack commands on my machine : With this patch, > jack_transport should be able to toggle. I will suggest it to the > jack-develop list but would be happy if some else can test it. Holger > > ----------------- > > diff --git a/example-clients/transport.c b/example-clients/transport.c > index c543b41..0b1130f 100644 > --- a/example-clients/transport.c > +++ b/example-clients/transport.c > @@ -211,6 +211,29 @@ static void com_timeout(char *arg) > jack_set_sync_timeout(client, (jack_time_t) (timeout*1000000)); > } > +/* Set sync timeout in seconds. */ > +static void com_toggle(char *arg) > +{ > + jack_position_t current; > + jack_transport_state_t transport_state; > + > + transport_state = jack_transport_query (client, ¤t); > + > + switch (transport_state) { > + case JackTransportStopped: > + com_play( arg ); > + break; > + case JackTransportRolling: > + com_stop( arg ); > + break; > + case JackTransportStarting: > + printf ("state: Starting - no transport toggling"); > + break; > + default: > + printf ("state: Unknown - no transport toggling"); > + } > +} > + > /* Command parsing based on GNU readline info examples. */ > @@ -238,6 +261,7 @@ command_t commands[] = { > {"stop", com_stop, "Stop transport"}, > {"tempo", com_tempo, "Set beat tempo "}, > {"timeout", com_timeout, "Set sync timeout in "}, > + {"toggle", com_toggle, "Toggle transport rolling"}, > {"?", com_help, "Synonym for `help'" }, > {(char *)NULL, (cmd_function_t *)NULL, (char *)NULL } > }; Thanks guys, I was just browsing the list for nice Linux Audio music when I found this thread, which is just what I needed as well :) In my case the purpose is for screencasts. I plan to record the screen using SimpleScreenRecorder and audio through jack into Ardour or somesuch. The problem I had was that if I start SSR and Ardour separately I need to manually align A/V later. It is simpler if A/V starts at the same time. I was thinking of starting jack transport through qjackctl or somesuch, using the CLI did not occur to me. SSR lacks jack transport control, but I think assigning the same hotkey to SSR and jack transport should work just fine. I guess I still need to take the alsa/jacks latency into account, but at least that should be small and constant. Does anyone have a better idea? @Holger: Thanks, but patching a jack example client requires maintenance since this change would be lost with each new jack package coming through the repo. Regards, Philipp _______________________________________________ Linux-audio-user mailing list Linux-audio-user@xxxxxxxxxxxxxxxxxxxx http://lists.linuxaudio.org/listinfo/linux-audio-user