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 IDNameContent
0x65 (101)AUTHORING_APPProduct ID (identifies the parent library)
0x6A (106)-Version/flags metadata
0x6C (108)SOUNDINFOKit 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

TypeSourceExample
Trait: kit_nameSOUNDINFO chunkKalahari Kit
Trait: battery_versionDSIN version field4.1.6.27
Edge (input): Library referenceAUTHORING_APP product_idSession 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