Making practise tools for amateur musicals, Linux edition

A couple of years ago, I was Musical Director for a local musical theatre production. This year, I got the opportunity to do something similar for a production of Rodgers & Hammerstein’s Cinderella, and I spent quite a bit of time making practise materials for the cast. In the intervening time, I switched from Mac to Linux for my personal machine, so I thought an update on the tools I used might be in order.

There were a couple of differences in my objectives for this project. For example, rather than producing both scores and sing-along practice tracks as with the last project, I only needed to make the tracks in this case (what a relief!).

That had an effect on the methods I chose to use when recording. When I was making scores, getting note values exactly right was a high priority, so I used step recording for note input. That gave me the precision I needed for a score, but was quite time consuming. Since I was only making the sing-along tracks for this latest project, I was able to play the score directly into the recording (albeit in short sections, one hand at a time). You’ll also find that I don’t mention any score engraving software this time around.

Hardware

System76 Galago laptop

System76 specialise in Linux laptops, customisable in almost every respect. Their 13-inch Galago model features a HiDPI display, which I’m quite enjoying. The onboard audio, however, leaves a bit to be desired when it comes to recording. The built-in headphone and mic channels are both exposed to quite a bit of noise, which results in substandard recordings, especially when you’re recording 4 vocal parts and layering them together!

Hence, my next investment.

Focusrite Scarlett 2i2 USB audio interface

This little fellow cleared my line noise problems right up, and works with Linux (or at least Ubuntu) out of the box.

Shure SM58 microphone

A standard choice for an omnidirectional dynamic mic. No regrets here.

M-Audio Keystation 49

This one hasn’t changed from the previous edition. I’m still pretty pleased with it, and I’ve learned a little more about how to use it as well. Fortunately for me, it also works out of the box with both Mac and Linux.

Software

DAW: Ardour

The Digital Audio Workstation (DAW) I chose is called Ardour. I chose it mostly because it (a) connects with JACK easily, (b) is libre and free, and (c) seemed popular, and hence would have some degree of community support if I got into trouble.

It served me well, though I was on a continuous learning curve through the entire process of recording about 20 tracks!

JACK & Qjackctl

JACK (JACK Audio Connection Kit) does the job of connecting a system’s many audio inputs and outputs together. It can be a bit daunting to get started, but I found that this guide really helped me understand what I was doing.

FluidSynth & Qsynth

FluidSynth is a MIDI software synthesiser, which uses SoundFonts to turn MIDI signals into sounds.

Qsynth is a GUI for FluidSynth, which makes it easier to manage.

I found these useful for when I wasn’t recording with Ardour (which manages its own FluidSynth), but still wanted to use the MIDI keyboard and hear what I was playing.

a2jmidid

So Ardour, FluidSynth and friends were all using JACK to communicate with one another, and that was great. I faced a little challenge when I realised that my MIDI keyboard was sending signals on the older ALSA bus. A quick search revealed a2jmidid, or the ALSA to JACK MIDI Daemon, which basically does what it says on the tin: it takes MIDI signals from the ALSA bus and retransmits them over a connection to JACK, and vice versa. Very handy.

Foreman

After a while, I got tired of starting all these different tools in sequence. Occasionally I’d start them up in the wrong order, or I’d be running command number 5 and suddenly realise that I’d made a mistake in command number 2. Super frustrating.

Fortunately for me, I’d encountered a tool for a purpose very like this, in my work as a software engineer. Foreman is a handy little utility for running a number of programs at the same time. To use it, you specify all the processes you want to run in a file named Procfile. Foreman reads that file and starts the processes you ask for. It’s quite a simple tool, so it lacks (as far as I know) any features about getting those processes to communicate with each other. Fortunately, that’s what Jack is made for.

Controlling Ardour from a tablet using TouchDAW and QMidiNet

Once I’d recorded all my piano and vocal tracks (with some help from a couple of very generous friends), it was time to mix. It turns out that controlling a mixer using a mouse or trackpad can be a tedious experience. To help with this, I started looking into other ways of controlling Ardour, preferably using touch.

I tried out a few different tools, and none of them really satisfied. I got the best results using TouchDAW and this guide to setting it up. I can’t say I was overjoyed with the results - I eventually went back to using a mouse to control the mixer. That may have been partly due to the fact that I was working on the opposite side of the house from the WiFi access point. All the same, I like the promise of the Open Stage Control protocols, but I don’t think the current libre technology fulfills that promise just yet.

Publishing

I published all the finished tracks to a bucket in Amazon S3, which I made public so all the singers could download what they needed. Maintaining the index pages for all the parts got tedious as I uploaded new tracks, so I ended up maintaining those in Markdown, and using a little script to render them to HTML and sync a folder on my laptop to the S3 bucket. From there, it was easy to send links via email or other means.

One little gotcha with using S3, though: be sure to set the metadata on each file with Content-Disposition: attachment, so that web browsers know to download the file to disk instead of playing it in the browser.

So there it is, an updated round-up of this project’s technology choices. I hope it’s been helpful!