AIFF is Apple's IFF container: a FORM header, a form type (AIFF or compressed AIFC), then chunks, all big-endian. It mirrors RIFF with the bytes flipped and COMM in place of fmt. The standout is the sample rate, stored as an 80-bit IEEE-754 extended float that Python's struct cannot unpack, reassembled by hand. Hover a field to light its bytes, click a + for its table. Color marks kind (see the key).
FORM wraps the lot; COMM and SSND are required, the rest optional. Big-endian sizes, word-aligned with a pad byte on odd lengths.
Channels, frame count, bit depth, and the 80-bit sample rate. AIFC adds a 4-char compression type and a pascal-string name after the rate; acidcat validates the type against its known set and warns on anything else. See the byte map below.
A verbatim 24-byte AES3 channel-status block. acidcat decodes byte 0: bit 0 professional/consumer, bit 1 audio/non-audio, bits 2-4 emphasis, bits 6-7 sample rate (48000 / 44100 / 32000 / unindicated).
Apple Loops metadata: version, beat count, root key, scale, time signature. No official spec; layout field-verified against indexed loops. acidcat derives bpm = beats / (frames / rate) * 60, which matched the filename bpm on every test file.
18 bytes for AIFF. Example: 2 channels, 88200 frames, 16-bit, 44100 Hz.