Linux: Jack Transport FAQ/HowTo

What is “Jack Transport”?

Jack transport adds the ability to sync Renoise with multiple Jack clients. This allows audio programs to be in sync with each other, all connected via Jack transport. You can start, stop, and relocate the play position from any of the Jack enabled applications. All software “jacked into” the session will react and synchronize accordingly.

How does it work?

  • There are two levels of Jack transport control:
  1. Each Jack client has the power to start, stop and relocate the transport. Relocation implies playback position change. This is represented in either seconds or sample time.

  2. One, and only one, Jack client can control the “time base”. The time base is the tempo, time signature, and beat position.

Most applications support the first level of Jack transport control. The second level is, at the time of writing, rarely supported. If there is more than one app running which supports “time base”, Jack will select one automatically.

  • Dealing with Tempo (-automation):

Tempo information is exchanged only when the synchronized application support time base. As stated above, most apps do not support this. Because of this caveat, you will have to set the tempo manually.

In the case where all Jack transport applications are time base aware, you still have to make sure that all clients are using the same tempo and automation. This is because playback relocation will be done in sample time instead of “beat time”. All clients have to have the same base tempo in order to jump to the same positions. More succinctly:

  • Dealing with Loops:

There is no loop information in time bases. Every client will try to apply its own loops, fighting with the other Jack programs to reposition. To avoid this unwanted conflict, enable loops in the application that is currently active, disable them in the others.

  • PDC and Jack Transport

Jack doesn’t provide a way to explicitly handle latencies. When PDC is enabled in Renoise, and you want to tell Renoise from Ardour to jump to pos 0, Renoise will attempt to compensate by jumping to “Pos 0 + overall PDC Latency”. This offset may result in a small misfire. If this gets on your nerves, you should temporarily disable PDC in Renoise.

  • How to enable/disable Jack Transport support?

Configuration wise there is just one switch. It’s in the Audio Prefs pane and is enabled by default.

  • Some technical details about the implementation in Renoise:

Although Renoise can send and receive “time bases”, it can also do without them. When there are beat positions available, Renoise uses them to synchronize. Otherwise Renoise uses sample times and tempo automation to “make beats” out of the available information.