You Don't Know JACK
JACK stands for JACK Audio Connection Kit--yes, another Linux app utilizing the always-irritating recursive acronym.
JACK is a sound server API, which resides between the system hardware audio driver and running applications. It can be used to route audio streams from one application to another, allowing multiple applications to be chained together. JACK acts like software cabling, for lack of a better description. Connecting real instruments into hardware synths, EQs, and effects pedals is accomplished by plugging cables from one to another before the amp. JACK creates connections between software applications before playback through PC speakers.
JACK offers complete command line functionality. However, most people use the QjackCtl GUI interface. The GUI helps to visualize how your apps are linked to each other. The Applications menu entry for QjackCtl is simply JACK Control, and we will be referring to JACK, JACK Control, and QjackCtl interchangeably in the application roundup.
JACK Control must be started before any other application that accesses sound, or you will most likely be greeted with an error window. This means you need to fire it up before a browser, audio player, or chat client. Those other apps can be started after JACK with no detrimental effect most of the time. But before starting any piece of software you would like to connect using JACK, you must first start JACK.
Connections are made in the connection window. Just click one entry in the output pane and another in the input pane, then select Connect. New entries appear when JACK-compatible applications are opened, and some apps automatically create their own connections.
Without JACK, an open standard API, connecting these different applications to each other would not be possible in many cases. Recording could be achieved one step at a time via import/export to the various apps. But that would add substantial time to even amateur projects, and forget about doing anything live. Another option would be to rely on plug-ins, but they would have to be specially made from one app to another, which is certain to limit your options. Comprehensive DAWs could handle many of these duties, but they lock users into a single app, along with any of its shortcomings.
JACK enables a lot of functionality that wouldn't be possible otherwise in the world of Linux audio production. But all is not rosy. JACK is complicated. Many JACK-compliant applications have preferences tabs filled with options. JACK has its own options menu as well. With all of those settings, getting JACK to work with apps and apps to work with each other isn't always easy. Troubleshooting an issue with one app often leads to more issues with other apps in the chain. The more apps in the chain, the more complicated troubleshooting becomes. Throw in MIDI apps and issues with hardware drivers, such as ALSA (or PulseAudio, yikes), and you have a mess on your hands.
Be prepared to spend some time on the forums getting a custom chain of applications working properly. Be patient, and be willing to redo the whole OS if things go south. It's also not a bad idea to establish at least a beginner's familiarity with the Linux command line. Many of the most knowledgeable users in online forums will give you code instead of a GUI walkthrough as possible solutions to your problem. You may also be asked to run some of your applications from the terminal instead of the Applications menu in order to copy and paste errors or other CLI output. This output is essential for generating feedback tailored specifically to your issue. Most GNOME distributions list the command line as Terminal, and can be accessed via the Applications/Accessories menu. KDE distros typically list it in the Applications/Utilities menu as Konsole.