Compressor in feedback mode

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

synthpark wrote: Fri Apr 26, 2024 2:35 pm
mystran wrote: Fri Apr 26, 2024 2:11 pm
synthpark wrote: Fri Apr 26, 2024 1:45 pm But now imagine very high desired ratios, like for a limiter. Then a infinitesimal small output change must produce a large gain change in order to fullfill the requirements, which is prone to noise, component deviations etc. Is it really like that?
With feedback compressors? Yes. That's why they rarely do more than 10:1 or maybe 20:1 if you're really lucky.
Ok I checked the Glue and it seems it must do something like the curve shown above for target level versus input level, apart from doing odd things like shifting the threshold when going from 4:1 to 10:1. That essentially answers my question and means that you cannot just disconnect the input and connect the output to the detector of some forward compressor design. It is not as simple as that. Although formula seems correct.
Well.. keep in mind that a LOT of classic hardware compressors aren't necessarily entirely close to what they are theoretically "supposed to do" .. like often ratios act in linear rather than dB or the curves might be all wonky 'cos the "VCA" is something weird.

The G-series(?) compressor on which the Glue is based on is actually a reasonably "non-weird" specimen if I recall correctly, 'cos it's a VCA based design that you can at least expect to be somewhat consistent and the only real "quirk" of this particular design is the side-chain: it basically does feedback compression on the side-chain signal, but then applies the same gain-reduction to the actual signal-chain in a sort of feed-forward fashion.. so you get to have a separate side-chain, but still feedback dynamics.

Post

Was just thinking that if we want curves with inverted derivatives and no INF values but full limiting, using a scalar value to represent "ratio" instead of a division would be useful. +1 being no compression, 0 being brickwall, -1 being full inversion, and higher/lower values than +1/-1 being some kind of expander action. Seems like it will require some work under the hood ;)

Post

mystran wrote: Fri Apr 26, 2024 3:50 pm
The G-series(?) compressor on which the Glue is based on is actually a reasonably "non-weird" specimen if I recall correctly, 'cos it's a VCA based design that you can at least expect to be somewhat consistent and the only real "quirk" of this particular design is the side-chain: it basically does feedback compression on the side-chain signal, but then applies the same gain-reduction to the actual signal-chain in a sort of feed-forward fashion.. so you get to have a separate side-chain, but still feedback dynamics.
It has a LOT more quirks :lol:

Post

camsr wrote: Sat Apr 27, 2024 7:13 pm
mystran wrote: Fri Apr 26, 2024 3:50 pm
The G-series(?) compressor on which the Glue is based on is actually a reasonably "non-weird" specimen if I recall correctly, 'cos it's a VCA based design that you can at least expect to be somewhat consistent and the only real "quirk" of this particular design is the side-chain: it basically does feedback compression on the side-chain signal, but then applies the same gain-reduction to the actual signal-chain in a sort of feed-forward fashion.. so you get to have a separate side-chain, but still feedback dynamics.
It has a LOT more quirks :lol:
Well, everything is relative.. but I'd still argue it behaves more "as expected" than say some optocoupler based Vari-Mu (or whatever other crazy things are out there) that you'll have trouble even building a Spice-sim for.

Post

mystran wrote: Fri Apr 26, 2024 2:11 pm With feedback compressors? Yes. That's why they rarely do more than 10:1 or maybe 20:1 if you're really lucky.
It depends on sidechain topology. Paul Wolff (who designed API 2500, with switchable FF/FB) complained about stability issues in FB mode, but I would guess that he used same sidechain, where slowish RMS log detector together with slowish VCA would be limiting loop gain. If you go with old & simple peak FB topology, pushing to 20:1 is not much of a problem and going beyond 20:1 does not make much sense. Here is That Corp design note for FB peak limiter with some sidechain math (so, for 20:1, 26dB gain for sidechain amp is enough, and that is not a lot at all).

Post

