mikkeli fc45d3eec0 docs: correct bundle output paths and add Linux prerequisites
Two things in the build instructions were wrong rather than merely thin.

The stated output paths (`nih_plug_template.vst3`) are not what the
bundler produces: `cargo xtask bundle` names artifacts from the `name` key
in bundler.toml, so a fresh clone actually yields `Plugin Name.vst3`.
Anyone following the deploy steps verbatim would copy a path that does not
exist. The VST3 artifact is also a directory bundle, so the `cp` needed
`-r` to work at all.

The egui editor pulls in baseview and x11, whose build scripts abort on a
missing `gl.pc` with a pkg-config error that says nothing about this
project. Naming the packages up front turns a confusing first-build
failure into a one-line fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WHt4DykxXaQnyaJfyS8KCn
2026-08-29 10:23:59 +09:00
2026-08-21 03:55:36 +00:00

NIH-plug Template

Minimal scaffold for new NIH-plug audio plugins (Rust + CLAP/VST3 + egui).

Based on patterns from musiikki/codename-206.

Quick Start

# Clone this repo as your starting point
git clone http://192.168.2.199:3005/musiikki/nih-plug-template my-plugin
cd my-plugin

# Edit: src/lib.rs, Cargo.toml, bundler.toml — replace placeholder values
# See musiikki/codename-206 for a real-world example of how to fill these in

Build

# Install Rust via rustup: https://rustup.rs
# No VST3 SDK needed — NIH-plug bundles its own bindings.

# Build + bundle the VST3 and CLAP
cargo xtask bundle nih_plug_template --release

Output: target/bundled/<name>.vst3 and <name>.clap, where <name> is the name set in bundler.toml — not the crate name. Out of the box that means target/bundled/Plugin Name.vst3.

On Linux the egui editor needs the GUI development headers:

sudo apt install pkg-config libgl-dev libx11-dev libxcursor-dev libxcb1-dev \
    libxcb-icccm4-dev libxcb-dri2-0-dev libx11-xcb-dev libxkbcommon-dev libxkbcommon-x11-dev

Deploy

FL Studio

FL Studio scans C:\Program Files\Common Files\VST3 by default, ignores directory junctions (so a symlinked bundle is invisible to its scanner), and caches failed scans.

  1. Copy the .vst3 bundle to a folder FL scans (e.g. C:\Program Files\Common Files\VST3).
  2. Copy the .clap bundle to a folder FL scans (e.g. C:\Program Files\Common Files\CLAP).
  3. In FL Studio: Options → Manage plugins → tick "Rescan previously failed plugins" → Find installed plugins, then search for your plugin name (set in bundler.toml).

Linux

# VST3
cp -r "target/bundled/Plugin Name.vst3" ~/.vst3/

# CLAP
cp -r "target/bundled/Plugin Name.clap" ~/.clap/

# Or globally:
# sudo cp -r "target/bundled/Plugin Name.vst3" /usr/lib/vst3/
# sudo cp -r "target/bundled/Plugin Name.clap" /usr/lib/clap/

Project Structure

Cargo.toml          # Package deps — NIH-plug pinned to codename-206's rev
bundler.toml        # Bundle name for `cargo xtask bundle`
src/lib.rs          # Plugin skeleton — fill in params, DSP, editor
xtask/              # Bundler xtask (cargo xtask bundle)
.cargo/config.toml  # xtask alias

License

Apache-2.0

VST3 Licensing Note

You must accept Steinberg's VST3 SDK licence before distributing VST3 binaries. NIH-plug's VST3 bindings are GPLv3; if you distribute, the plugin must also be GPLv3 (or you need a commercial Steinberg licence). CLAP has no such restriction.

S
Description
Minimal NIH-plug audio plugin scaffold (Rust + CLAP/VST3 + egui)
Readme GPL-3.0 219 KiB
Languages
Shell 83.7%
Rust 16.3%