ludum dare 29: underground city defender

This weekend was Ludum Dare again, and again Switchbreak asked me to write some music for his entry. It’s called Underground City Defender, and it’s a HTML5/Javascript game, so you can play it in your browser here!

The original idea for the game was to make it Night Vale-themed, so I started the music with a Disparition vibe in mind. The game didn’t turn out that way in the end, but that’s okay, since the music didn’t either! It’s suitably dark and has a driving beat to it, so I think fits the game pretty well.

My move to San Francisco is just a few weeks away, so I’ve sold most of my studio gear, including my audio interface and keyboard. That left me using my on-board sound card to run JACK and Ardour, but that turned out just fine — with no hardware synths to record from, not having a proper audio interface didn’t slow me down.

As some of you guessed, the toy in the mystery box in my last post was indeed a Teenage Engineering OP-1. It filled in as my MIDI controller here, and while it’s no substitute for a full-sized, velocity-sensitive keyboard, it did a surprisingly good job.

Software-wise, I used Rui’s samplv1 for the kick and snare drums, which worked brilliantly. I created separate tracks for the kick and snare, and added samplv1 to each, loading appropriate samples and then tweaking samplv1’s filters and envelopes to get the sound I was after. In the past I’ve used Hydrogen and created custom drum kits when I needed to make these sorts of tweaks, but having the same features (and more!) in a plugin within Ardour is definitely more convenient.

The other plugins probably aren’t surprising — Pianoteq for the pianos, Loomer Aspect for everything else — and of course, it was sequenced in Ardour 3. Ardour was a bit crashy for me in this session; I don’t know if it was because of my hasty JACK setup, or some issues in Ardour’s current Git code, but I’ll see if I can narrow it down.

spooky october project: candy grapple

Things have been quiet here of late, but I’ve actually been quite busy! I’ve just finished the sound design for Candy Grapple, the latest game from my good friend Switchbreak. It’s based on one of his Ludum Dare games, Waterfall Rescue, but it’s been fleshed out in to a full game, with much more complete gameplay, many more levels, and a spooky Halloween theme. It’s out now for Android, and there’s an iOS version on the way, too.

Switchbreak asked me to make some suitably spooky-cheesy music for it, and I happily agreed; once I started working on that, I realised he’d also need sound effects, so I offered to create those, too. Read on for details!

Background music

The bulk of my time went in to the in-game background music. Halloween music was new territory for me, but my mind went straight to The Simpsons Halloween specials, and the harpsichord and theremin closing credits. I thought about other “spooky” instruments and came up with the organ, and while it’s not spooky as such, the tuba seemed suitably ridiculous for the kooky carnival sound I was after.

I didn’t want to over-use the theremin, so I stuck with organ for the melody for the most part, and saved the theremin for the bridge, where the harpsichord and tuba drop away in favour of some organ triplets and piano bass notes.

A standard drum kit didn’t seem like a good fit (with that bouncy tuba part, it was in danger of becoming a polka), so I stuck with more random, wacky bits of percussion, like castanets and a vibraslap. I did use some cymbal rolls and crashes in the bridge, though.

Now, for the instruments: I used Pianoteq for the harpsichord and piano, as you’d probably expect; the percussion sounds were from the Sonatina Symphonic Orchestra, played using the LinuxSampler plugin; and the theremin was a simple patch on the Blofeld.

Pianoteq doesn’t just simulate pianos — it also handles other melodic percussion, like harpsichords

The tuba and organ, surprisingly, come from the Fluid GM soundfont. I’m not usually a fan of instruments from GM sets, and I did try a few alternatives, but the Fluid sounds were very well-behaved and sat well in the mix, so I didn’t let myself get hung up on where they came from.

Faking the theremin was fairly straightforward — it’s just a single sine-wave oscillator, but with some portamento to slur the pitch changes and an LFO routed to the oscillator pitch to add vibrato, both of which make that sine wave sound suitably theremin-ish.
I used TAL NoiseMaker at first, but switched to the Blofeld so I could use the modwheel to alter the amount of vibrato (the Blofeld’s modulation matrix makes this sort of thing easy); in hindsight, it would’ve been just as easy to stick with NoiseMaker and alter the vibrato by automating the LFO depth.

