Introduction

I'll be honest, I've been eagerly waiting to write this blog for quite a while. For those of you who don't know, I recently published "Fly Swatter", my first Android game on Google Play. Being a lover of vintage games, I was always wanted to try composing vintage game music, and what better chance?

Research

Now, let's be clear about one thing: I wanted this music to be authentic. If I could somehow get the track onto an NES cartridge, the console should be capable of playing it! Obviously, that involves research. What better way to start than by looking up the audio specs of the NES console? Here's what I found:

The NES console supports upto 5 channels of mono audio:

One triangle wave

Two square waves

One noise generator

One DPCM channel

These channels should be familiar for anyone who's used a vintage synth, and if you haven't, well, they're nothing more than basic sound generator features. Sine waves, triangle waves, square waves, and saw waves are different types of basic wave forms that many sound generators can create. Noise generators simply create white noise (basically, radio noise) at a particular frequency. It may sound useless at first, but it comes down to your creativity. It's all about how you apply it. According to my research, the noise generator is mostly used for percussion! DPCM channels are used for transmitting low quality audio, usually voices over phone lines. In games, they're used for voice based sound effects (Zelda, anyone?)

One key point to note is that these 5 channels are responsible for ALL of the audio, not just the music. So when composing this song, I couldn't just let loose and do whatever I want. I decided to reserve one square wave and the DMCP channel for the (imaginary) sound effects, and compose using the remaining square wave, triangle wave, and noise generator. Now, enough of all this theory, lets get down to applying what we've learned.

production

ES P configuration

Being a Logic user, I simply loaded the ES Poly synth across 3 tracks, setting one to square, one to triangle and one to noise. Playing around with the remaining settings can go a long way in sound design, especially with the noise generator (that one took a very long time to get to where it is now).

I had initially planned to use the square wave as the lead, the triangle wave for accompaniment, and the noise generator for percussion, but since when do things go according to plan? It turns out that the triangle wave sounds much clearer at higher frequencies, so naturally, I used it for the lead instead of the square wave.

The rest of the process was mainly just....COMPOSING THE SONG (ironically, the one thing I hadn't really given much thought...till now). This was actually easier than I expected! I simply looped a basic tune for the accompaniment (4 bars) and improvised the percussion to form an interesting beat (15 bars).For the lead, I maintained a fairly constant rhythm and just jumped up and down across C major throughout the entire song!

Generally, with MIDI programming, you try to humanize all the tracks, purposely miss the beat by small fractions to emulate slips, and on the whole, just get it to sound like an authentic recording. For this project, I did the exact opposite: quantizing the entire song, use the same velocity for every note, and do whatever I could to make sure it sounded like it was coming from a machine. After that, I just adjusted static volume levels for each track, and that's it!

a job well done

So there you have it! That's how I composed this song. As much as I wanted to use it as the primary music in my game, it was a totally unrelated genre! So I decided to keep Flight of the Bumblebee composed by Nikolai Rimsky-Korsakov as the game play music (this is what I was using already), and used my 8-bit song for the menu. So that's it! After this little adventure, I went back to coding and finishing up my game, which, by the way, you can download from google play.