cosplay mystery dungeon: sound design for a seven-day roguelike

I’ve spent the last week working on a game for the Seven Day Roguelike Challenge with Switchbreak and Amanda Lange, and by virtue of the fact that it’s a seven-day project, it’s now finished! It’s called Cosplay Mystery Dungeon, and you can play it here (if you have Flash installed).

screenshot

A week isn’t long, but I’m really impressed with the finished game — Amanda did great work on the art and the game design, and Switchbreak put a tonne of work in to the code. Here’s how my part of it all came together.

Getting in with the right crowd

It all started innocently enough, with a tweet:

Once Switchbreak was involved, it wasn’t long before I jumped on board, too. Amanda came up with the concept and had written up a lot of notes about the design, so I had a good idea of what sounds would be needed, and what they should sound like, from the get-go.

Early in the week, I worked on the basic player and weapon sounds, making a few versions of most of the weapon sounds to avoid any annoying reptition. The magic effects came later; Amanda’s design included various spells, in the form of collectable comic books, but with the deadline looming I wasn’t sure which of those would make it in to the game. As it turned out, Switchbreak managed to implement them all in the closing hours, so my last hour-or-so was a race to create the matching sounds.

The sounds were a mix of synthesis (using both my Blofeld and Loomer Aspect) and recorded sounds. Some used both synthesis and recording, in fact, such as the lightsaber — after reading about how the sound was created originally, I created a suitable humming sound, played it through one of my monitors, and then swung my mic back and forth past the speaker, recording the results.

Music in a hurry

I hadn’t planned to write music for the game, but it felt so odd without it that, with less than a day left, I decided to take a stab at writing something. I’ve written short pieces within hours for past Switchbreak games, but they’ve been much smaller than this. A run-through of Cosplay Mystery Dungeon can take an hour or more, not to mention the time spent on unsuccessful attempts, so the music needed enough length and variety to carry it over a longer playtime.

I started with the bass line and fast-paced drums, and I knew from the start that I wanted to add a later section with slower, glitchy drums, so those went in early, too. Soon after I nailed down the chord progressions and structure, and started filling in the melody, pad, and stabby brass lines.

This is what an all-MIDI, all-softsynth Ardour session looks like

This is what an all-MIDI, all-softsynth Ardour session looks like

As with my RPM Challenge work, I worked quickly by sticking with MIDI (no bouncing to audio), using softsynths instead of hardware, and mixing on-the-fly, with minimal (or none, in this case) EQ and compression. Synths do let you cheat a bit — if you find that a part is too bright or too dull, or needs more or less sustain, you can just edit the synth patch (tweaking filters and envelopes, for example) instead of using EQ and compression to fix those things after the fact. You can’t solve every mix issue that way, but I find that I can get a perfectly decent, listenable mix that way more quickly than I could otherwise.

All up, I think the music took about 5-6 hours to record, with another half-hour or so after that creating musical cues for the endgame screen and the game over screen, using the same instruments. That left me with just enough time to finish the magic sound effects before the deadline.

Loomer Aspect and Sequent earned their keep, alongside open-source plugins like Invada Tube and the TAL and Calf delays

Loomer Aspect and Sequent earned their keep, alongside open-source plugins like Invada Tube and the TAL and Calf delays

Loomer Aspect really paid for itself on this one. I used TAL NoiseMaker on the chorus lead sound (it’s a modified preset), and the Salamander Drumkit with the LinuxSampler plugin for the drums, but every other sound came from Aspect, mostly using patches that I created on-the-fly. For such a capable synth, it’s surprisingly easy to program — everything’s laid out in front of you, and it’s fairly easy to follow. It lacks the Blofeld’s distortion options, but using distortion plugins in Ardour (TAP TubeWarmth and Invada Tube Distortion) helped address that.

I also had an excuse to use Loomer Sequent — it provided the glitch effects on the drums in the slower section. The presets were all a bit too random to be usable on such sparse parts, so I edited the effects sequence in Sequent to match the parts, adding just a bit of randomness to its loop-slicing parameters.

This was the first track I’d recorded since the official release of Ardour 3, too. It worked really well — it was stable, reliable, and predictable throughout, a definite improvement on the betas. If you haven’t tried it yet, now’s definitely the time!

sketchbook: aspect and sequent

I got two great new studio toys for Xmas: Loomer Aspect and Sequent. This sketch is a quick demo I made while getting a bit of a feel for them both. Loomer’s plugins are all available as native Linux VSTs (as well as Windows and OS X), so they work well within Ardour 3.

Aspect is an analog-style soft synth with hugely flexible modulation options — it’s very easy to route its modulation sources, including three envelopes and three LFOs, to a wide variety of parameters, which gives you a lot of creative power. My favourite feature so far is its unison control, which lets you use up to five voices for each note. The coolest part of this is that the unison depth is a modulation source, so you can, say, route the unison depth to the pan control to spread those voices out across the sound stage, or route it to oscillator pitch to create massive detuned sounds.

It’s not as flexible as my Waldorf Blofeld, but Aspect is far more flexible than TAL NoiseMaker while remaining quite approachable to program. My RPM album really taught me the benefit of having synth plugins to use; now I’ll be able to do a lot more in-the-box, saving time and effort.

Sequent is an entirely different beast, and it’s not the easiest thing to explain — the simplest description is that it’s a multi-effects module that lets you sequence the parameters for each effect. It can create rhythmic delays, pans, and distortions, but perhaps its most versatile effect is the looper, which lets you slice, reverse, and loop the incoming audio to produce all manner of glitchy, stuttery effects. You can sequence everything precisely, or use any degree of randomness that you like, and it’s even MIDI-controllable, which opens possibilities for live use.

Now, for the sketch. It’s based on an Aspect pad that uses a clock-synced LFO routed to the filter cutoff, giving it a rhythmic rise and fall (I tried this using MIDI clock sync on the Blofeld on an RPM track, but it didn’t quite work). On top of that, I’ve added some simple percussion, again using Aspect — the kick is one of the included presets, but the hat and snareish-thing are my own patches.

While the kick keeps time, the hat and snare are sent through Sequent to glitch them up. I used a Sequent preset for this, which operates mostly randomly — if I was using it for real I think I’d want to either remove the randomness, or record a bunch of random loops to audio and hand-pick the best ones.

As you’d expect, I recorded this in Ardour 3 — it’s shaping up very nicely right now, so I’m hoping we won’t have much longer to wait before the final 3.0 release.


mp3 | vorbis | 26 seconds

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.