The mix came together fairly quickly. There’s a bunch of reverb (I had trouble getting the IR plugin working, so I used TAP Reverberator instead), a little EQ on the tuba and organ to brighten them a bit, and some compression on the piano to add sustain, but that’s about it as far as effects go. The only tricky part was making sure the transition in to the bridge wasn’t too abrupt, but all that really required was some careful balancing of levels.

It was, of course, all recorded and mixed in Ardour 3 — it has an annoying MIDI monitoring bug right now, but I’m hoping that’ll be fixed soon.

Intro music

I wanted to add some music to the title screen, too, so I come up with a little organ fanfare-ish thing and recorded it in to Ardour. The organ is the setBfree plugin, a Hammond B3 emulation based on an old app called Beatrix.

Beatrix had taken on near-legendary status in Linux audio circles, partly due to its great sound, and partly due to being near-impossible to run. It lacked JACK support and had various other issues, and its strict licencing forbid forking it or distributing patched versions.

Somehow, though, the setBfree devs managed to negotiate a suitable licence, and have added JACK support, LV2 plugin support, and a basic GUI. The GUI is a separate app that talks to the synth engine (whether it’s the JACK app or the LV2 plugin) via MIDI; it lets you configure the organ stops manually, or load presets.

setBfree’s GUI is a stand-alone app that talks to the synth via MIDI

The thunder sound was my own recording — I have a habit of setting up my Zoom H1 and letting it record during thunderstorms, and that’s finally come in handy!

Sound effects

Sound effects are hard; I’ve had a little experience with this, working on another game for Switchbreak which is still in development, but it’s all still fairly new to me. I used synths for some — Pianoteq came in handy once again here, for its tubular and church bells — but the rest were recorded sounds, mostly of me using things to hit other things. For the flapping bat wings, for instance, I slapped rubber gloves together, and idea I saw on this list of sound effects techniques.

I’m pretty happy with the fact that there are two vocal samples in there, too — the ghost and the witch are both me. The witch’s cackle just took some pitch shifting and a bunch of reverb.

Trailer video

Video editing in progress, using Kdenlive

As the game neared completion we realised it’d need a trailer, so I volunteered to make one, using Kdenlive. I used ffmpeg to record video from the Flash version of the game, then brought that in to Kdenlive, where I composited it on top of the phone image and background. It was a fairly straightforward edit, but I had some fun with it — I hadn’t played with wipes before now, for instance, so I took the opportunity to ham it up and throw some in.

rpm 2012 post-mortem, track 10: magnificent desolation

109:43:16 Aldrin: Beautiful view!
109:43:18 Armstrong: Isn’t that something! Magnificent sight out here.
109:43:24 Aldrin: Magnificent desolation.

This track was the perfect bookend for this project: I started it way back on day 3, but it was the very last track I finished, on day 28. It was also a real problem child — the descending bassline motif was there from the start, but despite several attempts I just couldn’t work out how to develop it in to a complete track. It also didn’t seem to fit in with anything else on the album, so even though I really liked the initial idea, I wasn’t sure it’d make it on to the album.

Inspiration struck when I decided that it could work as the closing track of the album, a little mood piece to leave things on that bittersweet note that I seem to love so much. With that decision made, everything else fell in to place: it didn’t have to be long, and I could use vinyl-like effects to make it sound overly vintage, which somehow has the effect of making a lonely piece of music sound even more lonely.

Once I’d decided on that direction, there was only one name I could ever give to this track. Buzz Aldrin’s first words on the Moon aren’t as famous as Neil Armstrong’s, of course, but I’ve always found them far more poignant — they so succinctly express how strange it must’ve felt to look out across a landscape that’s simultaneously full of beautiful and devoid of life.

The piano recording was a live improvisation based upon that descending bassline, which I cleaned up a little in Ardour after the fact; the piano was of course Pianoteq, running in to a convolution reverb (using the IR LV2 plugin). For the vinyl sound, I tried the VyNil plugin, and it did make things sound suitably vintage, but the vinyl surface noise was essentially white noise with random pops, and I wanted more a cyclic popping sound, like you’d get when a needle hits the same scratches on each revolution.

