diff --git a/resources/neural_amp_modeler.ttl.in b/resources/neural_amp_modeler.ttl.in index 23a2530..4d33d87 100644 --- a/resources/neural_amp_modeler.ttl.in +++ b/resources/neural_amp_modeler.ttl.in @@ -67,4 +67,25 @@ lv2:index 3; lv2:symbol "output"; lv2:name "Output"; + ]; + + # Parameters + lv2:port [ + a lv2:ControlPort, lv2:InputPort; + lv2:index 4; + lv2:symbol "input_level"; + lv2:name "Input Lvl"; + lv2:default 0.0; + lv2:minimum -20.0; + lv2:maximum 20.0; + units:unit units:db; + ], [ + a lv2:ControlPort, lv2:InputPort; + lv2:index 5; + lv2:symbol "output_level"; + lv2:name "Output Lvl"; + lv2:default 0.0; + lv2:minimum -20.0; + lv2:maximum 20.0; + units:unit units:db; ]. diff --git a/src/nam_plugin.cpp b/src/nam_plugin.cpp index b6753d0..9d58649 100644 --- a/src/nam_plugin.cpp +++ b/src/nam_plugin.cpp @@ -147,17 +147,26 @@ namespace NAM { } } + float inputLevel = pow(10, *(ports.input_level) * 0.05); + float outputLevel = pow(10, *(ports.output_level) * 0.05); + + for (unsigned int i = 0; i < n_samples; i++) + { + ports.audio_out[i] = ports.audio_in[i] * inputLevel; + } + if (currentModel == nullptr) { - for (unsigned int i = 0; i < n_samples; i++) - { - ports.audio_out[i] = ports.audio_in[i]; - } } else { - currentModel->process(ports.audio_in, ports.audio_out, n_samples, 1.0, 1.0, mNAMParams); + currentModel->process(ports.audio_out, ports.audio_out, n_samples, 1.0, 1.0, mNAMParams); currentModel->finalize_(n_samples); } + + for (unsigned int i = 0; i < n_samples; i++) + { + ports.audio_out[i] *= outputLevel; + } } } diff --git a/src/nam_plugin.h b/src/nam_plugin.h index 483056e..34fce07 100644 --- a/src/nam_plugin.h +++ b/src/nam_plugin.h @@ -40,6 +40,8 @@ namespace NAM { LV2_Atom_Sequence* notify; const float* audio_in; float* audio_out; + float* input_level; + float* output_level; }; Ports ports = {}; @@ -51,11 +53,7 @@ namespace NAM { std::unique_ptr<::DSP> currentModel; std::unique_ptr<::DSP> stagedModel; - std::unordered_map mNAMParams = - { - {"Input", 0.0}, - {"Output", 0.0} - }; + std::unordered_map mNAMParams = {}; Plugin(float rate);