JUKEBOX.SI: Difference between revisions

Jump to navigation Jump to search
2,118 bytes added ,  18 April 2019
no edit summary
No edit summary
No edit summary
Line 15: Line 15:
All bytes are little endian as is normal for RIFF-based files.
All bytes are little endian as is normal for RIFF-based files.


'''MxDa Header Specification'''
=== Extracting Audio ===
 
* Audio streams can be located in JUKEBOX.SI by searching for " WAV" (note the prepending space).
** A few bytes before the " WAV" will be the original filename of the WAV file prior to being imported into the SI file if you wish to retrieve that too.
* A few bytes later will be "LIST" which appears to specify an array (or "list") of chunks that make up one audio track. The next 4 bytes will by a 32-bit integer for the total size of this "LIST", in other words the total amount of upcoming bytes of the SI file that belong to this particular audio track.
* The first [[MxCh]] after the "LIST" will contain WAV-compatible header data, most of which can be transplanted directly into a WAV file (see below for details).
* Every MxCh after this one will contain PCM audio data (formatted according to the header data in the first MxCh). Each MxCh has a 22 byte header that will need to be stripped out when extracting. After the 4 byte "MxCh" identifier, the header contains a 4 byte integer  of the total amount of bytes that the chunk takes up (minus 8 bytes for the "MxCh" identifier and chunk size integer). All data after this 22 byte header is PCM audio that will be exactly "chunk size - 14" bytes in size (14 is the size of the 22 byte header minus the first 8 bytes).
* Each MxCh's data can be dumped until you reach the end of the "LIST" size extracted above. At that point the end of the track has been reached and the process must be repeated to extract the next track.
 
=== Header ===
 
{{Incomplete}}
 
As mentioned above, the first MxCh in a "LIST" contains solely header data. Most of this data is completely compatible with the specification for WAV.
 
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 41: Line 55:
|}
|}


'''MxCh Specification'''
Use this [http://archive.is/XXc3O WAV File Format Header Specification] and you'll be able to determine the ordering and size of the 16 bytes from "Audio Format" to "Bits per Sample per Channel" are identical. This makes up most of the WAV header data (apart from file and chunk size which cannot be determined from here) and can be directly transplanted to make extraction easier. Note that the MxCh header contains a few more bytes after this and therefore its "Sub-Chunk Size" is larger than the average WAV file's. These extra bytes should be ignored and not transplanted, though if they are the "Sub-Chunk Size" should be translated too (or at least increased to accommodate for them).
{| class="wikitable"
|-
! Bytes !! Offset !! Description
|-
| <code>MxCh</code> || 0 || Chunk Header
|-
| Chunk Size || 4 || 4-byte Integer
|-
| Data|| 8 || Arbitrary data no more than "Chunk Size" in bytes
|}

Navigation menu