Atlas Audio: Battery Kit Extractor
The Battery Kit extractor analyzes Native Instruments Battery kit files to discover library identifiers and kit names. Battery kits use the same NI container format as Kontakt instruments, so this extractor reuses the existing NI container parsing logic. It’s part of the Atlas Audio extractor pack.
Extension: .nbkt
Format Overview
NBKT files use the Native Instruments DSIN container format — the same binary structure used by .nki (Kontakt) files. The file begins with a size field followed by nested DSIN chunks containing metadata, preset state, and identity information.
Binary Structure
Offset Content
0x00 Container size (4 bytes LE)
0x04 Padding (4 bytes)
0x0C "hsin" marker (hash/identity block)
0x30 "DSIN" chunks begin (nested, variable)
Key DSIN chunk types:
| Type ID | Name | Content |
|---|---|---|
| 0x65 (101) | AUTHORING_APP | Product ID (identifies the parent library) |
| 0x6A (106) | - | Version/flags metadata |
| 0x6C (108) | SOUNDINFO | Kit name and metadata |
Kit Name
The kit name is stored as a UTF-16LE string in the SOUNDINFO chunk, typically near the end of the file. Examples: “Wonder Kit”, “Decoded Forms Snares Kit”, “Kalahari Kit”.
Product ID
The AUTHORING_APP chunk contains the product ID that links the kit to its parent library. This uses the same format as Kontakt’s AUTHORING_APP:
- Commercial kits: 82+ byte chunk with UTF-16LE product_id at offset ~44
- User-created kits: 52-byte chunk with no product_id
Product IDs are resolved to library names via komplete.db3 when available.
Battery Version
The DSIN chunks contain a version string (UTF-16LE, e.g., “4.1.6.27”) identifying the Battery version that created the kit.
What It Extracts
| Type | Source | Example |
|---|---|---|
Trait: kit_name | SOUNDINFO chunk | Kalahari Kit |
Trait: battery_version | DSIN version field | 4.1.6.27 |
| Edge (input): Library reference | AUTHORING_APP product_id | Session Drummer or kontakt:product_id:1234 |
Implementation Notes
This extractor reuses the NI container parsing logic from the Kontakt extractor (ni_container.rs). The DSIN format is identical — the only difference is the file extension and the semantic meaning of the content (drum kits vs. sampled instruments).
Example Usage
# Scan Battery kits
atlas scan ~/Libraries/NI/Battery/
# Find which library a kit belongs to
atlas inputs ~/Libraries/NI/Battery/Factory/Kits/Kalahari\ Kit.nbkt
Use Cases
- Kit inventory — Catalog all Battery kits with their names and parent libraries
- Library association — Link kits back to their source library via product ID
- Version tracking — Track which Battery version created each kit