44 Commits

Author SHA1 Message Date
Mike Oliphant ce7cbeb8f3 Update NeuralAudio. Bump version -> 0.1.9 2025-06-09 08:46:52 -07:00
Mike Oliphant 8e3b71c13d Bump version -> 0.1.8 2025-05-27 13:35:48 -07:00
Mike Oliphant 8dc56d247c Update NeuralAudio 2025-05-27 10:44:14 -07:00
Mike Oliphant 77731797d1 Update CREDITS.md 2025-05-23 13:58:26 -07:00
Mike Oliphant 10aebb7329 Update NeuralAudio 2025-05-23 12:52:53 -07:00
Mike Oliphant bd455b50a9 Update NeuralAudio 2025-04-01 11:13:10 +07:00
Mike Oliphant 81bc4a2247 Update NeuralAudio 2025-04-01 08:52:51 +07:00
Mike Oliphant 50be3658e6 Update NeuralAudio 2025-03-11 09:15:03 +08:00
Mike Oliphant 9a60937f64 Merge pull request #87 from timlau/main
fix hardcode lib dir
2025-02-21 13:49:10 -08:00
Tim Lauridsen 8ddad7168d fix hardcode lib dir
Some system store 64 bit libs in /usr/lib64
This change make it possible to set the bib dir using -DLIB_INSTALL_DIR=/usr/lib64 when building.
2025-02-21 15:15:37 +01:00
Mike Oliphant 5566a69731 fix MSVC detection 2025-02-20 13:07:59 -08:00
Mike Oliphant 994a68c4f0 detect clang properly even if it is running under MSVC 2025-02-20 12:38:26 -08:00
Mike Oliphant b4144b9027 use /arch:AVX2 for MSVC when USE_NATIVE_ARCH is on 2025-02-20 12:31:49 -08:00
Mike Oliphant fcb5963f05 Update NeuralAudio 2025-02-11 10:05:36 -08:00
Mike Oliphant 8401d65129 Merge pull request #85 from mikeoliphant/modgui
Add modgui
2025-02-10 13:28:37 -08:00
Mike Oliphant 4952d8e787 Update CREDITS.md 2025-02-10 13:27:28 -08:00
Mike Oliphant a0a8f8af32 Add modgui 2025-02-10 13:23:46 -08:00
Mike Oliphant 40a58b8ef2 Bump version -> 0.1.7 2025-02-10 11:38:54 -08:00
Mike Oliphant 3ca0fdc51f Update build.yml 2025-02-09 14:03:01 -08:00
Mike Oliphant 0227fdc1fc Update NeuralAudio 2025-02-09 14:02:10 -08:00
Mike Oliphant b8dee789b5 Update build.yml 2025-02-07 18:35:32 -08:00
Mike Oliphant f8f73bff29 Update NeuralAudio 2025-02-07 18:17:28 -08:00
Mike Oliphant fc5ff29f12 Merge branch 'main' of https://github.com/mikeoliphant/neural-amp-modeler-lv2 2025-02-07 18:06:33 -08:00
Mike Oliphant ae14f2f13b Update NeuralAudio (add dynamic internal LSTM model loading) 2025-02-07 18:06:32 -08:00
Mike Oliphant c747bb8f4d Update README.md 2025-02-07 16:52:27 -08:00
Mike Oliphant 937e7764b8 Update README.md 2025-02-07 16:51:40 -08:00
Mike Oliphant 1590c9c53b Merge branch 'main' of https://github.com/mikeoliphant/neural-amp-modeler-lv2 2025-02-07 16:24:43 -08:00
Mike Oliphant c21f7d7254 Update NeuralAudio (support internal dynamic WaveNet model loading) 2025-02-07 16:24:42 -08:00
Mike Oliphant 9bb3a3f34d Update README.md 2025-02-07 09:26:57 -08:00
Mike Oliphant 46a9691259 Update README.md 2025-02-07 08:26:22 -08:00
Mike Oliphant 2b27baa15e Update NeuralAudio 2025-02-07 08:22:42 -08:00
Mike Oliphant 2d3e4115e4 Update README.md 2025-02-07 08:13:44 -08:00
Mike Oliphant 2da7a84a4d Update CREDITS.md 2025-02-06 08:00:04 -08:00
Mike Oliphant 2f525e1a2a Merge pull request #84 from mikeoliphant/naopt
Use new internal NeuralAudio WaveNet and LSTM implementations
2025-02-06 07:57:31 -08:00
Mike Oliphant 9c55e904cb Update README.md 2025-02-06 07:56:33 -08:00
Mike Oliphant 3960aa75e7 Remove "prefer" cmake options 2025-02-06 07:55:46 -08:00
Mike Oliphant 436fb12664 Update NeuralAudio 2025-02-05 15:54:28 -08:00
Mike Oliphant 7e03d2bd3d Use naopt NeuralAudio branch 2025-02-05 10:40:59 -08:00
Mike Oliphant 46c2bb823f Update release.yml 2025-01-28 08:55:50 -08:00
Mike Oliphant 5f91734de9 Update README.md 2025-01-28 08:55:13 -08:00
Mike Oliphant d60ae6f369 Update release.yml 2025-01-28 08:42:14 -08:00
Mike Oliphant 6905406e95 Don't use RTNeural for WaveNet by default 2025-01-28 08:39:44 -08:00
Mike Oliphant 011b741bbc Update NeuralAudio 2025-01-28 08:36:50 -08:00
Mike Oliphant c4733d53bc Added aidadspmodel to ttl 2024-12-22 07:37:25 -08:00
20 changed files with 254 additions and 58 deletions
+10 -2
View File
@@ -20,10 +20,14 @@ jobs:
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_UTILS=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON
cmake --build . --config $BUILD_TYPE -j4
cpack
- name: Run ModelTest
working-directory: ${{github.workspace}}/build/src/NeuralAudio/Utils/ModelTest
run: ./ModelTest
- name: Upload binary
uses: actions/upload-artifact@v4
with:
@@ -47,8 +51,12 @@ jobs:
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -T ClangCL ..
cmake.exe -G "Visual Studio 17 2022" -A x64 -DBUILD_UTILS=ON -DBUILD_NAMCORE=ON -DBUILD_STATIC_RTNEURAL=ON -T ClangCL ..
cmake --build . --config=release -j4
- name: Run ModelTest
working-directory: ${{github.workspace}}/build/src/NeuralAudio/Utils/ModelTest/Release
run: ./ModelTest.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
+4 -4
View File
@@ -42,7 +42,7 @@ jobs:
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF
cmake --build . --config $BUILD_TYPE -j4
- name: Add LV2 Archive
@@ -73,7 +73,7 @@ jobs:
env:
CXX: clang++
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_NATIVE_ARCH=ON
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_NATIVE_ARCH=ON -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF
cmake --build . --config $BUILD_TYPE -j4
- name: Add LV2 Archive
@@ -102,7 +102,7 @@ jobs:
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -T ClangCL ..
cmake.exe -G "Visual Studio 17 2022" -A x64 -T ClangCL -DLSTM_PREFER_NAM=OFF -DWAVENET_PREFER_NAM=OFF ..
cmake --build . --config=release -j4
- name: Add LV2 Archive
@@ -130,7 +130,7 @@ jobs:
- name: Build Plugin
working-directory: ${{github.workspace}}/build
run: |
cmake.exe -G "Visual Studio 17 2022" -A x64 -DUSE_NATIVE_ARCH=ON -T ClangCL ..
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
+6 -2
View File
@@ -1,8 +1,9 @@
cmake_minimum_required(VERSION 3.10)
project(NeuralAmpModelerLv2 VERSION 0.1.6)
project(NeuralAmpModelerLv2 VERSION 0.1.9)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "The library install dir (default: lib)")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED OFF)
@@ -29,11 +30,14 @@ add_custom_target(copy_binaries ALL
DEPENDS neural_amp_modeler
)
file(COPY resources/modgui.ttl DESTINATION neural_amp_modeler.lv2)
file(COPY resources/modgui DESTINATION neural_amp_modeler.lv2)
configure_file(resources/manifest.ttl.in neural_amp_modeler.lv2/manifest.ttl)
configure_file(resources/neural_amp_modeler.ttl.in neural_amp_modeler.lv2/neural_amp_modeler.ttl)
install (DIRECTORY ${CMAKE_BINARY_DIR}/neural_amp_modeler.lv2
DESTINATION lib/lv2
DESTINATION ${LIB_INSTALL_DIR}/lv2
)
set(CPACK_GENERATOR "DEB")
+6 -6
View File
@@ -1,11 +1,11 @@
This repository uses code from a number of sources:
[GitHub contributers](https://github.com/mikeoliphant/neural-amp-modeler-lv2/graphs/contributors)
https://github.com/sdatkinson/NeuralAmpModelerCore
This repository uses code from a number of sources. Please see them for code licensing information:
https://gitlab.com/libeigen/eigen
https://github.com/jatinchowdhury18/RTNeural
https://github.com/mikeoliphant/NeuralAudio
https://github.com/lv2/lv2
In addition, the CMake structure and LV2 plugin structure are based on code from https://github.com/Dougal-s/Aether.
The CMake structure and LV2 plugin structure are based on code from https://github.com/Dougal-s/Aether.
modgui user interface is by Roman Brandstetter (@rominator1983) and Filipe Coelho (@falktk) based on design from Evan Heritage.
+6 -6
View File
@@ -9,7 +9,7 @@ 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 and Performance
## Models and Performance
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)).
@@ -17,7 +17,7 @@ The best source of models is [ToneHunt](https://tonehunt.org/).
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.
A Raspberry Pi 4 running a 64bit OS can run "standard" NAM models with a bit of room to spare for a cabinet IR and some lightweight effects.
A Raspberry Pi 4 running a 64bit OS can run "standard" NAM models with plenty of room to spare for a cabinet IR and some effects. It is also capable of running two "standard" NAM models, but with less headroom for other effects.
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 ToneHunt](https://tonehunt.org/models?tags%5B0%5D=feather-mdl). 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.
@@ -27,7 +27,7 @@ For more information on model type support, see the [NeuralAudio](https://github
The expected input level to the plugin is 12dBu. For models that include input level information, they will be calibrated against this level. If you know the input level of your audio interface, you should adjust the input level relative to the expected 12dBu to provide the appropriate signal level to the model.
### Building
## Building
First clone the repository:
```bash
@@ -53,8 +53,8 @@ Note - you'll have to change the Visual Studio version if you are using a differ
After building, the plugin will be in **build/neural_amp_modeler.lv2**.
### Optimization
## CMake Options
If you have a relatively modern x64 processor, you can pass ```-DUSE_NATIVE_ARCH=ON``` on your cmake command line to enable certain processor-specific optimizations.
```-DUSE_NATIVE_ARCH=ON```: If you have a relatively modern x64 processor, you can pass ```-DUSE_NATIVE_ARCH=ON``` on your cmake command line to enable certain processor-specific optimizations.
You can also alter the default model loading behavior with ```-DLSTM_PREFER_NAM=ON``` (use NAM Core instead of RTNeural for NAM LSTM models) and ```-DWAVENET_PREFER_NAM=ON``` (use NAM Core instead of RTNeural or NAM WaveNet models).
Also see the [NeuralAudio CMake options](https://github.com/mikeoliphant/NeuralAudio#cmake-options) - adding these to your neural-amp-modeler-lv2 cmake will pass them to the NeuralAudio build.
+1 -1
View File
@@ -5,4 +5,4 @@
<@NAM_LV2_ID@>
a lv2:Plugin;
lv2:binary <neural_amp_modeler@CMAKE_SHARED_MODULE_SUFFIX@>;
rdfs:seeAlso <neural_amp_modeler.ttl>.
rdfs:seeAlso <neural_amp_modeler.ttl>,<modgui.ttl>.
+21
View File
@@ -0,0 +1,21 @@
@prefix modgui: <http://moddevices.com/ns/modgui#>.
@prefix lv2: <http://lv2plug.in/ns/lv2core#>.
<http://github.com/mikeoliphant/neural-amp-modeler-lv2>
modgui:gui [
modgui:resourcesDirectory <modgui>;
modgui:iconTemplate <modgui/icon-nam.html>;
modgui:stylesheet <modgui/stylesheet-nam.css>;
modgui:screenshot <modgui/screenshot-nam.png>;
modgui:thumbnail <modgui/thumbnail-nam.png>;
modgui:discussionURL <https://forum.mod.audio/t/neural-amp-modeler/10112> ;
modgui:port [
lv2:index 0;
lv2:symbol "input_level";
lv2:name "Input Lvl";
], [
lv2:index 1;
lv2:symbol "output_level";
lv2:name "Output Lvl";
];
].
Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

+45
View File
@@ -0,0 +1,45 @@
<div class="mod-pedal mod-pedal-nam">
<div mod-role="drag-handle" class="mod-drag-handle"></div>
<div class="mod-control-group group1 clearfix">
{{#controls}}
<div class="mod-knob" title="{{name}}">
<div class="mod-knob-title">{{name}}</div>
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
</div>
{{/controls}}
</div>
<div class="mod-footswitch" mod-role="bypass"></div>
<div class="mod-control-group group2 clearfix">
<div class="mod-control-group mod-enumerated-group bottom clearfix">
{{#effect.parameters}}
{{#path}}
<div class="mod-enumerated" mod-role="input-parameter" mod-parameter-uri="{{uri}}" mod-widget="custom-select-path">
<div mod-role="input-parameter-value" mod-parameter-uri="{{uri}}" class="mod-enumerated-selected">
-- choose a NAM model --
</div>
<div class="mod-enumerated-list">
{{#files}}
<div mod-role="enumeration-option" mod-parameter-value="{{fullname}}">{{basename}}</div>
{{/files}}
</div>
</div>
{{/path}}
{{/effect.parameters}}
</div>
</div>
<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
</div>
</div>
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

+130
View File
@@ -0,0 +1,130 @@
/* nam */
@import url(/fonts/nexa/stylesheet.css);
@import url(/fonts/questrial/stylesheet.css);
/* = CONTAINER
================================================ */
.mod-pedal-nam {
background-position:center center;
background-repeat:no-repeat;
/* background image is 1121 × 536*/
background-size:560px 268px;
background-image:url(/resources/background.png{{{ns}}});
width:560px;
height:268px;
position:absolute;
border-radius:40px;
}
/* = BYPASS
================================================ */
.mod-pedal-nam .mod-footswitch {
background-image:url(/resources/bypass_on.png{{{ns}}});
background-position:center center;
background-repeat:no-repeat;
background-size:82px 47px;
width:82px;
height:47px;
top:132px;
left:235px;
cursor:pointer;
position:absolute;
}
.mod-pedal-nam .mod-footswitch.on {
background-image:url(/resources/bypass_off.png{{{ns}}});
}
/* = KNOBS
================================================ */
.mod-pedal-nam .mod-control-group {
z-index:30;
position:relative;
margin:0px;
padding:0px;
display:inline;
}
.mod-pedal-nam .group1 {
top:86px;
left:22px;
}
.mod-pedal-nam .group2 {
top:107px;
left:78px;
}
.mod-pedal-nam .mod-control-group .mod-knob .mod-knob-title {
text-align: center;
color:white;
}
.mod-pedal-nam .mod-control-group .mod-knob {
overflow:hidden;
position:relative;
display:inline-block;
}
.mod-pedal-nam .mod-control-group .mod-knob:first-child {
margin-left: 0px;
}
.mod-pedal-nam .mod-control-group .mod-knob:last-child {
margin-left: 315px;
}
.mod-pedal-nam .mod-control-group .mod-knob .mod-knob-image {
background-image:url(/resources/knob.png{{{ns}}});
background-position:left center;
background-repeat:no-repeat;
background-size:5000px 100px;
height:100px;
width:100px;
cursor:pointer;
}
.mod-pedal-nam .mod-enumerated {
position: relative;
font-weight: bold;
cursor: pointer;
color: white;
}
.mod-pedal-nam .mod-enumerated .mod-enumerated-selected {
padding-left: 5px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
background-color: transparent;
color: white;
display: block;
}
/* THE LIST OF OPTIONS */
.mod-pedal-nam .mod-enumerated .mod-enumerated-list {
background: black;
display: none;
overflow: auto;
position: absolute;
padding: 0;
width: 405px;
height: 220px;
border: 2px solid #333;
}
.mod-pedal-nam .mod-enumerated .mod-enumerated-list > div {
padding: 3px 5px;
}
.mod-pedal-nam .mod-enumerated .mod-enumerated-list > div.selected {
background: #333;
}
.mod-pedal-nam .mod-enumerated .mod-enumerated-list > div:hover {
background: #222;
}
.mod-pedal-nam .mod-enumerated .mod-enumerated-list > div.selected:hover {
background: #555;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+1 -1
View File
@@ -16,7 +16,7 @@
<@NAM_LV2_ID@#model>
a lv2:Parameter;
mod:fileTypes "nam,nammodel,json,aidax";
mod:fileTypes "nam,nammodel,json,aidax,aidadspmodel";
rdfs:label "Neural Model";
rdfs:range atom:Path.
+8 -20
View File
@@ -18,8 +18,14 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "(amd64)|(AMD64)|(x86_64)")
option(USE_NATIVE_ARCH "Enable architecture-specific optimizations" OFF)
if (USE_NATIVE_ARCH)
add_compile_options(-march=x86-64-v3)
message("Enabling -march=x86-64-v3")
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/arch:AVX2)
message(STATUS "Enabling /arch:AVX2")
else()
add_compile_options(-march=x86-64-v3)
message(STATUS "Enabling -march=x86-64-v3")
endif()
endif (USE_NATIVE_ARCH)
endif ()
@@ -48,24 +54,6 @@ if (DISABLE_DENORMALS)
add_definitions(-DDISABLE_DENORMALS)
endif (DISABLE_DENORMALS)
option(LSTM_PREFER_NAM "Always use NAM Core for NAM LSTM models" ON)
if (LSTM_PREFER_NAM)
add_definitions(-DLSTM_PREFER_NAM)
message("Using NAM Core for LSTM models")
else()
message("Using RTNeural for LSTM models")
endif (LSTM_PREFER_NAM)
option(WAVENET_PREFER_NAM "Always use NAM Core for NAM WaveNet models" OFF)
if (WAVENET_PREFER_NAM)
add_definitions(-DWAVENET_PREFER_NAM)
message("Using NAM Core for WaveNet models")
else()
message("Using RTNeural for WaveNet models")
endif (WAVENET_PREFER_NAM)
set_target_properties(neural_amp_modeler
PROPERTIES
CXX_VISIBILITY_PRESET hidden
+15 -15
View File
@@ -13,21 +13,21 @@ namespace NAM {
// prevent allocations on the audio thread
currentModelPath.reserve(MAX_FILE_NAME + 1);
NeuralAudio::NeuralModel::SetLSTMLoadMode(
#ifdef LSTM_PREFER_NAM
NeuralAudio::PreferNAMCore
#else
NeuralAudio::PreferRTNeural
#endif
);
NeuralAudio::NeuralModel::SetWaveNetLoadMode(
#ifdef WAVENET_PREFER_NAM
NeuralAudio::PreferNAMCore
#else
NeuralAudio::PreferRTNeural
#endif
);
// NeuralAudio::NeuralModel::SetLSTMLoadMode(
//#ifdef LSTM_PREFER_NAM
// NeuralAudio::PreferNAMCore
//#else
// NeuralAudio::PreferRTNeural
//#endif
// );
//
// NeuralAudio::NeuralModel::SetWaveNetLoadMode(
//#ifdef WAVENET_PREFER_NAM
// NeuralAudio::PreferNAMCore
//#else
// NeuralAudio::PreferRTNeural
//#endif
//);
}
Plugin::~Plugin()