rpm 2012 post-mortem

Before the process of making my RPM 2012 album becomes a distant memory, I wanted to get down some notes on the album as a whole, and on each track. This post is about the album as a whole; I’ll follow up with separate posts about each track shortly.

The whole album was definitely a rush, and there are plenty of things that could be improved, but overall I’m really happy with how it ended up. Even if it hadn’t produced useful results, the project would’ve been worthwhile in itself — I learned to get things down more quickly, and learned more about what does and doesn’t really matter when working on tracks. Perhaps most importantly, though, I feel inspired to start working on more new material.

I’m also pleased that many of the tracks sound more musical than my earlier work; there’s more of an emphasis on melodies and chord progressions rather than just rhythm and sound. Some of the musical styles forced me to use more melodies (the chiptune tracks in particular), but I think the time constraint helped force me down a more musical path, by limiting the time I could spend on sound design and effects.

General production notes, workflow changes

Though it’s still in beta, I used Ardour 3 for all of the tracks; one used samples, but the other nine were entirely MIDI. I expected a few bugs and crashes, but I didn’t hit any major problems, and didn’t lose any work — the worst problems were with some notes not starting/stopping properly at region boundaries. Over the next week or two I’ll update my Ardour build and try to reproduce those issues so I can report them properly.

The time constraints caused a few modifications of my workflow in the name of simplicity and brevity:

  • I relied much more on synth plugins than usual — in fact, several tracks used only plugins. Being able to whip up a quick synth sound in TAL NoiseMaker, and then apply effects without having to route or bounce anything, was a huge time saver. I still used Hydrogen on some tracks, and my Blofeld of course, but much more sparingly than usual.
  • Mixing work was kept to an absolute minimum — for the most part I just set some reasonable levels and left it at that. I did apply level automation to some tracks, but I didn’t add any compression or EQ, apart from the odd plugin used for creative effect.
  • Keeping the mixing simple let me skip an entire part of my usual workflow: bouncing. In the past I’ve always recorded MIDI parts to audio before mixing, and taken effort to ensure that things like drumkits have separate tracks for their various parts, to give me maximum flexibility during mixing. With the minimal mixing on this project, I didn’t see the need to bounce anything.

To my surprise, the result doesn’t sound terribly under-mixed, at least to my ears. It’s easy to get carried away with minor tweaks while mixing, so it was refreshing to hear how effective a simpler approach can be. This will definitely influence my future work — I can imagine getting a few tracks in to this sort of state and then mixing them all at once, or simply skipping mixing entirely if I don’t think a track is good enough.

Track notes

I want to go in to a bit of detail on each track, so I’ll be adding a separate post about each track, outlining the tools I used and the process I followed to create them. I’ll try to get one of these posts out each day, but with the release of Mass Effect 3 tomorrow I may be a little distracted!

new music update

A few months ago I posted that I was working on new music using Ardour 3, and I’m glad to say that my new track is now all but finished. Working with Ardour 3 was a bit nervewracking at times, as you’d expect when testing alpha software — there were several times, in fact, when I couldn’t even open the project’s session due to one bug or another. It all held together somehow, though, and after many bug reports and fixes, I definitely feel like it’s helped

The new track is a bit of a downbeat, ambient-ish thing, with some lo-fi sounds mixed in with some glitchy elements. I definitely put Ardour’s MIDI features to the test: there are MIDI tracks running out to my Blofeld and to Hydrogen, along with LV2 synths (Calf Monosynth and Linuxsampler), along with automation of CC parameters on the Blofeld and automation of plugin paramaters on Calf Monosynth. I’ve done quite a bit of effects automation as well, particularly with the bitcrushing Decimator plugin.

There’s even a VST plugin in there now; I had been beta-testing Loomer Cumulus, using it as a standalone synth, but with Ardour’s new VST support I now have it running within Ardour directly. Cumulus is somewhere between a synth and an effect: it lets you load a sample, and then trigger its playback using granular synthesis with varying paramaters, altering the starting point, pitch, and playback rate, among other things. You can define up to eight sets of those parameters, and then trigger those via MIDI keys. It can turn all sorts of sounds in to eerie textures, but it can just as easily take a drum loop and turn it in to a wonderfully glitchy mess, which is exactly what I used it for.

