ACIDCAT . FILE FORMAT REFERENCE

E-MU Emulator Anatomy

EOS → Emulator Xhardware → software
rev 2026.07

Hover a field to light its bytes, click a field with a + for its table. Color marks kind (see the key).

E-MU's samplers wrote an IFF-like FORM container with big-endian chunk sizes from the EOS era onward. Two generations share the container: the EOS hardware .E4B (form-type E4B0, ASCII names) and the Emulator X / Proteus X software .exb bank + .ebl sample library (form-type E5B0, UTF-16LE names). E-mu blue = verified against real files, amber = inferred.

format × generation matrix
formatwho wrote itcontainernames / PCMstatus
.E4BEOS hardware (EIV, E4XT, E5000, E6400)FORM E4B0 + TOC1, flat E4P1 presetsASCII names, E3S1 16-bit PCMverified
.exbEmulator X / Proteus X (software)FORM E5B0 + TOC2, presets + linksUTF-16LE, no embedded PCMverified
.eblEmulator X / Proteus X SamplePoolFORM E5B0 + TOC2, one E5S1UTF-16LE, 16/32-bit split-channelverified
.progProteus X programzlib / deflate stream (not IFF)compressedseparate format
.s3pAkai S3000 (import content)"PSYSSS30" magicAkai charset, no ASCIIsee MPC sheet
the bank / SamplePool split An Emulator X .exb bank holds only presets (E5P1) and sample links (E5SL); it never embeds sample data. The actual PCM lives in a sibling SamplePool/ of .ebl files, each an E5B0 container wrapping one E5S1. A link's index resolves to a pool entry. Bank and library are read independently.
the E4 → E5 lineage

The E4B0E5B0 bump in the form-type is the cleanest marker of the hardware-to-software jump: same container shape, restructured preset, Unicode names. The E3S1 sample tag in E4B is itself inherited from the Emulator 3 lineage, so the tags trace the family tree.

Emulator I / II1981-84, 8-bit floppy -- the disk is the bank, no file format
Emulator III / ESI1987-99, first 16-bit -- proprietary E-mu SCSI filesystem (512-byte blocks)
EOS (Emulator 4)1994-2002, EIV / E4XT / E5000 / E6400 -- the .E4B bank (FORM E4B0); FAT media let banks travel as files
Emulator X / Proteus X2004-2009, software VSTi -- .exb + .ebl (FORM E5B0). The .exb re-releases of Proteus-2000 ROM sets are software, not hardware saves
reading a native EOS CD-ROM An EOS factory disc is not ISO9660 -- it opens with the EMU3 filesystem magic, so it will not mount as a normal drive. But the .E4B banks sit inside contiguously: scan the raw image for FORM....E4B0 headers and carve form_size + 12 bytes. Carving that way recovers whole banks from a factory disc image without an EOS machine.
magic"FORM" + "E5B0"
endianbig (chunk sizes)
form sizefilesize - 8
statusverified

The outer container: a standard IFF FORM header. The E5 form-size follows standard IFF (filesize - 8), unlike the EOS E4B quirk (filesize - 12). Inside, chunks are tag[4] + size[BE u32] + data. Hover any byte to read the field. The bytes below are the head of a real .ebl.

FORM header (E5B0)
word-alignment is inconsistent EOS .E4B pads odd-sized chunks to a word (a trailing 0x00); the Proteus X software banks (Mo'Phatt, Orbit, Proteus 2000) do not. A reader that assumes IFF padding lands one byte past the next tag and desyncs. The fix is adaptive: after an odd chunk, consume the pad byte only if skipping it does not already land on a valid tag.
entry78 bytes fixed
endianbig (fields)
nameUTF-16LE @ 0x0e
statusverified

The table of contents: one fixed 78-byte entry per content chunk (a bank's TOC2 size is always a multiple of 78). Each entry names a chunk and gives its authoritative file offset, which can be cross-checked against the linear chunk chain to catch corruption. This mirrors E4B's 32-byte TOC1 exactly; E5 only widens the name to UTF-16. First 24 of 78 bytes shown.

TOC2 entry
the 0x0e name trap The name starts at 0x0e, after a 2-byte index at 0x0c. Decoded from 0x0c, the index's leading null byte truncates it to an empty string.
structurenested sub-chunks
namePhdr, UTF-16LE
sub-chunks~9 typical
statusname + voices + zones

Unlike E4B's flat preset, the E5 preset is a container of named sub-chunks -- typically nine: Phdr (header), E5IC, E5CL, E5MP, EXPs, and four LISTs. The preset name is UTF-16LE inside Phdr (at its sub-body offset 4). The voice list LIST/E5VL holds one E5V1 per voice, each with a zone list LIST/E5ZL of Zhdr zones; each zone gives a sample index (into the SamplePool, Zhdr[4:6]) and a root key (Zhdr[10]). Envelopes, filter, LFOs, and mod cords sit alongside, undecoded. No public source documents this layout.

E5P1 body head + Phdr

The preset name and sub-chunk inventory are the readable surface. The E-MU naming convention packs a fixed-width name with a 2-3 char tag (kyb/lnk for the keyboard-map vs link variants of a kit) and a GM-drum note number (36 kick, 38 snare).

nameUTF-16LE @ 0x06
rateLE u32 @ 0x6a
PCM16/32-bit split-channel
statusname + rate verified

The sample chunk (one per .ebl). A leading flag, then a UTF-16LE name at 0x06. Further in, a block of per-channel length / loop byte-offsets (stereo is stored as split channel blocks, not interleaved), then the sample rate at 0x6a. Header identity bytes shown below.

E5S1 identity header
later fields
0x48+start / end / loop byte-offsets, repeated per channel (split-channel) -- inferred
0x6a  u32 LEsample rate, Hz -- here 44,100; E-mu's reduced ROM rates (25000, 30000, 39579) are common -- verified
0x75  u8bytes-per-sample: 0x02 = 16-bit (only 16- or 32-bit occur, never 24) -- verified
PCM16- or 32-bit signed, split-channel; exact start offset undetermined
size6 bytes
endianbig
rolepreset → SamplePool
statuslayout verified, semantics inferred

A top-level chunk in a .exb bank linking a preset voice to a sample that lives in the SamplePool. Six bytes: a slot and a 1-based index. Because banks carry no PCM, these links are how a bank references its sounds.

E5SL link
magic"FORM" + "E4B0"
form sizefilesize - 12
tocTOC1, 32-byte, ASCII
statusverified

The EOS hardware bank, one generation older. Same FORM container, but form-type E4B0, a filesize - 12 size quirk (it excludes the 4-byte form-type), a 32-byte ASCII TOC1, flat E4P1 presets (a fixed header + packed voices that resolve zones to samples by index), and E3S1 16-bit PCM samples. A hardware-saved bank ends with an EMSt master-setup chunk; CD-streamed banks omit it and pad the last sample's tail.

FORM header (E4B0)
E3S1 sample header (identity)

An E3S1 identity header. E4 uses ASCII names (E5 widened to UTF-16); the _A2 suffix encodes the sample's root note. The numeric fields follow: sample rate at 0x36 (u32 LE), a loop-flag word at 0x3c, and loop start / end offsets.