This is a slightly extended version of the post on the Passing By Devlog. Also check out their other posts! 🙂
Since almost three years I’m involved in the development of Passing By, a beautiful little 2D adventure game, as the producer of the game’s score. Being used to creating “regular” music (see my website or SoundCloud) and knowing a very fine selection of aspiring game developers, I always wanted to try out dynamic game music myself. As it turned out to be great fun, I’d like to tell you a little bit about my work in this post!
The approach
There are many different approaches to game music, ranging from synthesizing everything live based on the game flow, to just looping a single track all over. While I love programming as well, my approach to music has always been playing instruments, so I settled on something in between: I compose and record music into a linear “narrative” progression first. Then I split it into different blocks and layers, and have software recombine it during gameplay into an ever-changing score. May sound like a weird way to do it, but it just feels natural to first create some tracks and go on from there. Also, as a byproduct, I’ll end up also with a set of full songs which I want to release as a small album later this year.
Step 1 : the raw material
Starting with piano, I picked up quite a few instruments over the years – for Passing By I record piano, clarinet, bassclarinet, tinwhistle, lowhistle, guitar, mandolin, ukulele, e-bass, cajon, darbouka and shakers. Of all these instruments, the smallest and cheapest one (10€) seems to be the main character. My tinwhistle, already bent and scratchy from carrying on travels, plays the main melodies in the meadows biome and has been described by the jury of the German Computer Games Awards as a main protagonist of the whole game 😀
Additionally I use a few software-based instruments: a string section (violin, viola, violoncello, double bass), giant taiko drums (of course), mallet instruments (vibraphone, marimba, glockenspiel), trombone and synthesizer. All these instruments, combined with the fact that there are five biomes in the game, every one of which desiring its own soundscape, leads to the heaviest Ableton Live project I have ever made. And it isn’t even finished…
Step 2 : slicing into blocks
By splitting my material into blocks, those can be sequenced at random, obtaining a much greater variety from the same length of music audio. To increase this even further, I export certain groups of instruments individually as layers (orchestra, melody, band, percussion). Using the same tempo and chord structure I can even have multiple alternatives for each layer&block that can be recombined! In the image you see some blocks and how they could be resequenced together, each with a little extra “tail” at the end, which will overlap with the next block to create seamless transitions.
Step 3 : programming
We use a dedicated engine for all audio called Wwise. It also handles all sound effects and gives game developers great tools to create dynamic, spatial soundscapes. For interactive music, I can specify which blocks in which combination are heard in each biome, whether in flight, on islands, or in between, and also have them respond to anything else in the game if I wish. Wwise handles the overlapping blocks, and merges them back together into a continuous, coherent soundtrack, with enough randomization to squeeze the most variability out of my material. I wrote about randomness in Wwise in another blog post.
The result
As I am still actively working on the game’s soundtrack, the end result is not published yet. This will happen later this year, probably in summer. Until then you can catch a glimpse of Passing By, containing a preview of the full music, in the Prototype, which at least was good enough to win two bigger German game newcomer awards already! The soundtrack there already contains dedicated melodies and sounds for each of the five biomes but if it ever may feel a little repetitive, bear with me – it’s only a prototype, and there’s more to come 🙂