Fuzyll


Hopelessly passionate husband, engineer, hacker, gamer, artist, and tea addict.


The Pwn Adventure Z Soundtrack

As I mentioned earlier, I worked with the Vector 35 guys this year on an incredibly awesome video game titled Pwn Adventure Z. This being my first time truly scoring a video game, it was quite the experience. Also, since PWNZ is an NES game, this meant me and my music production hobby had to time-travel 30 years in the past, too!

Before we start, here's the soundtrack on SoundCloud if you haven't heard it yet:

And here's the FamiTracker file if you want to see how it was made (which I'll be discussing below).

Preparation

When Jordan contacted me back in September to do the music, I was ecstatic! I've always wanted to score a video game, but I've been so daunted by the task that I've never tried it. I have an intense interest in music and composition, but I've had zero formal training outside of ~3 years of piano lessons and a few years messing with FL Studio (it was Fruity Loops back then). Yes, I provided music for the previous Pwn Adventure titles, but that wasn't quite the same - it wasn't all my music, and it was more of a "tech demo" thing compared to PWNZ here.

Anyway, I immediately went on a chiptune and fakebit binge, listening to tons of _ensnare_, mpegasus, Jake Kaufman, Kubbi, Chipzel, and a number of other artists. Jake Kaufman (Virt) in particular provided the largest amount of inspiration due to his work on the Shovel Knight soundtrack. I also listened to some zombie-themed things like the Plants vs. Zombies soundtrack for additional ideas on how I could make the game feel more like its namesake. This, combined with 20+ years of listening to video game soundtracks, left me feeling more confident that I could pull it off.

FamiTracker

Once I had some notes and ideas for what I wanted to do, I had to start doing it! That's when I realized my first mistake: The NES is 30 years old. It doesn't play WAV or FLAC or OGG or MP3 files...so how the heck do you actually compose for this thing?! Rusty informed me that I would need to use FamiTracker. I've messed with Renoise before, but I've never actually used a tracker. Guess I was going to learn!

FamiTracker
Action shot of FamiTracker!

FamiTracker is a lot like other trackers, but it's also special. It emulates the chips on a number of old game systems and provides you with the same channels that would have been available for anyone composing on those systems way back when. A channel, in this case, is a specific "voice" - something that can produce a note. Unlike a piano, though, each channel can only support one note/sound at a time (like a human voice).

I found an article about Jake Kaufman working with FamiTracker for the Shovel Knight soundtrack and used that, plus some of the demo tracks, to get my bearings. Figuring out the tracker interface didn't take me too long and I began to sketch out some of my ideas. Some of the stylistic choices used in chiptunes and old video game music aren't really a choice - they're work-arounds for the limitations of the system. Since you can't play a chord, for example, you have to use an arpeggio to rapidly play the notes of the chord one after another.

I was just getting the hang of using the 8 channels that FamiTracker has set up when Rusty crushed my hopes and dreams: You know all those fancy things Jake Kaufman did in Shovel Knight? Yeah, well, I couldn't. The cartridges we were going to be flashing the ROMs to would only support US NESs, which don't support the MMC5 chip. A week or so later, he would also inform me that I couldn't use the DPCM channel either. Memory constraints on the main bank were shaping up to be tight enough that I wasn't going to be able to store any samples there.

If you're unfamiliar with the way the NES works, the above constraints are pretty limiting on composition. Without the added channels from the MMC5 chip or the DPCM channel, I was left with only 4 channels:

  • 2 "pulse" channels
  • 1 "triangle" channel (which doesn't support volume changes - it's either on, or it's off)
  • 1 "noise" channel (this literally only produces white noise - no tones)

This meant that I not only couldn't make deep compositions like those in Shovel Knight, but I also couldn't have interesting sounds like the sick bass in The Office Theme from Gremlins 2: The New Batch. Lame!

Composition

Let me tell you a secret: I don't actually play an instrument and can't read music. So, in addition to being very limited in what sounds I could make and how many of them I could have playing at once, I had another, more personal, problem: How do I get the sounds out of my head and into FamiTracker?

I started by simply messing around with notes, but that was pretty tedious and often caused me to forget the melody I'd come up with while trying to put it in. When I've done work with FL Studio in the past, I've always moved notes around until they worked out - not easy to do with a tracker. Eventually, I settled on a slow, but reasonable solution: Whistling notes into my Korg CA-1 chromatic tuner.

Korg CA-1
My composition helper!

Yes, I admit it: Every part of every song in the soundtrack was, at some point, whistled into this tuner so I could plot the notes out properly in FamiTracker. Sad, yes, but it worked!

Once I had my workflow down, all that was left was to compose. I quickly decided that all the "drums" would need to be in the noise channel (there's no other good use for it, aside from sound effects). I also decided that the "bass" should be in the triangle channel (not being able to vary the volume of the bass mattered less). This left the two triangle channels for the actual melody.

It turns out this is more-or-less what NES composers did anyway because, when sound effects play (which generally use the noise channel and/or the triangle channel), the corresponding "instrument" in the music will cut out (since the sound effect "steals" their channel). Melodies are usually the most important part of each song, so saving the pulse channels (which are rarely, if ever, used for sound effects) works perfectly.

Once I knew what was to go where, I also had to create each of my "instruments". There are a few settings we can mess with on each "instrument" to get different sounds:

  • Pitch - This is the note we're playing (which we can shift up/down, if we want, after it's been played)
  • Volume - This is how loud the note is (each channel supports values between 0-15 except the triangle channel, which only supports 0 and 15 for on and off)
  • Arpeggio - If we want a note to rapidly shift between a few different pitches, you can "macro" that in here
  • Duty Cycle - The length of time between each pulse (see here - only available for the pulse channels)

FamiTracker's Instrument Editor
The NES doesn't have many options for instrumentation.

I won't go into how I created each instrument, but you can check the FamiTracker file above to see if you want to see how each worked.

Once I had my instruments, it was time to compose! There's actually not a whole lot to say about this part...I just hummed and whistled things until I got something that sounded okay, then plotted the notes out. For each area, I had a general "theme" in mind and tried to think of all the things I'd heard in similar situations in other video games. So, the town's theme is a bit more up-beat than when you're spelunking around in caves and the forest theme is a bit more "mysterious" than when you're fighting the final boss, Patient Zero.

Forest theme in FamiTracker
Just look at how mysterious and intriguing the forest theme is!

Finale

Unlike a modern release, there's no mixing or mastering steps for the NES. What you see is what you get! So, when I was all finished with composing the music in FamiTracker, my part in Pwn Adventure Z's development was finished (aside from the few odd sound effects and some art direction on doorways and steps that I helped with, anyway). The rest of the music work was handled by Rusty. I'm a little fuzzy on what this entailed, but I believe he simply had to export my music from FamiTracker as a .nes file and run it through his magic script to get everything working with his sound engine.

After having done this, I've decided I need to spend some time learning to recognize notes by ear before doing it again. Thanks to life's usual interruptions and my spending so much time preparing my workflow, I only had about a month to compose everything from start to finish. Being able to simply plot notes out as I heard them in my head would have saved me a ridiculous amount of time and would likely have resulted in a far better product.

That said, for my first ever game score, I don't think I did too badly. The songs I wrote won't be instant classics in the way that the Mario Bros. theme is, but I think they'd stand up reasonably well to other early NES games. Not having DPCM was a huge limitation, too, because that's how a lot of later NES games expanded the available sound range their composers had to work with.

Anyway, I had a ton of fun putting all of this together. I was honored that Vector 35 chose me to provide the music. Hopefully they, and others, would work with me again!