Happy New Year, you gorgeous internet. Have you lost weight and/or become more educated and wealthy? You look sexier/smarter/richer. I guess your resolutions for the new year are really paying off. Good on you.
A couple of weeks ago I got all navel-gaze-y about making music, lamenting that my skills are writing prose and code, and not wasting my time with music that I barely understand.
But allow me to argue with me-from-two-weeks-ago: Ten years ago my only skill was coding, but then I wrote a book. Not because it would make me money, but because that’s where my creativity was taking me. A few years later I branched off some more, and it lead to this website. I seem to have pretty good luck with doing whatever seems fun at the moment. Not all of my projects pan out, but I certainly shouldn’t refuse to do things because I’m new to them. If I followed that line of reasoning I wouldn’t have any of the hobbies that make me so happy today.
So I’ve been learning about music. It’s a big topic. It’s probably just as big and complex as graphics programming, although it’s a little more gratifying because it probably won’t take you a couple of years to produce a single piece of work.
I’ve been hammering away on my own, making tons of crappy little tunes. I throw a lot of them away. (Most of them are stupid or boring or just don’t work.) But once in a while when I think I’ve done something good I upload it to my Soundcloud.
I’ve found myself getting stuck in a musical rut. My skills and knowledge have hit a plateau and all my stuff is starting to sound the same. All my stuff is built on a nice neat grid and each part is played by exactly one instrument that clearly begins and ends on rigorously enforced borders. I build my songs on top of predictable repeating chord patterns where each chord is of the same length. I’m becoming very mechanical. Actually, I guess I just started out being mechanical and I’m failing to break out of it.
This is the point where a reasonable person might seek out a teacher or mentor. But personal interaction is slow and I’m stubborn and set on learning everything on my own. To be clear, I’m not saying this is always the most optimal way of doing things. But it is the most convenient. (Also the best way of turning the project into blog posts.)
So my plan is to take some game soundtracks that I love and try to emulate their style. If possible, I’ll get the MIDI version and tear it apart to see how it was constructed.
A MIDI file is just a collection of notes, with no sound data. Stuff like, “Push middle C really hard for 3 seconds, now push D4 gently for one second”, or whatever. The notes are divided into channels. The midi file says what instrument the channel is using (French horn, acoustic guitar, grand piano, bongo drums) and then what notes to play on each channel. But it doesn’t say how those instruments should sound. That’s up to your soundcard to figure out.
It’s a bit like web pages: The same raw HTML will end up looking a little different on Chrome, IE, Firefox, and Safari. And someday that HTML might look completely different on some browser in the future. On the upside, it makes the data very compact. Raw HTML text is going to be incredibly tiny compared to a screen capture of the webpage, and a midi file – being just a collection of button-presses – is really tiny compared to an MP3 of the same music.
So my plan is to:
- Listen to a videogame soundtrack that I like. If possible, I’ll look at the music itself.
- Identify whatever stylistic quirks give the music its identity.
- Try to capture the style in my own work. Ideally, I’d like to make a song that could be dropped into the original soundtrack and sound like it belongs there. This is ridiculously ambitious (spoiler: I’m not going to succeed today) but that’s fine. I’m still at the point where I can learn a lot through failure.
- Assuming I produce something that’s not horrible to listen to, I’ll post it here and talk about what I learned. I’m probably not going to post my disasters, just because I don’t want to upload horribleness to Soundcloud.
So that’s the project. My first subject is the Doom soundtrack. Now, it’s widely known that the Doom soundtrack is very heavily influenced by the metal tracks of the day. Some people even say the songs are rip-offs. And when you compare them side-by-side, the similarities are pretty striking.
I dunno if I want to call these tracks “rip-offs”. Especially since the whole point of this project is to do the same dang thing myself. I’m moving into a brand-new glass house, so now is a terrible time to start throwing stones.
But whatever. This is a good place to start, because the Doom songs are kind of simple, the MIDI files are freely available, and I’m already familiar with the material. So let’s focus on one song and see what we learn:
This is the music from level 8 of the original Doom. It’s the point where you get to the end of the first episode and you fight the two Barons. It’s my favorite tune from the game. Sometimes I’d just hang around at the start of the level and listen to the music.
Note that the video is a very faithful version of the song. There was this awful craze in the late 90’s of “wavetable soundcards” that replaced the old MIDI sound with sexy new sound samples that resembled real instruments. It was automatic. Just get one of these deluxe soundcards and all your games will sound better! That’s cool, inasmuch as the new stuff sounded much richer and less like someone trying to play rock music on a Nintendo, but it had the side-effect of ruining music that had been specifically engineered for the old MIDI. The sound levels would get out of whack and often the “real” instruments would have a completely different range compared to the originals. The song would be unrecognizable, and occasionally even intolerableI had a soundcard in the late 90’s that just ruined the Descent music. It was awful.. I was really glad when we all moved to MP3 for our music needs and sound cards stopped trying to “improve” old music.
So my first step is to take the MIDI music of E1M8Apparently it’s actually titled “Sign of Evil”. I have no idea how you could know this in 1993. It’s not like games had proper credits. and go over the patterns. I tear it apart and rebuild it in MAGIX. I won’t bother posting the result. It’s just the same song with more robust instrumentsI actually have a terrible time tying to replicate those old MIDI instruments in MAGIX. and a bit of minor fiddling. This is the equivalent of tracing a drawing made by a professional. It’s still educational (particularly at beginner levels) but it’s not original work.
But then I took what I learned and tried to make something that has the same mood and style, but is an original composition. I did this by selecting similar instruments, and making something in a similar key with similar tempo:
This one isn’t really a success in my book, because it’s a bit too on-the-nose. I used an overdriven guitar playing super-long notes, followed by little bursts of short notes, backed by a string-ish instrument that plays octave-spanning chordsTake a regular chord, but drop one note an octave and raise a different note an octave.. It’s more a copy of a specific arrangement than a style.
Stuff I learned:
- The E1M8 song has this one instrument that JUST plays friggin middle C, over and over again, throughout the entire song. I would never have thought to do that. It sounds like a dumb idea, but it works. For some reason.
- If you have to repeat a chord several times in a row, it’s good to make the chord jump around on the scales a bit. Maybe pull one note down an octave and another one up an octave. Then flip those around. The longer you’re going to repeat a chord, the more versions of it you’ll need.
- The pitch wheel! I never knew what that was all about. It’s this extra control that lets you “bend” notes, basically throwing the MIDI instrument out of tune. You can only move up or down a couple of notes, but if you’re careful you can make some cool sounds. It’s really useful to do this for long notes. Holding a middle C for an entire measure is kind of monotonous. But if you hit (say) D and then quickly pitch bend down to C, then back up at the end, it can sound really cool. You can hear it in both E1M8 and in my song, during the long guitar notes.
So that’s the project. Assuming all goes well, we’ll do one of these every week in January. Soundtracks I plan to tackle: Deus Ex, System Shock, Descent, Half-Life.
My goal is to make at least one tune that could be dropped into one of those old soundtracks and not sound out of place. It’s a pretty audacious goal, I’ll admit. The only way to know for sure if I’ve succeeded is to post the work here and see how everyone responds.
 I had a soundcard in the late 90’s that just ruined the Descent music. It was awful.
 Apparently it’s actually titled “Sign of Evil”. I have no idea how you could know this in 1993. It’s not like games had proper credits.
 I actually have a terrible time tying to replicate those old MIDI instruments in MAGIX.
 Take a regular chord, but drop one note an octave and raise a different note an octave.
The plot of this game isn't just dumb, it's actively hostile to the player. This game hates you and thinks you are stupid.
C++ is a wonderful language for making horrible code.
Are Lootboxes Gambling?
Obviously they are. Right? Actually, is this another one of those sneaky hard-to-define things?
The Gameplay is the Story
Some advice to game developers on how to stop ruining good stories with bad cutscenes.
A programming project where I set out to make a gigantic and complex world from simple data.