There are a lot of tools available for Linux for producing and recording sound of many kinds. In fact, if you have an ALSA (PCI or USB) or FFADO (FireWire) compatible audio interface, you will find that Linux can meet a lot of your recording needs, and allow you a flexibility you won't find in an all-in-one solution.
I won't go into too much detail on setting these programs up, as I have already provided detailed instructions on my website, The Penguin Producer, which includes an article with step-by-step instructions on getting Ubuntu prepared, and other articles with step-by-step instructions for preparing other core applications for use.
However, even if you never visit the website, most of these tools can be installed on modern Linux distributions, and are usable out-of-the-box, although you can get better performance and reliability with some minor tweaks.
And, more importantly... these programs are all free. Open source is wonderful, isn't it?
Step 1: The Core Utility: Jack Audio Connection Kit
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.
Step 2: Digital Audio Workstations and MIDI Sequencers
A digital audio workstation (also called a DAW) is the digital variation on the combination mixer and multitrack recorder. This program's main purpose is to record multiple tracks from multiple sources, and then mix them together into a single output for mastering. There are a few programs that can be used as a DAW.
The one I tend to prefer is the Ardour DAW, written by Paul Davis, the creator of the Jack Audio Connection Kit itself. This tool is extremely flexible, as each track is treated as an independent component for the purposes of available inputs and outputs. Additionally, each track can have an arbitrary number of input ports, an arbitrary number of output ports (that don't need to match the number of input ports), its own pan and gain controls, and a built-in plugin host, allowing you to assign filters and plugins for each single track.
Ardour is advanced, and requires a bit of understanding of how to handle Jack, as Jack factors strongly in successful use of Ardour. Additionally, Ardour is (as of version 2.8) audio-only; it does not handle MIDI music. It does support MIDI controls, which means you can use a MIDI control surface with Ardour. Ardour also supports automation, meaning that changes you make in the track settings can be recorded to happen at specific times automatically... this not only applies to built-in features, but also allows automation of the plugins used with that track.
If you wish for a simpler DAW, Traverso is an alternative to Ardour. Unlike Ardour, which makes heavy use of Jack connections, Traverso's interface is cleaner, more self-contained, and more straightforward; simply providing the ability to record and mix audio. If you are uncomfortable with the extensive featureset of Ardour, Traverso may be more useful. Like Ardour, Traverso is specific to digital audio; this program also does not do MIDI.
If you're interested in MIDI, two more DAWs exist with sequencer features.
The one I prefer is Rosegarden. Rosegarden is considered by those who don't know to be a music typesetting program; this is because one of its music management modes allows you to create music using standard sheet music notation. However, make no mistake, the program can then play said notation every bit as well as the more-common piano roll layout, which is also available with the program. In addition, notation added in one of the layouts will show up on the other, so you can fine-tune your music as desired.
Like Ardour, Rosegarden can be a little much for a light job or two, or very difficult to pick up within the first week or so. Additionally, the interface can be a little distracting, and those who do not understand sheet notation might find the sheet notation editor a little daunting. For those who want a simpler, cleaner MIDI player without all the extra bells, whistles, and kitchen sink, the QTractor Sequencer/DAW is available. This program has a simpler interface, and only uses a piano roll for note editing and entry.
Keep in mind that both Rosegarden and QTractor are not just sequence editors; they are also DAWs in their own right, as they do have the ability to host digital audio tracks in addition to the MIDI sequence tracks.
Step 3: Filters and Samplers and Synths, Oh My!
We come to a gargantuan category, known as Plugins. Anyone who has made a recording in any system probably knows a little something about plugins; these little programs that can create or modify sound on behalf of a much larger software package.
Devices or programs that can modify existing sounds are known as filters, and they can perform a wide spectrum of tasks, for a wide range of purposes. If you want to add ambience to sounds, a little reverb can come in handy (just don't use too much). If you want the whole to be louder without passing the clipping point, compression is the way to go. If everything's too soft, amplification is for you. Want to make a robot? You'll probably be using a comb's filter, phaser, or a flanger before long.
In Linux, three primary technologies exist for plugins. The first, the "Linux Audio Developer's Simple Plugin API," commonly referred to as "LADSPA," is the first attempt at creating a linux-compatible plugin standard for modification of audio. The standard does not include things like meters or fancy frontends; the plugins generally consist of a collection of sliders, buttons, and combo boxes.
Because of this simplicity, work on the second version of the standard, called "LADSPA version 2," or "LV2" came to being. This standard includes the missing elements from the first, and the plugins look better for the effort. However, sometimes, all you want are a few sliders and/or buttons, so the 1st version will also work for our needs. See the images for examples of the differences in appearance between LADSPA (v1) and Lv2 (LADSPA v2) versions of the same plugin; you will notice that there is some variance, but that the Lv2 plugin looks much nicer, and provides a lot more information.
In Windows, the standard has been Steinberg's Virtual Studio Technology for a long time. In Linux, these plugins are available through various interfaces, and most of the DAW programs can find and use these plugins with little or no hassle. In fact, there are tools available that can run VST plugins as standalone, Jack-compatible applications, meaning they can be applied like any other Jack app... I personally tend to use "DSSI-VST" to launch them.
Devices or programs that can create sound come in two flavors: Synthesizers and samplers.
Samplers are programs or devices that can import (or record) an external audio source, and then use that recorded sample as an instrument for MIDI. In Linux, the LinuxSampler server (and its "Fantasia" frontend program), as well as the various soundfont applications (such as FluidSynth and its QSynth frontend) can provide a wide range of sounds, although the former only has limited support for the Akai and DLS standards (it was originally designed for Gigasampler format), and some support for latter are somewhat limited by the soundfont standard.
Synthesizers are mathematical in nature; they do not use any recorded samples; the waveform is directly manipulated to produce the sounds desired from a synth. Because of this process, synths tend to be much more flexible, and can easily create more technical sounds than can be performed with a sampler (except insofar as the sampler records a sample of a synthesized waveform). By far, the most common standalone (non-plugin) synth available in Linux is the excellent ZynAddSubFX synth. This synthesizer actually has three different internal synthesis engines that can be used, either by themselves, or together to make some complex waveforms.
The examples of samplers and synthesizers mentioned so far are standalone. These do not even come close to the number of plugin synths and samplers available in DSSI and VSTi formats.
Step 4: Who's the Master? Jamin!
The final step in preparing an audio product for distribution is mastering. This is the step that occurs once you have finished arranging, recording, and mixing your project, and its main purpose is to ensure everything is loud and clear enough. There are a group of filters that are useful for this purpose, and some excellent people have gone and assembled these filters together into a single program that you can link up to the output of your chosen DAW's master bus.
This program is Jamin.
Jamin is primarily a filter that includes couple amplifiers, an 1024-band, hand-drawn parabolic equalizer with shelves (which is linked to a less-complex 30-band slider EQ), three bandpass filters (lowpass, highpass, midpass), three compressors (one for each bandpass), three stereo panners, a warmth booster, a limiter, and a delay for those times when the filters need to be bypassed for comparison.
The way this works:
Sound enters Jamin. An amplifier is the first filter, placed in order to prevent peaking (going past the volume limit, which causes distortion) while being processed. Then it is passed through the combination equalizer. Once equalized, it is then split into three streams, one at the high-frequency range, one at the low-frequency range, and one with the midrange audio. Each of the three streams is then fed into a compressor, to maximize its individual volume without peaking. Then, each of these are sent through a panner to allow them to be at different locations in the stereo field. Once panned, these three streams are then merged, passed through the warmth booster, and into a limiter, which will look for any peaking and reduce the volume to prevent distortion. Finally, the sound is passed through the second amplifier for final adjustment.
Voila! Your audio is now optimized for distribution (or use in a larger project)!
Step 5: Making Some Mad Beatz: Hydrogen Drum Machine
When dealing with music, rhythm is essential for providing the energy in music, as it is responsible for measuring out the beats and emphasizing specific beats in the pattern. In addition, the way the melody plays against the pattern (sometimes playing faster, other times playing slower) emphasizes the energy of the melody through the process of syncopation.
You can use the prior samplers, synths, and sequencers to create a percussion track, but sometimes, it's better to actually use a dedicated tool for handling the actual percussion samples.
Hydrogen was created specifically as a drum sequencer and sampler. The program keeps a database of different drumkit sounds, which are then applied to patterns. These patterns are then selected to play in the timeline, so that each pattern (which should match the meter of the song) represents a measure of percussion. In this way, you can manipulate the percussion track, so that by changing the pattern, you can alter the percussion in every measure containing that specific pattern.
Hydrogen also contains a good sampling engine, that can handle multi-layered sounds. The idea behind multi-layering is that a drum will actually have a different sound when struck hard, than when it is lightly tapped, so the program attempts to duplicate this effect for the purpose of faithfully reproducing the desired sound. The engine can swap out drumsets at will, and there are a large number of freely-available drumkits you can download for use in Hydrogen.
If you wish to continue using your sequencer, but you want to make use of the drumkits in Hydrogen, the program can oblige you, as it is capable of receiving MIDI notes and playing the associated drum instrument, although you will need to determine which drum goes to which note, as Hydrogen's MIDI support is not General MIDI compliant, and the notes go in the order the instruments are place in the list.
Step 6: Guitar Effects: Making the Axe Scream
There are specialized programs available for guitar filtering. By far, the best tool for this is the Rakarrack program.
Rakarrack contains ten slots, in each of which you can place one of 36 (at the time of this article) different filters. If you like a specific filter chain, you can save it as a preset. Of course, it'll probably be a while before you begin working on original presets, as you have, by default, 180 presets available, including options such as "Hard Rock," "Satriani," "Floyd Trip," and "Hendrix," as well as "Quasi-Acoustic," "Bass," and "12-Strings."
In addition, this program has MIDI support so you can assign presets to MIDI controller pedals, giving you an excellent control over when you're shredding the lead, or pounding out the rhythm, or perhaps making the guitar talk to your audience (there is even a "Vocorder" filter, which means that you can take this as literally as you like).
Step 7: The Bedroom DJ: Mixing and Streamcasting
For the DJ, you have tools available that can manage and broadcast your desired format, whether it's just talk, top 40s, or a freestyle mix with the hope to keep the party on its toes.
For broadcasting, there are a few tools available that can allow you to connect to, and manage, streaming audio.
The most basic streamer is Darkice. It has no fancy displays, no wide-ranging featuresets, no expansive, demanding controls. It is simply designed to take any live audio from its input jacks, and transmit it to an icecast, shoutcast, or darwin streaming server, as well as record the sound to a file. It depends on the rest of the Jack system to actually manage the audio production and management, which means, this is essentially, a component to add streaming support to any Jack-compatible tool.
The next level of broadcasting featureset is the Internet DJ Console. This program includes complex playlists, DJ microphone support, auxiliary inputs, and even phone management support, so you can handle more complex streaming DJ performances, whether this is for a call-in show, talk radio, or a standard radio-format music play.
At the high end of the spectrum is Rivendell, a full-featured automation solution for radio broadcasting, including features like scheduling, logging, as well as all the features listed in the above two programs. This program is actually used by various radio stations around the country to manage their playlists and program scheduling.
For those who do freestyle, beatmatching, beatmixing, scratching, and other forms of party mixing, Mixxx is the tool to have. With support for control surfaces, as well as vinyl emulation, bpm detection, and streaming support, this program can pretty much keep the party going for as long as you want it to.
Step 8: Conclusion
Well, at this point, you probably have a better picture of what is available if you were to give Linux a whirl for your audio production needs. I will temper this article with a warning: Be prepared for a learning curve. Jack-enabled applications can be merged into a gestalt that can easily compare with any major package out there, but this can only happen once you're comfortable enough with the basics to really understand how the connections should be applied.
Be prepared to spend some time learning and practicing, and if you use commercial Windows or Mac software in a professional capacity, do not abandon those tools until you are comfortable and confident enough with these tools (and other Jack-enabled applications) that you can duplicate every single task you need performed. Only then should you finally switch your professional workflow over.
Even with that said, don't be afraid to try these tools. They can give you a major advantage if you know how to use them, and they will not flatten your wallet nearly as much (meaning you have more money left over for actual hardware!). I have spent time learning the tools, and have made the results of my studies available on my website, The Penguin Producer.
Enjoy, and feel free to make some noise!
Note: I will be adding more steps to this instructable as time goes on; there are a lot more tools available in other categories that can be useful. However, at the moment, my time is limited, as I have a day job that has nothing to do with this article or its contents... unfortunately.