A time-based JACK program can synchronize with an external time source if the program in question is set to be a JACK Transport client and the external time source is running as the JACK Transport master. This article describes how I set up three example programs to be the JACK Transport master.
I clicked the J.MASTER button (to the right of the tempo selector). The button turned from gray to blue and the display panel to the right of it displayed Jack-Time-Master mode on.
Clicking Hydrogen’s play button started the JACK Transport client application.
Qtractor worked without any special configuration but there has to be a track either playing or recording in order to run its transport.
As with Hydrogen, clicking Qtractor’s play button started the JACK Transport client application.
In my test I created a MIDI track and started recording in order to keep the transport running.
Another option is to run the command-line metronome program klick like this:
$ klick -T 130
The -T option makes klick the JACK Transport master. The 130 in this example represents the tempo; set it as desired.
I then clicked the blue Play button on QjackCtl to start the clock running.
I pressed Ctrl-C in klick‘s terminal window to stop it.
klick doesn’t have a man page but it has online documentation.
Changing the Tempo
One might think that changing the tempo of the JACK Transport master application would smoothly change the tempo of the client. Unfortunately, that doesn’t appear to be the case. I tested this using Hydrogen as the master and QMidiArp as the client; QMidiArp changed tempo but it went out of sync with Hydrogen.
I didn’t test with any other clients or with Qtractor as the JACK Transport master.
Changing tempo isn’t applicable to klick as there doesn’t appear to be any way to change its tempo once it’s started as a JACK Transport master.