GB Studio Music Lesson 5: Effects

By now you’ve learned enough to actually make something that sounds like a real song. But you might notice we are still lacking a lot of polish. Little things like notes that fade or echoes that sound distant. Even one big element, our four to the floor bass kick drums are not present at all! All these elements require using effects. Effects let you do stuff like pan the stereo of one channel or make a note bend up or down. On the wave channel the effects even let you control the volume. They also control song level events like speeding up or slowing down the speed (tempo) of the song, or jumping to a certain point in their song to make it loop. We will look at some common useful ones here with a simple demo file. The effects do not work the same on every channel, so we will talk about those differences too.  There is a lot to go over so we will look at all of this over the course of two articles, culminating with applying what we learned to our demo song. 

Hex Values 

We are going to avoid getting too technical in this article, but it is important to understand hexadecimal values when using effects. Hexadecimal is explained here but basically it’s just 0-9 and then A-F to represent up to 16 numbers in one character. It is also used to compose groups of true and false values with binary math; this is what you will see with the stereo effect as you read on. Fortunately, you don’t have to fully grasp all of this or do the math by hand, as the GbStudio UI will help you with it. 

How to Place an Effect 

Effects are laid down just like notes, but one column over in GB Studio tracker. Make a new empty song. Press the + to do this and find the song template on the side. Put down a note in duty 1. Doesn’t matter what note. Put down some default hi-hats and wave too. Align the cursor as shown in photo:

Type an 8 on your keyboard. You’re expected to enter two hex values next. What are they? Well, it’s different for each effect. You can dig into the manual or you can use the handy UI which appears on the side panel when you enter an effect code. 

It turns out 8 is for setting the stereo panning of each channel. Adjust it so the noise channel is set to the left speaker and other notes to the right by checking boxes. You’ll see a hex value “78” was generated for the config we chose (the effect slot now reads 878). Now play your song while wearing headphones. The hi-hats should come through one ear in your headphones and the rest on the other side. Now add a 8FF a few lines lower. Play the song. You’ll hear the stereo resets. If you click the 8FF the UI shows that it means all channels on all stereo.

This is just one example! The entire list of effects for hUGEDriver emulator are here: on page 21.

Effects Terminology

If you ask for help on the Discord, those using hUGETracker and other trackers might refer to an effect as Cxy or 8xx: that means you put the right letter and then two hex values in the effect slot to activate the effect. The xx values means the two digits are evaluated together as one parameter. The xy means each individual digit represents a different parameter. Each effect has its own parameters. We will get into that now. 

Effects That Impact Sound of Individual Channels 

Set Volume (Cxy)

Use this to make a note quieter or louder. 

Duty channel:

The easiest way to use this is to keep x at 0 and change y, which will play the note’s default envelope at the volume level of y. See the sample uge at the end to hear the fading effect of reducing C values.  

Wave channel:

The wave channel only has 4 volume levels and no envelope, so only these values listed below will have an impact. The values in between will just cause the same change as the value closest to it. 

C00 – wave channel is silent 

C03 – wave channel plays at 25% it’s full volume 

C07 – wave channel plays at 75% it’s full volume 

C0F – wave channel plays at full volume. 

On the wave channel you can put a Cxy without triggering the note (meaning it can be on a line by itself without a note). 

Changing wave channel volume with Cxy can cause a clicking or popping sound on actual hardware. This can be minimized by using multiple instruments with the same wave and different volume levels. When possible this is a better solution and leaves you free to apply other effects to the wave channel independent of the volume. 

Noise channel: 

Cxy doesn’t really work on the noise channel as you might expect. You will lose your envelope if you use it. It’s better to use multiple instruments with the same envelope and different starting volumes. 

Arpeggio (0xy)

The best example of an arpeggio is when you get a fire flower or mushroom in Super Mario Bros. It’s a super fast progression of notes that happens in the space of a single tick. It is very common on Atari and Commodore 64 songs and is used a lot by some NES and Gameboy composers to allow you to “fake” three-note chords. Many will refer to them as “arps” for short. 

The parameters are how many notes up from the starting note it should play. x comes first followed by y. The y value can be higher and go back down. You can put multiple 0xy in successive ticks to make more changes in the notes. You can use them on duty and wave channels. You can also put them on ticks with no notes being triggered and they’ll be applied to the existing envelope. They don’t really work on the noise channel. 

Here are some common useful values:

  • 07C – jumps up to a major harmonic note (7) and then the original note but an octave higher. This is a good starting out arpeggio to try. 
  • 037 – minor key chord. Sounds scary or moody. 
  • 047 –  major key chord. Sounds happy. 
  • 057 – Neutral chord. Sounds more expansive and unresolved. 

Note Cut (Exx)

A very simple one. If you want to have a quick, short note this allows you to cut the note off (mute it) very quickly. Start with E02 and experiment with the length to get the sound you want. It usually sounds clearer to use an instrument with a short length instead of using the note cut effect.

Portamento Up (1xx)

Some physical instruments have the ability to have a sound bend smoothly from one note to another. This is string bend on guitar, or slide on a violin. Synthesizers often have a wheel on the side to do this too. 1xx can be used when a note starts or at any point when it’s playing. The higher the value, the faster the note goes up. You can use many 1xx in a row to make an ascending tone like a car engine charging up. This is another one that doesn’t really work as expected in the noise channel. 

Portamento Down (2xx)

Similar to 1xx, 2xx makes the note bend downward, like that awesome moment before the Mega Man 2 title music transitions from the slower intro music. 2xx is also our secret weapon for making bass kick drums. 

Effects That Impact the Entire Song 

Set Panning (8xx)

As we saw in our first example how panning lets you set the stereo for all channels. It’s important to note you can put an 8xx in any channel and impact other channels. For example if you have lots of effects in duty 2 but also want to change its stereo, the 8xx commands can go in any other channel and still change duty 2. This is kind of a weird thing since most effects impact the channel they’re on, but it lets you combine stereo changes with other effects on the same channel. The Gameboy sound chip only lets you play both channels or a hard left or right pan, meaning nothing panned left can be heard out of the right speaker or vice versa. You can also use 8xx to cut a channel without stopping its note from playing. 

Set Tempo (Fxx)

You can speed up or slow down a song using Fxx. In most songs you probably just want a Fxx at the very first tick of the first pattern in order to set the tempo for the entire song. You can also use it to make a half speed part of a song (slow part) or speeding up sound (like Sonic’s running out of air jingle). You can also use many of them together to create swing grooves. Which gives songs a jaunty, loose rhythm feel instead of a rigid techno-like beat. 

Jump to Pattern (Bxx)

The Bxx lets you jump back to a previous part in your song. This is useful for making loops. You can make a song intro in pattern 1 and then have 4 patterns that make up the song. At the end of the 5th, a B02 in the final tick will send the song back to pattern 2 without playing the intro again. Note that the tick with the Bxx plays before the jump happens. 

Pattern Break (Dxx)

Pattern break tells the system to stop the pattern it’s on and go to the next one starting on tick xx. You can use this to make non 4/4 tempos, for example a waltz will jump forward to the next pattern after the 17th tick. 

There are other effects available but we are going to stick to these for now. In the next lesson we will add effects to our tutorial demo song. 

You can download this uge to hear all the examples shown in this article. In the next article we will start applying these practically in our demo song!

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