My lizard is the Lizard of Music
In my first update on this project, I revealed the completed soundtrack for Lizard. I thought it would be a good subject to revisit again, this time going into more detail about what it's like to write music for the NES.
The soundtrack is available for free download on Bandcamp, or as an NSF/NSFe file you can play with an emulator or NES music player:
It is also accessible in the game. Originally you had to sort of enter a cheat code to get to it, but I've since added a little options menu at the title screen if you press SELECT.
On top of these basic sounds, you can change their parameters over time. The most important of these is volume, which lets you control the envelope of the sound. For instance, a saxophone tone holds a steady volume, but the volume of a piano note starts loud and quickly becomes quiet. You can control other parameters like pitch and pulse width over time too. All of this together gives a lot more versatility to the instruments you can make:
Lizard will not use recorded samples. The main reason is that recorded sounds take up a lot of space in ROM and that space is precious, but it has some other unusual complications because there are a number of "broken" things about the way NES sample playback works.
When I really got to know the NES hardware, there were a lot of things in it that felt like an experiment to me. Most of its contemporary video game machines used pre-existing sound chips, often made by Yamaha, but the sound of the NES is custom made. It's hard to find a fair example comparing different systems of the time, but listen to this excerpt from the Sega Master System version of Bubble Bobble (1987) then the NES version, both by Tadashi Kimijima:
Both of these are using a simple two part voicing, but the SMS is really limited in the timbres it can produce. It only has one width of pulse wave (the 50% width known as a square wave), and the lack of variety of timbre produces a much more crowded orchestration. That triangle bass of the NES, on the other hand, gives the other line room to breathe, and having different pulse widths contributes a lot to the "call and answer" part of the melody here.
Of course, I said it's hard to find a fair example. The Atari ST had a sound chip that was similar in capability to the SMS, but its port of Bubble Bobble had a very rich and heavy orchestration made by Tim Follin.
My point here is that the capabilities of the system are really just one part of the music, and there's a lot more to how it sounds besides just this.
NES instrumentation is a very big topic, but I don't want to make this update just about that, so I'll leave you with a link to some excellent videos made by explod2A03. This first video briefly explains the NES sound channels, but the second link is a playlist containing several videos on this topic.
youtube video: NES Audio: Brief Explanation of Sound Channels
- youtube playlist: NES Audio explained by explod2A03
Theme and Variation
When approaching a soundtrack, or any coherent collection of music, I want to have something that ties it together. Each piece of music should sound like it belongs with the others. There are a lot of different ways to accomplish this: you could use a consistent instrumentation, or a limited palette of harmony, for example.
I especially like how different in character the Ghost House variation is, yet its melody is still recognizable.
There's a lot of theme and variation examples I could list at this point, but I'll just share two more of my favourites in case you want to listen to them later:
- Black Tiger - Tamayo Kawamoto (Arcade, 1987): youtube video: Complete Soundtrack
- Sonata in B Minor - Franz Liszt (1854): youtube video: Vladimir Horowitz performance
Lizard has a single theme that appears in some form in every track. Its most complete and straightforward version appears in the Maze Zone:
In the Marsh Zone it becomes part of a harmonic accompaniment to the bass line:
In the opening of the Mountain Zone the theme has been reduced to just the first three notes, obstinately repeating over and over against the other voices:
The complete theme heard in the Maze Zone is only used in a few places. Usually it appears in more fragmentary versions; often just those first three notes. That D G A motif becomes very important by itself across the soundtrack.
Every track in Lizard has an expression of this theme in some form, or sometimes in multiple forms. You can go looking for them, if you like, but it's not intended to be an easter egg hunt. My real hope is that subconsciously it will breed familiarity between the pieces, despite their variety of character.
Channels and Harmony
The NES can only produce three tones at a time: two pulse waves and the triangle wave. Despite this, I almost never think of these three hardware channels as equivalent to three "voices" in my composition.
This is one of the reasons I tend to work on music on paper and at the piano for a while before I approach the NES itself. I first write harmony with as many voices as I feel is necessary, and then later I try to figure out how to express it within the NES' three channels.
Returning to the Maze Zone excerpt from before, the original concept has 5 voices: 1 theme, and 4 harmony parts.
Here's how I ended up orchestrating this on the NES, broken down by channel:
The theme melody gets a pulse wave channel by itself. The second pulse channel takes on 3 voices by seperating them into rythmic groups of 3 notes. The triangle covers 2 voices, one of these is a redundancy with the pulse notes but it helps distinguish that line of the harmony.
Notice also that in the groups of 3 in the pulse, each note has a different instrument. This is also to help separate the original voices from each other, and create a thicker texture overall that feels like more than just "three channels". Here is how they sound together:
Sometimes I will even use two channels to represent a single voice. The first half of the Palace Zone is a one voice idea, which is played on one pulse channel, but I put the other channel to use as a quieter echo of the first one.
Using a single channel:
Using a second channel for an echo effect (emphasized):
On the other end of this spectrum, occasionally I want to cram a great many voices into a single channel. In the Void Zone, I wrote a repeating cycle of harmony with 11 voices:
On the NES, this was realized as a bubbling sound that quickly sweeps across 10 notes on a single channel:
Doing stuff like this is a bit of a trade-off. I'm representing more voices here, but the rhythm is very slow to get out the whole chord, and the notes are so fast their pitch isn't totally coherent, but that was the effect I wanted for this piece.
Playing the notes of a chord in sequence rather than simultaneously is more generally known as an arpeggio. It's a very common technique in chiptunes beause of this limited channels problem, and it's often done at rather extreme speeds (usually just called "arps"). There's another good video from explod2A03's channel on the subject:
There's a lot of ways to try and accomplish these things. One that I haven't mentioned is that you can just omit notes from a harmony, picking and choosing just the ones that make the most impact. A few years ago I made this arrangment of Kathy's Waltz by Dave Brubeck (Time Out, 1959), and I tried very hard not to resort to arps to capture his complicated harmony. I wanted to keep the texture very simple and clear, and it was quite an interesting challenge!
The main idea here is that the hardware may only have three channels, but that doesn't mean you have to compose with three voices.
Another thing that's important with the problem of limited channels is that sound effects have to share the same channels as the music. You may be familiar with how grabbing coins in Super Mario Bros. tends to interrupt part of the music.
I think it's important to compose the music with this in mind. In my game, I've made it so that sound can only preempt either one of the pulse channels, or the noise channel. This leaves me with two "core" channels, the triangle and one pulse, and I tried to make sure all the music in the game still "works" with just those two channels alone.
Marsh Zone, essential channels only:
Marsh Zone, all channels:
Sound effects themselves tend to be like very short, very fast compositions. Slowing a few of these sound effects down should give you a pretty good idea of how they're made. Here's a few sounds from Lizard slowed down by 5x:
Hitting a switch:
Turned to bones:
In a previous update I described how space is limited when making an NES game.
Specific to the music, I budgeted 32 kilobytes for the entire soundtrack, music engine, and sound effect data. I've done my best to pack this to the gills.
I chose this budget for a few reasons, but it's also a relatively large size for an NES game. There are a few games with a bit more than that, but most had far less. Even a fairly late game like Startopics (1990) only had about 14k worth of music data. It blows my mind how an early game like Ice Climber (1985) somehow managed a few tunes in under 2k though! The most spacewise impressive NES music I've ever seen has to be Neil Baldwin's unreleased Erik the Viking soundtrack; I'm amazed by what he packed into just 14k.
The music engine code in Lizard is just shy of 2000 bytes. All the sound effect data is about 1200 bytes. The bulk of the information here is just the music data itself. Every note you hear takes up 2 bytes, more or less. There's other stuff too, like instrument volume sequences, etc. but really most of it is just notes.
To try and keep the size down, I use repeating sequences so that I don't have to store more notes every time it repeats. If the drums can play the same pattern a few times in a row, it only takes up space once and the rest are just repetitions of that.
So, with all the constraints I've mentioned already, I wanted to make 18 tracks for this game. I tried to have each last close to a minute before looping, and I wanted each of them to have two contrasting sections to help counteract fatigue from hearing the same stuff over and over. This left me about 1500 bytes for each track; some with a bit less, some with a bit more.
The Lizard soundtrack is very much shaped by trying to deal with all of these problems. Space is the biggest factor, I think. For comparison, here's a piece of NES music I wrote a few years ago, freely composed:
This used 21 kilobytes. It's like half my Lizard soundtrack packed into a single tune! Maybe I could have made all the Lizard music this detailed, but I would have had a lot less space left over for other parts of the game.
Sometimes people ask me if something I wrote was influenced by this or that other piece of music. Usually the answer is an easy yes, but really if I've ever heard it in my life: it's trivially true that I've been influenced by it. Anything I've written surely has a hundred things consciously borrowed from other music, and hundreds more subconsciously.
I'll try to give a few examples in my soundtrack where I have taken ideas from other music, and I can show a direct connection:
Note especially the similarity of that first chord. I'm sure I was using the rhodes preset on my piano when I was working on it, too.
I really liked this percussion and couldn't think of any NES game that had that kind of drumming, so I tried imitating it and really liked the result. Apparently I liked that falling "scream" sound too. It may have been a depiction of how you enter the Lava Zone by falling down into it from the top.
This is my favourite film soundtrack. The double chord hits and that mechanical marching texture translate directly into my track here. I love Ryuichi Sakamoto's rich harmony, but that was something I couldn't capture on the NES. For all those techniques I mentioned earlier, none of their inherent compromises seemed appropriate.
I've always loved this wailing siren from Toki's ice level. It feels like a sound effect, but it's really part of the music, and realizing that is probably why I often use funny noises in my music. The Amiga and Atari ST ports of this game had a lot of new music not in the original arcade game, and it's my favourite Atari ST soundtrack.
The left hand playing here is some fascinating combination of both harmony and melody, and I love the way it wanders. The right hand's contrasting chordal melody was also inspiration for how the theme was used in the Marsh Zone (see above).
I've slowed down this recording to emphasize the similarity, but also because in practice at the piano I've experienced this piece much more slowly than it's usually performed, which I'm sure has tilted my perception of how it works. (Recorded excerpt played by Ivan Ilic, available at IMSLP.)
Metroid II had several tracks of very quiet music composed of strange, sparse chirping and bubbling. I thought something like this would make a great way to lend importance to the lizard rooms, and the portal to each boss.
I don't actually remember thinking of Les Chants Magnétiques while working on this piece, but it's an album that I've spent a lot of time listening to across my life, and it might seep into everything I do. That bubbling synthesizer and clicking clocks seem like they must be a part of it.
The sequence where Dumbo gets drunk and has this wild hallucination of pink elephants still amazes me. It's a different context, but the little "hippety hoppity" motif clearly has crept into my boss music.
At some point I got it into my head that every game should end with a bossa nova. I think this idea might have been put there by Super Mario Bros. 3.
So... maybe it seems like I'm going out of my way to make myself look like a plagiarist, but I'm deliberately narrowing the context of these examples to make the correspondence clear. I think it's important to acknowledge my sources. I'm not someone who thinks he can invent the whole concept of music on his own. I make art first by studying and learning how to reproduce things that I like, then by taking those things and synthesizing them into something new. I view art largely as a transformation of the past into the present.
I constantly keep notes of musical ideas and they usually come while I'm listening to other music. I hear a small idea of sound or melody or harmony or whatever, and it infects me. I want to take that small idea and transplant it somewhere else, make it grow and become the focus of something new and larger, instead of leaving it where it was. I have a lot of these notes; I found them easy to come by once I knew enough about music to think analytically about what I'm hearing.
The much harder part is actually making the thing. The seed ideas are easy to find, but building it up, making something around it, solving the problems between the ideas, connecting them... all of this is difficult! It's even difficult to describe. It's really easy to talk about the influences, and the "big picture" ideas, but explaining subtle choices like how using G instead of A in some melody threads a needle of harmonic/rhythmic/motivic constraints... that's not easy, and it's most of the work, and it's the stuff that turns the basic idea into something of real value!
Sorry if all of that reads as a pre-emptive defense. If you want to burn me for stealing an idea from Kirby 3, I will confess to my crime. I'm just trying to show you how I work.
One the subject of showing my work, I mentioned in a previous update that I intend to make Lizard open source after the release. The soundtrack, though, is actually already available in source form:
These are all the FamiTracker files used to make the soundtrack. FamiTracker itself is a wonderful open source NES music editor. There's really no better tool for making NES music.
It was important to me that each area of this game have its own music. Aside from the variety and relief from repetition it provides, it serves some important gameplay functions for orienting the player. The areas of the game are interconnected, and you can tell if you've come back to a familiar place if you remember the music. I've tried to give a few subtle hints about secrets in the game through similar musical means.
Anyhow, making music is a big topic even if you're just restricting it to things relevant to the NES. I'd love to talk about counterpoint and harmony, tuning, structure, timbre, orchestration, chord voicing, ideas about theory and aesthetics... I'd probably like to just ramble off a big long list of music I like for you to check out, too, but I'm sure I've already indulged myself too much above.
Music is actually how I entered the NES development community. Specifically, through FamiTracker. I discovered this program in 2006, and I was excited to be given a way to write music directly for the NES. I had been interested in game music as much as other music since I was a kid, and discovering FamiTracker was just as exciting to me as the time I found a guitar in the basement that I never knew my parents had. It was a new instrument to explore!
I always liked transcribing music, partly just to study it in detail, but I also liked transforming it to new instruments, seeing how its ideas have to translate. For some reason the first thing I wanted to do with FamiTracker was to make an NES cover of the Pink Floyd album Dark Side of the Moon:
I came in through the door because of music, but after I started talking to other people in the community about it, I had more and more questions about the NES, and eventually I decided to get one and start programming it. Most of my work for the NES has been music related. I've got some other musical ideas I'd like to try out on the NES after I finish Lizard.
I'll end with a little progress update. The mountain boss is nearly finished, and that just leaves the final boss of the game as the only remaining major task. I can't believe how long I've taken to make this game, and I'm always sorry I've made all of you wait this long. Hopefully not much longer to go! Thanks for your patience and support!