Making practise tools for amateur musicals, Linux edition
August 1, 2018
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.
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.
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.
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.
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
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.
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!