lsp-plugins / lsp-plugins

Linux Studio Plugins Project
https://lsp-plug.in/
GNU Lesser General Public License v3.0
548 stars 48 forks source link

Consider adding a "hold" phase to gate and compressor envelopes #74

Closed ampetrosillo closed 8 months ago

ampetrosillo commented 4 years ago

A "hold" phase which keeps the gate open or maintains the compression level after the attack phase can come in very useful. Consider the scenario where a compressor is used as a ducking compressor triggered by the kick drum for instance, holding the compressor to its maximum strength for a set amount of ms would allow more dramatic effects. When used in percussive material, it can allow for a more dramatic effect. On gates especially the feature is very useful as it allows the source signal (eg. a percussion instrument) to fully decay before the gate closes again (using longer release times still affects the natural decay of the drum).

sadko4u commented 4 years ago

Do I right understand that this 'hold' should work like a trigger? For example, if I set some threshold and the hold value, then when the envelope reaches the threshold value, the system triggers and does not allow the envelope to fall below this threshold for a specified amount of time?

ampetrosillo commented 4 years ago

Yes, but that's after the attack phase. More precisely put, a hold phase does not allow the gate or the compressor to release (but it should allow a compressor to further compress the signal if the input signal is sufficiently high to cause the compressor to reduce gain further; compare this to a peak detector, the detector signals a certain level and does not go below that level for a certain amount of time unless a higher level is input in the detector). A hold setting is more useful for gates than for compressors, but with compressors, it should allow them to have a distinct flavour. I don't usually see a hold stage for compressors, but since the logic behind it is very similar to a gate envelope, why not include it?

ampetrosillo commented 4 years ago

In other words, think of the hold stage as the sustain stage of an ADSR envelope for synths and the like, where the S stage lasts for a fixed amount of time.

dstra2 commented 1 year ago

A hold setting is more useful for gates than for compressors, but with compressors, it should allow them to have a distinct flavour. I don't usually see a hold stage for compressors, but since the logic behind it is very similar to a gate envelope, why not include it?

I was looking for a compressor with a hold phase in the Linux world but couldn't find one. Although not every compressor outside the Linux world has a hold parameter, it is especially useful for leveling percussive sounds. My use case is a kick drum that was played too dynamically, and now the loud and quiet beats have to be brought to a similar level (replacing the recorded kick drum by a sample is not an option as it would sound unnatural and wouldn't fit into the mix). As can be seen from the following pictures, a compressor with a hold phase can perform the leveling without affecting the decay of the sound (green), while a compressor without a hold phase affects the decay of loud an quiet sounds differently (red), which is undesirable.

Picture1 Picture 1: Original signal (envelope) and compressor parameters (blue)

Picture2 Picture 2: Processed signal (envelope); green: compressor with hold phase; red: without hold phase (release phase only)

Therefore, I would support this feature request also for the compressor and not only for the gate.

Kind regards, Dstra

sadko4u commented 8 months ago

Finally, after many years, we got this feature implemented in all dynamic plugins (single band and multiband). Will be available in 1.2.15.

sadko4u commented 8 months ago

Available in 1.2.15.