Audio Mastering Workflow for Linux - Part 1

This series of posts will detail the audio mastering workflow I employ on my main Linux workstation:

Watercooled Full ATX Tower

Intel i9 @ 4.2Ghz

64GB ECC RAM

Arch Linux with the linux-rt kernel patches

RME Hammerfall DSP 9632 PCI Audio Card

RME Babyface Pro USB Audio Interface

Why?

The answer is simple: Linux provides the best audio engineering workflow for audio professionals - hands down. Don’t believe me? I’ll prove it!

Audio Engine

Audio is a second-class citizen in every modern OS. From macOS’s progressively-worsening “CoreAudio” to Windows’ pathetic ASIO implementation, the proprietary software world has fewer reasons every day to coerce you into a non-free software environment.

JACK allows audio to be your OS’s main consideration.

It lets you route anything to any other thing and does so at minimal to no latency!

Extensibility Without Compromise

Want to add a new source connection or a track insert? Audio doesn’t stop playing and no clicks are emitted just because you wanted to do that.

Want to use Wine to power your Windows VSTs inside your DAW? There’s an application for that.

Want to use the realtime kernel patches to ensure your latency never extends beyond 1.9ms? Just yay -S linux-rt and go brew some coffee. Within an hour you should have a fully functioning realtime kernel OS with incredible latency features. And trust me, you do want to use linux-rt. Anyone who tells you that audio engineers won’t benefit from using realtime patches doesn’t in any way understand our plight. Using linux-rt I am able to achieve latencies under 2ms at 44.1kHz with 3 periods per block, using my RME Babyface Pro in Class-Compliant Mode.

How?

It actually is quite simple. However, I do have to call out a caveat:

CAVEAT

The system I’ve configured and which has been successful for me, is by no means an “all rounder”. By this, I mean that users must go to some lengths to ensure that no extraneous processes are running, no systemd services are operational, etc., unless it is absolutely necessary for your audio tasks.

If you use linux-rt expecting the same stability for, say, databases and video processing, you’ll be very disappointed. To do this work, simply boot back into the stable linux kernel that comes with your Arch Linux installation.

Getting Started

To get started, simply install a new Arch Linux base OS on your audio PC.

Next, compile the linux-rt sources by installing the yay AUR helper, then runnning:

yay -S linux-rt

You should also acquire the following realtime-oriented tools:

yay -S rtapp rtirq realtime-suggestions cpupower

Enable the realtime services to run at boot:

systemctl enable rtapp && systemctl start rtapp
systemctl enable rtirq && systemctl start rtirq
systemctl enable cpupower && systemctl start cpupower

Open the rtapp config file at /etc/rtapp/rtapp.conf and add any binaries for audio programs you use there.

Set swappiness lower than default by running:

sudo sysctl vm.swappiness=10

Set the CPU governor to performance:

sudo cpupower frequency-set -g performance

Finally, run the realtime-suggestions program to see what it thinks about your configuration. It will give you warnings if anything should change.

Software

JACK2 & Cadence

We will be using jack2 because using jack in 2019 is stupid! The multi-threading, MIDI, and other various features of jack2 are deal-breakers, not nice-to-haves.

Also we will use cadence to configure our JACK settings.

Get everything you need by running:

yay -S jack2 cadence alsa-firmware alsa-utils alsa-tools

For any high-performance real-time audio synthesis work, such as SuperCollider programming, it’s strongly encouraged that you run at the lowest sampling frequency possible (I use 44.1kHz and if you use anything higher, you need to watch this video.)

I am able to place my RME Babyface Pro at 44.1kHz with a 3-period buffer and a block latency of 64 which results in a final round-trip latency of 1.5ms!!! That’s right - on consumer hardware, I am running an audio workstation that has a round-trip of under two milli-freaking-seconds! It’s a great time to be an audio engineer.

non-daw

I love non-daw. It’s a modular DAW which allows one to roll their own audio workflows.

non comes with:

non-mixer: A super fast audio mixing engine. It’s got an extremely functional spatial panner!

non-session-manager: A session management interface which handles all plugin states, audio interconnections, and routing specifications.

non-sequencer: A midi and audio file tracking sequencer which is serviceable for most uses as long as you’re not looking to become a Venetian Snares copycat. It’s got this novel concept of a “phrase” which is essentially a way to break down compositions into units of musical gestures.

non-timeline: A multi-track timeline view which enables lining up all your tracks, components, and outputs, unified by a single clock.

For mastering purposes, I have installed the following:

yay -S non-mixer non-session-manager

Carla: VST Bridge

Carla is the software that allows us to run our Windows VST plugins (which we have PAID FOR of course) in Linux without any sacrifices in terms of quality, efficiency, or reliability.

Before installing Carla, let’s prepare our system:

First step is to make sure we are reading from Arch’s multilib repo. To do that, uncomment the multilib repository information in /etc/pacman.conf.

Next, we install wine: yay -S wine-staging. It is critical that you use wine-staging from the AUR and not the production-ready wine binary, because only wine-staging supports running VST plugins in RT mode.

Now you can install carla and all the necessary modules:

yay -S carla-git carla-bridges

Now, you can use Carla to load Windows VST2 and VST3s (both 32bit and 64bit supported) with ease!

For mastering, run Carla’s engine is in continuous rack mode. This allows a user to order their plugins like on a physical audio rackmount cabinet, and handles all audio routing and latency concerns for you. The tradeoff is that since this is a simplified routing approach, advanced features like infinite patchbay routing are not available to you. But for mastering purposes, this is usually irrelevant.

Conclusion / Up Next

This concludes Part 1 of this series of posts. You should now be able to run your new Arch Linux install in realtime mode, achieving incredible latencies without risking system stability. And you should even be able to run your Windows VSTs within your Arch system by utilizing wine-staging!

In Part 2 of this series, I’ll demonstrate how to manage your audio signal flows, custom routing, plugin states, and more. We’ll also introduce the concepts of MIDI and OSC communication with jack2 and the ALSA framework so that you can use your interface hardware to interact with Ardour5, non-daw, etc.

All of the musical and audio engineering work I do originates from my Linux audio systems. Check out what I’ve achieved using only free and open source software, at The Sonic Multiplicities homepage. You can hear many of my mastering projects at my old company’s SoundCloud account.

[top]