Skip to content

E-mu Emulator IV: read banks directly from EOS CD-ROM and hard disk images (stacked on #220)#222

Closed
douglas-carmichael wants to merge 3 commits into
git-moss:mainfrom
douglas-carmichael:e4b-image-read
Closed

E-mu Emulator IV: read banks directly from EOS CD-ROM and hard disk images (stacked on #220)#222
douglas-carmichael wants to merge 3 commits into
git-moss:mainfrom
douglas-carmichael:e4b-image-read

Conversation

@douglas-carmichael

Copy link
Copy Markdown
Contributor

Stacked on #220 - only the last commit ("read banks directly from EOS CD-ROM and hard disk images") is new; the earlier commits are PR #220.

The EOS samplers read no standard filesystem from CD-ROM at all - their media use E-mu's proprietary disk filesystem (the same family the emu3fs Linux kernel module covers). Most Emulator IV content in circulation exists as images of that filesystem: dumps of the commercial E-mu CD-ROM libraries and images for SCSI emulators like the ZuluSCSI.

This adds reading of such images (.iso, .img, .hda):

  • via the E4B source format (the file endings were added there), and
  • via the ISO/IMG source format (a new EMU3 entry in the format identifier, dispatched to the E4B detector - the same pattern as the Ensoniq and Roland image handling). The .hda ending was added to the ISO detector for hard disk images.

All filesystem geometry (block layout, cluster size) is taken from the superblock, so both the CD-ROM variant and the hard disk variant are read with the same code. Files which are not Emulator IV banks - e.g. EIII banks on discs of the older samplers, which use the same filesystem - are skipped. The filesystem layout is documented in documentation/design/E4B_FORMAT.md (reverse-engineered by the mpc2emu project from commercial CD-ROMs and EOS-formatted disks, cross-checked against emu3fs).

Validated against images generated by the mpc2emu reference builder (the three Ian Wilson banks as a CD image and as a 1 GB hard disk image): all 198 presets read through both source formats, sample PCM byte-identical to reading the plain bank files.

Reads and writes Emulator 4/E4X/E4XT/E4K (EOS) .e4b banks. Every preset
of a bank becomes one multi-sample (voices become groups); writing turns
each multi-sample into a preset of a bank, with library support for up
to 1000 presets/1000 samples per bank and content-based sample
de-duplication. Mapped: names, key/velocity ranges, root keys, tuning,
volume, forward loops, amplitude envelope (incl. hold and velocity
modulation), filter type/cutoff/resonance/key tracking and the filter
envelope with its depth. Stereo samples are mixed down to mono on write.

The layout follows the reverse-engineering of the mpc2emu project (see
documentation/design/E4B_FORMAT.md). Validated against the mpc2emu
reference parser and hardware-created third-party banks (198 presets,
1980 zones, all sample PCM byte-identical on read; written banks
re-parse with identical mapping). Not yet tested on real hardware.
…ample rates to the 48 kHz EOS maximum

The Read/Write row pair in SupportedFeaturesSampleFormats.ods documents the
supported features. Written samples with a higher sample rate are now
down-sampled to 48 kHz (the maximum EOS playback rate) with the zone and
loop positions moved accordingly; lower rates are kept as before.
…mages

The EOS samplers use a proprietary disk filesystem on their CD-ROMs and
hard disks (they read no standard filesystem from CD at all). Banks can
now be read directly from such images (.iso, .img, .hda - e.g. dumps of
commercial E-mu CD-ROM libraries or images for SCSI emulators like the
ZuluSCSI), both via the E4B source format and via the generic ISO/IMG
source format. All geometry is taken from the superblock, so both the
CD-ROM and the hard disk variant of the filesystem are read. Files which
are not Emulator IV banks (e.g. EIII banks on discs of the older
samplers, which use the same filesystem) are skipped.

Validated against images generated by the mpc2emu reference builder
(3 banks each as CD and as 1 GB hard disk image): all 198 presets read
through both source formats with sample PCM byte-identical to reading
the plain bank files.
@douglas-carmichael
douglas-carmichael deleted the e4b-image-read branch July 24, 2026 16:35
@douglas-carmichael

Copy link
Copy Markdown
Contributor Author

Folded into #220 - the same two commits are now part of the main Emulator IV PR, so everything can be reviewed in one place.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant