Making Music with Ardour3
The latest version of Ardour – a full-featured digital audio workstation – offers some major new developments. We take a closer look.
On March 10, 2013, developer Paul Davis announced the official public release of Ardour 3.0, better known simply as Ardour3. Version 3.0 introduces significant new features and is considered a major milestone, not only in its own project track but throughout the greater world of Linux audio development.
You can view the lengthy list of Ardour’s features on its website, but instead of reiterating that catalog here, I’ll present my use of Ardour3 in a set of test projects. You won’t see everything Ardour offers, but you will get a look at some of its most notable new features and operations in action.
Ardour3 is a full-featured digital audio workstation (DAW) with tools for recording, editing, and playing sound and MIDI data. The program is divided into two main sections: an editor and a mixer (Figure 1).
The mixer configures each channel’s input source, output level, plugin chain, panning, and so forth. The editor displays audio or MIDI data as a region or regions within a track, and each region is subject to various editing procedures, such as cut/copy/paste operations and time/pitch compression/expansion. The editor can also display the automation control curve for each track’s output level, panner, and plugin parameters.
Ardour3 is currently available in nearly identical versions for Linux and OS X. If you want a ready-to-run binary for either platform, you can become an Ardour subscriber or make a purchase payment equal to or greater than US$ 1.00. Subscribers get their updates for free for as long as they remain subscribed; otherwise, another one dollar payment is required. A somewhat limited, but completely free, pre-built demo version can be downloaded, and because Ardour is a free and open source project licensed under the GPL, its source code is freely available from the project’s Git repository.
Bigger and faster is definitely better for serious digital audio work. You’ll need a fast 32-bit or 64-bit CPU, preferably a multicore processor, with a large fast hard disk and as much RAM as your motherboard can bear. Ardour’s audio and MIDI channel I/O limitations are determined by your hardware capabilities. Serious users should consider the multichannel interfaces from RME and M-Audio, but Ardour can use any hardware supported by the ALSA kernel sound driver or the FFADO project (for FireWire interfaces). No special graphics capabilities are required, although serious users will want to consider a graphics card that supports a dual-monitor video configuration. See the Ardour website for more information regarding recommended hardware.
From 2 to 3
Ardour began its life as an audio-centric workstation that provided a set of powerful tools for recording and editing acoustic and electroacoustic performances. Its feature set has evolved generally along lines established in other DAWs, minus their MIDI sequencing capabilities. MIDI is supported in Ardour’s 2.x release series, but only in a control capacity. MIDI time code (MTC) and MIDI machine control (MMC) commands can be sent and received for synchronization with external devices or programs and for remote transport control.
Version 3.0 introduces Ardour’s own MIDI sequencer, along with a host of other amenities that expand its utility and enhance the user’s workflow. At last, you can record, edit, and play MIDI sequences in Ardour along with your audio tracks – with sample-accurate synchronization if you want it. Later, I’ll describe in detail some of the sequencer’s impressive features and some of its limitations. For now, I’ll look at the plugin situation.
The Linux version of Ardour3 supports plugins in LADSPA, LV2, and VST formats. The OS X version loses the VST but adds the AU format to the list. Native GUIs are supported, although you can opt to have Ardour provide the graphic interface. Presets can be saved and loaded in all formats, and a “MIDI learn” function lets you easily bind MIDI controllers to plugin parameters.
With its support for the LV2 and native VST formats, Ardour3 can assign instrument plugins to MIDI tracks. Currently, the Linux audio armory can claim nothing like the vast selection of VSTi plugins available for Windows sequencers, but some good ones are available. Notable examples include Loomer Aspect and String, discoDSP Discovery, Nick Powell’s amSynth, Rui Nuno Capela’s V1 instruments, Modartt Pianoteq, TAL NoiseMaker, and Calf synthesizer plugins.
Ardour3 can be compiled with support for VST/VSTi plugins in native Windows format (i.e., with their original DLL extension). The support mechanism is built on code from the FeSTige project and requires the libwine package. Given the inherent complexities of supporting non-native audio plugins by means of an external emulation layer, no official support is available for builds of Ardour enabled for Windows VSTs. Nevertheless, despite these dire conditions, many users report satisfactory performance with some plugins. See the relevant traffic on sites such as Linux Musicians and KVR Audio for user reports and other helpful information.
The Use Case Diaries
As I mentioned previously, I planned a series of short test projects to introduce some of Ardour3’s new features. My tests had the following main objectives:
- Record a vocal for a pre-existing backing track.
- Make a super-mix from possibly hundreds of sound clip.
- Record MIDI tracks from external MIDI devices.
- Import a MIDI file and play it with a General MIDI synthesizer (standalone and plugin).
In each project, the final stage produced a WAV file that could be uploaded to SoundCloud or YouTube, converted to MP3/OGG/FLAC, burned to CD/DVD, or re-used in another production in Ardour or another program. The exported WAV was formatted for DVD compatibility with a sample rate of 48kHz and a resolution of 24 bits.
In past sessions, I’ve preferred making connections in QJackCtl, but Ardour3 has a new matrix connections manager that I used throughout these tests. Figure 2 might remind some users of the connections panel in the EnergyXT2 DAW. Whatever its origin, the new connector is rapidly winning me over to the new way of putting things together.
Of Bands and Blues Vocals
My electroacoustic recording required a simple configuration. A band led by Glen MacArthur (a.k.a. GMaq of AVLinux renown) recorded an excellent version of “Blind” Lemon Jefferson’s “One Kind Favor,” but without a singer. Glen sent me a stereo WAV of the backing tracks he’d recorded and mixed in Ardour at his studio. I added a vocal part in my usual fashion, with two microphones run through a mic preamp connected to the system’s M-Audio Delta 66 digital audio interface. Each microphone was routed to a monaural track in Ardour. I tested and set the input levels on my hardware and software, started recording, and finished with two tracks free of glitches or other audio dropouts. In the edit stage, I removed some extraneous utterances, added fade-outs at the end each track, deleted an entire verse, and replaced the deleted verse with one I had mistakenly sung over the instrumental break.
I added Tim Goetze’s Versatile Plate reverb to both vocal tracks, each with a slightly different value for the reverb’s wet-to-dry ratio. I also added the LV2 version of the Calf Limiter to the master output track, but I found that it caused a significant rise in the number of xruns (buffer overruns or insufficiencies) reported by the JACK audio server. I deleted the plugin after reviewing the peaks in the master track and deciding that the master output mix had no need for a limiter.
I felt that the original track’s key was a bit low for me, so I thought I’d add another vocal doubling my part an octave above the original. Instead, I copied the original to a new track and used the built-in pitch shifter to raise it an octave. My first attempt was unsatisfactory, but adding the “Preserve Formants” option – and some judicious cuts – brought the results a little closer to reality. To be honest, I didn’t expect convincing results from a shift that extreme, but it was an interesting and somewhat useful test.
When I was satisfied that the mix was good enough for private distribution, I exported the session to a high-quality WAV as described above, and uploaded it to my FTP site for Glen to download. As I thought he might, Glen suggested that I send him the individual tracks from the microphone inputs. No problem – in Ardour3, I exported the vocal tracks with the Stem Export dialog and made FLAC-encoded versions for uploading. It was a productive virtual session: Glen got an idea of what I intended in the first full version, and the stem exports gave him the vocal parts he needed to complete his treatment of the song. Incidentally, we could have exchanged Ardour sessions, but there seemed to be no need for that. The individual tracks were sufficient for the task (Figure 3).
A summary of the tools and techniques used in this track includes only a few items at the basic recording and track edit levels. My hardware considerations were minimal, I merely ensured that the signal flow was clean and strong from mics to preamp to digital interface and on into the designated tracks in Ardour. Track edits were likewise minimal and were focused mainly on selecting plugins and balancing the track output levels. By far, most of the work took place at the region level where I made dozens of useful changes to the material. A partial list of the region edits includes cut/copy/paste, split/combine, relocation, crossfading, fade-in/out, gain boost/cut, pitch-shifting, and region mutes. Clearly, I have an affinity for Ardour at the detail level.
I’ve produced a lot of audio files with Jean-Pierre Lemoine’s AVSynthesis, a program for real-time production of sound and 3D graphics. Among other features, AVSynthesis includes a set of powerful tools for algorithmic composition that I’ve used to generate hundreds of files – from brief demos to complete pieces. I used eight of those files as source material for my next project: a large-scale mix made of possibly hundreds of clips from the source material. Figure 4 shows the track view of the final version of a piece called “Arcis,” a 16-minute voyage through a world of fantastic sounds created by Csound, the audio engine behind AVSynthesis.
Ardour3 really performed for this project. Once again, the bulk of my labor took place at the region level, with heavy reliance on the track view’s snap-to-grid function and a few new tools added to the kit described previously. The Time tool was employed frequently to lengthen or shorten passages, and many new regions were created by judicious cuts, pastes, combines, and crossfades. A lot of work went into the construction of this piece, but the workflow was smooth and natural. For this project, Ardour was a primary composition tool – a supermixer for auditioning, editing, and arranging hundreds of sound clips (Figure 5). I worked on the mix for two days and never felt that I was working against the program’s design.
On the MIDI Side
I tested MIDI recording with two devices, an Akai LPK25 keyboard and a Behringer BCF2000 control box. Events from the LPK25 were displayed as they were recorded. I recorded from the BCF with the track’s automation editor opened and correctly assigned, but the unit’s output did not appear on screen until I ended the recording. New users should note this behavior when recording streams of continuous controller messages. I don’t consider it an optimal design, but perhaps I’ve missed a configuration detail somewhere.
MIDI editing is currently a mixed blessing. I like many of its features; for example, the region concept is great for MIDI as for audio; it’s easy to define groups of events for editing, and there’s even keyboard control of events in the piano roll. The piano roll UI provides excellent display capabilities to make it easy to work at very small or very large scales. Alas, some operations behaved erratically during my tests. Performing a simple region split often deleted quantized events that should have remained in place. Also, the region Reverse function doesn’t reverse MIDI data, and regions unpredictably stop making sound then start again after a transport pause and restart. Like their audio counterparts, MIDI regions set the boundaries for any edit procedures. Unlike audio regions, however, MIDI regions are linked (i.e., edits made in a copied region will be made in the original and all other copies). Linking is the default behavior for copied MIDI regions, but the user can unlink them as needed.
MIDI file import and playback was tested with an orchestral piece with 24 tracks, arranged for the General MIDI patch layout. Program change messages were embedded at various points within the tracks, but only sparse use was made of continuous controller data streams (pitch-bend, volume control, mod wheel, etc.). This project revealed problems – some caused by hardware limitations and others resulting from Ardour3’s design. I ran the test first on a uniprocessor machine with a 2.0GHz AMD 3200+ CPU and 4GB of RAM. The MIDI file loaded very slowly, but eventually I had all 24 tracks (Figure 6).
Unfortunately, my preparations for playback revealed the next problem. Ardour3 does not yet support a MIDI bus, which is a track dedicated only to receiving and processing input from other tracks. Audio buses are supported, and they are most helpful when I want the same processing applied to a group of tracks. The lack of a MIDI bus meant adding the same plugin – the Calf Soundfont synthesizer – to each track. I alleviated the copy/paste loop by opening the mixer section and using the mouse to drag and drop the copy, but even that method became tiresome.
I gave up the synth-per-track after I discovered that the plugin’s assigned soundfont was not persistent across its copies anyway, which meant that I would need to open each instance of the synth plugin and add the required soundfont. The last injury came when I saved and re-opened the session, only to find that the soundfont had to be reloaded, again, for each instance of the plugin. Finally, I gave up on the plugin approach and reverted to using an external sound source. I routed the output from Ardour’s MIDI tracks to a single instance of the QSynth soundfont synthesizer and made my track-to-channel assignments in QJackCtl’s MIDI panel. Voilà – all problems solved.
With the plugin instrument, this test pushed the limits of my aging single-processor box, but, with the standalone synth, Ardour’s playback was smooth and uninterrupted. The same test on my dual-core laptop saw appreciably faster file load times and display rewrites, with the same performance improvement by using an external synthesizer.
I also tested a much lighter weight MIDI file, a sequence of Stefan Wolpe’s “Form” for piano (Figure 7).
The pitch range of “Form” covers the entire piano keyboard, and its rhythmic complexity is formidable. It’s a good test of a sequencer’s timing, and I’m happy to report no drop-outs or skipped notes. Unfortunately, Ardour crashed during playback when using the Calf FluidSynth plugin on the single-core system. No such problem occurred on the dual-core machine, again indicating Ardour’s greater happiness on a multicore CPU.
Tools and techniques used in this project included many items introduced in Ardour3. I recorded MIDI notes and controller messages from external devices. I edited my recorded MIDI data in the piano roll and with the MIDI event list, and I imported standard MIDI files into Ardour tracks and played them with internal and external synthesizers configured with the General MIDI patch set.
I also made good use of the Quantization dialog and Patch Change dialog, and I discovered the various states of the cursor during MIDI note edits. If placed near the start or end of a note, the cursor shape changes to the length adjustment tool, and if you right-click in the middle of a note, you can change its velocity by scrolling the mouse wheel. Of course, these actions also operate on selected groups of notes.
I’m happy about Ardour3’s MIDI sequencing capabilities, but I’m ready for the next level. I’d like to see routines for generating and transforming MIDI data in compositionally useful ways (e.g., retrograde, inversion, mapping, harmonic transposition, randomizations, and so forth). The pizmidi plugins could make me happy; they’re available in native Linux VST format, but, alas, I’ve failed to get them working in Ardour3. Thus, I see a debugging session in my future, and I hope the issue can be resolved without too much trouble.
The Help menu includes items for Manual and Reference. The first goes to the online FLOSS manual, and the second links to the manual at the Ardour website. Both are well-written, helpful, and definitely recommended for anyone not familiar with Ardour and/or configuring Linux for high-performance audio.
Mailing lists are available for users and developers, and a forum is online for relevant announcements and discussion. Users should note that Ardour’s developers prefer working on problems over IRC, at #ardour on Freenode. You can reach them with any IRC client, or you can just select the Chat item listed on the Ardour Help menu. Many tutorial and demonstration videos can be found on YouTube and Vimeo. For examples of music made with Ardour, check out the forum on the Ardour website, the Ardour group on SoundCloud, and the music section at Linux Musicians.
Future plans for Ardour include the further development of the Windows version and the addition of Robin Gareus’s video timeline. Robin has been developing video support for Ardour for a long time; his code is already in the current Git repo, and I expect the integration will be smooth and painless at the user level. A proof-of-concept version of Ardour for Windows has been built and tested, but users might have to wait a while before a release version of Ardour reaches them. In the meantime, they can use the excellent Ardour2-based Mixbus from Harrison Consoles.
A Reaper-inspired folder structure is also on the Ardour road map. It will be a most welcome addition when it arrives, resolving the MIDI bus problem, and it is currently the highest item on this user’s wish list.
The developers plan regular maintenance releases for bug fixes and new features. As I completed this review, version 3.1.10 was released with a new MIDI channel control system, support for the Non Session Manager, various improvements for the interface to the Freesound database, and a bunch of bug fixes.
Short summary: I love it. Ardour3 introduces some great features and presents new ways to improve its productivity. The coordination of audio and MIDI material expands its musical capabilities, inspiring new creative directions, and works have already appeared that exploit the new potential. I’m eager to explore possibilities not previously available to me, I look forward to hearing more music from other users, and I’m impatiently anticipating further development. Profound thanks and respect to Paul Davis and all contributors to this amazing Linux audio software.
The bug was introduced back in 2009 and has been lurking around all this time.
The new release deprecates the sshd_config UsePrivilegeSeparation option.
Lives on as a community project
Five new systems join Dell XPS 13 Developer Edition that come with Ubuntu pre-installed.
The Skype Linux client now has almost the same capabilities that it enjoys on other platforms.
At CeBIT 2017, OpenStack Day will offer a wide range of lectures and discussions.
A major setback for the Linux desktop.
Improved support for GPU in virtualization.
News site for the openSUSE community falls victim to a Wordpress exploit.
The source code is available online.