File formats

Fingerprints

How Live recognises a file again: the size and the checksum it stores with every reference, where vendors and pack updates break that, and what livesaver compares instead.

OriginalCrc / Crc = CRC-16/UMTS over the first 16 KB

  • Algorithm: width 16, poly 0x8005, init 0, no reflection, xorout 0 (a.k.a. CRC-16/BUYPASS).
  • Check value: "123456789" → 0xFEE8.
  • Computed over the first min(size, 16384) bytes. Paired with the file size:
    • new format: OriginalFileSize / OriginalCrc
    • old format: SearchHint/FileSize / Crc (with MaxCrcSize = 16384)
  • 0 / 0 means "no fingerprint". Generators often write that, and Live still loads such files.

Evidence (research agent, 2026-09-30): the CRC was recomputed for files Live had saved, at the exact commit where the file size matched.

Saved byFileSizeStoredComputed
Live 9.6 (SearchHint/Crc)m4l-connection-kit OSC Leap Motion.amxd234,8346307663076
Live 11.3.13maxdevtools Test.amxd19,4283703137031 (the whole-file CRC would be 42025)
Live 12.0maxdevtools DoneLoading.amxd3,5201561815618

The fixture fixtures/samples/Lib1/Kick/1.wav gives (2000324, 17226). Around 31 other CRC-16 variants and byte ranges were tried, and none matched. abletoolz's README still lists this as unsolved.

Exceptions used when matching

  • Vendor re-saves. Native Instruments and Ableton re-saved library files with a padding byte or appended metadata, which changes only the RIFF/FORM size field in the first 16 KB.
    • Recompute the CRC with bytes 4–8 set to size − k for k ∈ {7, 8, 9} (<I for RIFF, >I for FORM), where size is the stored size.
    • This counts as verified.
    • Only for samples with crc ≠ 0, candidates inside a vendor root (Factory Packs, Core Library, vendorLibraries such as /Users/Shared), and 0 < |Δsize| ≤ 8192.
  • Pack samples. Ableton updated pack files in place, so the same size is enough.
    • Applies when the ref is a pack sample (LivePackName set, type 5, or "core library"/"factory packs" in the stored path, lowercased) or the candidate lies in an installed pack.
    • Marked uncertain.
  • Library files with other tags (opt-in: --match-library-path). Vendors also changed the tags of samples between library versions, and tags sit after the audio. A sample shorter than 16 KB has them inside the fingerprint, so the installed file can never match it.
    • Used when nothing above matched: the candidate lies inside a vendor root, its last 4 path components equal those of the stored path (the file name plus three folders, e.g. Samples/Drums/Shaker/Shaker 1.wav, so a renamed library folder still counts), and |Δsize| ≤ 16.
    • Marked uncertain: the audio cannot be confirmed.
    • Not for Max devices.
  • crc = 0 and size > 0: a size match counts as certain.
  • Max devices: exact fingerprint only. Without a stored size, all candidates must be byte-identical (content_hash).

Audio hash (tie-breaking)

When several candidates tie on the longest path ending, they are accepted only if their audio data is identical:

  • SHA-1 over only the fmt + data chunks (RIFF, little-endian sizes) or COMM + SSND (FORM, big-endian); chunks are padded to even lengths.
  • Otherwise, a SHA-1 of the whole file.

This reduced ambiguous matches on the real library from 2,285 to 2.