Free 30-day trial. macOS first. Join the waitlist.
← Formats

.exs

What a Logic sampler instrument contains, and how it finds its audio.

What it is

An .exs is a Logic sampler instrument. It's the file Logic loads to play a set of WAVs mapped across the keyboard, and it's what the Sampler plugin lists in its library menu.

Unlike the XML formats, this one is binary and little-endian. Opening it in a text editor shows very little, though you can usually spot the sample filenames and the four-character marker TBOS repeating through the file.

Kit Name/
  Kit Name.exs
  Kick 01.wav
  Snare 03.wav
  ...

What is inside

The file is a flat sequence of blocks. Every block opens with an 84-byte header carrying its type, its size and the TBOS magic, followed by fixed-size content.

block type   content size
  Instrument      88 bytes
  Zone           148 bytes
  Group          144 bytes
  Sample         600 bytes

Vocabulary

Logic calls the whole thing a sampler instrument. Elsewhere the same object is a multisample, an MPC keygroup program or a Kontakt instrument.

Note that Logic's modern Sampler replaced the old EXS24 plugin, but the file extension never changed. An instrument saved in 2004 and one saved today are the same format.

What reads it

Logic Pro, through the Sampler plugin. The format is Logic's own, and Sample Miner writes it natively rather than converting into it, which is why it carries loop points and velocity layers that a conversion would flatten.

Logic looks for instruments in ~/Music/Audio Music Apps/Sampler Instruments/ and reads subfolders, so an instrument in its own folder appears under that folder's name rather than loose in the list.

Why some .exs files crash Logic

Each sample block stores an absolute directory path in a 256-byte field, alongside the filename. Logic reads that field with a plain string length call and does not check for an empty value first, so an .exs written with that field blank can take Logic down on load rather than reporting a missing sample.

There is a second field that matters just as much. The sample block header carries a flag value, and without it Logic never reads the path fields at all. The instrument then loads, finds nothing and reports every sample as missing. Both of these are the reason a technically valid .exs from a conversion tool can still fail in Logic when a file written by Apple's own Auto Sampler works.

The limits

The path field is 256 bytes, and the filename field is 256 bytes. Very long sample paths get truncated rather than rejected, which turns into a missing-sample report at load time rather than an error at write time.

Moving an instrument to another machine moves the absolute path with it. If the samples are not at the recorded location, keep them beside the .exs so Logic can resolve them by name instead.