Multitrack Recording Overview

Index

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.:
  1. 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).
  2. 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.
  3. 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).
  4. 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.
  5. Put a .asoundrc file in your home directory. Here's an example .asoundrc for two or three Delta 1010 cards.
  6. 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.
  7. 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).

Top of Page    Index    Contact

Last updated July 13 2007