memlnaut-nisps/vcv/BUILDING.md
w1n5t0n ba0fcab2a2 feat(vcv,playground): complete Phases 8, 9, 10 — all phases done
Phase 8 — Companion webapp bridge:
- NISPS-FORMAT.md: full .nisps JSON schema with validation rules
- Webapp iml.js: exportState() / importState() with bias handling
- osc_server.hpp: minimal UDP OSC server (cross-platform, no deps)
- VCV module: OSC toggle + port selection in right-click menu
- osc-client.js: WebSocket client with auto-reconnect
- Bridge scripts updated for bidirectional VCV↔webapp relay

Phase 9 — Panel layout variants:
- MEMLNaut.svg: 30HP standard panel (matches widget positions)
- MEMLNaut-wide.svg: 44HP with expanded display and 8 input slots
- MEMLNaut-expander.svg: 8HP with 6 extra inputs and LINK LED

Phase 10 — Polish & distribution:
- README.md: 267-line user guide (install, quick start, RL workflow,
  presets, OSC, technical details)
- BUILDING.md: build prerequisites, SDK setup, local install
- Makefile.dist: platform-stamped zip packaging
- SPEC.md: performance characteristics (1060 MADs/pass, ~46KB/instance)
- SPEC.md: v1 compatibility assessment (v2-only recommended)
2026-03-28 01:48:44 +02:00

2.7 KiB

Building MEMLNaut VCV Plugin

Prerequisites

  • VCV Rack 2 SDK — download from https://vcvrack.com/manual/PluginDevelopmentTutorial or build from source
  • C++20 compiler — GCC 10+, Clang 11+, or MSVC 19.29+ (required by nisps-core for std::span and concepts)
  • GNU Make
  • zip (for distribution packaging only)

Build Steps

# 1. Set the SDK path (adjust to your installation)
export RACK_DIR=/path/to/Rack-SDK

# 2. Build the plugin
cd vcv
make

# This produces plugin.so (Linux), plugin.dylib (macOS), or plugin.dll (Windows)

The Makefile adds -std=c++20 and includes nisps-core headers from ../nisps-core/include. The VCV SDK's default -std=c++11 flag is filtered out to avoid conflicts.

Local Installation

# Option A: use the SDK's install target
make install
# Copies the plugin to ~/.local/share/Rack2/plugins-lin/ (or platform equivalent)

# Option B: manual symlink (useful during development)
ln -s $(pwd) ~/.local/share/Rack2/plugins-lin/MEMLNaut

After installing, restart VCV Rack (or use the module browser refresh if available). The MEMLNaut module appears in the module browser.

Distribution Packaging

# Build and package in one step
make -f Makefile.dist dist

# Or package an already-built plugin
make -f Makefile.dist package-only

# Output: dist/MEMLNaut-0.1.0-Linux-x86_64.zip (platform name varies)

The zip contains a MEMLNaut/ directory with plugin.so (or .dylib/.dll), plugin.json, and res/. Users extract this into their VCV Rack plugins directory.

Cross-Compilation

Cross-compilation is not currently supported. Building for each platform requires the native VCV Rack SDK and a matching C++20 toolchain.

Options for multi-platform releases:

  • GitHub Actions CI — build on Linux, macOS, and Windows runners. The VCV SDK provides Docker images for consistent builds.
  • Docker — VCV provides ghcr.io/vcvrack/rack-plugin-toolchain images for cross-platform builds from a Linux host.
  • Manual — build natively on each target platform.

The VCV Library submission process handles multi-platform builds automatically via their CI pipeline, but we are not submitting to the Library initially.

Troubleshooting

  • -std=c++11 conflicts: The Makefile filters this out, but if you see C++20 errors, verify your RACK_DIR points to a v2 SDK and that your compiler supports C++20.
  • nisps-core not found: The include path assumes nisps-core is at ../nisps-core/include relative to the vcv/ directory. Verify the path or adjust -I in the Makefile.
  • Plugin not appearing: Check that the built .so/.dylib/.dll is in the correct plugins directory and that plugin.json is alongside it.