anthonyalfimov / Stable-Delay

AU, VST3. A WIP delay/chorus/flanger plugin
GNU General Public License v3.0
5 stars 1 forks source link

Add ducking #56

Open anthonyalfimov opened 3 years ago

anthonyalfimov commented 3 years ago

Add an option to reduce the volume of the wet signal when input signal is present.

A "Ducking" DSP module can be constructed by combining the MeterProbe module and Gain module.

The main deciding factor is UI: do we have space for a control for this parameter. Should it be a continuous control for amount of ducking, or just a toggle.

anthonyalfimov commented 3 years ago

How would ducking interact with resonator-style low delay times and plugin saturation?

anthonyalfimov commented 3 years ago

Note: ducking is a useful feature for the Delay mode only. It is useless for Chorus and very questionable for Flanger. The "shelf" is best suited for universal parameters.

So, we can use the "shelf" for a Tone control #72, and add the "Ducking" control as a forth knob in the "Delay" mode.

anthonyalfimov commented 3 years ago

The planned final UI with the "Ducking" control looks unbalanced:

Ducking

We could add a Gain Reduction meter to improve the balance and indicate the ducking effect.

A few ideas:

A

Ducking GR


B

Ducking GR2


C

Ducking GR3


D

Ducking GR4

anthonyalfimov commented 3 years ago

Note: things are getting tight, might need to make the plugin window taller.

LizAryslanova commented 3 years ago

I am gravitating to B. Different enough to get the non interactive bit, but not so different that it distracts you 🦆

LizAryslanova commented 3 years ago

May be even do a frame like in A. But don’t darken the background of it

anthonyalfimov commented 3 years ago

Yeah, I also like B the most.

Tried it with a frame, but I think it looks too similar to the toggles like this, looks almost indistinguishable from A:

GDS

anthonyalfimov commented 3 years ago

The reverse still looks too close to the regular toggle box:

gsa

Looks more like a mistake than a different UI element.

But I agree that plain B looks like it could use something extra to better fit into the rest of the UI.

anthonyalfimov commented 3 years ago

Out of all the variations of B, I think this one looks the best:

fsadf

But I'm not sure if it makes sense within the UI logic. This dark background is used for interactive elements: buttons, comboboxes and labels. Labels are non-interactive at the moment, but you will be able to click them to type in the value.

From this logic, maybe it should be reversed: dark background for toggles, light one with a border for the GR meter?

The problem is, I don't think it looks as good:

blah

anthonyalfimov commented 3 years ago

As noted in #63, delay self-oscillation might be something you would want to layer with the input signal, but fade out when no signal is present. This "inverted ducking" behaviour could be tied to the Feedback setting. But if we introduce filtering #33 into the feedback path, 100% will stop being the definite boundary of self-oscillation.

Plus, some people might find it interesting to use "inverted ducking" with regular delays too.

So, it would be interesting to allow for inverted ducking, where the wet signal level follows the dry signal level.

Adding it as a toggle, like with Feedback, is complicated. The toggle place is to be taken by the Gain Reduction meter. It is possible to just omit the GR meter, but I like the idea of it too much. Plus, the GR meter will clearly explain what exactly the "inverted ducking" is doing.

It is possible to move the GR meter some place else. This will require a brand new UI element and enough space for it.

Or, the Ducking knob could range from -100% to 100%. This is not consistent with the Feedback knob. However, there's some reason behind this. "Invert" switch for Feedback practically just changes the flavour of feedback tone. It wouldn't make sense to rotate the knob and lose set amount of feedback just to change the flavour. With ducking, "positive" and "negative" ducking are fairly different effects. Also, you might not need as much resolution with Ducking as you need with Feedback.

anthonyalfimov commented 3 years ago

Current plan:

fsadf

anthonyalfimov commented 3 years ago

With stereo signal, it might be preferable to sum the detector side chain to mono for even ducking.

Current "module per channel" organisation of the dsp code doesn't allow this, so we'll have to start the transition to the "one module handles all channels" design.