BBH's Little Site - Session Stream - GDA Tutorial
GDA Tutorial


So you wish to make a song into a guitar/drum sim, huh? This section explains everything about GDA files, the primary song files of guitar/drum sims. This file format was first introduced by BandJAM; other guitar/drum sims have used it since then, and have even evolved it by adding new commands and file formats exclusive to those games. GDA's contain everything that allows a song to be playable in a game; all the notes, sound file info, the difficulty level, etc. All you need to make a GDA file is a plain ol' text editor, sound files (guitar sounds, drum sounds, and of course the song itself), some programming knowledge, and a musical sense. Of course, you could replace the text editor with GDA Creator, a powerful tool that makes making GDA's easier thanks to a graphical interface. Still, it's a good idea to learn how to read a GDA like a text file, probably because it is simply an ordinary text file that contains commands the games can understand. This tutorial will explain those commands so you can learn how to use them to make that song into the guitar/drum sims.

Oh, and one more thing. This tutorial was created for BandJAM v0.94d and Session Stream v0.13B. Some commands will only work in a specific game (this will be indicated), and this tutorial's info might not be completely accurate with later versions of these games.
To begin, all commands start with a pound sign (#). Heck, most lines start with "#". You can use one other character, though, and that's the semicolon (;). That one's used for remarks as lines starting with ";" are ignored by the games.

With that out of the way, let's move on to the commands used for the song's information.

#TITLE
Obviously, the song's title.

#ARTIST
The song's artist (some GDA makers put in their own names instead, though).

#BPM
Beats Per Minute, the speed at which the song plays. Although the notes always fall at the same speed, their frequency depends on the BPM. You can specify any number for this command (and even include decimals, though they don't display in the game). Specifying 0 or ?, however, will show up as "???" in the game. Finally, an unspecified or 0 BPM will default to 120.

#BASEBPM
This is sort of an add-on to #BPM, and isn't displayed in the game. Any number specified here will be added to the main BPM. It can have decimals, and it can even be a negative number.

#DLEVEL
The song's difficulty level on the drums. You can specify 1 to 100 for this command. In BandJAM, levels above 10 are summarized into the 1-10 range; in Session Stream, numbers below or at 10 are multiplied by 10 to put it into the 10-100 range.

#GLEVEL
The song's difficulty level on the guitar; pretty much similar to the #DLEVEL command.

#BLEVEL
The song's difficulty level on the secondary guitar; again similar to the #DLEVEL command. Only Session Stream uses this command. One thing to note: if an instrument's difficulty level is unspecified or 0, that instrument will be closed and will not be used in the song.

#PREVIEW
The sound file that's to be played over and over when you highlight the song during a game's song selection.

#WALL
The background image that's shown while the song is playing. The image's size is usually 640x480, and it's usually in BMP format (though other graphics file formats like JPG or PNG could also work). If no image is specified, a default image is used.

#WAVnn
This command indicates a sound file that's to be used in the song. The sound file must be in WAV or XA format. "nn" is the sound file's slot; it's a hexadecimal value that ranges from 01 to FF.

Below is an example of the above commands, a snippet from one of my GDA's and how it appears in the game:

#TITLE Love Somebody (Narita Airport ver., Long, Ext.)
#ARTIST Fukui Mariko
#BPM 130
#BASEBPM 0.82
#DLEVEL 73
#GLEVEL 73
#PREVIEW preview.wav
#WALL image.bmp

#WAV01 hihat1.xa
#WAV02 hihat2.xa
#WAV03 hihat3.xa
#WAV04 snare1.xa
#WAV05 bass1.xa
#WAV06 tom1.xa
#WAV07 tom2.xa
#WAV08 cymbal1l.xa
#WAV09 cymbal1r.xa
#WAVFF Love_Somebody_(Narita_Long).wav



You can see how all the info that the commands specified are displayed in the song selection. You can also see the background image that the #WALL command specified. And you can also see that the secondary guitar is closed since the #BLEVEL command wasn't specified.
And now for the meat of the GDA: the commands that deal with the notes, manipulating the song, and other gameplay stuff. All of these commands start with "#", then three numbers indicating the measure of the song where the command is to be used, then the two letters that make up the command, then a colon (:), and finally pairs of hexadecimal numbers.
TC (Tempo Change)
This command allows you to change the BPM at certain parts of the song, the BPM's new number being equal to the hexadecimal value that you input. Since you can't input a hexadecimal value higher than FF, the highest BPM you could specify is 255. If you want to change the BPM to a number higher than that, you must use this command in conjunction with #BASEBPM. Also, you can only specify whole numbers this way; you can't specify decimals.

Example 1:

#006TC:76
#007TC:86



Although it's hard to notice here, the song does get faster in the next measure.

Example 2:

#BASEBPM 21.3

#010TC:75
#014TC:FF



In this one, the song gets much faster. And, thanks to #BASEBPM, it manages to exceed 255 BPM.
BL (Beat Length)
This command lets you change the number of beats at certain parts of the song. Instead of specifying a pair of hexadecimal numbers, you specify an ordinary number (decimals can also be included) for this command. By default, the song's BL is 1 (4 beats per measure). A BL of 2 would result in 8 beats per measure, while a BL of 0.75 would be 3 beats per measure.

Example:

#036BL:0.5
#037BL:1



As seen here, one of the measures is set to 2 beats. And then after that measure, it's set back to 4 beats.
FI (Fill-In)
A fill-in is the drum's bonus feature. If you get at least half the notes Perfect within a certain region of the song, you get bonus points. This was introduced in DrumMania 1st Mix, but was removed in later Mixes.

This command allows you to place fill-in bonuses in the song. Input 01 to indicate the start of a fill-in bonus region, and input 02 to indicate its end.

Currently, Session Stream ignores this command so there are no fill-in bonuses. Perhaps the feature is unimplemented for now...

Example:

#005FI:00000000000000000001000000000000
#010FI:00020000000000000000000000000000



This is a fill-in bonus region. In BandJAM, perfectly hitting notes in a fill-in area would produce different sparks; but in Session Stream, as you can see here, the sparks are still the same because the fill-in's are ignored by the game.
HH, SD, BD, HT, LT, CY
The commands that deal with the drum notes. There are six slots for these, each one referring to each part of the drums (hi-hat, snare drum, bass drum, high tom, low tom, and cymbal). To specify a note, simply input a hexadecimal value that matches that of one of the #WAV commands. The note will play the indicated #WAV command's sound file when it is hit; of course, it won't play if the note is missed. A note will not play any sound if it refers to a nonexistent #WAV command, but it will still count as a note that must be played.

Example:

#WAV01 hihat1.xa
#WAV02 snare1.xa
#WAV04 bass1.xa
#WAV05 tom1.xa
#WAV06 tom2.xa
#WAV07 tom3.xa
#WAV08 tom4.xa
#WAV09 cymbal1.xa

#016HH:0101010100000000
#016SD:00000000020000000505060600000000
#016BD:0400040004000404
#016HT:00000000000000000000000007070000
#016LT:00000000000000000000000000000808
#017BD:04
#017CY:09



As shown here, the commands place the notes as such in that particular measure.
G0-G7, GW
The commands that deal with the guitar notes. They're pretty much similar to the drum note commands, the only exception being about the slots. Here's a list to show which command refers to which slot:

G0 - Open
G1 - Blue
G2 - Green
G3 - Green-Blue
G4 - Red
G5 - Red-Blue
G6 - Red-Green
G7 - Red-Green-Blue

GW is a special note and can be specified with any value as long as it's not 00. Place this note alongside a regular guitar note to make that note a wailing bonus, the guitar's bonus feature. You'll get bonus points if you play the wailing bonus while pointing the guitar upwards (or holding down the Wail button on the keyboard). This has been in Guitar Freaks since forever.

An interesting thing to mention is that all of the guitar notes are usually referred to one nonexistent #WAV command. This is because most GDA makers (myself included) couldn't be bothered to get the song's guitar samples and just simply leave the guitar noises to the background music. It works almost perfectly, the only downside being that the guitar continues to play perfectly even if you make mistakes while playing the guitar.

Example (Note: They're all referring to #WAV10 even though there really is no #WAV10.):

#015G1:0000100000001000
#015G3:0000000010000000
#015G4:0000001000000010
#015G6:0010000000100000
#016G3:0000001000000000
#016G5:0000000000001000
#016G6:1000000000100000
#017G7:10
#017GW:FF



Just like in the previous example, the commands place the guitar notes as such.
B0-B7, BW
The commands that deal with the secondary guitar notes. These commands are exclusive to Session Stream and they work just like the regular guitar commands.
01-20 (BGM)
These commands are whole numbers and not hexadecimals. They're used for background notes, which are generally like drum and guitar notes except that they don't appear in the game and you don't actually play them. Instead, they'll automatically play by themselves. Background notes are for adding sounds to the background like extra drum sounds and, most importantly, the song itself. You can use up to twenty slots for background notes; which slot is used depends on the number you use for the command.

Example:

#WAV01 hihat1.xa
#WAV0B bass1.xa

#00202:0000010101010101
#00204:0B0B



You can see that the defined notes don't show up at all. But they are really there and will automatically play at the appropriate times.
You've no doubt noticed that, except for the information commands and the BL command, all the commands use pairs of hexadecimal numbers. These numbers are the GDA's data; they indicate where all the notes are, which sound files are used for them, when to slow down the song, etc. They all range from 01 to FF and their purpose depends on the command that uses them but, for all intents and purposes, they all act like notes. The hexadecimal value of 00, which means null and void, can also be used for spacing these notes apart.

But how exactly do you place these notes using such numbers? Well, it all depends on how many pairs of hexadecimal numbers you use for the command. One pair means one note for the entire measure, two pairs mean two notes, three pairs mean three notes, and so on. This holds true even if the BL is a value other than 1; with a BL of 0.75 (3 beats per measure), four pairs would still mean four notes in the entire measure. And finally, the notes are always spaced out evenly throughout the measure. In case of only one pair, the note is placed at the start of the measure.

Here's an example to illustrate this:

#WAV02 hihat2.xa
#WAV04 snare1-1.xa
#WAV08 bass1.xa
#WAV0A tom2.xa
#WAV0B tom3.xa
#WAV0D cymbal1.xa

#015HH:0002000202000000
#015SD:0000040000040000
#015BD:0800000008000808
#015HT:0000000A
#015LT:000000000000000B
#015CY:0D



As you can see here, the notes are spaced apart with many 00's to fit them into their proper places.

Of course, this does get tedious after a while. Inputting a lot of 00's just to place a particular note on a very specific place can be taxing. Fortunately, you don't have to keep suffering. As I've said before, you could replace the text editor with GDA Creator. Instead of typing down all those commands and hexadecimals and whatnot, you can just place those notes on their proper places using a graphical interface and the program will automatically compile them into the proper text commands. This program will definitely make creating GDA's a lot easier. And in case you're wondering, you can get GDA Creator at this site.
Next up are a few commands that are used exclusively in DTXMania. Most such commands will only work in the DTX file format, but the ones listed here can also work in other guitar/drum sim file formats like the GDA. Also, this info was created for DTXMania v0.34f.
#PREIMAGE
The image that's shown when you highlight the song during the song selection. The ideal size of the image is 204x269. And if no image is specified, a default image is used.

Example:

#PREIMAGE preview.bmp


And there's the image, in all its colorful glory.
SET.DEF file
This one isn't a command but a file that contains extra commands. The purpose of this file is to combine several simfiles into one song with multiple selections for better organization. Hitting the hi-hat twice will cycle through the selected song's selections if it has any.

Here are the commands that are involved in this file:

#TITLE
Song's title; kinda obvious...

#LnLABEL
The selection's label. The "n" is the selection's slot and is a single number; match the slot with a #LnFILE command's slot to have the label represent that particular file.

#LnFILE
The simfile that the selection is referring to.

Here's an example of a "set.def" file:

#TITLE: Asu no Egao no Tame ni (Long ver.)

#L1LABEL: Basic
#L1FILE: Asu_no_Egao_no_Tame_ni_(Long_Basic).gda

#L2LABEL: Advanced
#L2FILE: Asu_no_Egao_no_Tame_ni_(Long_Advanced).gda

#L3LABEL: Extreme
#L3FILE: Asu_no_Egao_no_Tame_ni_(Long_Extreme).gda

#L4LABEL: Ultimate
#L4FILE: Asu_no_Egao_no_Tame_ni_(Long_Ultimate).gda



And there it is, a single song with four difficulty selections. You can also combine varying versions (like slow versions or remixes) of a song this way.
And so ends this tutorial; everything you need to know about GDA's has been explained. Now you can go out there and make that song into your favorite guitar/drum sim. Or, at the very least, read other songs' GDA's and understand how they work.

Back

Baby Bonnie Hood's Little Site © 2002-2003 Jason Carl R. Algarme. Guitar Freaks, DrumMania, KeyboardMania © Konami. BandJAM © bandjam-net. Session Stream © Kou Uraki. DTXMania © FROM/Kenji Yamasaki. Akazukin Chacha © Ayahana Min/Shuueisha, TV Tokyo, NAS. GateKeepers © GONZO • Kadokawa Shoten/GK Project. You're Under Arrest © Kousuke Fujishima/Kodansha, Bandai Entertainment. Lobster Magnet © Ben Apgar, Garrry Norman. Pepper Ann © Disney. Steam Detectives © Kia Asamiya/Viz, Studio Tron. Transformers: The Movie © Sunbow Productions. Transformers, the distinctive likenesses thereof, and all related indicia are trademarks of Hasbro Inc. Serial Experiments Lain © Triangle Staff/Pioneer LDC. Galaxy Angels © Broccoli, Bandai Visual. All content found in this web site are all original unless otherwise stated. All rights reserved. This site is hosted on Tripod UK.