Appearance
How do Donkey Konga tracks work?
Donkey Konga 2 and Donkey Konga 3's songs are managed in two parts: as audio files and MIDI scores. The games organizes the metadata for the songs in the SongInfo.res file. In total, they both support up to 33 songs (not including the tutorial).
Songs
Format
Songs in Donkey Konga 2 and Donkey Konga 3 are stored as stereo DSP files in the score directory, a subdirectory of stream. There is no known limit to track sizes; however, Konga Beat has a soft limit of 90 minutes.
Metadata
To start off, this information is based on RadioTails's work on the ROMHacking.net forum back in 2013. In Donkey Konga 2 (US and EU) and Donkey Konga 3, song information is stored in the SongInfo.res file (inside the Resource directory). For example, here is Boombastic in the North American version of Donkey Konga 2 with comments:
#9
SONGNAME=Boombastic // Song title
FILENAME=09Boombastic // The filename for the song and scores.
OFFSET=0.8 // The delay before a song starts.
LENGTH=180 // Length of the track, but this does not appear to be used by the game. Adjusting this value did not have any observable effect.
PRICE=480 // The cost for unlocking the Gorilla version of the song.
1E=4 // 1P Monkey difficulty level
1H=6 // 1P Chimp difficulty level
1X=3 // 1P Gorilla difficulty level
2E=2 // 2P Monkey difficulty level
2H=6 // 2P Chimp difficulty level
2X=4 // 2P Gorilla difficulty level
4=4 // 4P difficulty level
B=3 // Battle difficulty level
C=5 // Challenge difficulty level
RUBY= // Text displayed over the title of the song
COMMENT=farewell version // Text displayed under the title of the song
GENRE=1 // The song's genre. Affects the background color of the song's card in the song selection screen.
INFO
Any text that appears in the game (song name, ruby, and comment) must use Shift JIS compatible characters.
Scores
Scores are managed as MIDI files. Every MIDI files begins with important information about the song. For example, this is Predictable in the North American version of Donkey Konga 2:
Player | Time | Property | Value | Additional Information |
---|---|---|---|---|
0 | 0 | Sequence/Track Name | Predictable | Title of the song |
0 | 0 | Copyright Notice | onoda | Name of the author who composed the score |
0 | 0 | System Exclusive | 10, 125, 68, 75, 5, 8, 46, 0, 0, 70, 247 | See System Exclusive Data |
0 | 0 | Time Signature | 4, 4, 24, 8 | Song's starting time signature |
0 | 0 | Set Tempo | 357142 | Song's starting tempo |
1 | 0 | Program Change | 0, 0 | The start of Player 1's notes |
1 | 9600 | Note On | 9, 64, 127 | Start of a left note (64) |
1 | 9600 | Note Off | 9, 64, 127 | End of a left note (64) |
System Exclusive Data
Some of the data stored in System Exclusive (sysex) remains a bit of a mystery. From what I can figure out so far, the values correspond to the following:
- 10 - Start of the sysex byte array.
- 125 / 7D - Manufacturer ID. Normally, 7D is reserved for private, non-commercial use, but is used as the ID for the scores included in retail copies of Donkey Konga 2 and Donkey Konga 3, as well as scores exported by Konga Beat for consistency.
- 68, 75, 5, 8, 46 - Assuming the files adhere to the MIDI spec, the first two bytes are part of the manufacturer ID. However, I'm not sure. Some combination of these bytes contributes to the offset of the notes in the retail scores. I haven't been able to discern the meaning of these values quite yet.
- 0 - Mode. Used only by 1P and 2P songs.
- 0 - Difficulty level (0 is Monkey, 1 is Chimp, 2 is Gorilla). Used only by 1P and 2P songs.
- 70 - Speed
- 247 - End of sysex byte array