Nullsleep on Twitter Nullsleep on Facebook
GameBoy Music Workshop: LSDJ
by Nullsleep

First, just a brief overview of the GameBoy's audio capabilities ... This is where you find out what you have to work with, and start thinking about how to twist it into sounding like more than it actually is!

- 4 Channels with Stereo Sound
--- each channel can be played thru the left/right/or both speakers.

- Pulse (Square) Wave Channel 1
- Pulse (Square) Wave Channel 2
--- 1 has support for volume envelope and frequency sweep function.
--- 2 has support for volume envelope only.
--- 1 & 2 both have a length counter, to cut off sound after a timer runs out.
--- 1 & 2 each can have 1 of 4 different duty cycles, as follows:

00 12.5% pulse wave 12.5% thin raspy sound

01 25% pulse wave 25% thick fat sound

02 50% pulse wave 50% smooth clear sound

03 75% pulse wave 75% phase inversion of 25%

- Voluntary Waveform Channel
--- can be used to playback 4bit samples or user-defined waveforms.
--- 2bit volume control: (0)off, (1)low, (2)medium, (3)high.

- White Noise Channel
--- with volume envelope and shape functions.

LittleSoundDJ Overview
divider line

LSDJ takes the Nintendo GameBoy and turns it into an excellent chiptune tracker. The main sequencer layout features 4 vertical columns, each representing one of the GameBoy sound channels. It provides advanced capabilities such as a subtractive synthesizer with resonant filters for creating instruments to be played back on the Custom Waveform Channel, as well as number of sampled drum kits (TR707, TR808, TR909, TOM, LinnDrum, et cetera). Additionally, the arpeggio table gives you the ability to create fairly complex instruments and effects to combining or complementing the already existing commands such as vibrato, pitch bend, and portamento.

Because of the limited amount of buttons present on the GameBoy, the interface for LSDJ relies on different combinations of keypresses for navigation. The interface is broken down into a number of different screens, as follows:

LSDJ screen layout

Upon starting up LSDJ you are dropped into the Song screen. By holding SELECT and pressing a direction on the D-PAD you can move between the screens, for example pressing SELECT+UP will bring you to the Project screen (you can set the tempo of your song here, keep this in mind so you can come back and slow things down or speed them up once you start).

Starting a Song & Creating a Phrase
divider line

Begin by going to the first row of the first column in the Song screen and hitting A. This will add the chain 00 to be played in the song. Next you want to actually put something into this chain so hit SELECT+RIGHT to go to the Chain screen. Once there hit A again and this will add an empty phrase 00 to chain 00. Now hit SELECT+RIGHT and this will take you into the Phrase screen, this is where you will actually be entering notes. Hitting A will enter the note C-3 into the step of the phrase the cursor is currently located on, pressing A+LEFT/RIGHT will allow you to change the note, pressing A+UP/DOWN will change the octave. So now you should be able to fill in some notes in the steps of the phrase and hit START to hear them play (you can erase notes you enter by mistake by holding B down and pressing A). At this point this probably sounds more like a hearing test than music, so lets get onto instrument creation.

Hit SELECT+DOWN from the Phrase screen to get into the Instrument screen. Move your cursor down to the envelope setting and adjust it by holding A+LEFT/RIGHT (you can press START from this screen also to hear the changes you make in realtime). All of the values in LSDJ use hexadecimal notation (base16 = 123456789ABCDEF), the default envelope setting is A8. The first number represents the attack or starting volume and the second number represents the decay rate, the higher the longer the note will be held for. Decay values of >7 will hold the note indefinitely. Try changing the volume envelope to something like 84 for a nice little bleep sound. The default wave duty cycle is 12.5%, change this to the less raspy souding 50% by hitting A+RIGHT twice. Now this one 16 step phrase looping over and over is probably getting tired. So go back to the Chain screen by using SELECT and the D-PAD and adding another new phrase to the chain after 00, do this the same way as you added the first one, hitting A+LEFT/RIGHT changes the phrase number. String a couple of phrases together in this chain and fill them up with a nice melody. Then its on to the beats!

Adding Some Drums to the Mix
divider line

This will be similar to creating the initial melody in a lot of ways. The first thing you will have to do again is go to the song screen and go to the first row but the third column (this is the Voluntary Waveform channel, this is where you can use the sampled drumkits built into LSDJ). Hold A and press UP twice, this should add chain 20 to the song in channel three, while still leaving space for some chains you can add to the second channel later. Next go into the Chain screen and add some phrases like you did for the melody in the first channel, then use SELECT and the D-PAD to go into the Phrase screen. Here is where things get a little different, move the cursor to the first spot in the column with the "I" marked before it, this is the instrument column. Hit A hold it and press UP once, this should set the instrument to 10.

