Tachibana General Labs

Notes on the file format of the sp404-sx sampler

Roland SP-404SX sample file

Notes

Field types are marked using C-style notation:

Fields that vary are marked in bold. All other fields should be constant across samples.

File name

AIFF sample file format

This format is generated by the sampler when recording samples to the SD card.

Samples are 44.1 kHz 16-bit PCM files in AIFF format with an additional Roland-specific header. They can be either mono or stereo.

The sample is an AIFF file with the structure:

This is a big-endian format, i.e. the most significant byte comes first and bytes appear in the order written. For example, 176,400 is 2B110h and appears in the file as 00 02 B1 10.

AIFF chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 FORM
ChunkSize uint32 4 00 0D BF 78 see below
Format char[4] 4 AIFF

Notes:

COMM chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 fmt
ChunkSize uint32 4 00 00 00 12
NumChannels uint16 2 00 02 1 or 2
NumSamples uint32 4 00 03 6F 60 see below
BitsPerSample uint16 2 00 10 16-bit
SampleRate long double 10 40 0E AC 44 00 00 00 00 00 00 44100 Hz

Notes:

APPL chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 APPL
ChunkSize uint32 4 00 00 01 C2
Signature char[4] 4 RLND
Device char[8] 8 roifspsx
Unknown uint8[3] 6 00 00 00
SampleIndex uint8 1 04 see below
Padding uint8[] 434 00 00 ... all zeros

Notes:

SSND chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 SSND
ChunkSize uint32 4 00 0D BD 88 see below
Offset uint32 4 00 00 00 00 always 0
BlockSize uint32 4 00 00 00 00 always 0
Data int16[] ?

Notes:

WAVE sample file format

This format is generated by the Roland Wave Converter application.

Samples are 44.1 kHz 16-bit PCM files in RIFF WAVE format with an additional Roland-specific header. They can be either mono or stereo.

The sample is a RIFF file with the structure:

This is a little-endian format, i.e. the least significant byte comes first and bytes appear in reverse order. For example, 176,400 is 2B110h and appears in the file as 10 B1 02 00.

RIFF chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 RIFF
ChunkSize uint32 4 20 37 02 00 see below
Format char[4] 4 WAVE

Notes:

fmt chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 fmt
ChunkSize uint32 4 12 00 00 00 18 bytes
AudioFormat uint16 2 01 00 PCM
NumChannels uint16 2 02 00 1 or 2
SampleRate uint32 4 44 AC 00 00 44100 Hz
ByteRate uint32 4 00 1B 02 00 see below
BlockAlign uint16 2 04 00 see below
BitsPerSample uint16 2 10 00 16-bit
ExtraParamSize uint16 2 00 00

Notes:

RLND chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 RLND
ChunkSize uint32 4 CA 01 00 00
Device char[8] 8 roifspsx
Unknown uint8[3] 3 00 00 00
SampleIndex uint8 1 05 see below
Padding uint8[] 443 00 00 ... all zeros

Notes:

data chunk

Field Type Bytes Data Notes
ChunkID char[4] 4 data
ChunkSize uint32 4 see below
Data int16[] ?

Notes:

Pad info file

This is stored alongside the samples in PADINFO.BIN and contains 120 × 32-byte records, one for each pad from A1 to J12.

In this file, values are stored in big-endian order, i.e. an offset of 512 is 200h and stored as 00 00 02 00.

Field Type Bytes Data Notes
OrigSampleStart uint32 4 00 00 02 00
OrigSampleEnd uint32 4 00 02 37 28
UserSampleStart uint32 4 00 00 02 00
UserSampleEnd uint32 4 00 02 37 28
Volume uint8 1 7F 0-127
Lofi uint8 1 00 0/1
Loop uint8 1 00 0/1
Gate uint8 1 01 0/1
Reverse uint8 1 00 0/1
Format uint8 1 01 see below
Channels uint8 1 02 1 or 2
TempoMode uint8 1 00 see below
OrigTempo uint32 4 00 00 04 B0 see below
UserTempo uint32 4 00 00 04 B0 see below

Notes:

Outbound Links: