sdatkinson / neuralampmodelerplugin Goto Github PK
View Code? Open in Web Editor NEWPlugin for Neural Amp Modeler
License: MIT License
Plugin for Neural Amp Modeler
License: MIT License
Hi,
somehow eigen can not be clonned with git clone --recursiv
Use of std::filesystem::path
is preventing support for macOS versions before 10.15.
Tags: Mojave, High Sierra, 10.14, 10.13
If the input is maxed out, the signal can go way past 100% and take the models into territory where they probably weren't trained.
There's been multiple people experiencing this and being surprised by it.
Two possible solutions include adding an input level and clipping the input (though I'm not necessarily a big fan of the latter. This seems like a potentially cool "feature" rather than a "bug", and since the models are trained on floats, one should be able to create data for this case if they really wanted to. Maybe a switch of some sort for advanced usage?)
Describe the bug
When opening the model picker or the IR picker, the browser goes to the last folder that was used for either. E.g. if I just loaded a model, then when I got to pick an IR it starts at the model folder.
Expected behavior
It'd be nice if both kept track of their last folders visited separately
Additional context
Requested by a user.
Since the EQ section seems to be spooky with the model and I haven't figured out exactly what's wrong yet, as a stopgap I can at least put in a toggle on the EQ section; Macs should at least be able to run stably with the EQ off.
Copied issue:
I downloaded NAM and installed on my m1 MacBook. Standalone shows up, and it shows up in plug-in manager on Logic Pro but it does not show up in my DAW.
Having cofnig.json
and weights.npy
feels a bit clunky, especially since the Mac file browser defaults to inside the directory of the last model you load--makes you have to go up a level to pick other models that are next to the most recent one.
Let's move to a single file per model :)
Update to support upcoming version bump to 0.5.0 from the trainer due to WaveNet update coming in Issue 62.
Would be great to implement a way that the user is able to change the Frenquency (Central frequency - Hz) of every band of the current equalizer and the bandwidth (Q), and in the future to add or remove as many bands as posible by the user (With a minimum of 3 as a base)
Also, if posible, be able to add a pre eq with as many bands as needed by the user.
This links to the python repo and isn't a direct dependency of this project.
It would be awesome to further fine tune an existing profile:
It's a pain to have to click down through the entire file tree in order to find the folder for the model that you're trying to load. It would be great if the explorer could start from where you last left off when you go to open a second model.
This seems to be an issue specifically for the windows folder loader; both the Windows file loader as well as both the file and folder loaders on Mac seem to do this the way that I want currently.
Add in an IR loader so that the standalone can really be used more as a standalone.
The linear model can probably be adapted in a pinch.
I just found a bug on Cubase 12, when creating a mono track input with a stereo output configuration the DI bleeds on both channels (On the right channel the DI is even louder). On reaper this is not a problem
How to replicate it:
Create a track like this:
https://prnt.sc/purFImrIgTD_
https://prnt.sc/ktD0Ttbxm8gX
With this configuration nothings happens (Everything works as normal, as it should be)
https://prnt.sc/So7TeURj4L92
Thank you! :)
A user reports trouble loading their IR. The plugin shows the failure message. An IR that I provided works for them (and me).
Clicking away from the UI then clicking back causes "Default model" to show back up as the model name. The actual model keeps working though.
When switching between different presets made in Cubase12 the Plugin crashes the entire DAW.
Steps to reproduce:
Info:
WIN11 - Cubase Pro 12 - i7 8700K - 16 gb RAM
[
](url)
I'd like to train models on data that with sample rates other than 48k and use them in the plugin. Currently, this could be done by hacking the training process and just knowing the sample rate to pick when running the plugin. But, I'd like this to be more fool-proof. This also currently rules out having two models with different expected sample rates from being used at the same time.
More detail than "FAILED to load IR" message
I receive a popping sound when I load a new capture. It happens every time even if I don't have the track record enabled.
I am using
Reaper 6.72
Windows 10 x64
AMD 5950x CPU
RME RayDAT audio interface
I tried searching but couldn't find a donation option anywhere
Is your feature request related to a problem? Please describe.
When I want to load a new model, I always have to pick it from the file browser, even if I've already picked a model from a direcotry with tons of models in it.
Describe the solution you'd like
The ability to click through models in a directory once you're in there. A pair of arrows to click would do the trick.
Describe alternatives you've considered
Can continue to use as-is.
Additional context
Requested by a user.
it would be nice to have a mono version auf der Audio Unit for Logic Pro X users.
Stereo plugin would be handy for running stereo DI's through (assuming its possible to adjust L and R channels independently. For the time being Mono (and multi mono) would be more useful
I've tried with Cubase 12 (M1 native), Cubase 11 (Rosetta 2) and Reaper, not showing up at all. AU version works.
In order to make this more of an all-in-one solution, a tuner would be great.
Just a small quality of life update if possible: add 2 buttons (previous/next or up/down) to scroll through IRs within the current IR's folder.
Thank you! \m/
A user writes:
Suggestion: A 2nd gate that functions slightly differently than a normal gate. This 2nd gate would only gate high frequencies and have an adjustable cutoff frequency. All low frequencies will always pass and not be gated. All high frequencies would be subject to gating. Crossover is usually around 1khz to 5khz but can be set lower or higher, depending on the pickups or conditions of the physical recording system.
This allows a very natural sounding chord sustain on long ringouts without that fizzy hiss from pickups sitting close to computer monitors and other electronics. The high frequencies in the transient when you pick the string are heard because they pass through the gate but as the notes sustain, the only useful frequencies are the base fundamental frequencies (the lower frequencies) of the notes being played. Since there is no reason to hear the high spectrum, the gate shuts off that section of the frequency spectrum and that removes the hiss sound you hear in sustanined notes. This kind of gate doesnt actually sound like a gate at all. It just cleans up the DI in a transparent way and prevents the distortion from distorting the extraneous high frequency noise.
Re-loading a Reaper project, it seems like the model doesn't come back up.
It would be nice to have a native support for Linux
Not really sure if it should be marked as a bug or an enhancement. In case please reclassify!
When dealing with high gain sounds there is always a "chirp" sound at the end of a guitar performance, if there is a cut without a longer fade out. Also crossfades need to be relatively long to make this noise go away.
Listen to the part, where the strumming goes into the palm mute part and when the palm mute part ends. There is an audible "chirp" sound, which most probably arises, because NAM has trouble to handle loudness differences in short time?
If you look at the picture it happens in the yellow spots.
Steps to reproduce:
Is your feature request related to a problem? Please describe.
The plugin is made to run at 48kHz. If you don't, it won't sound right.
Describe the solution you'd like
Keep the plugin sounding the same at different sample rates. A resampling block would do the trick.
Describe alternatives you've considered
Getting along with 48k.
Additional context
This doesn't seem to be a big deal to most users so far.
It is giving error when adding IR
There's a level meter for the output. It'd be good to get one for the input as well.
Implement support for extensible format.
Hints: https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
Go all-in on file-style moving forward.
The code style in this repo is currently inconsistent, and it bugs me.
I'm looking for a common C++ code style that can be automatically enforced with a formatter to adopt and make things look a little cleaner. Suggestions welcome! :)
A user reports:
profile loader bug. You can load a few profiles, but sometimes a profile that you load disables the plugins audio. You have to close it and reopen the plugin. Live 11.2, Mac M1, Ventura
Pull out of NeuralAmpModeler.cpp
and into its own sensible place.
I noticed that the difference in volume between profiles can be quite large, depending on how loud the output.wav is. Perhaps having a guideline that tells users how loud output.wav should be would help make everyone's profiles more uniform.
If you are open to this idea I can do more testing and provide what I think is an optimal range.
There are a lot of implicit conversions from long
s to int
s, vice versa, etc. They should be cleaned up.
#32 As it's a crucial method for interfacing this repo with other projects, I'd like to suggest modifications for get_dsp method. On the pull request there's a vague idea of what I'm after.
It might be a good idea to make the get_dsp-method's steps usable independently, at minimum allowing the loading of a dsp from a JSON-file (from a disk) and also allowing the loading of a dsp from memory. This would also require returning such data structure upon loading that can be saved and maybe even manipulated and to be loaded again with the get_dsp-method making the whole plugin repo more versatile.
To reduce amount of double-coding anything, if it's possible to split the get_dsp into sub-methods that also work independently but might use each other, it'd be efficient.
This pull request is a one way to achieve the result. Others ways could include not mixing up returning the data during the loading as a reference, but do a separate getter method for the dsp data and/or maybe include other small helper functions as well instead of defining a data struct but just returning the data with getters..
Another piece that would be great to have to make this more of an all-in-one plug-in is a noise gate.
The function signature get_dsp(dspPath)
isn't defined anymore (Option 1, 2). Build now fails.
Add in a simple treble/mid/bass set of knobs that can be used to EQ the model. Some simple filters that act just ahead of the ML model would be fine as a first step.
A good upgrate would be if you could save with a preset the amp loaded.
(If I save the preset and try to open it later it doesn't load the snap folder with it)
Cheers and thank you for sharing your amazing work!
This is the error when trying to activate the plugin:
validating Audio Unit NeuralAmpModeler by Steven Atkinson:
AU Validation Tool
Version: 1.10.0
Copyright 2003-2019, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options
Manufacturer String: Steven Atkinson
AudioUnit Name: NeuralAmpModeler
Component Version: 0.6.1 (0x601)
TESTING OPEN TIMES:
COLD:
Time to open AudioUnit: 6.651 ms
WARM:
Time to open AudioUnit: 0.045 ms
This AudioUnit is a version 2 implementation.
FIRST TIME:
Time for initialization: 0.007 ms
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
Default Bus Count:1
Bus Name: Input
Default Format: AudioStreamBasicDescription: 2 ch, 48000 Hz, Float32, deinterleaved
Has Channel Layouts: 0x650002
Output Scope Bus Configuration:
Default Bus Count:1
Bus Name: Output
Default Format: AudioStreamBasicDescription: 2 ch, 48000 Hz, Float32, deinterleaved
Has Channel Layouts: 0x650002
VERIFYING REQUIRED PROPERTIES:
VERIFYING RECOMMENDED PROPERTIES:
VERIFYING PROPERTY: Latency
PASS
VERIFYING PROPERTY: Tail Time
PASS
VERIFYING PROPERTY: Bypass Effect
PASS
VERIFYING OPTIONAL PROPERTIES:
VERIFYING SPECIAL PROPERTIES:
VERIFYING CUSTOM UI
Cocoa Views Available: 1
NeuralAmpModeler_View
PASS
DEFAULT PRESET: 0, Name:
HAS FACTORY PRESETS
VERIFYING CLASS INFO
WARNING: Preset name is not retained in retrieved class data
PASS
TESTING HOST CALLBACKS
PASS
PUBLISHED PARAMETER INFO:
FORMAT TESTS:
Reported Channel Capabilities (explicit):
[2, 2]
Input/Output Channel Handling:
1-1 1-2 1-4 1-5 1-6 1-7 1-8 2-2 2-4 2-5 2-6 2-7 2-8 4-4 4-5 5-5 6-6 7-7 8-8
X
ChannelLayout is Writable: F
The Unit publishes the following Channel Layouts:
0x650002,
Is Audio Channel Layout Available:
Mono Stereo Binau. AU_4 Ambi. AU_5 AU_5_0 AU_6 AU_6_0 AU_7_0 AU_7_0F AU_8 AU_5_1 AU_6_1 AU_7_1 AU_7_1F
X
ChannelLayout is Writable: F
The Unit publishes the following Channel Layouts:
0x650002,
Is Audio Channel Layout Available:
Mono Stereo Binau. AU_4 Ambi. AU_5 AU_5_0 AU_6 AU_6_0 AU_7_0 AU_7_0F AU_8 AU_5_1 AU_6_1 AU_7_1 AU_7_1F
X
RENDER TESTS:
Input Format: AudioStreamBasicDescription: 2 ch, 48000 Hz, Float32, deinterleaved
Output Format: AudioStreamBasicDescription: 2 ch, 48000 Hz, Float32, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
PASS
Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
validation result: Validierung fehlgeschlagen
Hi ! Can you ad separate path variable stored when DAW saves session to store IR and NAM paths separatly?
Thank you!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.