I’m pretty sure the track is done, but I don’t want to release it just yet. I plan to sit on it for a few days at least, while I read more of my copy of Mixing Secrets for the Small Studio, but I like the idea of putting together at least an EP with a couple of other tracks and releasing them all at once. That might not be practical if it takes me four months to finish each track, though, so I may post the individual tracks here when they’re ready, and then do an official Bandcamp release once they’re all done.

ardour 3 midi progress

I have a new track in the works, and as an exercise, I’m sequencing it all within Ardour 3. The alphas of Ardour 3 have been great on audio-only projects, but for MIDI work they’ve been highly unstable until quite recently. Each alpha just gets better, though, and while it still crashes, and has some odd behaviour, alpha 8 has behaved well enough that I’ve been able to make some solid progress.

I think it’ll still be a while before I’ll be recommending Ardour 3 for MIDI-intensive work (it may not reach that point until after the 3.0 release, even), but it’s developing well, and I figure that actually using it and reporting any problems I find is the best way I can help make it the brilliant all-round DAW I think we’re all hope it will become.

An Ardour project with only MIDI tracks? Madness!

I’m using a combination of synths — my Blofeld and Hydrogen, using a2jmidid to bridge Ardour’s JACK MIDI to ALSA MIDI, and some LV2 synth plugins within Ardour — and they’ve all worked well so far. The reliance on LV2 for synth plugins is an issue I’ve mentioned before, and there are still only a handful of LV2 synths, but I’ve had good fun with Calf Monosynth (the git version adds LFOs and a new UI), and with Jeremy Salwen’s ports of the “SO” synths. The SO-KL5 “piano” synth sounds really nice in a way that’s not entirely dissimilar to an electric piano.

Calf Monosynth, with some smooth filter cutoff automation

Calf Monosynth, with some smooth filter cutoff automation

Automation, especially on MIDI CC messages, is quite sketchy at the moment (it should be addressed in alpha 9), but I did get it working for plugin parameters; in this case, the filter cutoff of a Calf Monosynth instance. This worked really well, giving me some lovely, smooth filter sweeps. If alpha 9 lets me automate parameters on my Blofeld just as easily, I’ll be a very happy man.

Qtractor is adding automation in its next release, too, so one way or another, it looks like we’ll definitely have some solid synth automation features under Linux this year.

some early ardour 3 impressions

Ardour 3 is now in alpha, and I’ve been poking at it for a few days now; in fact, you may have noticed some bits of Ardour 3’s GUI in the screenshot from my last post. It’s still quite crashy, as you’d perhaps expect from an alpha, but that seems to improve with each new release. In fact, going back to Ardour 2 already feels uncomfortable, because the Ardour 3 interface just feels nicer to work with, even before you consider all the new features.

The MIDI functionality takes a little getting used to, but once you’ve learned a few keyboard shortcuts you can quickly jump between working with MIDI and audio at the region level, and working with the individual notes within regions. I still think I’d be more comfortable if the piano roll was in a separate window, but once you’ve resized your MIDI track and adjusted the range of notes it displays to match your needs, it’s really quite easy to draw in notes with the mouse.

Being able to manipulate notes easily with the keyboard is great, too; once you’ve learned the appropriate shortcuts, you can move between notes and edit their pitch, duration, and velocity using the keyboard. Editing velocity in general is a bit strange, though, since there’s no velocity ruler — velocities are represented just by note colour, though hovering the mouse over a note will tell you its velocity value.

I did run in to a few problems beyond simple crashes, but I’m still pretty confident that Ardour 3 will be pretty solid by the time of its final release. I’m not sure it’ll eclipse other sequencers, like Qtractor, in that first final release, at least not in some ways (I do like having a velocity ruler, for instance). That’s just fine, though — Ardour 3 works just as well with external sequencers as Ardour 2 ever did, and its features extend far beyond simply adding MIDI.

new studio toys

In the last few weeks I’ve added two great bits of gear to my home studio. The first, which I actually received for Christmas, is the Korg nanoKONTROL (Amazon link), a brilliant little MIDI controller that I think just everyone could find a use for.

Korg nanoKONTROL

Korg's nanoKONTROL is a brilliant, affordable MIDI controller

The nanoKONTROL is part of Korg’s nano series of tiny, laptop-friendly controllers which also includes the nanoPAD, with 12 drum pads and an X/Y touch controller, and the nanoKEY, a 25-key keyboard (of sorts). While I don’t think much of the nanoKEY — Akai’s LPK25 (Amazon link), while slightly larger, looks far more practical — the nanoPAD looks good, but I still think the nanoKONTROL is the pick of the bunch.

