Friends Of JACK
Friends Of JACK
The JACK audio server/master transport control system is the cornerstone of the modern Linux sound production studio. That's certainly true in my own studio, and given JACK's complexity I also employ a number of useful "friends of JACK", i.e. software that reveals and extends JACK's capabilities. This article looks at some of those friends most commonly in action here at Studio Dave.
Taking Control: QJackCtl, Patchage, And jack.*
JACK is completely configurable at the command prompt, of course, and it isn't even especially difficult to use there. But by now I've been assimilated utterly by the GUI, so I must have a graphic utility to set up my JACK systems. Happily, I have two excellent choices, Rui Nuno Capela's QJackCtl and Dave Robillard's Patchage.
QJackCtl (Figure 1) needs little introduction to regular readers of my articles. It's been my control station for JACK for many years, as witnessed by its presence in many screenshots in those articles. The program's development naturally follows JACK's development track, with new features appearing in QJackCtl that complement JACK's latest capabilities, e.g. the JACK Session panel. The QJackCtl UI also includes a set of virtual buttons for operating JACK's transport control system, very handy for working with GUI-less programs such as Ecasound or Csound.
Figure 1. QJackCtl
Patchage (Figure 2) appears to be a very different creature, but its nature as a connections manager for JACK clients is identical to QJackCtl. However, Patchage presents the clients as graphic modules that can be moved and connected freely on a background canvas. The graphic arrangements can be saved and recalled, and their visual components can be re-organized as you like. As far as I can tell Patchage doesn't supply transport controls or other JACK management features, but its GUI is super-cool and it is the popular alternative to the ubiquitous QJackCtl.
Figure 2. Patchage
As mentioned, the GUI is not a necessity for complete control of JACK. Rohan Drape has created jack.*, a set of command-line utilities for managing JACK's client connections and operating its transport controls. The package also includes handy programs for recording and playback from the terminal prompt.
The JACK Soundfile Editor: mhWaveEdit
Linux has some excellent soundfile editors - Audacity, SND, and ReZound have found employment in my studio over the years - but their performance with JACK has been less than stellar. Audacity's reliance on PortAudio's JACK implementation leads to connection frustrations, past versions of SND produced many xruns, and ReZound can be unstable with JACK. Fortunately developer Magnus Hjorth has come to my rescue with his mhWaveEdit (Figure 3), a soundfile editor specifically created for use in a JACK-based audio production environment.
Figure 3. mhWaveEdit
mhWaveEdit's development history dates from at least 2005 when version 1.1 was added to the Gna! software development repository. The program has matured to version 1.4.20, but alas, it now appears to have become abandonware. That's too bad, because mhWaveEdit is a great addition to the JACK studio. It doesn't offer the variety of features and functions found in other audio editors, but it provides the essential cut/copy/paste routines along with sample rate/format conversion, gain and normalization controls, and support for LADSPA effects plugins. The UI is uncluttered for ease of use and fast efficient workflow, and the program's stability seems rock solid.
I like mhWaveEdit a lot, and I hope its development continues. Support for LV2 and native VST plugins would be nice, ditto for a context menu in the main waveform display, but I can't really complain about the program in its current condition. It's fast, stable, it works as it's supposed to, and for now that's enough for my purposes.
Plugin Hosts: JACK Rack, Zynjacku, And The CALF Jack Host
The JACK Rack (Figure 4) is another staple in my typical JACK sessions. It's a simple application, a host for LADSPA plugins that provides an interface for MIDI parameter control and support for freely ordering the plugin sequence. Racks can be saved and recalled for later use, and they can be loaded from the command line, giving JACK Rack a little extra utility in my audio-oriented scripts.
Figure 4. The JACK Rack
Figure 5. The CALF Jack Host
The Zynjacku project's software and the CALF Jack Host can be considered as JACK Racks for LV2 plugins. Zynjacku is a host for LV2 synthesizers, while its sister application, the LV2rack, hosts effects plugins. The CALF host (Figure 5) accepts effects and synth plugins, but only those from the CALF collection.
Video Synchronization With Xjadeo
By this point it should be obvious that the programs profiled here are dedicated utilities with clearly defined tasks and goals. Xjadeo is no exception - it simply runs a video in sync with a JACK time master such as Ardour or QTractor (Figure 6), and that's just about all it does. However, it enables the user to match music to video at the frame level quickly and easily. I've tested Xjadeo extensively in Ardour, and I encountered no errors at any of Ardour's supported frame rates. The program also supports MTC (MIDI Time Code) perfectly, as far as my uncomplicated tests could tell.
Figure 6. Xjadeo synchronized with QTractor
Bound By Python: PyJack
I haven't found the time to get into Python, and I really ought to find the time. I keep running into the language in some form or another - in Steven Yi's blue, Michael Gogins' CsoundAC, and Christopher Ariza's AthenaCL, for recent examples - so I wasn't too terribly surprised to learn of PyJack, a compact wrapper for delivering JACK functions to Python programs. I discovered PyJack during my investigations into the Blender/JACK connection, where it seemed to work without troubles. As I say, I'm not a Python programmer, so you'll want to check it out yourself for details of its capabilities and usage.
Easy Recording With JACK: Time Machine And Jack Capture
Steve Harris's TimeMachine (Figure 7) is a neat program: When launched it starts a recorder daemon that sits in the background continuously buffering the last ten seconds of audio activity. As Steve describes its concept on the TimeMachine Web site
"The idea is that I doodle away with whatever is kicking around in my studio and when I heard an interesting noise, I'd press record and capture it, without having to try and recreate it."
Figure 7. Steve Harris's TimeMachine
Figure 8. jack_capture
The jack_capture utility is one of Kjetil Matheussen's contributions to the ever-expanding world of JACKed applications. It's a deceptively simple recorder with some very cool features, including support for all soundfile formats supported by libsndfile and the ability to encode to MP3 (with the right dependencies). The source package builds versions for the command-line and for a GTK2-based GUI (Figure 8), identical to one another except for their UIs.
Figure 9. The MeterBridge
Incidentally, jack_capture is the recording utility of choice in the superb guitarix/gx_head guitar amplifier simulators, where it is employed in conjunction with Steve Harris's cool MeterBridge (Figure 9). As the screenshot shows, MeterBridge provides a variety of displays for representing the strength of a signal, including PPM (peak program level), VU (volume unit), and DPM (digital peak) meters. And yes, it too requires JACK.
Mastering With JACK: JAMin
Mastering audio is a process of "polishing" a group of tracks to balance their amplitudes (and other aspects if necessary) relative to each other. The mastering process ensures that the volume of one track isn't too loud or soft relative to the rest of the tracks, freeing the listener from the need to adjust the playback volume for each track on a disc.
Figure 10. JAMin
In the hardware domain the chief tools for mastering audio include dynamics processors (compressor/limiters), spectral processors (equalizers), and input/output gain controls (for balancing amplitudes). Software equivalents exist for all these components, and budding Linux-based mastering engineers will be happy to find those equivalents neatly packaged in a tool called JAMin (Figure 10), the JACK Audio Mastering Interface. I won't go into the details of its use here - mastering is as much an art as a science anyway - but you can check out Ron Parker's excellent tutorial on JAMin + Ardour for more specific information on using the program.
In Memoriam: Max V. Mathews (1926-2011)
It's hard to imagine an aspect of computer music that hasn't been influenced by the work of Max Mathews. If you don't know about him read the Wikipedia page on the man, dedicate some moments of silence in remembrance, then make some joyous noise to honor his life and his amazing achievements.
Heavenly chorus, meet the Radio Baton.
My next article will present the first of three reports from recent conferences focused on open-source audio software. As always, much cool stuff is going all over the place. Check out this column again in a few weeks to find out about the goings-on at Virginia Tech, home of the world's first - and still the best - Linux Laptop Orchestra. Some pretty fine restaurants there too, but you'll have to check back later for the full story. See you then !