Multitrack Recording Overview
If you're thinking of setting up a serious multitrack recording system running
on GNU/Linux there are several pitfalls for the unwary. Development has been
slow in this area so far, but with the recent involvement of big audio industry
players like
Harrison Consoles and
SAE
things have started to improve.
Hardware Channel Counts
There are two ways to get a high enough number of hardware channels: use an
interface card with enough channels or use several cards. Use of PCI cards is
assumed here - you want better performance than USB or Firewire, right?
A single card setup should
work out of the box with most Linux distributions, assuming your card is
supported. At the time of
writing the only cards with high (as in 24+) channel count supported by Linux
are the RME cards. Their MADI cards
handle up to 64 digital in/outs at 48kHz (or 32 at 96kHz). If this still isn't
enough, the only option is to use multiple cards.
Multiple Sound Cards
If you need very high channel counts or you can only afford low channel-count
cards, you'll need more than one sound card. This is not for the faint hearted.
JACK, the audio server, can only work
with one interface (OK it can use different devices for capture and playback,
but only one for each).
It's necessary to use the ALSA
pcm_multi plugin to make multiple cards appear
as a single virtual device that JACK can deal with.
At the time of writing, pcm_multi
doesn't work with jackd in duplex mode without a
patch applied to alsa-lib (the fix for this
will appear in alsa-lib-1.0.14).
Another problem with pcm_multi
is that it doesn't work with jackd with a realtime kernel (at least on x86_64; users of other architectures should check before
committing themselves). This means you can't use the specialist audio
distributions of Linux without changing the kernel, since they use the
realtime (-rt) kernel by default.
In order to get good low latency performance without the -rt kernel you'll
probably need to use two CPU cores,
so the money you saved by buying two or three of those
cheap 8-channel soundcards will most likely be spent on SMP hardware.
Update - There have been reports that -rt kernels work with pcm_multi and
jackd with AMD64x2 dual core CPUs, but so far I have been unable to confirm
this on my own hardware.
For those who want (or have) to follow the multi-card route,
here's an example describing how to set up
two or more ICE1712-based cards like the M-Audio Delta 1010. Although some
of the information is specific to the Delta 1010 the main steps are the same
for any multi-card setup, ie.:
- Patch pcm_multi if you're using alsa-lib versions from 1.0.9rc1
to 1.0.14-rcx (not necessary from 1.0.14 full release onwards).
- If you are using a version of JACK from 0.99.37 to 0.102.x you'll need
to patch it to fix a divide-by-zero error
which is triggered more often on a multi-soundcard system than on others.
This patch fixes it in JACK 0.102.20
(the patch isn't necessary from 0.103.0 onwards).
Alternatively, use jackdmp (0.61 or later; previous versions don't
work with pcm_multi) which doesn't have this bug.
- If you are using cards that use interleaved data (ie. anything except RME)
with JACK 0.102.19 or earlier you'll also need Frank van de Pol's
MMAP_COMPLEX patch for JACK
(JACK 0.102.20 and jackdmp already have MMAP_COMPLEX support).
- If your Linux distro doesn't have a preemptive kernel, compile a kernel
with CONFIG_PREEMPT=y. If you're using a specialist audio or multimedia distro,
you need a non-realtime kernel (ie. without the -rt patch but with
CONFIG_PREEMPT=y). In most cases you'll have to compile your own kernel.
- Put a .asoundrc
file in your home directory. Here's an example
.asoundrc for two or three Delta 1010 cards.
- If you don't start jackd from the command line, configure whatever you do
use (eg. qjackctl) to start jackd with the virtual device(s) defined in
.asoundrc.
- Synchronise the clocks on your cards, either to an external clock or
using one of the cards as master.
I told you it wasn't for the faint-hearted.
Recording Software
The most popular multitrack recording/editing program for professional use on
Linux is
Ardour. At the time of writing, the
stable series is 2.0.x, although some are still using the 0.99.x versions.
Plug-Ins
Audio plug-ins are currently a potential problem. The native Linux plug-in
architecture is LADSPA, but general feeling among professional users is that
some of these aren't quite ready for serious high end use.
Here's a related post on the Linux Audio Developers' mailing list, and
here's the post that started the thread. To be fair, some of the criticisms
probably result from the fact that the LADSPA plugins just do the basic job and
don't try to emulate `classic' analog devices. Certainly
JAMin, the mastering processor
(which uses swh-plugins), can produce very good results.
It is possible to use VST plug-ins with Ardour, but only if it's compiled with
VST support. This requires the use of the VST SDK, which can be downloaded free
for personal use, but can't be redistributed due to the licensing terms (so
Ardour developers can't include it in Ardour). It also requires Wine, the
Windows API emulator, which will possibly affect performance. Perhaps the
biggest stumbling block for users of modern hardware is that there is no
support for VST on 64-bit systems (but that's a limitation of VST, not Ardour).