"RBS File Format"

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

Overview

The 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 Formats

Since 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 Chunks

There 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