Part 6, Transforming Our MIDI Files to Fit the Banjo-Kazooie Soundfont

If you didn’t start with Part 1, So You Want to Add Custom Music to Your Banjo-Kazooie Romhack, I highly recommend you start there first as it provides context and download links to what we’re using here.

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

If everything up until now has felt a bit technical then consider this the creative side of arranging! Now is when we put all of this prep work to use and jump right in with arranging our midi to fit the Banjo-Kazooie soundfont!

Note: While this is the ‘fun’ part, I will still that advise you frequently consult Part 4. Also, if you’re still not hearing the BK soundfont by this step, then I highly encourage you to double check your work in Part 2.

From here on out, I’m writing this from the perspective that we’re both working under the same software conditions.

1. Using Sekaiju, open up the midi file of the music you’d like to put into BK. Delete any unused tracks as talked about in Part 4.

2. Jot down how many channels your custom midi use. Is this equal to or less than the channels available in the level you chose to replace? If yes, then you’re cleared to move on to the next step. If no, then you’ll either have to recompose/rearrange your piece or find a different level of the game to use it with (see Part 5.)

3. Going in order, change the Input/Output Channels of each track to fit the needs of the level we’ll be using. Remember not to use channels that are reserved for dynamic zones or unused by the base game.

4. Press play to hear how your track sound is probably going to sound weird but none the less is our next step in arrangement. Exploring the BK soundfont is crucial for creating the best sound possible. Since my goal is to recreate Zora’s Domain theme from Ocarina of Time, I’m going to pull up a video of it on YouTube to listen to while I thumb through different instrument combinations.

A lot of times when doing ports of songs like this, I experience an uncanny valley effect in my ears. The song I arrange will be so similar to the first but slightly off and I just can’t hand it. This is where creativity comes into play! Sometimes it’s overhauling the instrument selection, other times I have to write supplementary melodies that weren’t found in the original. Usually a mix of these two techniques is what I think sounds best but I definitely would encourage anyone porting songs to experiment with changing traditional tunes up a fair bit. At the very least, you’ve given old fans something new to consider!

To supply anecdotal evidence as to what arranging a piece often calls for: in the original song, Steel Drums are the defining instrument and are often rolled. However listening to that voice carried by the the BK steel drum just isn’t the same experience — this induced the uncanny valley affect.

In response, I let the steel drum take melody and gave the roll to the marimba. Out of the gate, it provided a much better sound. Additionally, I increased the reverb and pulled the length of each note out twice as far without overlap. As for the core sound, I had found what I was looking for.

However the drums for this project were rooted in a different drum kit than the one Banjo-Kazooie provides. If I tried to keep every drum sound in a single channel, this song would sound more like a rock ballad than the diegetic ambiance of an aquatic species’ livelihood. This is where having extra channels came in handy.

Inside the one drum track OoT used were several different drum types. With my extra channels. I was able to cut 3 distinct drum notes out and give them their own channel with a drum tailored to the original experience.

The remaining sounds that I couldn’t pick out by ear got a 4th drum channel, African Logs, all to themselves. I chose this sound because I didn’t know what sound the notes went to and when I layered them ontop of a pitched, muffled drum, they added a tiny bit of warmth without disrupting the song.

Lastly, I wanted to make an underwater theme. To do this, I took the two most prominent voices — the pan flute and steel drums — and copied their notes to two new tracks. Before I saved my midi file, I made sure these new tracks were set to my underwater channel and turned back on all of the over world tracks I turned off to preview the two channels.

4. When you’ve determined your song is complete, it’s important to identify its loop point. If your song doesn’t feature any sort of an opening then your loop point is zero. If you’re song DOES have an opener (like mine) then you have to find find the exact point the loop starts and calculate the ticks in between the opening an that point.

Since I’m working with 96 Tick Per Quarter Note in 4:4 time, calculating my loop point took no time at all. I’ve determined my loop point to be 6 measures and 3.5 deep into the song. With one beat holding 96 ticks and one measure is four beats, here’s how I can calculate how many ticks my loop point will be:

Easy enough, my loop point is 2640. To remember that number, I put it in the title of the midi after I saved and renamed it. Please note that 2640 is just my loop point. If you want one of your own, just count how many beats and measures must pass before you reach the point in your song that you want the end to loop back to. A formula for this can be found below.

In no time at all, we were able to take a midi from one game and re-imagine it inside the sounds of another. Only one last thing to do and that’s load it into our rom and make sure everything works.

Part 7, Importing our Midi into BK using Banjo’s Backpack

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7