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 | who wrote it | container | names / PCM | status |
|---|---|---|---|---|
| .E4B | EOS hardware (EIV, E4XT, E5000, E6400) | FORM E4B0 + TOC1, flat E4P1 presets | ASCII names, E3S1 16-bit PCM | verified |
| .exb | Emulator X / Proteus X (software) | FORM E5B0 + TOC2, presets + links | UTF-16LE, no embedded PCM | verified |
| .ebl | Emulator X / Proteus X SamplePool | FORM E5B0 + TOC2, one E5S1 | UTF-16LE, 16/32-bit split-channel | verified |
| .prog | Proteus X program | zlib / deflate stream (not IFF) | compressed | separate format |
| .s3p | Akai S3000 (import content) | "PSYSSS30" magic | Akai charset, no ASCII | see MPC sheet |
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 E4B0 → E5B0 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.
.E4B bank (FORM E4B0); FAT media let banks travel as files.exb + .ebl (FORM E5B0). The .exb re-releases of Proteus-2000 ROM sets are software, not hardware savesEMU3 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.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.
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.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.
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.
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).
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.
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.
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.
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.