32 Commits

Author SHA1 Message Date
Mike Oliphant 37f5071e6a Fix smart bypass cmake message 2026-06-11 10:23:37 -07:00
Mike Oliphant f84082b42d Update NeuralAudio (fix smart bypass on a2 models) 2026-06-11 06:49:07 -07:00
Mike Oliphant 83e197721c Cmake message for smart bypass 2026-06-10 12:40:19 -07:00
Mike Oliphant f76554aea0 Switch tonehunt link to tone3000 2026-06-10 07:31:38 -07:00
Mike Oliphant 9e704c0ce9 Update issue templates 2026-06-09 19:14:08 -07:00
Mike Oliphant f813aa449c Add usage info 2026-06-05 08:18:28 -07:00
Mike Oliphant c48fd2d230 Update README.md 2026-06-02 13:05:35 -07:00
Mike Oliphant 23c97c61e3 Delete models directory 2026-06-02 13:02:24 -07:00
Mike Oliphant 844766e614 Bump version -> 0.2.0 2026-06-02 07:41:07 -07:00
Mike Oliphant 437b8cc254 Update NeuralAudio (Fix NAM Core A2 fast path issue with Tone3000 models) 2026-06-02 07:32:53 -07:00
Mike Oliphant 02ad319440 Update NeuralAudio (fix static LSTM loading) 2026-05-27 12:47:16 -07:00
Mike Oliphant 8ee50ccdbf Update NeuralAudio 2026-05-27 12:23:07 -07:00
Mike Oliphant 4d4f613be9 Update NeuralAudio. Switch to NeuralModelLoader. Work around NAM Core prewarm issues. 2026-05-27 12:04:36 -07:00
Mike Oliphant 01642fa580 Merge pull request #104 from mikeoliphant/pi_build
Refactor build and add Raspberry Pi 4/5 builds
2026-05-22 14:22:48 -07:00
Mike Oliphant f774aad19d Try again for gcc12 rpi 2026-05-22 14:06:08 -07:00
Mike Oliphant cab4b549d7 Try again to force gcc12 for rpi build 2026-05-22 14:01:58 -07:00
Mike Oliphant 4047eea241 Force gcc12 for rpi build 2026-05-22 13:50:34 -07:00
Mike Oliphant 1072326eb1 Fixed rpi archive name 2026-05-22 13:02:36 -07:00
Mike Oliphant fe172b94b5 Specify docker cmake toolchain 2026-05-22 12:50:14 -07:00
Mike Oliphant d15d078b23 Don't use clang+ for rpi build
Removed environment variable setting for CXX in Build Plugin step.
2026-05-22 12:42:13 -07:00
Mike Oliphant 2ae1cb7a05 Add Raspberry Pi build workflow to release process 2026-05-22 12:40:06 -07:00
Mike Oliphant 6896f40711 Matrix build for windows 2026-05-22 12:27:56 -07:00
Mike Oliphant a19b9bab8b Fix environment variable usage in release workflow 2026-05-22 12:22:01 -07:00
Mike Oliphant 17dc4edff2 Update Linux x64 build workflow with matrix strategy 2026-05-22 12:12:09 -07:00
Mike Oliphant a8ba46997b Explicitly force build of internal static WaveNet and LSTM 2026-05-20 13:04:16 -07:00
Mike Oliphant aca77c2590 Explicitly force build of internal static WaveNet and LSTM 2026-05-20 13:01:54 -07:00
Mike Oliphant d35db9c0c1 Explicitly force build of internal static WaveNet and LSTM 2026-05-20 13:01:11 -07:00
Mike Oliphant fcbe0a24db Update sample model license 2026-05-20 12:44:45 -07:00
Mike Oliphant 1b98cb8891 Update NeuralAudio 2026-05-20 11:07:50 -07:00
Mike Oliphant 8493866b21 Update NeuralAudio 2026-05-18 08:56:34 -07:00
Mike Oliphant 2e103a104b Update NeuralAudio 2026-05-18 08:21:38 -07:00
Mike Oliphant c7d55312c0 Merge pull request #101 from mikeoliphant/nam_a2
Add NAM A2 model support
2026-05-17 09:37:33 -07:00
17 changed files with 76 additions and 81 deletions
+17
View File
@@ -0,0 +1,17 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is. Please do not include AI chat transcripts.
**Environment**
Please include information on the operating system and plugin host environment where you are experiencing the issue. If you can, please test in multiple different contexts (ie: different DAWs)
**Additional Information**
Please add any additional detail here.
+2 -2
View File
@@ -20,7 +20,7 @@ jobs:
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_UTILS=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_UTILS=ON -DBUILD_INTERNAL_STATIC_WAVENET=ON -DBUILD_INTERNAL_STATIC_LSTM=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON
cmake --build . --config $BUILD_TYPE -j4
cpack
@@ -51,7 +51,7 @@ jobs:
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -DBUILD_UTILS=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON -T ClangCL ..
cmake.exe -G "Visual Studio 17 2022" -A x64 -DBUILD_UTILS=ON -DBUILD_INTERNAL_STATIC_WAVENET=ON -DBUILD_INTERNAL_STATIC_LSTM=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON -T ClangCL ..
cmake --build . --config=release -j4
- name: Run ModelTest
+32 -45
View File
@@ -31,7 +31,12 @@ jobs:
build-linux-x64:
name: Build Linux x64
needs: create_release
strategy:
matrix:
native_arch: [ON, OFF]
runs-on: ubuntu-latest
env:
ARCHIVE_NAME: neural_amp_modeler_lv2_linux_x64${{ matrix.native_arch == 'ON' && 'v3' || '' }}.tgz
steps:
- uses: actions/checkout@v3.3.0
with:
@@ -42,12 +47,12 @@ jobs:
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_NATIVE_ARCH=${{ matrix.native_arch }} -DBUILD_NAMCORE=ON -DBUILD_INTERNAL_STATIC_WAVENET=ON -DBUILD_INTERNAL_STATIC_LSTM=ON
cmake --build . --config $BUILD_TYPE -j4
- name: Add LV2 Archive
working-directory: ${{github.workspace}}/build
run: tar -czf neural_amp_modeler_lv2_linux_x64.tgz neural_amp_modeler.lv2
run: tar -czf ${{ env.ARCHIVE_NAME }} neural_amp_modeler.lv2
- name: Upload Plugin Asset
uses: actions/upload-release-asset@v1
@@ -55,30 +60,35 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./build/neural_amp_modeler_lv2_linux_x64.tgz
asset_name: neural_amp_modeler_lv2_linux_x64.tgz
asset_path: ./build/${{ env.ARCHIVE_NAME }}
asset_name: ${{ env.ARCHIVE_NAME }}
asset_content_type: application/tgz
build-linux-x64v3:
name: Build Linux x64v3
build-rpi:
name: Build Raspberry Pi
needs: create_release
strategy:
matrix:
native_arch: [rpi4, rpi5]
runs-on: ubuntu-latest
container:
image: ghcr.io/tttapa/docker-arm-cross-toolchain:aarch64-rpi3-linux-gnu-gcc12
env:
ARCHIVE_NAME: neural_amp_modeler_lv2_${{ matrix.native_arch }}.tgz
steps:
- uses: actions/checkout@v3.3.0
with:
submodules: recursive
- name: Build Plugin
working-directory: ${{github.workspace}}/build
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_NATIVE_ARCH=ON -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_NAMCORE=ON -DBUILD_INTERNAL_STATIC_WAVENET=ON -DBUILD_INTERNAL_STATIC_LSTM=ON -DCMAKE_TOOLCHAIN_FILE=/home/develop/opt/x-tools/aarch64-rpi3-linux-gnu/aarch64-${{ matrix.native_arch }}-linux-gnu.toolchain.cmake
cmake --build . --config $BUILD_TYPE -j4
- name: Add LV2 Archive
working-directory: ${{github.workspace}}/build
run: tar -czf neural_amp_modeler_lv2_linux_x64v3.tgz neural_amp_modeler.lv2
run: tar -czf ${{ env.ARCHIVE_NAME }} neural_amp_modeler.lv2
- name: Upload Plugin Asset
uses: actions/upload-release-asset@v1
@@ -86,14 +96,19 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./build/neural_amp_modeler_lv2_linux_x64v3.tgz
asset_name: neural_amp_modeler_lv2_linux_x64v3.tgz
asset_path: ./build/${{ env.ARCHIVE_NAME }}
asset_name: ${{ env.ARCHIVE_NAME }}
asset_content_type: application/tgz
build-windows:
name: Build Windows
needs: create_release
strategy:
matrix:
native_arch: [ON, OFF]
runs-on: windows-latest
env:
ARCHIVE_NAME: neural_amp_modeler_lv2_win_x64${{ matrix.native_arch == 'ON' && 'v3' || '' }}.zip
steps:
- uses: actions/checkout@v3.3.0
with:
@@ -102,11 +117,11 @@ jobs:
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -T ClangCL -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF ..
cmake.exe -G "Visual Studio 17 2022" -A x64 -T ClangCL -DUSE_NATIVE_ARCH=${{ matrix.native_arch }} -DBUILD_NAMCORE=ON -DBUILD_INTERNAL_STATIC_WAVENET=ON -DBUILD_INTERNAL_STATIC_LSTM=ON ..
cmake --build . --config=release -j4
- name: Add LV2 Archive
run: Compress-Archive -Path ${{github.workspace}}\build\neural_amp_modeler.lv2 -Destination neural_amp_modeler_lv2_win_x64.zip
run: Compress-Archive -Path ${{github.workspace}}\build\neural_amp_modeler.lv2 -Destination ${{ env.ARCHIVE_NAME }}
- name: Upload Plugin Asset
uses: actions/upload-release-asset@v1
@@ -114,34 +129,6 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./neural_amp_modeler_lv2_win_x64.zip
asset_name: neural_amp_modeler_lv2_win_x64.zip
asset_content_type: application/zip
build-windows-x64v3:
name: Build Windows x64v3
needs: create_release
runs-on: windows-latest
steps:
- uses: actions/checkout@v3.3.0
with:
submodules: recursive
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -DUSE_NATIVE_ARCH=ON -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF -T ClangCL ..
cmake --build . --config=release -j4
- name: Add LV2 Archive
run: Compress-Archive -Path ${{github.workspace}}\build\neural_amp_modeler.lv2 -Destination neural_amp_modeler_lv2_win_x64v3.zip
- name: Upload Plugin Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./neural_amp_modeler_lv2_win_x64v3.zip
asset_name: neural_amp_modeler_lv2_win_x64v3.zip
asset_path: ./${{ env.ARCHIVE_NAME }}
asset_name: ${{ env.ARCHIVE_NAME }}
asset_content_type: application/zip
+1 -1
View File
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.10)
project(NeuralAmpModelerLv2 VERSION 0.1.9)
project(NeuralAmpModelerLv2 VERSION 0.2.0)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "The library install dir (default: lib)")
+15 -10
View File
@@ -9,20 +9,25 @@ To get the intended behavior, **you must run your audio host at the same sample
For amp-only models (the most typical), **you will need to run an impulse reponse after this plugin** to model the cabinet.
## Models Supported
## Usage
The plugin supports both [Neural Amp Modeler (NAM)](https://github.com/sdatkinson/neural-amp-modeler) models and [RTNeural keras json models](https://github.com/jatinchowdhury18/RTNeural) (like those used by [Aida-X](https://github.com/AidaDSP/AIDA-X)).
Your DAW should expose the following input controls:
**Input:** - Input (pre-model) gain in dB.
**Output:** - Output (post-model) volume in dB.
**Quality:** - Model quality (if applicable). For NAM A2 models, a value below 0.5 will give you a "lite" model and a value above 0.5 will give you a "full" model.
**Model:** - The model file (ie: xxx.nam) to use.
## Models Supported and Performance
The plugin supports both [Neural Amp Modeler (NAM)](https://github.com/sdatkinson/neural-amp-modeler) models (both A1 and A2) and [RTNeural keras json models](https://github.com/jatinchowdhury18/RTNeural) (like those used by [Aida-X](https://github.com/AidaDSP/AIDA-X)).
The best source of models is [Tone3000](https://www.tone3000.com/).
For more information on model type support, see the [NeuralAudio](https://github.com/mikeoliphant/NeuralAudio) repository, which is where the model handling code lives.
## Performance
NAM WaveNet models are generally quite expensive to run. This isn't (much of) an issue on modern PCs, but you may have trouble running on less powerful hardware.
If you are having trouble running a "standard" model, try looking for "feather", or even "nano" (the least expensive) models. You can find a list of ["feather"-tagged models on Tone3000](https://www.tone3000.com/search?sizes=feather). Note that tagging models is up to the submitter, so not all "feather" models are tagged as such - you should be able to find more if you dig around.
For more information on model type support and performance, see the [NeuralAudio](https://github.com/mikeoliphant/NeuralAudio) repository, which is where the model handling code lives.
## Input Calibration
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-12
View File
@@ -1,12 +0,0 @@
These are some sample NAM models designed to be used for performance testing on CPU-limited devices. They are all based on a [LiveSpice model of a Boss SD-1 pedal](https://blog.nostatic.org/2023/04/this-boss-sd-1-pedal-does-not-exist.html).
All models were trained for 300 epochs using the NAM "v1_1_1.wav" capture signal.
| Model | ESR | CPU%<br>(RPi4 64bit) | Notes |
| --- |--- | :-: | --- |
| [BossWN-feather.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossWN-feather.nam) | .0001 | 37% | WaveNet "feather" preset |
| [BossWN-4x2x1.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossWN-4x2x1.nam) | .0003 | 28% | WaveNet 4x2 channel |
| [BossLSTM-2x16.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossLSTM-2x16.nam) | .0013 | 28% | LSTM 2x16 layers |
| [BossLSTM-1x24.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossLSTM-1x24.nam) | .0017 | 22% | LSTM 1x24 layer |
| [BossLSTM-2x8.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossLSTM-2x8.nam) | .0019 | 17% | LSTM 2x8 layers |
| [BossLSTM-1x16.nam](https://github.com/mikeoliphant/neural-amp-modeler-lv2/blob/main/models/BossLSTM-1x16.nam) | .0041 | 15% | LSTM 1x16 layer |
+1 -1
View File
@@ -45,7 +45,7 @@ Models supported:
Neural Amp Modeler (NAM): https://github.com/sdatkinson/neural-amp-modeler
RTNeural keras/Aida-x models: https://github.com/jatinchowdhury18/RTNeural
A large collection of models is available at https://tonehunt.org
A large collection of models is available at https://www.tone3000.com
""";
patch:writable <@NAM_LV2_ID@#model>;
+3
View File
@@ -58,6 +58,9 @@ option(SMART_BYPASS_ENABLED "Enable auto-bypass on silence" OFF)
if (SMART_BYPASS_ENABLED)
add_definitions(-DSMART_BYPASS_ENABLED)
message(STATUS "Smart Bypass enabled")
else()
message(STATUS "Smart Bypass NOT enabled")
endif (SMART_BYPASS_ENABLED)
set_target_properties(neural_amp_modeler
+3 -3
View File
@@ -128,7 +128,7 @@ namespace NAM {
{
lv2_log_trace(&nam->logger, "Staging model change: `%s`\n", msg->path);
model = NeuralAudio::NeuralModel::CreateFromFile(msg->path);
model = nam->loader.CreateFromFile(msg->path);
}
if (model != nullptr)
@@ -212,7 +212,7 @@ namespace NAM {
{
maxBufferSize = size;
NeuralAudio::NeuralModel::SetDefaultMaxAudioBufferSize(size);
loader.SetDefaultMaxAudioBufferSize(size);
}
void Plugin::process(uint32_t n_samples) noexcept
@@ -256,7 +256,7 @@ namespace NAM {
{
qualityScale = *(ports.quality_scale);
NeuralAudio::NeuralModel::SetDefaultQualityScaleFactor(qualityScale);
loader.SetDefaultQualityScaleFactor(qualityScale);
if (currentModel != nullptr)
{
+1
View File
@@ -71,6 +71,7 @@ namespace NAM {
LV2_Log_Logger logger = {};
LV2_Worker_Schedule* schedule = nullptr;
NeuralAudio::NeuralModelLoader loader;
NeuralAudio::NeuralModel* currentModel = nullptr;
std::string currentModelPath;
float prevDCInput = 0;