Once the system has been prepared, and Jack Control has been set up, all we need to do now is use Jack. For this, we need other programs to work with Jack. For the examples in this article, I will use a relatively simple program, called “Jack Rack.” This program is a LADSPA host, capable of applying any number of effects on audio. Once the effects are applied to the audio, they will then be redirected back to the speakers.However, there are some things we need to cover before beginning.
The Connections Window
Jack’s power lies in its ability to connect devices and programs together to function as a chain. There are several programs out there that can give this process a good-looking face, but we will use the Jack Control application’s connections window for now. The first thing we need to do is launch the connections window:
Doing so will show the following window:
Once the window is open, you can see two boxes. The box on the left shows all output jacks available. On the right are the input jacks. Both sides show everything in tree view, meaning that to actually see the available jacks, you need to expand them by clicking the plus boxes, or selecting “Expand all.” You then can see the actual jacks available, like this:
Now, you can see the actual jacks available for the device; on the left are the input jacks, which are connected to the microphone jacks (the audio interface has two of them), and on the right, you can see the left and right speakers. Their default names are pretty boring (capture_1, capture_2, playback_1, and playback_2), but if you had selected to enable client/port aliases and enable client/port aliases editing (rename), then you can change them as you wish, like this:
As you can see, I named the input ports after the devices connected to them, and the output ports after the speaker they attach to. As a result, it makes the actual ports much clearer as to what they attach to. Now, if you are not sure which port connects to which, then an experiment is called for.
And that leads us to the pure meat of what Jack is for: connections. In order for sound to go anywhere, you have to connect an input with an output. In this case, I will connect what I call the condenser microphone to one of the speakers. This is accomplished by clicking on the left item I want to select in order to highlight it, then clicking on the right item I want to connect to in order to highlight that. Then, I click the “Connect” button at the bottom:
At this point, you can now see a black line in the area between the two white boxes. This line identifies the connection. Now, I will put on my headphones, and make some kind of sound in my microphone. This connection was correct, because I can hear my voice coming in through the left headphone. So, the devices were named correctly. We will get into saving these names in a later article, but for now, we have something to work with.
Now, I am going to disconnect them again. The process is the same: all I have to do is make sure the connected items are highlighted, and click “Disconnect.” The line will disappear and we will be back to where we started.
Now that we know how to connect devices, let’s see what happens when I start the previously-mentioned program, shall we? If the program is working correctly, its name will appear in both lists, as follows (after I expand the entries):
The program starts with two inputs and two outputs, which is good enough for most tasks; this allows effects to be performed on stereo signals, and some plugins, such as reverb, can actually use this to good effect. Just to answer a question, the 1995 you see in the picture is the process ID; each instance of Jack Rack has its own number, which can be seen on both this listing, as well as the title bar of the window itself. This allows you to use multiple copies of the program for some truly mind-blowing effects. For now, though, let’s focus on making a useful connection.
In this case, what I want to do is connect the condenser microphone to both Jack Rack in ports (like I said, the signal can be split multiple ways), and then connect the Jack Rack output ports to the two speaker jacks, like so:
Anyone following along will notice that, by default, Jack Rack uses straight lines, so what’s up here? Well, I kinda prefer the curved lines, so I selected the display option to draw connection and patchbay lines as Bezier curves. Looks pretty nifty, don’t you think?
As you can see, now the microphone is connected to both Jack Rack ports, and the outputs are connected separately to each stereo speaker. But what about Jack Rack? What do we do now?
Jack Rack is a program that loads and applies plugins to all sounds going through it. The main window looks like this:
Looks pretty boring, right? I mean, there are a few buttons, but right now, it has no plugins running at all. Well, let’s fix that.
A reverb is always a popular effect with audio drama and different kinds can be applied to musical instruments for different effects, from a real-world-sounding performance to something with a really deep echo. It’s also completely obvious, which makes it a perfect example to show what this can do.
As you can see, it is by no means the only plugin available, and as you can also see, this list is only in one category. And, just to give you a sense of scale, this is one of the smaller categories, and the Uncategorized list is almost as large as all the categories combined. And they all come in massive packages, rather than individually. That’s a lot of plugins. But, back to the reverb.
Granted, the plugins aren’t very pretty, but the controls are clear and obvious, unlike the mouse hunt that some VST plugins have…
I tend to use the TAP reverb because of the large number of reverb types available. My preference is the 208ms resonator, because of the clear echo effect, but then, that’s primarily to create a uber-powerful monster voice. In fact, let’s try that. This is the first plugin, while the second one used is a pitch shifter:
And now, they’re both present:
And now, both plugins are in the rack, but not quite in the correct order. After all, isn’t it better for the voice to already be deep when the reverb applies its effect? So that’s what we’ll do; we’ll use the pitch shifter’s “^” button to bring the shifter to the first slot, so its effect is applied first.
Keep in mind, some plugins, such as the above “TAP Reverberator” plugin, use significant resources, and can introduce a delay, ranging from slight to extreme. The more plugins you use, the more delay will be added to the signal. The more heavy plugins will warn you that they should not be used in realtime, such as what we are doing here. They can be used, but just know that they may introduce significant delay to the sound; they are usually used when post-processing the sound before writing to disk.
The Session Window
Okay, now you have Jack connecting one or more applications, and one or more devices together in a chain, but then, we have to do this again each time, right?
In this case, the answer would be “right,” because Jack Rack has its process number as part of its name; unless you are extremely lucky enough for Jack Rack to start again with a process number of 1995, the following won’t work. However, very few applications follow this rule, and for everything else, you don’t need to follow this process, since you can save the connections as part of a session.
The Jack Control application has a session manager built in, which means that you can save the connections for later use. To begin, you click on the “Session” button on the main Jack Control window:
The session window that appears will be empty at first.
This is because you don’t actually have a saved session running. The connections will appear in a list once the session is saved. So, we will do that. Now, sessions are saved in directories (commonly known as “folders”), rather than individual files, so the dialog that appears will be a directory-specific dialog:
We just need to create a directory to store the session in by clicking the icon next to the “up” button on the top. For the example, we’ll call it just that, “Example.”
Once the folder has been created, we go into it and then select “Choose.
Now, the list will appear in the session window:
Now, there are a lot of things in that list, so here’s what they mean:
The first line is the interface for the sound device, called “system” by default. Underneath it is the first capture port (called capture_1, aliases are not saved here). Under that port are the outputs that input is connected to, in this case, jack_rack_1995:in_1 and jack_rack_1995:in_2. The connections simply state that capture_1 is assigned to the in_1 and in_2 ports of the jack_rack_1995 application.
Next, you’ll see capture_2. Now, it wasn’t connected to anything, so it ends here.
Now, we see the playback entries. The “playback_1” entry is connected to “jack_rack_1995:out_1”, while the “playback_2” entry is connected to “jack_rack_1995:out_2”.
From this point, the rest should become obvious. You’ll notice that each connection is identified twice, once from the perspective of an input, and once from the perspective of an output.
Once saved, the session can be restored later, using the same process, but using “Load” instead of save.
You will notice the little red dots by the Jack Rack entries. These are entries that are waiting for Jack Rack to be restarted. However, as previously mentioned, unless I can start Jack Rack with the process ID 1995, these will never match. However, with another program without the number, once it’s loaded, the connections will be made, and the red dots will disappear. Once everything’s loaded, you can continue as if the programs were never closed.
You might also notice the midi_capture and midi_playback entries as well in this session. MIDI has its own tab, so it can be routed in the same way that audio can:
In this window, you can see that the Riviera’s built-in MIDI is connected with Jack Rack. you can also see that the Jack Rack MIDI is connected to the motherboard’s built-in FM Synth. Jack Rack, as you saw above, has no MIDI plugins loaded, so this is pretty useless for any usage. However, if I plug in the keyboard and drum machine, they will appear in this list. Additionally, if I load a sequencing program like Rosegarden or Seq24, or a synthesizer or sampler, they will also appear in this list.
Well, this should give you a pretty good start into the usage of Jack with audio and MIDI software. More articles will appear as I continue to learn, but for now, you should have enough information to start experimenting with Linux audio.
Good luck, and make something good!