Before focusing on the applications, we need to look at the utility that allows them to communicate. To understand this utility, we need to explain the fundamental concepts this program attempts to simulate.
Traditionally, audio was handled by analog components; these are electrical devices that use circuits to adjust the signal passing through them. Each component has inputs, outputs, or even both. You simply use cables to connect the output of one device into the input of another device. In this way, you create signal chains
which consist of an audio capture device (usually a microphone), an audio playback device (usually speakers or headphones), an audio recording device (single- or multi-track recorders), and a series of filters; the sound is picked up by the capture device, and then sent through the filters to end up in the recording device and/or the playback devices.
Additionally, through the use of the Musical Instrument Device Interface (MIDI), the MIDI Time Code (MTC) evolved; this technology allows all MIDI devices to share their timelines, so that when you play something from a certain place, all MTC-compatible devices will set their timers to that exact spot so that all MIDI devices will remain synchronized.
In Linux, these paradigms are maintained through the server application known as "JACK
," which stands for "Jack Audio Connection Kit." Yes, that was intentional. No, I had nothing to do with it. Yes, someone fancies themselves a comedian.
All joking aside, this server attempts to simulate those two technologies inside the computer.
The primary task is to function as a set of virtual cables to, once again, connect the output of one device (or program) with the input of another device (or program). In this way, you can treat every single Jack-compatible program, and ALSA/FFADO compatible device, as if it were an analog device, with inputs and outputs that can be hooked up to other programs or devices. MIDI can also be hooked up inside the computer in this way.
The secondary task is to function as a timeline control. Unlike MIDI Time Codes, Jack maintains the current spot in the timeline, and all compatible programs, MIDI or no, will keep themselves in the same spot on this timeline. In this way, all Jack-compatible programs are at the same moment in a production, which can be useful if you are using separate sequencer, DAW, and video software packages. This feature is known as the "Jack Transport."
Jack has a few frontends; these are important to know about.
The classic frontend is known as the QT Jack Control
. This tool is a staple in Jack, and is available in all systems capable of running Jack. It has windows for configuring Jack, making connections between programs, and saving those connections for re-use later. It also has controls for starting, stopping, and changing the current position in the shared timeline.
For connections, an easier tool to use would be a program called "Patchage
." Patchage cannot configure Jack, cannot start or stop the server, nor can it have any effect on Jack's shared timeline. However, it consists of a black window called a "flowcanvas" that tracks jack connections as if you were looking at a flowchart.
A later frontend system for Jack was created afterwards, merging the QT Jack Control, Patchage, and a reliable and flexible session manager called "Ladish
." The frontend system includes a tray application, called "LadiTray," and a full-scale connection and session management GUI called "Gladish." Gladish has full session support, meaning it can not only launch and connect groups of Jack-compatible applications, it can also save the whole collection to ensure it can be re-used later without the extra work to relaunch the programs and re-connect the chains. The downside to the Gladish GUI is that it lacks the transport controls available in the QT Jack Control, but the ability can be duplicated in other programs. I tend to prefer the "gjacktransport
" program for this purpose, as it allows explicit control over the current frame in the timeline.
In the screenshot, you can see three programs. The large window with the black background (flowcanvas) is the session manager GUI called Gladish. The smaller window above the flowcanvas entries is the QT Jack Control. The green box to the right is a buffered recording program called "Time Machine
," which will record everything starting ten seconds (configurable) before you actually click the button.