Its layout, with nine faders, nine knobs, and eighteen buttons, along with a set of transport controls, certainly lends itself to DAW mixer control, but it’s flexible enough to control just about anything. It did a fine job of handling synth parameters on PHASEX, for instance — using PHASEX’s MIDI learn features (just right-click on a control and move the appropriate MIDI controller) I was quickly able to set up the nanoKONTROL’s faders to configure the amp and filter envelopes, and the knobs to control filter cutoff, resonance, and envelope amount, among other things. It’s also brilliant as a SooperLooper controller, letting you pan, fade, and mute individual loops on-the-fly.

As a class-compliant USB MIDI device, it goes without saying that it works perfectly under Linux, but I’ll say it anyway — the nanoKONTROL works perfectly under Linux, with true plug-and-play simplicity. If you want to reconfigure the device, to change the MIDI messages that each controller sends, there’s a native app for that, called Nano-Basket, but Korg’s official app runs flawlessly under Wine, too.

Korg has announced updated versions of its nano controllers, but there’s no hard word on when they’ll be available yet. The nanoKONTROL2 adds a third set of buttons but loses one fader and knob, so I’m glad to have the original.

The Saffire PRO 40 has 8 inputs with preamps, 8 line outs, and ADAT expandability

The other new addition is somewhat bigger: it’s a Focusrite Saffire PRO 40 (Amazon link), a Firewire audio interface with eight channels of analogue I/O. Each input is a combo XLR/TRS jack with a preamp and phantom power, so it can handle up to eight condenser mics, but it’s just as happy handling line inputs from synths. In addition to the analogue I/O, there are S/PDIF and ADAT ports, which can add up to another 10 inputs and outputs.

As a sysadmin I’m quite familiar with how big standard 19″ rackmounted gear is, but for some reason, I was still surprised when I got it home — this thing is big! Now that I’ve made room for it, though, it’s fine, and beacuse it’s replacing not just my old PCI sound card, but also my Behringer mixer, it doesn’t actually take up much more space than my old setup did. Having to run just a single Firewire cable down to the PC is great — I certainly won’t miss running 3.5mm audio cables between my mixer and my PC’s back panel.

Like all supported Firewire audio devices, the PRO 40 uses drivers from the FFADO project, but support for the PRO 40 (as well as the smaller PRO 24, and some competing devices that use the same DICE chipset) is only available in the development FFADO code from Subversion. The current FFADO build in Ubuntu 10.10 is actually a Subversion build that’s recent enough to handle the PRO 40, but before I realised that I’d already installed the drivers manually. It wasn’t exactly plug-and-play, but once I switched to the old Firewire stack (playback doesn’t work on DICE devices with the new stack right now), and got the PRO 40 talking to my Firewire controller successfully (annoyingly, turning everything off and on again helped with this), getting it running with JACK was actually fairly straightforward.

So far, the performance has been fantastic. I haven’t given its preamps a good test with my mic yet, but recordings of my Blofeld via line-in were very clean and noise-free. Even my analogue delay pedal, which I know is a bit noisy, sounds much quieter than before, and with eight ins and outs on the one device, it’s very easy to hook up that delay pedal, send audio to it from Ardour, and then receive the output back in to Ardour. Even with Ubuntu 10.10’s stock generic kernel, I’m running pretty solidly at 8ms latency, which is low enough for my needs.

some daw notes: mixing in qtractor, and testing ardour 3

So far, I’ve been using Qtractor for all of the recording and sequencing on the track I’m working on. As an exercise, I’m going to try to stick with Qtractor throughout the mixing process, too. I’ve used different synths and sequencers on different tracks over the last 18 months, but everything has been recorded in to Ardour at some point, so I think it’ll be good to put it aside for one track to see how the other half live.

I’m certainly happy recording MIDI in Qtractor, but it doesn’t yet feel as robust as Ardour for recording audio. It’s working fine, though, so I might get over that initial feeling once I’ve used it a bit and built some confidence in the fact that it’s not going to keel over at random. One thing I haven’t found a way to do, though, is to use a shared reverb bus, as I do in Ardour (as discussed in my last tutorial). It hasn’t been a problem yet, since I’m not using much ‘verb yet, but it will definitely be a problem if I decide to use a convolution reverb later.

