|
The following file format specification has been adapted to The Sonic Spot's Guide layout with permission from Propellerhead Software, the format's inventor. A link to the original specification can be found at the bottom of this page.
Table of Contents
OverviewThe RBS file format (version 4.2 for ReBirth 2.0.1) follows the standard IFF structure described by Electronic Arts in the "EA IFF 85" Standard for Interchange Format Files document, making it easy to implement using existing IFF source code.
While the format is barely supported by any programs besides Rebirth itself, there are a large number of existing files due to the softwares great popularity. With the large user-base and open format specification, RBS files may be a good candidate for importing and exporting support in pattern sequencers or other Roland hardware emulators that support any of the components of Rebirth (Roland 303, 808 and 909).
Data FormatsSince the RBS file format is native to Windows and therefor Intel processors, all data values are stored in Little-Endian (least significant byte first) order.
Strings RBS files contain strings of text for specifying titles, descriptions, etc. Each string field is a fixed length, storing the text as zero terminated characters followed by zero padding for all unused bytes. A string must always end with zero termination, that is, the string must be less than or equal to the available byte length for that field.
| 'e' |
'x' |
'a' |
'm' |
'p' |
'l' |
'e' |
0 |
0 |
0 | 10 Byte String Example
File Structure
|
RBS File Layout
IFF Group ID "CAT " Chunk Data Size
|
| CAT Type ID "RB40" |
Chunk ID "HEAD" Chunk Data Size
|
| Version Information | |
Chunk ID "GLOB" Chunk Data Size
|
| Global Parameters | |
Chunk ID "USRI" Chunk Data Size
|
| User Information | |
IFF Group ID "CAT " Chunk Data Size
|
CAT Type ID "DEVL"
Chunk ID "MIXR" Chunk Data Size
|
| Mixer Information |
... | |
IFF Group ID "CAT " Chunk Data Size
|
CAT Type ID "TRKL"
Chunk ID "TRAK" Chunk Data Size
|
| Mixer Track |
... | | |
|
|
Chunk Header
|
|
|
Chunk Data Bytes
| | Rebirth Song files use the standard IFF structure which groups the files contents (header information, track information, etc.) into separate chunks, each containing it's own header and data bytes. The chunk header specifies the type and size of the chunk data bytes. This organization method allows programs that do not use or recognize particular types of chunks to easily skip over them and continue processing following known chunks. Certain types of chunks (labelled with "CAT " ID) contain sub-chunks. For example, in the diagram to the right, you can see that the "HEAD" and "GLOB" chunks are actually sub-chunks of the outer-moust "CAT " chunk. The outer-most "CAT " chunk also contains two sub-"CAT " chunks.
One tricky thing about IFF file chunks is that they must be word aligned. This means that their total size must be a multiple of 2 bytes (ie. 2, 4, 6, 8, and so on). If a chunk contains an odd number of data bytes, causing it not to be word aligned, an extra padding byte with a value of zero must follow the last data byte. This extra padding byte is not counted in the chunk size, therefor a program must always word align a chunk headers size value in order to calculate the offset of the following chunk.
Rebirth Song File Chunk - "CAT ", Type "RB40"RBS files follow the standard IFF file format structure. The first 8 bytes in the file is a standard IFF group chunk header which has a chunk ID of "CAT " and a chunk size equal to the file size minus the 8 bytes used by the header. The first 4 data bytes in the "CAT " chunk determines the type of resource found in the IFF chunk. Rebirth 2.0.1 files always use "RB40". After this chunk ID and size comes all of the Rebirth file chunks that define the program setup and sequencing.
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"CAT " (0x43415420) |
| 0x04 |
4 |
Chunk Data Size |
(file size) - 8 |
| 0x08 |
4 |
IFF Type |
"RB40" (0x52423430) |
| 0x10 |
data chunks |
|
RBS Outer-most Chunk |
RBS File ChunksThere are five top level chunks defined for RBS files. The HEAD, GLOB and USRI chunks describe main song information and settings. These always come first and are followed by the two sub-group (IFF "CAT ") chunks DEVL and TRKL which contain device information and track sequencing used by the song.
All IFF Chunks and therefore RBS chunks are stored in the following format. Notice that even the above mentioned outer-most chunk conforms to this format.
| Offset |
Size |
Description |
| 0x00 |
4 |
Chunk ID |
| 0x04 |
4 |
Chunk Data Size |
| 0x08 |
Chunk Data Bytes |
|
IFF Chunk Format |
The rest of this document goes through the different RBS file chunks, describing each ones data bytes. You can use the table of contents at the beginning of this document to help find the chunk type you are interested in.
Header Chunk - "HEAD"The header chunk contains version and copyright information.
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"HEAD" (0x48454144) |
| 0x04 |
4 |
Chunk Data Size |
256 |
| 0x08 |
9 |
Version |
0x5b545b54bc04020000 |
| 0x11 |
129 |
Copyright |
"(c)1997 Propellerhead Software, all rights reserved" |
| 0x92 |
118 |
Reserved |
all zeros | Header Chunk Values
Global Chunk - "GLOB"The Global Chunk contains the global parameters for song.
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"GLOB" (0x474C4F42) |
| 0x04 |
4 |
Chunk Data Size |
512 |
| 0x08 |
1 |
Play Mode |
0x00 = pattern, 0x01 = song |
| 0x09 |
1 |
Loop |
0x00 = Off, 0x01 = On (only in song mode) |
| 0x0A |
4 |
Tempo |
BPM * 1000 |
| 0x0E |
4 |
Loop Start |
Bar * 768 (only in song mode) |
| 0x12 |
4 |
Loop End |
Bar * 768 (only in song mode) |
| 0x16 |
1 |
Shuffle Amount |
0x00 - 0x7F |
| 0x17 |
65 |
Name of mod |
standard mod = "Standard ReBirth" |
| 0x58 |
201 |
FTP for mod |
standard mod = "ftp.propellerheads.se" |
| 0x121 |
201 |
WWW for mod |
standard mod = "www.propellerheads.se" |
| 0x1EA |
1 |
Vintage Mode |
0x00 = ReBirth 2.0 sound, 0x01 = Vintage ReBirth sound |
| 0x1EB |
29 |
Reserved |
all zeros | Global Chunk Values
User Information Chunk - "USRI"The User Information Chunk contains user information for song.
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"USRI" (0x55535249) |
| 0x04 |
4 |
Chunk Data Size |
512 |
| 0x08 |
41 |
Window Title |
text added to window title |
| 0x31 |
201 |
Song Information |
text in song information dialog (0x0D is newline) |
| 0xFA |
101 |
Web Page |
url-address in song information dialog |
| 0x15F |
1 |
Show Song Info On Open |
0x00 = no, 0x01 = yes |
| 0x160 |
168 |
Reserved |
all zeros | User Information Chunk Values
Mixer Chunk - "MIXR"The Mixer Chunk contains mixer settings.
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"MIXR" (0x4D495852) |
| 0x04 |
4 |
Chunk Data Size |
64 |
| 0x08 |
1 |
Master fader level |
0x00 - 0x7F |
| 0x09 |
1 |
Compressor Device ID |
0x00 = none 0x01 = master 0x02 = tb303 1 0x03 = tb303 2 0x04 = tr808 0x05 = tr909 |
| 0x0A |
1 |
PCF Device ID |
0x00 = off 0x02 = tb303 1 0x03 = tb303 2 0x04 = tr808 0x05 = tr909 |
| 0x0B |
13 |
Reserved |
all zeros |
| 0x18 |
1 |
TB303 1 Mix Enabled |
0x00 = off 0x01 = on |
| 0x19 |
1 |
TB303 1 Mix Level |
0x00 - 0x7F |
| 0x1A |
1 |
TB303 1 Mix Pan (left - center - right) |
0x00 - 0x40 - 0x7F |
| 0x1B |
1 |
TB303 1 Delay Send Amount |
0x00 - 0x7F |
| 0x1C |
1 |
TB303 1 Distortion Enabled |
0x00 = off 0x01 = on |
| 0x1D |
7 |
Reserved |
all zeros |
| 0x24 |
1 |
TB303 2 Mix Enabled |
0x00 = off 0x01 = on |
| 0x25 |
1 |
TB303 2 Mix Level |
0x00 - 0x7F |
| 0x26 |
1 |
TB303 2 Mix Pan (left - center - right) |
0x00 - 0x40 - 0x7F |
| 0x27 |
1 |
TB303 2 Delay Send Amount |
0x00 - 0x7F |
| 0x28 |
1 |
TB303 2 Distortion Enabled |
0x00 = off 0x01 = on |
| 0x29 |
7 |
Reserved |
all zeros |
| 0x30 |
1 |
TB808 Mix Enabled |
0x00 = off 0x01 = on |
| 0x31 |
1 |
TB808 Mix Level |
0x00 - 0x7F |
| 0x32 |
1 |
TB808 Mix Pan (left - center - right) |
0x00 - 0x40 - 0x7F |
| 0x33 |
1 |
TB808 Delay Send Amount |
0x00 - 0x7F |
| 0x34 |
1 |
TB808 Distortion Enabled |
0x00 = off 0x01 = on |
| 0x35 |
7 |
Reserved |
all zeros |
| 0x3C |
1 |
TB909 Mix Enabled |
0x00 = off 0x01 = on |
| 0x3D |
1 |
TB909 Mix Level |
0x00 - 0x7F |
| 0x3E |
1 |
TB909 Mix Pan (left - center - right) |
0x00 - 0x40 - 0x7F |
| 0x3F |
1 |
TB909 Delay Send Amount |
0x00 - 0x7F |
| 0x40 |
1 |
TB909 Distortion Enabled |
0x00 = off 0x01 = on |
| 0x41 |
7 |
Reserved |
all zeros | Mixer Chunk Values
|