Go into the Instrument screen and change the setting for Type to KIT by using A+RIGHT. The Kit settings should now appear beneath the Type and you can change these to whatever drumkits you would like to use. Play around with the other values in here for volume, length, and speed if you like also. Then go back to the phrase screen and start building your beat, here instead of seeing notes appear you will see letters like BD, SD, CLP, standing for BassDrum, SnareDrum, and Clap respectively. You will probably also notice that you have 2 columns for entering drum beats into rather than just the one you had for entering notes into your melody. This is because LSDJ features soft-mixing for the use of 2 samples simultaneously, in effect giving you an extra channel to use for your drums. After playing around with the kits for a while you will quickly figure out what all the abbreviations represent. Get back to the song screen once you are done and hit START to hear your melody playing backed with a beat!

But we can make this beat even better by combining the samples with some action in the noise channel. Get over to the fourth column in the Song screen and create a chain and fill it with some phrases, you should know how to do this by now. Once you are in the Phrase screen try putting a C-5 on every other step starting with the first one, also make sure you are using a new instrument number for this, 1A is good. If you listen to this now it probably sounds like static, drop down into the instrument screen and adjust the length to a very small value. Now you should have a closed hi-hat type sound going, experiment with the other settings here like Shape to get some explosive sound effects.

Filling the Loop In
divider line

At this point you know all of the basics of navigating around LSDJ so you should be able to fill in any areas that sound empty, if you have not yet done anything with the second pulse wave channel do it now. Add a bassline a couple octaves below the melody you wrote first or if the first melody you wrote was more of a bassline then work on your lead now. After the basic sound for your song is reached, then you can start adding in some effects to polish it up.

Effects Howto: Chords
divider line

In music, chords are built when atleast 3 notes are played simultaneously, this might seem to be a problem at first when you are using something which only has 4 channels and one of them can only produce white noise. But there is a way to simulate chords being played with just a single channel of the GameBoy. Go back to the phrase screen for the channel that your lead sound was on, pick a row where one of your notes is placed and go to the last column, this is the effects column. Hit A to place an effect, it should say A00, this is the command to run table 00 on this note (you can change effects by pressing A+LEFT/RIGHT and get an explanation of a note by just tapping A). Next, get to the table screen using SELECT and the D-PAD, its DOWN and to the LEFT.

Tables are essentially sequences of transposes, commands and amplitude changes which can be played at any speed and applied to any channel. The first column is the envelope column, leaving it at all 00 makes it run the standard envelope you have already setup for your instrument. Next is the second column used to transpose notes, this is the one that you will use for creating chords. In the first step of the column leave 00 this is because you want the note you entered to be heard within the chord (lets assume for this example it was C-5). Move down to the next step and hit A+RIGHT to change this next row to 04 (transposing C-5 up four steps will give you E-5). In the third row do the same but this time change it to 07 (giving you G-5, this is 7 steps up from C-5). Now to make these three pitches loop very quickly, move to the right one column (the column with the dashes) and hit A+RIGHT until you find H, this is the command to hop to another location in the table, leaving the column to the right of it at 00 tells the table to hop back to the first row once it reaches the H00 command in the fourth row, so now you have created a loop in the table. Play this back and you will hear a simulated major chord. If you don't know much about chords then you can also give a similar texture to your instrument by just using 00 on the first row, 0C on the second row and H00 on the third. This will simply play an octave up from the bass note giving the instrument a little more complexity.

Effect Howto: Duty Cycle Modulation
divider line

Next up is a really nice effect for making instruments sound a lot more dynamic than just constant tone. You might want to create a couple new phrases and fill them in with a melody to try this out on because you don't want to overload on effects within one phrase and end up with something that sounds like a garbled mess. Create a new instrument for this new phrase while you are it at too, and in the instrument settings screen adjust the Table value to be one that you have not yet used, 0A should do fine. Now hit A+LEFT once from the Instrument screen to get to the Table. This time go straight to the third column with the dashes that you used for the hop command before, but now hit A+LEFT/RIGHT until you get to W. fill up the first 8 steps (00-07) with this command and then put an H00 in the following step of the table. Try setting the first 2 steps to 50%, the next 4 to 25% and the last 2 to 12.5%. Now you have a nice duty cycle modulated instrument that sounds a lot more interesting than a straight square wave.