Nitools
🎛️ Extract and convert Native Instruments resources for other devices and workflows, like the SP 404
Install / Use
/learn @joanroig/NitoolsREADME
⬇️ Download
Pre-built executables for Windows and macOS are available on the Releases page.
🛠️ Usage
For a detailed user guide, including GUI screenshots and step-by-step instructions, please refer to the User Guide.
✨ Overview
NITools is an unofficial, multi-platform suite of tools designed to bulk extract, convert, and repurpose Native Instruments content for broader workflows.
The initial idea was to export Maschine groups to use them in the Roland SP 404 MK2. Since then, the project evolved to allow configurable parameters to export for other devices and to export more data.
Key Features
- GUI & CLI: Use via graphical interface or command line for maximum flexibility.
- Portable: Pre-built executables, no Python installation required.
- Cross-Platform: Supports Windows and macOS.
- Maschine Groups Exporter: Extract and process kits/samples from
.mxgrpfiles, ignoring internal VSTs and FX. - NKS Previews Exporter: Convert NKS audio previews to WAV for one-shot instruments on other platforms.
- Battery Kits Exporter (WIP): Early-stage tool to parse
.nbktkits for future export support.
⚠️ Compatibility Note
NITools has been tested only on Windows.
While pre-built executables are provided for macOS, some features may require adaptations (e.g., accessing the registry and other OS-specific behaviors).
Mac users should expect additional setup or adjustments. Feel free to open a PR!
Modules
<img alt="Groups Exporter" src="resources/icons/groups.png" width="16px"> Groups Exporter (Maschine)
- Scans a folder for all Maschine group files and parses sample data.
- Configurable normalization, sample rate, bit depth, and silence trimming.
- Pad reorder matrix and filtering options.
- Option to fill blank pads with a default sample.
- Option to include group preview samples.
<img alt="Groups Exporter" src="resources/icons/previews.png" width="16px"> Previews Exporter (NKS)
- Converts NKS
.previewsto standardized WAV files for easy browsing outside NI software. - Configurable normalization, sample rate, bit depth, and silence trimming.
- Options to skip content from Maschine, Battery, or the large 'Native Browser Preview Library'.
- Option to find the real instrument folder names for previews.
<img alt="Kits Exporter" src="resources/icons/kits.png" width="16px"> Battery Kits Exporter (WIP)
- Planned tool for exporting Battery kits, similar in functionality to the Maschine Groups Exporter.
📦 Development
Prerequisites
Before you begin, ensure you have the following installed:
- Python 3.13+: Required for running the scripts.
- Conda: Recommended for managing Python environments and dependencies, it is used in the build scripts.
- VS Code: Recommended IDE for development and debugging (optional, but useful for quick start configurations).
- create-dmg: For macOS executable bundling, install via Homebrew:
brew install create-dmg.
Installation
-
Clone the repository:
git clone https://github.com/joanroig/nitools.git cd nitools -
Set up a Python environment (recommended):
-
Conda (recommended):
Use the script rebuild_env.ps1, or manually execute:
conda env create -f environment.yml conda activate nitools
-
-
Install dependencies (if not using conda):
pip install -r requirements.txt
Overview
| Layer | Tool | Path | Purpose |
| -------- | ------------------------- | -------------------------------------------------- | -------------------------------------------------------------- |
| Launcher | GUI: Launcher | src/launcher.py | Central entry point; can launch both GUIs. |
| GUI | Groups Exporter GUI | src/apps/groups_exporter_gui.py | Extracts and processes groups/kits (pads, instruments). |
| GUI | Previews Exporter GUI | src/apps/previews_exporter_gui.py | Extracts and processes audio previews (short demo sounds). |
| CLI | Groups Build | src/processors/groups/build_groups_json.py | Extract raw group/kit metadata into a JSON index. |
| CLI | Groups Process | src/processors/groups/process_groups_json.py | Process groups (trim silence, normalize, etc.). |
| CLI | Previews Build | src/processors/previews/build_previews_json.py | Extract raw preview metadata into a JSON index. |
| CLI | Previews Process | src/processors/previews/process_previews_json.py | Process preview audio (trim silence, normalize, etc.). |
Quick Start (VS Code)
-
Run Launcher
- Open Run and Debug → "GUI: Launcher"
- Runs
src/launcher.pywhich can start the GUI tools.
-
Run GUI Tools Independently
- Groups Exporter GUI
- Run config: "GUI: Groups Exporter"
- Runs
src/apps/groups_exporter_gui.py - Handles Maschine groups/kits (pad layouts, mappings, kit metadata).
- Previews Exporter GUI
- Run config: "GUI: Previews Exporter"
- Runs
src/apps/previews_exporter_gui.py - Handles audio previews (short WAV samples used for browsing kits).
⚡ These GUIs can also be launched from the Launcher, but can run independently for development/debugging.
- Groups Exporter GUI
-
Run CLI Tools
There are 4 CLI processors that can be launched directly (the GUIs internally call these):
- Groups Build → Builds
all_groups.jsonfrom library kits. - Groups Process → Processes
all_groups.jsoninto individual kits. - Previews Build → Builds
all_previews.jsonfrom audio previews. - Previews Process → Processes
all_previews.jsoninto individual preview files.
- Groups Build → Builds
CLI Usage
1. build_groups_json.py
Extracts group/kit metadata and outputs a combined JSON.
python src/processors/groups/build_groups_json.py <input_folder> <output_folder> <generate_txt>
<input_folder>: Input library folder (e.g.D:/Libraries/Native Instruments/)<output_folder>: Destination folder (e.g../out/)<generate_txt>:true= also generate.txtfiles,false= skip
Example:
python src/processors/groups/build_groups_json.py D:/Libraries/Native Instruments/ ./out/ false
2. process_groups_json.py
Processes group JSON files into cleaned/usable kits.
python src/processors/groups/process_groups_json.py <all_groups_json> <groups_output_folder> [options]
Options:
--trim_silence→ Remove silence--normalize→ Normalize volume--matrix_json <path>→ Optional custom reorder matrix JSON file--enable_matrix→ Enable pad matrix reorder--filter_pads→ Filter groups: pad 1 contains keywords for pad 1, pad 2 for pad 2, pad 3 for pad 3 (case-insensitive)--filter_pads_json <path>→ Optional custom pad filter keywords JSON file- `
