diff --git a/include/private/plugins/impulse_reverb.h b/include/private/plugins/impulse_reverb.h index fdb611d..bc895ea 100644 --- a/include/private/plugins/impulse_reverb.h +++ b/include/private/plugins/impulse_reverb.h @@ -217,6 +217,7 @@ namespace lsp plug::IPort *pRank; plug::IPort *pDry; plug::IPort *pWet; + plug::IPort *pDryWet; plug::IPort *pOutGain; plug::IPort *pPredelay; diff --git a/res/main/ui/convolution/impulse_reverb/mono.xml b/res/main/ui/convolution/impulse_reverb/mono.xml index eb84882..27d2128 100644 --- a/res/main/ui/convolution/impulse_reverb/mono.xml +++ b/res/main/ui/convolution/impulse_reverb/mono.xml @@ -18,7 +18,7 @@ - + @@ -41,21 +41,22 @@ - - - + + + + diff --git a/res/main/ui/convolution/impulse_reverb/stereo.xml b/res/main/ui/convolution/impulse_reverb/stereo.xml index 85b4b04..beda3b7 100644 --- a/res/main/ui/convolution/impulse_reverb/stereo.xml +++ b/res/main/ui/convolution/impulse_reverb/stereo.xml @@ -32,7 +32,7 @@ - + @@ -48,20 +48,22 @@ - - + + diff --git a/src/doc/manuals/plugins/impulse_reverb.php b/src/doc/manuals/plugins/impulse_reverb.php index c3ec6a2..cfbea18 100644 --- a/src/doc/manuals/plugins/impulse_reverb.php +++ b/src/doc/manuals/plugins/impulse_reverb.php @@ -82,6 +82,7 @@
  • Pre-delay - amount of pre-delay added to the wet (processed) signal.
  • Dry - amount of gain applied to the dry (unprocessed) signal.
  • Wet - amount of gain additionally applied to the wet (processed) signal.
  • +
  • Dry/Wet - the balance between the unprocessed (Dry) signal and mixed signal (see Dry and Wet controls).
  • Output - amount of gain additionally applied to the output signal.
  • diff --git a/src/main/meta/impulse_reverb.cpp b/src/main/meta/impulse_reverb.cpp index 92caf1f..65c13e5 100644 --- a/src/main/meta/impulse_reverb.cpp +++ b/src/main/meta/impulse_reverb.cpp @@ -112,6 +112,7 @@ namespace lsp pan, \ DRY_GAIN(1.0f), \ WET_GAIN(1.0f), \ + DRYWET(100.0f), \ OUT_GAIN #define IR_SAMPLE_FILE(id, label) \ diff --git a/src/main/plug/impulse_reverb.cpp b/src/main/plug/impulse_reverb.cpp index 8cd247d..8380953 100644 --- a/src/main/plug/impulse_reverb.cpp +++ b/src/main/plug/impulse_reverb.cpp @@ -237,6 +237,7 @@ namespace lsp pRank = NULL; pDry = NULL; pWet = NULL; + pDryWet = NULL; pOutGain = NULL; pPredelay = NULL; @@ -483,6 +484,7 @@ namespace lsp BIND_PORT(pDry); BIND_PORT(pWet); + BIND_PORT(pDryWet); BIND_PORT(pOutGain); // Bind impulse file ports @@ -576,11 +578,14 @@ namespace lsp void impulse_reverb::update_settings() { - float out_gain = pOutGain->value(); - float dry_gain = pDry->value() * out_gain; - float wet_gain = pWet->value() * out_gain; - bool bypass = pBypass->value() >= 0.5f; - float predelay = pPredelay->value(); + const float out_gain = pOutGain->value(); + const float dry = pDry->value() * out_gain; + const float wet = pWet->value() * out_gain; + const float drywet = pDryWet->value() * 0.01f; + const float dry_gain = dry * drywet + 1.0f - drywet;; + const float wet_gain = wet * drywet; + const bool bypass = pBypass->value() >= 0.5f; + const float predelay = pPredelay->value(); // Check that FFT rank has changed size_t rank = get_fft_rank(pRank->value()); @@ -1330,6 +1335,7 @@ namespace lsp v->write("pRank", pRank); v->write("pDry", pDry); v->write("pWet", pWet); + v->write("pDryWet", pDryWet); v->write("pOutGain", pOutGain); v->write("pPredelay", pPredelay);