Instead, I used an EQ to kill the highs and the lows, which instantly makes something sound old-timey, and then added a vinyl noise sample from Freesound, which I looped for the length of the track. Adding just a little vibrato (using TAP Vibrato) to simulate the sound of a slightly warped record helped to complete the vintage feel.

"old-timey" EQ curve

Cutting away high and low frequencies, as shown in this plugin frequency response graph, goes a long way to making something sound "old"

Fading between the “vinyl” piano and the unprocessed piano was more tricky than I initially expected. The idea was simple enough: I disconnected the piano track from the master bus and routed it in to two new buses — one with the EQ and vibrato plugins, and one without — and then faded each bus in and out as required. I used automation to disable the vibrato (moving its “depth” to 0%) to prevent chorusing effects while both the “old” and “new” buses were playing mid-fade, but even so, the fades didn’t sound right.

As it turns out, the TAP Vibrato plugin adds latency as part of its processing, so the “old” piano bus was tens of milliseconds behind the “new” piano bus, causing an echoing effect instead of a smooth transition from one sound to the other. The solution was easy, once it occurred to me: I moved the vibrato to the piano track itself, so its latency affected both buses equally, and then used automation to set its depth to 0% during the “new” parts of the song.

It’s worth mentioning that Ardour does compensate automatically for plugin latency on audio tracks. If I’d recorded the piano to audio, and then copied and pasted it across two audio tracks instead of using buses, then these issues wouldn’t occur, assuming that the plugin advertises its latency correctly.

I wish I could’ve done a better job of the actual piano arrangement in this — it needs to be properly composed and written down, and then handed to someone with more skill on the keyboard than me — but I’m really happy with its overall feel, and the impression that it leaves me with every time I hear it at the end of the album. A good final track can really help an album make a mark on people, and I think this track manages that.

rpm 2012 post-mortem, track 4: eclipse

    “An eclipse is an astronomical event that occurs when an astronomical object is temporarily obscured, either by passing into the shadow of another body or by having another body pass between it and the viewer.”

This started as a quick experiment at the end of day 3 — taking a recording of Pianoteq’s tubular bells instrument and running it through Loomer Cumulus, a granular synth that lets you vary the pitch and playback speed of a sample, among other things. Playing it slowly through Cumulus revealed some really nice textures, so on day 4 I recorded the output in to Ardour and started arranging it in to a track. By the end of day 4, it was done.

Loomer Cumulus, a granular synth

To flesh things out, I added a piano sound (Pianoteq again), which I recorded, stretched, chopped up, and then ran through some distortions and a compressor, and then a pulsating bass part from the Blofeld. I doubled up the tubular bells part, too, stretching and pitch-shifting it and adding a rotary speaker plugin, which makes it sound almost string-like. TAP TubeWarmth adds a touch of distortion; I automated the drive level to add varying amounts of distortion to different sections.

This track is more of an audio collage than a sequenced track, so unlike the other tracks on the album, there aren’t any MIDI parts. The synth parts were all played live and recorded straight in as audio. I’m really happy with how it turned out — it has some interesting sounds and textures, and a bit of progression. It’s definitely one of my favourite tracks on the album.

it’s here! native vst support in ardour 3

Ardour 3.0 is still in alpha, but it gained a substantial new feature last week: support for native Linux VST plugins. It’s a feature that’s been on wishlists for a while, but it’s become more important over the last year or so, as the number of VST synths for Linux has increased. The big drawcards are the commercial synths — Pianoteq, discoDSP Discovery, and the various Loomer plugins, for instance — but more open-source VSTs are appearing now too, such as the TAL synths, ported from Windows by KXStudio developer falkTX in his new DISTRHO project.

The new features use the unofficial Vestige VST headers, which means that Ardour avoids the need for users to download the official Steinberg VST SDK and build Ardour themselves. Having said that, the new VST support is a build-time option that’s disabled by default, but I’m hoping that it will be enabled by default, and available in the official binary builds of Ardour, before the final 3.0 release.

Ardour 3 SVN, running the Loomer Cumulus and TAL-Dub-3 native VSTs

