Old 04-12-2017, 01:01 PM   #1
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 3,559
Default ReaComp foldover (FIXED)

I've noticed this before, but I ran into it again and decided to finally document it. I haven't done a whole lot of metrics, but it seems to me like there's something seriously wrong the way the knee curves the gain element.

The context here was that I was trying to use ReaComp in place of more CPU expensive saturators. In particular, I was trying to get it to match the transfer curve of a "tanh clipper". I got pretty close by setting all time constants to 0 and ratio to infinity, and working threshold against knee size (and makeup gain) to match them by eye.

But it only works so far, as the input level gets bigger with respect to the threshold, you start to see the top of the waveform fold back over. In the LiceCap here, it's not "that bad", but I can tell you that increasing the knee size makes it more dramatic.



The blue trace is ReaComp. Red is my tanh thing. My "diode clipper" is 2x oversampled, but switching in ReaComp's AA doesn't help this particular issue.

I understand that this kind of usage is pretty extreme, and outside the realm of ReaComp's intent, but this just plain is not proper behavior. Seems to me this describes the relationship of detector input level and gain reduction no matter how the time constants might be set. It might be harder to see and hear if the input is integrated on the way to the detector, or if ratio is much less, but it's still technically wrong. For me, it's a dead stop, for more general comp tasks, it's maybe just "quirky", but I'd really like to see it fixed.
ashcat_lt is offline   Reply With Quote
Old 04-13-2017, 03:44 AM   #2
bezusheist
Human being with feelings
 
bezusheist's Avatar
 
Join Date: Nov 2010
Location: Dummytown
Posts: 634
Default

Quote:
Originally Posted by ashcat_lt View Post
...but switching in ReaComp's AA doesn't help this particular issue.
not to get off topic, but ReaComp's AA does not work. it's like a 1 or 2 pole filter and there is 0% rejection. there appears to be a slight reduction of aliasing in high frequencies, but only because the whole signal is being attenuated by the same amount (LPF). the signal to aliasing ratio is still the same. maybe a bug or just poor design, don't know.

anyway, i can confirm this "fold-over" behavior and it seems the only solution is to not go over the set threshold (or set your threshold to 0 and engage the "limit output" option).
imo this should be fixed.

i wonder if it has any relation to this little "quirk" i noticed... http://forum.cockos.com/showthread.php?t=188166
(...it seems the actual gain reduction is off, not only for -inf, but for all ratios.)

Last edited by bezusheist; 04-13-2017 at 06:39 AM.
bezusheist is offline   Reply With Quote
Old 04-13-2017, 09:03 AM   #3
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 3,559
Default

Quote:
Originally Posted by bezusheist View Post
i wonder if it has any relation to this little "quirk" i noticed... http://forum.cockos.com/showthread.php?t=188166
(...it seems the actual gain reduction is off, not only for -inf, but for all ratios.)
I know there was an issue where ReaComp wouldn't give more than about 150db reduction even at infinite ratio. I guess they didn't figure anybody would try to use it to clip anything that hard. I understood that to have been fixed (at my request) a while back. I'm not sure if that's what you're talking about, though.
ashcat_lt is offline   Reply With Quote
Old 04-13-2017, 09:27 AM   #4
bezusheist
Human being with feelings
 
bezusheist's Avatar
 
Join Date: Nov 2010
Location: Dummytown
Posts: 634
Default

Quote:
Originally Posted by ashcat_lt View Post
I know there was an issue where ReaComp wouldn't give more than about 150db reduction even at infinite ratio. I guess they didn't figure anybody would try to use it to clip anything that hard. I understood that to have been fixed (at my request) a while back. I'm not sure if that's what you're talking about, though.
the max gain reduction amount issue has been fixed.
the ratio issue seems to be a different bug.
the limiter section/option does have an infinite ratio, but ReaComp does not. (10,000:1 max ratio)
bezusheist is offline   Reply With Quote
Old 04-13-2017, 10:18 AM   #5
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 3,559
Default

Quote:
Originally Posted by bezusheist View Post
the max gain reduction amount issue has been fixed.
the ratio issue seems to be a different bug.
the limiter section/option does have an infinite ratio, but ReaComp does not. (10,000:1 max ratio)
Hmmm... I'll have to look at it again. I thought I had tested it with some pretty absurd values, but I guess I never tried to hit 10000db over threshold to see that 1db "overshoot".

I think I could probably live with that, though. I don't think it's related to the foldover. The folding over seems like it has to come from the way the knee curve is calculated. I had some trouble with it when I wrote my own JS comp, and since I was "cloning" ReaComp, that's when I noticed this behavior. I thought I had figured out how to get around it, but I'd have to go look...


Edit- Honestly, I think the 10^5 thing is just kind of lazy. The gain calculation involves flipping that ratio over, dividing 1/x. It should converge to 0 at infinity, but there's no way to do that with real values of x, so you just make x some arbitrary large number. Or you override that 1/x when the fader says "inf" and just set the gain to 0. It causes a discontinuity, and will mess with automation, but I tend to think it's a better way to go.

Last edited by ashcat_lt; 04-13-2017 at 10:31 AM.
ashcat_lt is offline   Reply With Quote
Old 04-18-2017, 11:29 AM   #6
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 3,559
Default

This still bugs me. Like I'm a little hesitant now to recommend ReaComp for anything. This behavior is probably difficult to measure let alone hear in more general usage, but it's still there lurking, and I know it, and...it bugs me.

Also ReaComp is so much more efficient than any of the JS saturators. I'd really love to be able to use it for those purposes, but I can hear the difference there, and it's not pretty.

These seem like relatively simple fixes (both the foldover and the max ratio), but I guess I haven't seen under the hood.
ashcat_lt is offline   Reply With Quote
Old 11-17-2018, 12:15 PM   #7
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 3,559
Default

This is fixed as of today with v5.962. I still haven't tested it fully, but I know it doesn't fold over like this anymore, so it can actually be trusted for limiting and saturation. (!!!)
ashcat_lt is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 09:49 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.