JUKEBOX.SI

From LEGO Island Wiki
Revision as of 12:35, 18 April 2019 by MattKC (talk | contribs) (Created page with "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 s...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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