As handy as this is, there has been some discussion about whether or not native VST support is a good thing. VST isn’t a particularly elegant plugin system, and given Steinberg’s licensing restrictions, it’s always going to be harder for the developers of hosts like Ardour to deal VST with than other plugin formats, such as LV2. I would hate to see this VST support discourage developers from working with LV2.

Realistically, though, it’s hard to expect commercial plugin developers to embrace LV2, on top of the effort already required to bring their plugins across to Linux. Indeed, now that Ardour has joined Qtractor and Renoise in supporting VST plugins, the size of their combined user bases might encourage more plugin developers to offer Linux support.

I hope we’ll see more ports of open-source Windows VST plugins too, but for anyone developing a new open-source synth plugin, or working on a plugin version of an existing standalone synth, LV2 makes much more sense. Regardless of how open-source they may be, VSTs that rely on Steinberg’s headers will never be allowed in to distributions. With David Robillard’s new LV2 stack, which is already in use in both Ardour and Qtractor, LV2 is a fast, reliable, and highly capable standard, and its use will only increase, regardless of what happens with native VST support.

new track: move along

This track has been a long time coming, but it’s finally done! It’s my first original track with lyrics; it’s about leaving my job after so many years there, though I wouldn’t read too much in to the words. It’s certainly a departure from my usual electronic stuff — this has just piano, bass, drums, and vocals — so I’m keen to hear what people think of it.

You can download or stream it below, or at Bandcamp. Some production notes are under the cut.

mp3 | ogg | flac | 3 minutes 47 seconds

Continue reading

approximating realism: drumming with linuxsampler

It may be the silly season, but I’ve still had plenty of time to work on a new track. It’s coming along well I think, but it’s been quite a challenge, mainly beacuse it’s a very “back to basics” track, with a minimal, piano-based arrangement. You’d think that would make things easy, but it’s quite the opposite! With just a few instruments in the mix, the quality of the performances and mixing, and the authenticty of the sounds, will be paramount. With Pianoteq taking care of the piano, the drums have been my main focus so far.

My first instinct was to load up Hydrogen, sequenced from Qtractor, with one of the few big Hydrogen kits around. The Big Mono kit from Analogue Drums sat nicely with the feel of the track, but they’re recorded in mono (as the name suggests), and they have a lot of room sound, too. They also push Hydrogen hard — with 210MB of samples loaded, it needs 400-500MB of RAM to run. If I wanted to go with even better sounds, Hydrogen wasn’t going to work.

The answer, then, was LinuxSampler, which laughs heartily at gigabyte-sized sound sets. I took the plunge and spent a whole $25 on another Analogue Drums kit, called RockStock — it has more drums than Big Mono, and they’re all recorded in stereo, with separate close mic and room mic recordings of each. Thanks to some third-party SFZ mappings, it works beautifully in LinuxSampler, and despite having 870MB of samples, it uses just 200-300MB.

One question in using LinuxSampler that I haven’t quite answered yet is how I’m going to mix it, since there’s no way to get separate per-drum JACK outputs from it. You can load the same sound set in to LinuxSampler multiple times, though, with little additional overhead, so there’s nothing stopping me from loading RockStock five or six times for each of the different drums I want to use. Those separate instances can then be routed to separate JACK outputs. I just need to make sure that I split my MIDI drum tracks up in the same way.

I have some basic drum parts written, using just two groups of drums (kick/snare/toms, and hats/cymbals) routed to two instances of RockStock in LinuxSampler, and it’s sounding pretty good — not quite there, but hopefully not too far off. With more attention to detail in the programming (it feels like I’m slowly learning the drums, just without the drums!), and some appropriate treatment in the mixdown (EQ, compression, etc.), I think I’ll be able to produce some solid, convincing drum parts.

playing with pianoteq play

I’ve mentioned Pianoteq in the past, and I’ve played with several demo versions over the years, but now I’ve finally taken the plunge and bought a copy. Pianoteq boasts great Linux support, and its new entry-level version — Pianoteq PLAY — is just 99€, but why is it worth buying when I could use (and indeed, certainly have used) the Salamander Grand Piano for free?
Continue reading