FAQs for GB Studio Music

Creating music for GB Studio can be difficult. For musicians coming from modern Digital Audio Workstations, using trackers can be a difficult switch of mindset. Even for musicians familiar with trackers, there are a lot of restrictions in using GBT Player that don’t mesh well with the traditional .mod composition process. This FAQ covers 7 questions that I’ve received the most from composers looking to learn more about GB Studio and GBT Player.

If you’re just looking for easier ways of getting music into your games, consider browsing the GB Studio Community Assets which contains free music that works in GB Studio.

Otherwise, if you’re still here and ready to learn more composing for GB Studio, then buckle up! This FAQ will cover the different types of files you can use, how to change song speed and time signature, and troubleshooting your compositions.

Can I use wav/mp3 files?

This is the most asked question I get about music in GB Studio, and I’m sorry to say, the answer is no.

Now, it is possible to play samples in a Game Boy game, but doing so is very intensive on the hardware. A great video on this topic is RetroGameMechanicsExplained’s video on Pikachu’s voice. Trying to play audio samples and keep the gameplay at a stable framerate requires a fair amount of control over the game’s code to ensure the game doesn’t crash or experience major slowdowns. We may eventually see sample playback come to GB Studio, but it will likely come with some restrictions, such as being reserved for cutscenes or for short 2-3 second clips.

What music files does GB Studio accept?

GBT-ready Mod files (they end with .mod) are the only file types that GB Studio 1.0 and 2.0 Beta will currently accept. These are files that were composed specifically for use in GB Studio. Luckily, with some editing work, you can convert other file types to a GBT-ready file. These file types include:

  • Standard Mod (.mod)
  • Extended Mod (.xm)
  • MIDI (.midi)
  • FastTracker (.ft – when exported as text)
  • FamiStudio (.fms – when exported as FastTracker text)

To convert FastTracker text, use ft2mod, a webtool by James Park: http://ft2mod.jamespark.ninja/

To convert .midi files, use midi2mod, another webtool by James Park: http://midi2mod.jamespark.ninja

There’s also ajbookr’s youtube video on manually converting midi files to mod for use in GB Studio using OpenMPT: https://youtu.be/Qz7z7yWn_5w

Unfortunately, converting random mod or xm files to a GBT-Ready file has varying success depending on how the original file was made. Some instruments can be tuned differently, so the note names will be transposed incorrectly. This is a process that’s more difficult to do and will be covered in a future article.

How do I change how fast my song plays?

To change your song speed, pick any channel, go to the effects column of that channel, and add [F05] to change your song speed to 5.

This number 05 represents how many frames each row should take up. Speed 05 uses 5 frames for each row. To make your song go faster, enter a lower number like [F01]. To make your song go slower, enter a higher number like [F09].

Can I use triplets/quintuplets?

Yes! For the musicians reading, you have to consider which subdivisions you want to use in your song. Feeling like writing triplets? Consider writing your melody with 2 empty rows between each note, so you have 3 rows-per-beat. Here’s what that would look like:

This example song is primed for triplets, just fill in the empty spaces to create triplets instead of eighth notes. If you want to use quintuplets instead of triplets, put 4 empty rows between each note, so your song adds up to 5 rows-per-beat.

When you run out of space, use a [Dxx] effect to jump to the next pattern. Just be careful to replace it with [B00] if you’re on the final pattern!

If you’ve composed a song for GB Studio before, you may have already used 2 rows per beat without realizing it. Here’s some examples of how to get different subdivisions when composing.

Number of rows in a beat Smallest Subdivision Available
1 row per beat Whole Notes
2 rows per beat Half Notes
3 rows per beat Triplets
4 rows per beat Quarter notes
5 rows per beat Quintuplets
6 rows per beat Sextuplets

Try out composing songs with different numbers of rows between each note, then try to add notes in the gaps and see how it sounds!

Can I set the BPM of my song directly?

No, you have to stick to using speed settings and choosing different rows-per-beat. Read the GBT Player documentation to learn more, as it features a chart where you can find every possible BPM you can use with the current version of GBT Player.

Can I use other time signatures?

Yes! You can change how often you use different sets of rows, using the rows per beat table back in the “Can I use triplets/quintuplets?” question. There is no official way to change time signature, it’s up to you how you use the rows instead.

How do I stop the song from buzzing at the beginning?

You can stop the buzzing by adding [C00] to the first row of channels 1 and 2, if you’re not using those channels to start the song.

Why does my song glitch out when it loops?

If your last pattern has a [Dxx] effect, replace it with [B00]. If your last pattern has a Bxx effect, lower the number (xx) of your Bxx command so that it matches the number of the pattern you want to jump to. Remember, [B00] jumps to your song’s first pattern, [B01] jumps to your song’s second pattern. Jumping to a pattern that’s more than the number of patterns your song plays through will cause the glitch to happen.

For those curious as to what causes the noise/glitch, these song jump commands are pointing to different parts of data to change where the song plays from next. If the jump command points past the end of your song, the Game Boy starts to read game data as audio by accident, and it won’t know when the song should end.

Make sure to watch out for more GB Studio tutorials from me in the future. You can always subscribe to our newsletter to make sure you don’t miss an article!

Liked it? Take a second to support GB Studio Central on Patreon!
Become a patron at Patreon!