← hed0rah.github.io
ACIDCAT . FILE FORMAT REFERENCE

Audio File Anatomy

21 formatsinteractive
rev 2026.07
view byte / bit maps
verb hover . click
source acidcat parsers

Byte-level references for the formats acidcat parses. Each page lays a real file out field by field. Hover any field to light its exact bytes or bits and read the decode; click a field marked + to open its lookup table. Every example byte is verified against acidcat's own walker.

value (read from a table) flag bit offset / reserved color marks kind, like syntax highlighting

Formats

MP3 / MPEG audio
Not a container: an ID3v2 tag, self-describing MPEG frames, an ID3v1 trailer. The 4-byte frame header as a bit-register, plus the Xing/LAME VBR header.
bit + byte
WAV / RIFF
A chunked container. The fmt and the namesake ACID loop chunk drawn byte by byte; smpl, cue, LIST, and the extensible fmt for surround and high bit depths.
byte map
FLAC
Metadata blocks then audio frames. The block header as bits, the bit-packed STREAMINFO, and the one little-endian trap in an otherwise big-endian format.
bit + byte
AIFF / AIFC
Apple's big-endian IFF. The COMM chunk, with its sample rate stored as an 80-bit IEEE-754 extended float that struct cannot unpack, reassembled by hand.
byte map
8SVX
The Amiga's IFF 8-bit sampled voice (EA IFF, 1985) -- a direct ancestor of RIFF/WAVE. The VHDR voice header maps one-to-one onto fmt; ANNO is the Amiga-side ISFT tool tell; BODY is 8-bit signed PCM or Fibonacci-delta. In Amiga copper.
byte map
MIDI
An MThd header and MTrk tracks. The division field expanded bit by bit, where the top bit flips ticks-per-quarter into SMPTE frame timing.
bit + byte
RMID
A Standard MIDI File wrapped in a RIFF container. Little-endian RIFF framing drawn byte by byte around the big-endian SMF it carries in a data chunk.
byte map
MP4 / M4A
ISO base media: a tree of nested boxes, big-endian. The box header and ftyp brand block drawn byte by byte, plus the moov/trak/mdat hierarchy.
byte map
OGG
Xiph's page-and-segment container, little-endian. The 27-byte page header, the header-type flag bits, and the lacing model that frames packets.
bit + byte
Ableton Live
The .asd analysis sidecar, reverse-engineered from 8,196 specimens: a frame grid that recovers the sample rate, length and duration of audio that has been deleted, and a self-describing object tree of warp markers, loops, onsets and time signature. Plus the gzipped-XML Set family and Max for Live.
byte
Bitwig .bwpreset / .bwclip
A length-prefixed tagged tree with an embedded zip of assets. The BtWg meta block, device parameters as big-endian f64, and the note-clip pitch lanes.
byte map
Native Instruments
The NISound hsin container (Massive, Absynth, Kontakt), plus .ksd (zlib+XML) and .nksf (RIFF+MessagePack). Recursive frames with cascading size fields.
byte map
Vital
A bare JSON preset. The synth version, the wavetable and LFO inventory, the effects chain, and the modulation matrix of source to destination routings.
json
NCW / NI Compressed Wave
Native Instruments' compressed audio: the header, the per-block deltas, and the bit-packing that stores Kontakt sample content.
byte map
VST FXP
A VST 2 preset. The 28-byte big-endian CcnK header byte by byte: the preset kind, the plugin FourCC (XfsX = Serum), and the opaque-chunk vs float-params split.
byte map
ReCycle RX2
A sliced loop. The big-endian CAT/REX2 IFF group drawn byte by byte, and the transient slice markers hidden in a nested SLCL sub-group.
byte map
Bitwig Wavetable
A vawt container: a 12-byte little-endian header (wave length, wave count, data offset) byte by byte, then raw int16 samples, one single-cycle wave after another.
byte map
Bitwig Multisample
A ZIP: a multisample.xml zone map plus the member WAVs. The zone bindings (key range, root note, velocity, loop) and Bitwig's mismatched-CRC quirk.
zip / xml
Akai MPC family
Nearly four decades in one tabbed sheet: the vintage .snd sounds and .pgm programs as hover-to-decode register maps, and the modern .xpm / .xpn / .xtd / .mpcpattern. In Akai colors.
byte + json
E-MU Emulator
The EOS .E4B hardware bank and the Emulator X / Proteus X .exb / .ebl software format, both FORM containers (E4B0 / E5B0). The 78-byte TOC2, nested E5P1 presets, E5S1 samples, and the bank / SamplePool split. In E-mu blue.
byte map
Kurzweil K2000
The K2000 / K2500 / K2600 .KRZ bank: not a chunked container but a big-endian object database -- a PRAM header, negative-length object blocks (Sample / Keymap / Program), and one shared PCM blob, all cross-referenced by numeric id. Plus the SROM effects file. In Kurzweil moss.
byte map
SoundFont 2
A RIFF (sfbk) sound bank. The pdta preset / instrument / sample-header hierarchy, and the shdr records pointing into one shared smpl PCM pool.
byte map
Tracker Modules
The MOD / XM / S3M / IT module family: a header, a pattern order, and sample descriptors whose PCM lives elsewhere in the file, each a carveable byte region. S3M's SCRM magic hides 44 bytes in.
byte map
RF64 / BW64
RIFF's 64-bit successor. When a size overflows 32 bits it becomes 0xFFFFFFFF and the true 64-bit sizes live in a ds64 chunk, so a WAV can exceed 4 GB.
byte map
Gravis UltraSound
The .PAT patch: a four-level nest of fixed-size headers (patch / instrument / layer / sample), each followed by its raw PCM. MilliHertz frequency fields, the eight-flag modes byte, little-endian. In GUS teal.
byte map
Akai S5000 / S6000
The .akp keygroup program: a RIFF/APRG of nested IFF -- prg, then a kgrp per keygroup holding kloc, envelopes, and up to four velocity zones. The zero RIFF-size quirk; zones name external .wav samples. In Akai orange.
byte map
FXpansion BFD
The .bfdlac drum hit: a big-endian IFF container (BFDC) of fmt / BFDi / Indx / data -- uniform 24-bit/44100/stereo, an Indx block seek table for random access, and the undocumented lossless lac codec. In BFD brick.
byte map
Amiga Music
Four big-endian 68k formats in one sheet: SMUS (Sonix IFF score), OKT (Oktalyzer's four-to-eight channel split), MED / OctaMED, and Future Composer. IFF is the ancestor of RIFF/WAV. In Amiga cobalt.
byte map
Xfer Serum
The .SerumPreset: an XferJson magic, a UTF-8 JSON metadata block, then the wavetable / modulation blob -- zstd-compressed in Serum 2, whose Zstandard magic gives the generation away. In Serum violet.
byte + json
Arturia Analog Lab
The .labx bank: a STORED zip of presets, each path spelling engine / bank / name, each entry a Boost text-serialization archive of length-prefixed metadata strings. In Analog Lab plum.
zip + text
SigMF
The raw-PCM-plus-header idea applied to radio: a headerless IQ stream (.sigmf-data) beside a JSON sidecar (.sigmf-meta) of global geometry, frequency-tagged captures, and the composable datatype grammar. In phosphor green.
byte + json