urosh wrote: Tue May 07, 2024 10:21 am
mystran wrote: Fri Apr 26, 2024 2:11 pm With feedback compressors? Yes. That's why they rarely do more than 10:1 or maybe 20:1 if you're really lucky.
It depends on sidechain topology. Paul Wolff (who designed API 2500, with switchable FF/FB) complained about stability issues in FB mode, but I would guess that he used same sidechain, where slowish RMS log detector together with slowish VCA would be limiting loop gain. If you go with old & simple peak FB topology, pushing to 20:1 is not much of a problem and going beyond 20:1 does not make much sense. Here is That Corp design note for FB peak limiter with some sidechain math (so, for 20:1, 26dB gain for sidechain amp is enough, and that is not a lot at all).
Well.. what I was referring to by "stability" is that in a feedback design the gain reduction can only asymptotically approach brickwall, 'cos when we are measuring the gain at the output side the compression curve must remain invertible and hence monotonic. This kind of design can actually be more stable with regards to the gain control element and all that, because the feedback acts to stabilize (eg. "VCA" applies more GR than expected, feedback sees lower gain and brings the GR down)... but precisely because it relies on invertible (ie. monotonic) curve. If you want a non-monotonic curve, you'd have to build some sort of hysteresis state-machine that attempts to track the input gain through a multi-valued inverse.. and frankly good luck with that even in digital.

No such limitation for a feedforward design though. You get a measure of input level, you apply whatever curve you want, you convert it to gain reduction and you send it to the VCA. You gain total freedom in terms of what your compression curve could look like (any old waveshaper will do), but the price you pay is that now if there is imprecision in the gain control, then this will be reflected to the output, so realistically for a feedforward design to function predictably you need either a precision VCA or a digital implementation.

So the bottom line is that it's not like FB is less stable, quite the contrary, it's very tolerant to all kind of wonky approximate gain control elements precisely because of the feedback. It's just that in order to get non-monotonic gain control curve, you'd have to intentionally design an unstable control loop.

Post

camsr wrote: Sat Apr 27, 2024 7:09 pm Was just thinking that if we want curves with inverted derivatives and no INF values but full limiting, using a scalar value to represent "ratio" instead of a division would be useful.
In my FF designs for internal ratio calculations I use angle (from 1:1 line, so limiting would be Pi/4 for example). Calculations are simple, and it makes sense but as mystran mentioned, ratio stuck in industry even though it does not make much sense.

Post

urosh wrote: Tue May 07, 2024 11:08 am
camsr wrote: Sat Apr 27, 2024 7:09 pm Was just thinking that if we want curves with inverted derivatives and no INF values but full limiting, using a scalar value to represent "ratio" instead of a division would be useful.
In my FF designs for internal ratio calculations I use angle (from 1:1 line, so limiting would be Pi/4 for example). Calculations are simple, and it makes sense but as mystran mentioned, ratio stuck in industry even though it does not make much sense.
Personally I really like percentage that controls how much of the input gain increase is applied as gain reduction. It works fine at very low values, it works fine at very high values and it feels very natural and "perceptually linear" in a sense once you get used to it... and the numbers are much more logical, the difference between 2:1 and 4:1 (ie. 50% and 75%) actually sounds like a much bigger difference than the difference between 10:1 and 20:1 (ie. 90% and 95%) even though the magnitude of the numbers in traditional ratios suggest exactly the opposite... where as a percentage (IMHO) gives a much more reasonable numeric predictor of how much the sound will change.

Post

Maybe a PID type of algorithm could help the shortfall of a non-monotonic feedback loop.

Post

mystran wrote: Tue May 07, 2024 12:10 pm Personally I really like percentage that controls how much of the input gain increase is applied as gain reduction. It works fine at very low values, it works fine at very high values and it feels very natural and "perceptually linear" in a sense once you get used to it... and the numbers are much more logical, the difference between 2:1 and 4:1 (ie. 50% and 75%) actually sounds like a much bigger difference than the difference between 10:1 and 20:1 (ie. 90% and 95%) even though the magnitude of the numbers in traditional ratios suggest exactly the opposite... where as a percentage (IMHO) gives a much more reasonable numeric predictor of how much the sound will change.
For hard knee it's all easy. For Impact and Ratio R:

FF: Impact = 1 - 1/R
FB: Impact = R - 1

Gain Reduction = -Impact * min(0, THR-INPUT)

Works for any desired ratio, so what I was writing in the start was misleading. Meanwhile I figured it out.

Post Reply

Return to “DSP and Plugin Development”