NAM is based on Wavenet, Aida is based on RTNeural. From what I could read in the discussions between the developers, RTNeural is lighter than Wavenet, whereas Wavenet is more accurate.
Hi,
I am running Manjaro on an X96Max+ TV box (CPU: Amlogic S905X3, 4 x Cortex A55) and have successfully compiled the NAM lv2 plugin. It is working well when using Ardour as a host but I have to set buffer up to 720 to not get audio glitches. I guess it is due to running full KDE desktop and Ardour. Therefore, I would like to run the plugin on a headless server image.
When using mod-host & mod-ui I am not able to set the amp model because the plugin does not have a UI.
Can you tell me how to load the model when using JALV?
I tried typing ‘model = “/home/themojoman/xyz.nam”’ but this did not work. JALV reported back that there is no ‘model’ parameter although showing it when typing ‘controls’.
If you run a GUI version of jalv, e.g. jalv.gtk then it provides a file selector for the model file but you can’t access this with the command line version. I have worked around this by writing a Python script that creates a preset for each model file. You call load presets in jalv.
[Edit] The script:
# Create LV2 manifest.ttl for Neural Amp Modeler from model files in ~/.lv2/Neural_Amp_Modeler.lv2/model directory
from os import listdir
from urllib.parse import quote
import json
username = "username_goes_here"
root_dir = f"/home/{username}/.lv2/Neural_Amp_Modeler.lv2"
with open(f"{root_dir}/manifest.ttl", "w") as file:
file.write("@prefix atom: <http://lv2plug.in/ns/ext/atom#> .\n")
file.write("@prefix lv2: <http://lv2plug.in/ns/lv2core#> .\n")
file.write("@prefix pset: <http://lv2plug.in/ns/ext/presets#> .\n")
file.write("@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n")
file.write("@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n")
file.write("@prefix state: <http://lv2plug.in/ns/ext/state#> .\n")
file.write("@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\n")
for fname in listdir(f"{root_dir}/models"):
if fname.endswith(".nam"):
name = fname[:-4]
url = quote(name)
file.write(f"<{url}>\n")
file.write(f"\ta pset:Preset ;\n")
file.write(f'\trdfs:label "{name}" ;\n')
file.write("\tlv2:appliesTo <http://github.com/mikeoliphant/neural-amp-modeler-lv2> ;\n")
file.write(f"\tstate:state [ <http://github.com/mikeoliphant/neural-amp-modeler-lv2#model> <models/{url}.nam> ] .\n\n")
You should create the folder ~/.lv2/Neural_Amp_Modeler.lv2/models and put the model files in it then run the python script which creates a preset for each .nam file if finds in that directory. You can then launch jalv by jalv http://github.com/mikeoliphant/neural-amp-modeler-lv2 but you then need to manually load the preset within the command line interface thus: preset file:///zynthian/zynthian-data/presets/lv2/Neural_Amp_Modeler_feather-mdl.lv2/33. You can get the list of preset urls by entering presets in the jalv CLI.
@riban This works perfectly - thank you so much!!!
(I tried on my own before you added the script and description where to put the files but could not make it work with presets; could only load saved state with ‘jalv -l’ command)
Be aware that the script replaces the preset file each time it is run with the names of the files in the model directory. This means you may rename the files and re-run the script if you don’t like the names of the preset but also means that old references to presets will no longer work. It relies on the filename of the model being the same as when the preset was created so if you change the name of a model file you must run the script again. It stores the presets in a manifest file in a folder within the user’s home directory. In Zynthian we put them elsewhere. (I modified my script to show here for general use. LV2 subsystem looks in various places for configurations.) It also sticks all the presets in the manifest file which may be slightly unorthodox but was simple hence I could bash it out quickly. I am glad it helped you. We may integrate this into Zynthian if we find time…
I was able to build the current nam-lv2 version succesfully on an RPI 4 (build files attached) and run the Python script to generate the presets on a copy placed at ~/.lv2/Neural_Amp_Modeler.lv2/, with some *.nam files under ./modes
However, it seems neither jalv http://github.com/mikeoliphant/neural-amp-modeler-lv2 nor mod-ui is able to find the plugin.
@riban , @TheMojoMan : Was there any other step necessary in order to run the plugin in jalv or mod-ui or any hints how you got it running? Would you mind sharing your nam-plugin folder for debugging purposes?
jalv uses environmental variable LV2_PATH to find plugins and presets. I tend to put plugins in ~/.lv2 when I am testing then we integrate them into Zynthian by putting them in a more appropriate location.
Neat, just got everything working and the performance and sound is excellent, much better imho than AIDA-X. Feather and lite models run flawlessly while standard models start to crackle heavily.
The only reason we use the script to create presets is because otherwise we need to run the GUI which is not optimal workflow on Zynthian. PiPedal looks like a LV2 host (like what Zynthian is) so wouldn’t run nicely on a Zynthian.