Qtractor's new quantise dialog, with percentage options

One very nice thing that’s landed in Qtractor SVN is percentage quantisation, which lets you bring your MIDI notes just part of the way towards being perfectly quantised; it’s a great way to tighten up the timing of a recorded MIDI part without completely eliminating those nice, human timing variations. I described it to Rui on the LinuxMusicians forum the other day, and to my surprise, he had it written, working, and committed to SVN by the very next day. Now that’s service!

Ardour 3’s non-MIDI improvements

I’ve also been testing Ardour 3 from SVN, and I’m very, very happy with how it’s coming along; both its stability (ie: its ability to run for more than five minutes without crashing) and its reliability (its ability to do what you tell it to do in a consistent, repeatable manner) have increased dramatically over the last few months. My good friend (and guitar/drum extraordinaire) Stuzz gave me a link to a list of Ardour 3’s new features, which is an excellent read — going through the new features, which are all described in great detail, it quickly becomes clear that there’s a lot more to Ardour 3 than just MIDI sequencing.

Internal sends to aux buses make shared reverbs even easier in Ardour 3

One thing I noticed quickly is that it handles reverb buses very well. Setting up the bus is much the same as it is in Ardour 2, but once it’s there, adding sends to your tracks takes just a few clicks, and each send has a tiny gain slider next to it in the track’s effects list, so you can adjust your send gain straight from the mixer. The sends are also given meaningful names, now, so you know which bus they’re sending to at-a-glance.

Another nice change is what’s being called the matrix router, which is used whenver you need to connect Ardour’s inputs and outputs (audio or MIDI) to external apps or devices. The dialog for this in Ardour 2 was a bit cumbersome, and I know more than a few users that used an external tool like Patchage to connect things to Ardour. The matrix router, while initially a bit of a confusing sight, makes it much easier both to see what’s connected to where, and to change those connections.

…and the MIDI stuff, too

MIDI editing is done a little differently than in some other apps, but it’s not totally dissimilar to apps like Qtractor, and it follows Ardour’s audio editing model very closely. MIDI regions work much like audio regions — you can copy and drag them around and trim them to length with ease. By default, copying a region makes a “linked” copy, so editing a region changes every copy of that region; if you do need to edit one specific copy of a region, you can “fork” it to create a duplicate that can be edited independently. Speaking of editing, it happens inline — that is, within the main Ardour timelilne window, rather than in a pop-up — which seems odd at first, but it works well enough once you expand your track vertically.

Editing the contents of a MIDI region in Ardour 3 SVN

You can use instrument plugins, too. When you create a MIDI track, it starts with just a MIDI input and output, but if you add an instrument plugin it spawns a matching set of audio outputs, which can be routed just like the outputs of a standard audio track. It also has the best automation implementation I’ve seen on Linux; Ardour’s traditional plugin automation works on instrument plugins on MIDI tracks, and you can also draw automation curves for MIDI CCs. One catch right now is the lack of DSSI support — Ardour only supports LV2 plugins for now, along with VSTi plugins in VST-enabled builds, and AudioUnits on OS X.

Paul Davis wisely warns in his description of Ardour 3’s MIDI features that since this is Ardour’s first attempt at MIDI sequencing, we shouldn’t expect Ardour to necessarily to everything as good as, or better than, other apps that have been working with MIDI for years, and I think that’s very fair. I don’t expect people to dump Rosegarden and Qtractor en masse just yet, since there are certainly features that Ardour 3 lacks. Overall, though, I think he and his team have done a brilliant job, and I think Ardour 3 will have more than enough MIDI functionality to cover most of my projects.

converting MIDI to WAV (or MP3), the easy way

This is a question that comes up all the time: what’s the easiest way to convert a MIDI file in to an audio file, like an MP3, under Linux? The old answer was TiMidity++ (usually just called “timidity”), a software MIDI synth that’s nearly as old as Linux itself, but it’s awkward to use and isn’t actively maintained. Today, though, I discovered that FluidSynth can do the job, and very easily at that.

FluidSynth is a synth that plays SoundFonts; in the studio it’s usually used through the Qsynth GUI, or as a DSSI plugin in a sequencer like Qtractor, but you can also use it stand-alone, through the “fluidsynth” command-line tool. To use it, you’ll need at least one SoundFont, and there’s a good General MIDI SoundFont called “Fluid” (which, despite the similar name, is unrelated to FluidSynth) that’s packaged in most distros.

