JUKEBOX.SI
JUKEBOX.SI is an SI file containing 60 audio tracks of music and radio dialogue. With a few exceptions[citation needed], all of Lego Island's music is stored in JUKEBOX.SI.
Technical Information
All audio in JUKEBOX.SI is uncompressed mono PCM. Most of the tracks are in 11025 Hz and 16-bit, but a handful are 22050 Hz and 8-bit. Each track starts with a header specifying its format.
Due to SI files' standardization with RIFF, each track's header (containing information about the sample rate, format, etc.) can be transplanted directly into a WAV file, however due to their chunked/interleaved nature, the PCM data cannot be directly transplanted without noticeable clicks and glitches in the output.
Music appears to begin with a MxDa
and is split into chunks of MxCh
. The MxDa
header contains information about the PCM audio in the MxCh
chunks. The first MxCh
appears to be information about the remainder of the chunks in the MxDa
structure.
All bytes are little endian.
MxDa Header Specification
Bytes | Offset | Description |
---|---|---|
MxDa |
0 | Identifier |
MxCh |
4 | Chunk Header |
Chunk Size | 8 | 4-byte Integer |
Sub-Chunk Size | 22 | 4-byte Integer - The remaining size of this chunk after this value |
Audio Format | 26 | 2-byte Integer - 1 = PCM, others indicate some form of compression |
Number of Channels | 28 | 2-byte Integer - 1 = Mono, 2 = Stereo |
Sample Rate | 30 | 4-byte Integer |
Byte Rate | 34 | 4-byte Integer - is equal to Sample Rate * Number of Channels * BitsPerSample/8
|
Bytes per Sample | 36 | 2-byte Integer - is equal to Number of Channels * BitsPerSample/8
|
Bits per Sample per Channel | 38 | 2-byte Integer - 8 = 8-bit, 16 = 16-bit, etc. |
MxCh Specification
Bytes | Offset | Description |
---|---|---|
MxCh |
0 | Chunk Header |
Chunk Size | 4 | 4-byte Integer |
Data | 8 | Arbitrary data no more than "Chunk Size" in bytes |