Coder Social home page Coder Social logo

sdatkinson / neuralampmodelerplugin Goto Github PK

View Code? Open in Web Editor NEW
1.8K 1.8K 119.0 7.76 MB

Plugin for Neural Amp Modeler

License: MIT License

Dockerfile 0.11% C++ 28.83% C 5.11% Makefile 2.26% Inno Setup 6.39% TeX 0.05% Objective-C 0.58% Shell 21.01% Batchfile 7.35% Python 27.06% Rich Text Format 1.24%

neuralampmodelerplugin's People

Contributors

enver-yilmaz avatar fichl avatar huodx avatar masqutti avatar mikeoliphant avatar olilarkin avatar pawelkapl avatar sdatkinson avatar slowy07 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neuralampmodelerplugin's Issues

Models sound strange if the input level is really high

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?)

[BUG] Model and IR browsers don't open to their respective last folder

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.

Toggle EQ section

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.

AU plugin doesn't show up in Logic

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.

Make models a single file

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 :)

Change Frequency on the EQ

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.

Folder browser could start from where it left off

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.

IR Loader

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.

[BUG] DI bleed on Cubase 12 when using mono input and stereo output

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! :)

Problem loading IR

A user reports trouble loading their IR. The plugin shows the failure message. An IR that I provided works for them (and me).

[BUG] NAM 0.6.2 crashes in Cubase 12 when loading presets

When switching between different presets made in Cubase12 the Plugin crashes the entire DAW.

Steps to reproduce:

  1. Add NAM to a track, load a model and save that as a VST3 preset
  2. Repeat step 1) multiple times, so you have some different preset to test
  3. Load those presets one after another, or use the Arrows in Cubase
  4. At some point the screen freezes and the application crashes
  5. PS: I found, that if I save presets without a model loaded, and switch between them, the crash does not happen.

Info:
WIN11 - Cubase Pro 12 - i7 8700K - 16 gb RAM
[

Crash.mp4

](url)

[FEATURE] Support for models that were trained on data with different sample rates

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.

Popping sound

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

[FEATURE] Click through models in a directory

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.

Tuner

In order to make this more of an all-in-one solution, a tuner would be great.

[FEATURE] IR scrolling buttons

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/

[FEATURE] Frequency-dependent noise gate

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.

Linux support

It would be nice to have a native support for Linux

[BUG] Chirp sound at crossfades and at the end of a performance

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:

  1. record a strumming part
  2. record a palm mute part
  3. put them together adding short crossfades and end the performance with a clear cut
  4. Load a high gain model in NAM
  5. listen to the transition where the crossfades are and at the end of the performance

NAM chirp sound.zip
image

[FEATURE] Support for other plugin sample rates

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.

Level meter for input

There's a level meter for the output. It'd be good to get one for the input as well.

Code style

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! :)

Volume differences

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.

Improve get_dsp method

#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..

Noise gate

Another piece that would be great to have to make this more of an all-in-one plug-in is a noise gate.

EQ Knobs

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.

Save the amp loaded with the preset in the daw

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!

Logic doesn't verify plugin

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

VALIDATING AUDIO UNIT: 'aufx' - '1YEo' - 'SDAa'

Manufacturer String: Steven Atkinson
AudioUnit Name: NeuralAmpModeler
Component Version: 0.6.1 (0x601)

    • PASS

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

    • PASS

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

    • PASS

VERIFYING REQUIRED PROPERTIES:

    • PASS

VERIFYING RECOMMENDED PROPERTIES:
VERIFYING PROPERTY: Latency
PASS
VERIFYING PROPERTY: Tail Time
PASS
VERIFYING PROPERTY: Bypass Effect
PASS

    • PASS

VERIFYING OPTIONAL PROPERTIES:

    • PASS

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

    • PASS

PUBLISHED PARAMETER INFO:

# # 6 Global Scope Parameters:

    • PASS

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

# AudioChannelLayouts (1), Input Scope:

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

# AudioChannelLayouts (1), Output Scope:

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

    • PASS

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.