Changes

1,183 bytes added ,  01:05, 6 December 2019
m
Fixed mix-up of N' and N in description of file
AST files contain PCM16 (16-bit signed) sound data. They're used in Super Mario Galaxy for musics, Legend of Zelda: Twilight Princess, and possibly in other games.
They contain an a header , followed by a BLCK chunkchunks which are divided in blocks (channels).<br>
All the data in those files are big-endian, except where mentioned.<br>
All the offsets are absolute (from begining beginning of the file), except where mentioned.<br>
All the sizes are in bytes, except where mentioned.<br>
| 0x0004
| 4
| Size of all the BLCK chunkchunks (size of the file minus 64)
|-
| 0x0008
|-
| 0x000C
| 42| Number of channels (typically 2 = stereo)|-| 0x000E| 2| Unknown(0xFFFF)
|-
| 0x0010
| 4
| Sampling rate in Hz (typically 0x7D00 = 32000 Hz)
|-
| 0x0014
| 4
| UnknownTotal number of samples
|-
| 0x0018
| 4
| Loopstart position in samples, from beginning of BLCK chunk/bytes?
|-
| 0x001C
| 0x0020
| 4
| Block sizefor the first chunk? (typically 0x2760)
|-
| 0x0024
| 28
| Unknown(Usually all zeros except 0x0028, which is 0x7F)
|}
=== BLCK chunk chunks ===
The BLCK chunk chunks directly follows follow the AST header. It contains They contain a 32-byte header, followed by the PCM16 sound data.<br>Here's a description of itthem:
{| class="wikitable"
| 0x0004
| 4
| Block size? (typically 0x2760)
|-
| 0x0008
| 0x0020
| variable
| PCM16 datablocks|} The data is divided into blocks. There's one block per channel.<br>The length of each block is defined by entry 0x0004 in BLCK chunk header.<br> WARNING: The PCM16 data is stored in BIG-ENDIAN! If you aren't working on the Wii, don't forget to byteswap each sample you read or your sound will be pure junk!<br> === Block mapping inside BLCK chunks === {| class="wikitable"|-! Number of channels! Type! Block mapping|-| 2| Stereo| Left; Right|-| 4| 4.0 Surround| Left; Right; Surround left; Surround right|} Stereo is the most common type. Some music in SMG, such as the beach theme, are 4.0 Surround, though. === AST file structure === {| class="wikitable"|-! Element! Size|-| AST header| 64 bytes|-| BLCK chunk header| 32 bytes|-| PCM16 block 1| N|-| PCM16 block 2| N|-| ...||-| PCM16 block N'| N|-| BLCK chunk header| 32 bytes|-| PCM16 block 1| N|-| PCM16 block 2| N|-| ...||-| PCM16 block N'| N|-| BLCK chunk header| 32 bytes|-| ...|
|}
WARNINGWhere: The PCM16 data <br>- N' is stored the number of channels (entry 0x000C in BIGAST header)<br>-ENDIAN! Don't forget to byteswap each sample you read or your sound will be pure junk!N is the block size (entry 0x0004 in BLCK chunk header)<br>Note[[Category: there's sound data for one channel only. Stereo mixing is performed by the Wii's DSP.File formats]]
1

edit