Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elk-nam-vst3

A JUCE-based VST3 port of Neural Amp Modeler (NAM), aimed at Elk/Sushi. There is no GUI — the .nam model to run is set at runtime by the host via Elk's VST3 string-property extension (the same mechanism Elk's irconvolution uses for its ir_path property), under the property name model_path.

Loading is asynchronous and lock-free: setting model_path triggers a background-thread load into an inactive model slot, followed by an atomic swap once loading succeeds — the audio thread never allocates or blocks.

You must run your audio host at the same sample rate the model was trained at (usually 48kHz) — no resampling is done by the plugin. This plugin is mono in / mono out, since NAM models are stateful (LSTM/WaveNet) and can't be safely run across multiple channels with a single model instance.

The Sushi track this plugin is placed on must also be declared with "channels": 1. On Elk hardware (RASPA), placing a mono-bus plugin on a track declared with more channels than it negotiates down to (e.g. "channels": 2) results in total silence on that track, even when the plugin is bypassed — see nam-pi.json/nam-x86.json for a working example. This wasn't reproducible via Sushi's offline/dummy frontends on x86; it's specific to the real-time RASPA audio path.

Building for Elk Audio OS

Clone with submodules:

git clone --recurse-submodules <this-repo-url>
cd elk-nam-vst3

Use elk-os-builder to build. It builds a Docker container that comes with everything needed to cross-compile for platforms supported by Elk Audio OS. Build the container, run it according to its documentation, source the included SDK and build the plugin with:

cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel

The built .vst3 will be under build/NeuralAmpModeler_artefacts/Release/VST3/.

Parameters

  • input_level / output_level: input/output gain in dB (-20..20, default 0). Output level is automatically compensated by the loaded model's normalized loudness (to -18dB), same as the LV2 version.

Testing the Elk property

The getPropertyInfo/setPropertyValue/propertyValueChanged/async-load/swap flow can only be exercised by a host that speaks Elk's VST3 extension (Sushi) — a generic DAW will load the plugin with no model active (silent passthrough per the gain stages) and no way to set model_path.

About

vst3 wrapper for NAM for elkaudio os

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages