# Prototype content packs

> ⚠️ **PROTOTYPE / PRIVATE DOGFOOD content — NOT core app source, NOT a redistribution claim.**
> Quarantined here so it never mixes into `app/` or `libs/`. See each pack's own `README.md` +
> `manifest.json` for provenance and license status.

These are optional content packs (currently community NKS packs) bundled so beta testers get useful
presets/artwork **without hunting for NKS zips or hand-placing dozens of files**. They are a
**fallback** source — official/vendor NKS installed on the machine always takes precedence.

## Install (one step + refresh)

```sh
scripts/install_prototype_content_packs.sh --refresh ~/TopoLibrary
```

What it does:
1. Copies every `content-packs/prototype/**/extracted/` pack into your **NKS user-content root**
   (`~/Documents/Native Instruments/` on macOS; override with `TOPO_NKS_ROOT`). **Additive** — never
   overwrites your existing files (use `--force` to overwrite).
2. Runs `topo-refresh` against your library so the presets enter the Topo index.

**Quit Topo Rack before running** — the refresh scans installed plugins, and a running app can contend
with it. Then **(re)start Topo Rack**: the packs' presets appear in Browse under their plugin.
(Installing into the NKS root also makes them visible to NKS hosts like Komplete Kontrol.)

If a pack's presets don't appear, just re-run `topo-refresh ~/TopoLibrary` with the app closed.

Run without `--refresh` to install only, then refresh yourself: `topo-refresh ~/TopoLibrary`.

## Why a script, not auto-discovery (yet)

`topo-refresh` scans standard NKS roots, not the repo. The script is a **bridge**: it installs repo
packs into a discovery root so refresh finds them. Making Topo scan `content-packs/` directly (or
unpack into a Topo-owned content cache) is deferred — **RACK-101**, gated behind the engine path
(RACK-96 → RACK-97). The long-term shape is **app** + a **separate optional content-pack artifact**.

## Packs

| Pack | Plugin | Presets | License | Notes |
|------|--------|---------|---------|-------|
| `nks/community/air_music_technology/iona/` | AIR Music Technology — Iona | 104 (instrument) | `unknown_prototype_only` | NICA uses VST3 paramIDs → macro mapping needs the paramID-aware join (RACK-101); browsing/load/identity valid. Credit: TallerThanPenguins (NI forum). |
| `nks/community/air_music_technology/tape_double_track/` | AIR Music Technology — AIR Tape Double Track | 69 (FX) | `unknown_prototype_only` | `.nksfx` effect presets → load onto an FX slot. Same paramID macro caveat (RACK-101); browsing/load/identity valid. Credit: jggorman (NI forum). |
| `nks/community/air_music_technology/jura/` | AIR Music Technology — Jura | 503 (instrument) | `unknown_prototype_only` | Large pack; `.ogg` previews stripped (~20 MB) to keep the repo lean. Same paramID macro caveat (RACK-101); browsing/load/identity valid. Credit: Mercury (NI forum). |
