Hi Native Instruments team & @Jeremy_NI.
My name is Benjamin Gordon. I'm a music producer and developer building a tool called SampleScout — a macOS utility designed to help producers keep their Logic Pro projects self-contained by automatically locating, copying, and relinking samples that are missing or stored in cloud-only locations (Dropbox, iCloud, etc.).
I'm writing because we've hit a hard wall specifically with Battery 4, and I believe a small change on your end could make a meaningful difference to a lot of producers.
What SampleScout does
When a producer moves a project or their cloud storage goes offline, samples go missing. SampleScout scans a Logic project, finds where samples are referenced, locates the real files on disk or in accessible folders, copies them into the project bundle, and repoints the plugin to the new location — automatically, without the producer having to do anything manually.
We've already built this successfully for other plugins (including Serato Sample). Battery 4 is where we're stuck.
What we've tried and why it failed
We spent considerable time attempting to build Battery 4 support. Here's exactly where we ended up:
1. Reading sample paths from the project
Battery 4 stores sample paths inside a proprietary binary format (DSIN) embedded in the Logic project's plugin state. We were unable to decode this format. The paths are not stored as readable UTF-8 or UTF-16 text — they appear to use a modified encoding we couldn't reverse-engineer. No public documentation or open-source tools exist that cover this format for Battery 4 specifically.
2. Rewriting sample paths
Even if we could read the paths, we can't write new ones back for the same reason — the encoding is opaque to us.
3. komplete.db3
We investigated whether Battery 4's komplete.db3 database could be used to influence path resolution. It can't — it only powers the file browser UI and plays no role in how Battery 4 loads samples from a saved project.
4. Cloud-only file detection
Dropbox and iCloud use "Smart Sync" / "Optimise Storage" features that leave zero-byte stub files on disk. Battery 4 cannot tell the difference between a real file and a stub — it opens the stub, reads empty data, and either plays digital noise or crashes. There is no graceful "file is cloud-only" warning. This is the most immediately painful problem for producers.
5. The missing samples dialog
When paths do fail, Battery 4's missing samples dialog crashes with a malloc error (MissingSamplesPanel::loadFolderNameDupl) before the user can interact with it or use "Resolve Automatically." This makes even the manual recovery path unreliable.
What we need to make this work
We're not asking for anything complex. Any one of the following would unblock us:
- Cloud-only file detection in Battery 4 — if Battery 4 could detect that a file is a Dropbox/iCloud stub (checking
st_blocks == 0 on macOS) and warn the user before loading, that alone would prevent the crash and corruption. Even a simple alert saying "this sample is cloud-only, please download it first" would be transformative. - A documented way to read sample paths from a saved kit/project state — even read-only access. A command-line tool, a public API, or documented file format spec for the DSIN / plugin state blob. We don't need to write to it if we can at least read the filenames and paths.
- A programmatic relink API — a way to pass Battery 4 a mapping of old path → new path without requiring GUI interaction. Even a simple JSON file it reads on startup would work.
Why this matters
Producers increasingly work across machines, with samples spread across cloud storage. When a project is months old and cloud sync has moved things around, reconstructing it manually is hours of work — clicking through missing sample dialogs one file at a time. Battery 4 is one of the most widely used drum machines in the world. Making it resilient to cloud storage is genuinely high-value for your users.
SampleScout is designed to do this silently in the background. We just need a door to open.
I'm happy to share code, test builds, or get on a call with your developer team. This isn't about reverse-engineering your format — it's about building something that makes Battery 4 better for producers.
Thanks for reading.
Benjamin Gordon