Skip to content

Build Resonon from Source

If you want to make changes to the core source code of resonon or have other reasons for not using the official installers, you can build and install from source.

  • macOS — the build and install process is macOS-only (it codesigns the binaries and symlinks them into /usr/local/bin).
  • Rust toolchain — install via rustup. A recent stable toolchain is required.
  • Node.js + npm — only needed to build the VS Code extension.

Clone the repository and run the install target:

Terminal window
git clone https://github.com/WARNS-AUDIO/RESONON.git
cd RESONON
make install

make install performs the full pipeline:

  1. Builds and stages the bundled audio plugins.
  2. Builds the resonon binary (release, with embedded plugins).
  3. Builds the resonon-lsp language server and the resonon-shim launcher.
  4. Installs them under ~/.resonon/versions/<version>+dev/ — the workspace version plus +dev, replacing any earlier local build.
  5. Copies the bundled sample kits and the standard library alongside them.
  6. Codesigns the binaries and makes this build the default, which also puts the launcher in ~/.resonon/bin/.
  7. Links resonon and resonon-lsp in /usr/local/bin to the launcher (this step uses sudo).

The local build is named by the version it really is, so a project pinned to that minor runs it, and a project pinned to another installed version runs that one — the launcher chooses exactly as it does for releases. To run the local build on a project pinned elsewhere, run the binary by path (~/.resonon/versions/<version>+dev/bin/resonon).

When it finishes, verify the install:

Terminal window
resonon --version
resonon version current

To add a published version beside it, use resonon version install <version>.

To build and install the extension from source:

Terminal window
make install-ext

If you just want to compile the binaries (for development or CI) without installing them system-wide, use cargo directly:

Terminal window
./scripts/stage-plugins.sh --release
cargo build --release --bin resonon --features embedded-plugins
cargo build --release -p resonon-lsp

The staging step is not optional. embedded-plugins embeds the bundled reverbs and samplers into the binary at compile time, reading them from target/plugins/release/ — so they have to be built and signed before resonon is compiled, not after. Skip it and the build fails on a missing directory.

The binaries land in target/release/.

The tests load the bundled plugins from a debug staging, so stage them once, and again after a plugin changes:

Terminal window
./scripts/stage-plugins.sh
cargo test --all