News: New update and misc page added!

(NOTE: At the time this is being written the latest furnace tracker version is 6.3, and is the version I will be using for this tutorial. Depending on when you are reading this, information in this guide may be outdated. Please make sure to read the Furnace tracker wiki in the furnace repository to figure out if information in this is still accurate.)

Well, you’ve come to the right place. The GBA was a console released over 20 years ago, and it has had a place in my childhood, and I’m sure yours as well. Until Furnace allowed the ability to use a GBA sound driver recently, the only other way was to compile a whole sound driver yourself, or to hack one of the existing ones. Not ideal for music creation if I say so. BUT, We truly live in the future! And thanks to the amazing chiptune tracker Furnace (Check out here)you can just download it and make music right away!

I won’t show you how to use Furnace tracker. I would recommend going through the Furnace wiki, or watch a few YouTube videos. I will also be using this sample pack for this example on how to do stuff. (Download here) Despite being designed for SNES, it includes .wav files that are the perfect quality. Seriously check it out! Its great!!!

Setting everything up.

Now, you NEED to make sure you have the correct chip selected for GBA.

Image shows 2 chips called GBA DMA and GBA ModMini.

Now, GBA DMA is technically also a way to make chiptune on, the problem is that there are only 2 channels? What gives? Well, the GBA actually ONLY has 2 channels in its hardware DAC. Most of the GBA games you have played have a software audio engine (Otherwise referred to as Audio Driver) that is able to handle multiple channels, and funnel the data to play out of these 2 channels somehow. Instead select GBA MiniMod, which is a custom sound engine.

Once selected, you’ll see a whopping 16 channels! WOW! You will most likely never use all of them. I would recommend 8 channels or less as that is the most manageable in my opinion. Feel free to take full advantage of those 16 channels if you feel up to it though! I would love to hear someone make a song using all 16 to their fullest! Anyway, for the purposes of this guide, I will use 6 channels for fun.

Image shows channel tab in furnace with all but 6 channels turned off.

Now I would recommend going into the chip manager window and selecting the chip to show its options. I’ll quickly go through them, and explain the reason I have set them to these exact values…

Image shows chip settings menu with many options.
Option name What it does
Volume scale The volume amount.
Mix buffers As it states, it allows longer delays.
DAC bit depth The volume bit depth
Channel limit The channels that are able to be used, different from channels tab, and reduces CPU Usage.
Sample rate The sample rate that can be set to whatever.
Actual sample rate A quantized sample rate. May be different than sample rate value set.
Max mixer CPU Usage The CPU usage amount of the audio mixer/sound driver.

Now the most important things you’ll probably change here often are sample rate, DAC bit depth, and maybe mix buffers. The sample rate and DAC bit depth is the thing that (Along with the GBA’s less than ideal speaker.) gives the GBA that signature CRUNCH we all know and love. If you produce in more modern software, think if it like bitcrush. Its literally the same settings you’ll find in any standard bitcrush tool or plugin.

Now, as to why I chose some of the setting I did, I based my settings off one of the more common GBA sound engines. MusicPlayer2000 or “Sappy” as its also known as. This here details it more specifically, and here for TONS of more detail. Now comes the fun part, actually making the song itself! I will say one thing when it comes to this though, if you are following along step by step, I would highly recommend leaving a channel free for this next section.

Echo

Once you have your awesome song written out, you might notice it seems a little bit empty… Thankfully GBA MiniMod has an echo system!

  1. Make a empty instrument. The easiest way to do this is by selecting wave table synthesis instead of a sample.
  2. Set it to a very high pitch, and put it onto an empty channel (Remember what I said before?)
  3. Give it the effect 11xy. (x being the left and right seperation, and y being the delay) Also don’t forget to set the volume. Favorably make it less than the volume of the lowest instrument in the track.
  4. If everything is set up correctly, it should start playing the echo on whichever channel it has been placed on. Success! (At least if it worked for you, if it didn’t, repeat steps 1 to 4.)
Image containing a song with the first channel dedicated to echo with the correct settings.

The steps in full should generally look like this image.

Gameboy

Now, one of the other most well known thing about the GBA is its backwards compatibility with the original DMG and CGB Gameboy’s. Due to the hardware inside the Gameboy Advance that gives these features, the designers gave access to the original Gameboy audio channels when using the non-backwards compatible GBA mode.

I’m pretty sure the way this is handled internally within the Gameboy Advance is that the GBA’s CPU has a hardware recreation of the Gameboy’s audio processing, and lends that out during backwards compatibility mode? So the backwards compatibility mode actually doesn’t have much to do on the audio-side of things and its all handled in the standard GBA mode???? Hardware architecture is not my strong suit when it comes to computers, and it also none of this is in the scope of this write-up. (Read more about that stuff here if you want, this page is amazing and goes into so much detail! and here for TONS of more detail.)

ANYWAY, the point of all of this is that you can also use the Gameboy’s soundchip when making GBA music. I won’t go into detail about how the audio of the gameboy works, but

That Should be about it when it comes to making GBA chiptune music in Furnace. As stated before, I would recommend some good knowledge of Furnace and trackers in general before attempting something huge, but hopefully you all can make the most of this information! If anyone really wants an example file for gba music, I might provide one in the future, but I think if you follow along you can get the same result. And of course, read the documentation for Furnace. It really helps when figuring out what to do!