Audio on Linux
What do you use to make music on a Linux computer? This is an answer; one of many, certainly not the best, but it’s my answer. I’m making unpopular, somewhat experimental, music. I’m on a low budget. It’s amateur home-recording and soft-synth stuff; I don’t have a studio, or even a bedroom full of hardware synthesizers. So if that’s how you work, this might work for you.
Out of Windows
I’ve mainly used Windows over the years, along with most of the low-end DAWs, or sequencers, as we used to call them. Cubasis, Cakewalk (before it was Sonar), Sonar (after it was Cakewalk), even the free version of Logic for Windows back when that was a thing. But my favourite is Tracktion, now known as Waveform. It’s always seemed easier to use and more reliable than whatever else I tried. And there’s a full-featured version that’s free to use. I’ve paid for a few versions over the years, but for now the latest free version of Waveform 11 serves me well enough.
One other great thing about Waveform is that it works on Linux (and MacOS) as well as Windows. So I have an old friend with me on this journey.
There are more Linux distributions than anyone will ever need. For music, you can choose a general-purpose desktop Linux and download the packages you want, or choose a specific music distribution and find everything waiting for you. The only specialist music distro that seems to be well maintained at the moment is Ubuntu Studio.
After coming from Windows, it’s almost magical to install a fresh system and have sequencers, synths, plugins and the entire virtual studio there configured and waiting for you. If you just want a stable, ready-made operating system for making music, Ubuntu Studio is it. Since the April 2021 release, it defaults to the KDE Plasma desktop, which feels more slick and modern than the XFCE it used previously.
The disadvantage is that, in order to get that stability, you lose access to the very latest packages – at least, without jumping through extra hoops. You can improve the situation somewhat by adding the KXStudio repositories to your package manager. That gives you access to more, and newer, audio software, though it’s still a much smaller selection than you’d find with AUR on Arch or Manjaro. You’ll often find that you can install things without the repos, by just downloading the executable files, but you lose automatic updates and any guarantee of it working. Some, like Tracktion, offer their own bijou repositories; here, it’s an advantage to be using a Debian-based distribution like an Ubuntu, because they’re sure to be in the deb format.
It was the promise of newer and more diverse software that led me to try Manjaro: it’s based on a different repository system to Ubuntu, and has more of a “move fast and break stuff” attitude. It’s still a polished, attractive desktop environment (I went for the KDE Plasma variant, though I don’t think it makes a great deal of difference which desktop you choose – they’re all OK), but occasionally an update will break something. In particular, Manjaro users warn against delaying updates for too long. Installing a few weeks' backlog at once is a bad idea. The worst that happened to me is that a kernel update failed. Sounds scary, but the old kernel was still an option in the boot menu, so I could just use that until another update came along and fixed it.
Anyway, Manjaro (and Arch, on which it’s based), has not only an up-to-date official repository, but also a huge user-generated repository (AUR), which provides you with all kinds of interesting and barely-tested free software. This is the main advantage it has over Ubuntu: easy access to the latest versions and the most obscure programs.
After using Manjaro for several months, I got fed up with trying to get things working. Things like my NVidia graphics card, printing in general, and a slightly older USB audio interface. Some computers don’t have these problems; some people have the skills and patience to debug them. I switched back to Ubuntu Studio, where things just work.
Others to consider
- Mint - friendly, general-purpose Linux experience.
- Pop!OS - Intended for creatives, and its unique desktop looks very smooth.
- Elementary - if you’re used to a Mac, this will make you feel at home.
- MX - best choice for running a live system from a USB stick, if you can’t commit a hard drive.
You can have several different kernels installed in a Linux system, and you can choose one of the “realtime” kernels to make a general-purpose system like Manjaro or Mint more suitable for music production. Ubuntu Studio handles this for you. However, it may not be an issue to use one of the standard kernels. The realtime tweak allows lower latency monitoring, which is really useful if you’re multi-tracking recordings on a slower computer, but makes no difference if you’re working with soft synths or existing audio files. It’s also less of a problem if you have more, faster processor cores.
As I understand it, the processor handles work in chunks. For general-purpose computing, it’s more efficient to make the chunks somewhat larger; some chunks will have to wait longer than others for processing, but the total throughput is optimal. For realtime work, the chunks are smaller, so that the processor switches between tasks more often, and so everything happens at a more smooth and predictable speed. That makes realtime processing marginally less efficient, but sound gets processed without unpredictable hitches.
This is a pain point. Linux has too many different audio systems, and you’ll need to use two or three of them at once.
Jack is the system meant for music making; it lets you connect different programs together with virtual audio and MIDI cables, works at low latency, and has global transport controls and tempo sync. You do have the choice of upgrading to Jack2, which is supposed to be better, though it doesn’t seem to make much practical difference. To control Jack, you’ll probably get QJackCtl, which is OK, but on Manjaro I replaced it with the Cadence suite, which has more control and extra utilities. On Ubuntu Studio, the Studio Controls application handles it.
PulseAudio is the more basic audio system that applications like web browsers and music players connect to. It interconnects with Jack, but I still get problems if I want to use both at once. For example, Firefox or VLC won’t play audio or video while Jack is running, and sometimes Jack won’t start because something is up with PulseAudio.
ALSA is also in there somewhere, underneath both Jack and PulseAudio. Occasionally I have to restart it, or go into AlsaMixer and remind it that headphones are connected or some such thing.
Sometimes it’s quicker to restart the computer than to work out which audio daemon is sulking and why. I was in the middle of writing that it’s not so bad, when I noticed that I had no sound. [N.B. At this point, I was using Manjaro.] I restarted the computer, still nothing; restarted Jack using Cadence, nope; checked Alsamixer, looks OK, but still no sound; typed
pulseaudio-ctl, and it’s found no devices. In this case, the fix was to run
pulseaudio --kill followed by
pulseaudio --daemonize. The Linux desktop experience has got gradually more house-trained over the years, but you do still have to deal with this shit occasionally.
If you have a machine that’s just for audio work, not for web browsing or games, and that stays connected to the same audio hardware all the time, this is less of a problem. Because I have an all-purpose laptop, and I’m always unplugging the audio interface, it gets confused.
Ubuntu Studio gives a much smoother experience than Manjaro in this regard, if not quite perfect. It automatically switches audio devices when you plug and unplug your USB interface, avoiding many of the glitches I’ve mentioned.
Purism: the FOSS way
The current leading open-source DAW is Ardour. It’s pretty good at audio mixing and editing. It has familiar timeline and mixer screens, flexible routing, decent plugin management; it basically does everything you need, though some of those things are hidden away deep in menus. However, the MIDI editing is not as good as the audio; it’s awkward and basic compared to the commercial competition. Still, I use Ardour a lot.
LMMS is another option. It looks more like Apple’s GarageBand, rather than the Cubase / Logic style Ardour goes for. That means it’s easier to get started putting together a tune, so long as you want to work in the LMMS way. It has a lot of synths and effects built in and ready to go. I find it restrictive, but many people use it successfully.
Then there’s QTractor. I haven’t used it much, but actually its MIDI note editing is nicer than Ardour or LMMS. It’s relatively simple – way fewer options than Ardour, but it does the important things.
A new challenger is Giada. It’s minimal, in that it looks stylish, has few features, and nothing is properly labelled. It has a unique layout geared to working with sample loops. There is a MIDI editor, but it can only do the bare minimum of placing notes and velocities, and it’s not pleasant to use.
Even newer, currently in alpha release, is ZRythm. It’s not widely available in repos yet, but you can buy it cheaply from the website, or try compiling it from source if you enjoy that sort of thing. Despite being so young, it has a polished interface and a respectable feature set.
Commercial software is also available
Though some Linux users will tell you otherwise, it’s totally fine to use closed-source non-free software. These cross-platform proprietary DAWs work on Linux:
- Tracktion Waveform: free or mid-price; as I mentioned, it’s my favourite. Reliable and user-friendly.
- Cockos Reaper: relatively cheap if you’re not making much money with it. Seems pretty good, from a quick demo.
- Renoise: bringing tracker sequencing into the 21st century. A bit different.
- Harrison Mixbus: Ardour plus added proprietary “analog(TM)” mixer tech.
- Bitwig Studio: well-regarded, but expensive. I haven’t tried it.
A DAW is not the only way to put music together on the computer, though. Especially with Jack to connect everything up, it’s easy to set up a modular environment on Linux, with smaller sequencers, synthesizers, effects and so on running independently, either alongside a DAW or completely without. The Non series is made for this configuration, providing the sequencer, mixer and timeline as separate applications. Similarly, the Laborejo suite provides a score notation sequencer and a pattern sequencer (Patroneo). The x42 suite has a step sequencer and a lot of useful MIDI filters, meters and so on. Helio is another standalone sequencer that looks really interesting, but tends to crash on me.
There are a lot of synths that run not only as plugins, but also as stand-alone applications that you can wire up using Jack. Yoshimi is my favourite; it’s deep and extremely versatile. It’s a fork of ZynAddSubFx, which is therefore similar, though harder to pronounce. Then Helm is another flexible analogue-style synth, and Geonkick is a really good sounding drum synth. Its author seems to have lost interest in further development, but for now it’s great. There’s Hydrogen too, if you want a drum sequencer and synthesizer in one.
Any other plugin (synth or effect) can be wired up as a stand-alone application, wrapped with the Carla rack. Carla is really handy for slotting plugins in where they wouldn’t otherwise fit, even within Ardour when it’s being fussy about running one directly.
To record and edit the audio results, Audacity is the obvious choice, or KWave if you want something simpler. Cadence Render exists for this purpose, and will even record the project to an audio file faster than realtime.
And to manage the whole setup, you’ll want Claudia, from the Cadence suite, or Agordejo Session Manager.
On Manjaro, Cadence is essential; on Ubuntu Studio, you have Studio Control to handle many of the same things.
Many audio plugins come in a variety of formats. These are the main ones you’re likely to see:
- LADSPA (The first, basic, Linux audio plugin format. Works for effects only, not synths.)
- LV2 (that’s LADSPA version 2, a fully featured modern format, and the connoisseur’s choice)
- DSSI (an extension of LADSPA to enable synths and custom GUIs, made obsolete by LV2)
- VST2 (the best-known plugin format, though it’s proprietary and not well loved in the libre software world)
- VST3 (the latest VST standard, but not many of these are compiled for Linux)
Here’s an Unfa video explaining more about the different formats, if you’re interested.
The two main reasons for choosing one over another are which formats your host software supports, and which formats the plugin is available in. I’ve cobbled together a list that may or may not be somewhat accurate and/or useful to help with the first:
- Ardour: LADSPA, LV2, VST2/3
- Waveform: LADSPA, VST2/3
- Reaper: LV2, VST2/3
- ZRythm: LV2, VST2; optional/experimental support for VST3, DSSI and LADSPA
- Renoise: DSSI, LADSPA, VST2
- QTractor: DSSI, LADSPA, LV2, VST2
This is somewhere that Waveform and Renoise fall down. Without LV2 support, they can’t load many of the newer Linux-native plugins, particularly synths like Yoshimi or Geonkick. You can get around it by wrapping them with Carla. Speaking of which…
There are many more VST plugins for Windows than for Linux. Open-source ones often get ported across, but for closed-source freeware or proprietary plugins it’s rare. (Props to Tracktion again, they do release theirs for Linux.) Luckily, there are adaptors that use Wine (the Windows Emulator) to run them more-or-less transparently in your Linux DAW.
The best known adaptor is LinVst. Run it and it creates a little wrapper file for each Windows VST, and for the most part it just works. You’ll need to run one version for VST2 and one for VST3, and for each format you can choose between the standard edition, in which plugins are isolated, and the “X” edition in which they can communicate with one another. (I went for the X versions, though I don’t know if I’ll notice the difference.) Yabridge is a similar idea, but with support for VST 2 and 3 in one pass, and for old 32-bit plugins too. It’s less well known than LinVst, but in my experience it functions just as well.
If those don’t work, then it’s time to bring in Carla, another indispensible part of the Cadence suite. Carla takes a different approach, offering itself as a “rack” plugin within which you can connect one or more other plugins, in any format. It’s the most versatile option, since it loads and combines all plugin formats, and allows you to wire them up in bizarre ways if you so desire. You lose the transparency of the other solutions; in particular, automating controls requires configuring them with MIDI CC numbers, but it works in situations where nothing else does.
If you need it for proprietary Windows plugins, iLok just works with Wine – it may even install automatically when a plugin needs it. However, manufacturer-specific licensing platforms are not so reliable. This means that the iZotope range of plugins just don’t work at all. I gather from the forums that Waves plugins worked in the past with some specific Wine configuration, but not any more.
Plugins to install
Go ahead and install every plugin in the repositories if you like, but the list is going to be very long. Here are some free native plugins I like to use:
- Airwindows: VST only, huge selection from subtle enhancements to way-out weirdness. Many are extremely good.
- Calf: they look nice, but sound quality is mixed.
- DISTRHO DPF plugins: an odd bunch, some useful.
- DISTRHO-Ports: lots of good stuff ported from free Windows plugins.
- Dragonfly: decent workhorse reverbs
- Guitarix and GxPlugins: so many distortions! Not just for guitars.
- Invada (yes, Geoff Barrow’s record label): a few quirky retro effects, worth having.
- LSP: comprehensively covers the basics; lots of controls; maybe too many options.
- x42: a big collection of quality audio and MIDI effects
- AVL drumkits: Red Zeppelin, in particular, is a really nice simple rock drumkit.
- DrumGizmo: you’ll need to download their sample sets separately; they’re very big and detailed drum kits.
- Geonkick: great-sounding percussive synth.
- Helm: reasonably friendly analogue-style synth
- Surge: less friendly, but more capable, analogue-style synth
- Vex: another fairly simple, but useful, virtual analogue synth
- Vital (or Vitalium): excellent wavetable synth
- Yoshimi (or ZynAddSubFx, or ZynFusion): very versatile, deep and complex.
Unfa is YouTube’s most dedicated Linux Audio expert. Watch his videos, like this one about his software setup.
Linux Musicians Forums are full of useful tips and techniques, and also the home of the Libre Music Challenge if you’re in search of a project.