All content created by sskalnik @ S3 Sound is the intellectual property of sskalnik @ S3 Sound.
Other content is the intellectual property of its original authors, and subject to its respective license terms as noted.
See LICENSE file for the original NAM license (MIT).
- "Hyper Accuracy" training, using the COMPLEX Architecture invented by Slammin Mofo
- Check out his shops and free NAM checkpoint packs:
- REVxSTD, REVySTD, and REVyHi Architectures invented by R Gerthsson aka 38
- "Super Input" created by François NEURALNET (uploaded here with their explicit written permission).
- Pre-emphasis A-weighting + low-pass filters (just like AIDA-X), which can produce superior results.
- Additional pre-emphasis filter options, including ITU-468, which is a more modern standard than A-weighting.
- Force both matrix operations and convolutions to use full 32-bit float Tensor Cores.
- Fully customizable arbitrary precision, including full 32-bit FP, bf16-mixed, 16-bit, and more.
- Architecture, precision,
NY, and many other options are customizable in the GUI trainer. - GUI trainer no longer silently blanks the user metadata fields.
- V5 dry input audio file = S3 Sound's "acid test". This is meant for TB-303-style acid synths, not guitars!
- Load any arbitrary file format, sample rate, and bit depth, using
soundfileinstead ofwavio. - ReduceLROnPlateau instead of ExponentialLR.
- Loss metrics are embedded in the checkpoint JSON.
- Final validation ESR is labeled separately from training ESR.
- Lightning TensorBoardLogger stores data in a sensible, clear, and logical folder hierarchy.
- Additional callbacks log and monitor more data, including system resource utilization.
- Lots of informative comments.
- Variable names are more descriptive and "Pythonic" (as opposed to
x,y,i,j, etc.).
- Learning Rate = 0.001
- Consider using a higher LR value when using a larger Batch Size. For example, if using a Batch Size value of 64, consider an LR value of 0.01 or 0.005.
- LR Decay = 0.666
- Note that this value is used as the "reduction factor" for the
ReduceLROnPlateauoptimizer, and is not an appropriate value for the LR Decay when using the stock NAMExponentialLRoptimizer! - This value should be less than 1.0. Whenever the loss metrics do not improve for several epochs, the
ReduceLROnPlateauoptimizer will lower the Learning Rate bycurrent_learning_rate * lr_decay. For example, an initiallearning_ratevalue of0.001would be reduced to0.000666. - Consider experimenting with values of
0.1,0.5, and0.9; or0.25,0.5, and0.75; in order to get a sense of whether a value approaching1.0or0.0provides better results.
- Note that this value is used as the "reduction factor" for the
- NY = 8192 (default from stock NAM)
- Consider using a larger value if training at a sample rate above 48 kHz.
- Larger Batch Size values + larger NY values = more VRAM (or whatever memory your hardware uses for training) will be used.
- Precision =
32-true(default fromtorch)64-trueis excessively resource-intensive, probably inefficient on your hardware, and unlikely to provide meaningful improvements.- 16-bit and mixed precision options reduce the training resource requirements, and can shorten training time, at the cost of lower accuracy.
bf16-mixedprovides a higher dynamic range, at the cost of lower precision.transformer-engineuses Nvidia's Transformer Engine with 8-bit precision. This can substantially lower the training requirements, but it can be difficult to set up, and the loss in accuracy is unlikely to be worth the trade-offs.
- Batch Size = 16 (default from stock NAM)
- Larger Batch Size values can improve the (mini)batch diversity, at the cost of higher memory utilization, as well as a potentially higher risk of over-fitting.
- Larger Batch Size values + larger NY values = more VRAM (or whatever memory your hardware uses for training) will be used.
You need to download these from the following public URLs, because they are too large for GitHub:
2026_Feb_21_NAM_120_AcidInput_v4_nam_48kHz_24int_mono.wav= 10m14s. 70 seconds of validation 1 + blips + training data + 70 seconds of validation 2. Input version 5.0.0. S3 Sound's "acid test". This is meant for TB-303-style acid synths, not guitars! Audio generated by Audacity (30-second log sine sweep from 20 Hz to 24 kHz), Ableton Live 12.3 Operator (multiple sweeps with different cyclic waveforms), and various digital "acid" synths (individual notes C0-C6 (less if the synth did not cover the full range), and sequenced phrases with pseudo-random modulation applied to various parameters, such as amplitude and filter envelope controls).burst_super_input_192kHz_24int_mono.wav= 5m0s. Essentially the same as stock NAMinput.wavversion 3.0.0, plus additional "bursts" of amplitude-modulated sine sweeps from 20 Hz to 20 kHz included in the training data, upsampled 4x to 192 kHz. This input may significantly reduce aliasing artifacts in training. You may need to use a 192 kHz project sample rate in your DAW when using the stock NAM plugin with.namcheckpoints trained using this input. Contributed by François NEURALNET, and used here with their explicit written permission.burst_super_input_48kHz_24int_mono.wav= 5m0s. Essentially the same as stock NAMinput.wavversion 3.0.0, plus additional "bursts" of amplitude-modulated sine sweeps from 20 Hz to 20 kHz included in the training data. This input may reduce aliasing artifacts in training. Contributed by François NEURALNET, and used here with their explicit written permission.
- https://www.thegearpage.net/board/index.php?threads/nam-hyper-accuracy-captures.2543142
- https://www.thegearpage.net/board/index.php?threads/probably-the-best-nam-quality-in-the-world-revxstd.2727799
- https://thegearforum.com/threads/nam-neural-amp-modeler.1698
The dry input audio file must have the following sections, in this order:
- Silent Padding
- Validation 1
- Silent Padding + Blips + Silent Padding
- Training data
- Silent Padding
- Validation 2 Silent padding at the end of the file is recommended, but not required.
(SP = silence padding):
| SP | Validation 1 | SP Blips SP | Training data | SP | Validation 2 | SP |
| 0 | v1_start | blips_start | train_start | | v2_start | -1 |
If SP is the same length in all instances, then you can just make all splits be:
silence_padded_start_of_each_section = absolute_start_of_each section - (1/2 * len(SP))
silence_padded_end_of_each_section = absolute_end_of_each section + (1/2 * len(SP))
This repository handles training models and exporting them to .nam files. For playing trained models in real time in a standalone application or plugin, see the partner repo, NeuralAmpModelerPlugin.
For more information about the NAM ecosystem please check out https://www.neuralampmodeler.com/.
Online documentation can be found here: https://neural-amp-modeler.readthedocs.io
To build the documentation locally on a Linux system:
cd docs
make htmlOr on Windows,
cd docs
make.bat html