ACIDCAT . FILE FORMAT REFERENCE

Bitwig Multisample Anatomy

ZIP archiveSampler instrument
rev 2026.07
magic PK 03 04
endian little (zip)
container zip
sample 50 4B 03 04

A .multisample is a ZIP: a multisample.xml zone map plus the member sample WAVs. The manifest binds each sample to a key range, root note, velocity layer, and loop, how a multi-sampled instrument is packaged into one file. It is the one Bitwig type not identified by leading magic (it shares PK with any zip), and Bitwig writes a mismatched CRC that trips a naive reader. Color marks kind (see the key). Pure stdlib to read: zipfile + xml.etree.

file regions

A ZIP: a manifest plus the member samples. No fixed byte header, so it is described structurally.

ZIP archive0x00 . PK 03 04

Standard ZIP local-file-header magic. This is the one Bitwig type not identified by leading magic alone (a JAR or any zip shares PK); acidcat peeks the central directory for multisample.xml to confirm.

magicPK\\x03\\x04
entriesmultisample.xml + member WAV/FLAC files
compressionSTORED (uncompressed) in practice
the CRC quirkwhy ZipFile.read raises

Bitwig writes each entry with a CRC-32 that does not match the data, so Python's ZipFile.read raises BadZipFile. acidcat reads entries by seeking past the 30-byte local header (plus filename + extra), bypassing the CRC check. The central directory, and namelist(), are unaffected.

symptomBadZipFile: Bad CRC-32
fixseek to header_offset, skip local header, read compress_size bytes
noteBitwig-specific and consistent; not corruption
multisample.xmlthe zone map

The manifest: an instrument name and a list of zones. Each zone binds a file to a key range, a root note, a velocity layer, and a loop. A drum kit is many single-note zones (low == high == root); an instrument uses wider ranges and velocity layers.

instrument name
/ tool + author
the member file this zone plays
root MIDI note + the key range covered
velocity layer (empty = full range)
loop mode and points
playback window into the file
member samplesone per zone

Ordinary WAVs (occasionally FLAC/AIFF), stored in the zip. Each can itself be walked by the WAV walker after extraction; the multisample layer is purely the zone map over them.

files.wav per zone
acidcatreports name, zone count, member count, and per-zone root/key/velocity/loop