This will install both the “fluidsynth” tool and the Fluid SoundFont on an Ubuntu or Debian system:

sudo apt-get install fluidsynth fluid-soundfont-gm

Then, just run the “fluidsynth” tool, specifying the SoundFont file to use and the MIDI file to play, and adding the “-F” option to dump the output to a file:

fluidsynth -F out.wav /usr/share/sounds/sf2/FluidR3_GM.sf2 myfile.mid

If you want the result in MP3, you can transcode it using LAME:

lame --preset standard out.wav out.mp3

or in to Ogg Vorbis using oggenc:

oggenc -q 5 out.wav

The great thing about using FluidSynth, apart from its simplicity, is that you can easily substitute whatever SoundFont you want. For instance, if you find Fluid too big to work with, you can user a smaller alternative, like the GeneralUser GS SoundFont, or if the piece is a solo work, you could use a higher-quality solo instrument SoundFont, like jRhodes3, which is a great Rhodes sound.

the rock band 3 keyboard

It’s worth mentioning that for my keyboard-playing in Rock Band 3, I’m using the official keyboard controller, and I’m really quite impressed by it — it’s solid, the keys feel great, and it has a standard MIDI output for use with a PC or other MIDI gear, so for the money (AU$135-ish locally, US$80 on Amazon), I think it’s a bargain. There’s a Rock Band 3 MIDI interface coming, which I could’ve used with one of the keyboards we already have in the house, but they’re a bit big for the lounge, especially with the drums set up. The official keyboard is tiny in comparison, and you can hold it like a keytar, which means you can play it standing up (and look totally bad-ass, 80s-style, while doing so).

The MIDI output works really well — if you’re in the market for a small, cheap MIDI controller, it’s definitely worth considering, and if you’re in the market for a cheap keytar, it’s a no-brainer. The touch strip on the neck, which can be used like a whammy bar in the game, acts as a mod wheel in MIDI mode, and the Xbox controller buttons are all repurposed to cover useful features, like octave up/down controls and program changes; Create Digital Music has a great article that covers all of the MIDI features.

The one thing it lacks compared to a modern MIDI controller is a USB port, but when you can get a basic, class-compliant USB-MIDI adapter online for less than $10, it’s not a deal-breaker. I hooked it up to my laptop using one of those adapters, and within seconds I was pumping basslines out of XSynth-DSSI, using the touch strip to control the filter cutoff while I played. Awesome!

linux music tutorial: seq24, part 2

In the first part of my seq24 tutorial series, I looked at creating patterns in the pattern editor, and then triggering those patterns in real-time from the QWERTY keyboard. In part 2, I go in to more detail on both features. This video covers:

  • Advanced pattern triggering techniques: queuing and snapshots
  • Basic note editing: copying/pasting notes and changing velocities
  • MIDI CC automation
  • Background patterns
  • MIDI note entry (step-sequencing) and MIDI recording

It’s a little longer than I’d have liked, but there’s a lot in there! If you’d prefer smaller, shorter tutorials in future, feel free to leave a comment and let me know.

For downloaders, there’s also a 720p WebM version available (107MB).

a demo of live sequencing with seq24

Despite a whole bunch of idiosyncrasies, I love seq24, and even though I tend to think of Qtractor as my MIDI sequencer of choice under Linux, it’s actually seq24 that I’ve used the most in producing my tracks. I’m planning on making some video tutorials for it, since it’s such a strange beast to deal with at first, but before doing that, I want to demonstrate the kind of things you can do with it.

Here, then, is a “performance” of my track tiny droplets — the various MIDI loops used are all pre-sequenced, but I’m triggering them all in realtime using my QWERTY keyboard. In this case, seq24 is driving Hydrogen and my Blofeld, and I’m using Ardour as a live mixer to process and mix the audio from those synths in to a stereo stream.

UPDATE: If you’d prefer to download the video rather than streaming it on YouTube, I’ve uploaded a WebM version of it. WebM is still quite new, but current versions of VLC and MPlayer support it.

On a brief side note, I have to give a shout-out to my good friend AutoStatic for describing his new video capture process using Xephyr and FFmpeg — I used it here, and the results look great. The audio was captured with JACK TimeMachine, and in another first for me, I edited it all together using the brilliant Kdenlive.