I'm wondering if I should use soft clipping or compression/saturation in a reverb, not for colour, but just to avoid hard clipping, and where in the reverb the clipping should go, and transparent soft clipping algorithms to use for this.
I couldn't find much information about this in papers or on forums, so I looked at some open source code:
- Cloudseed uses hard clamping inside the reverb, as well as reducing input levels for headroom and then boosting later
- Airwindows reverb has a sin waveshaper on the input, and then asin on the output, the inverse of sin, which undoes the clipping, but not perfectly as the reverb is in between.
- I also saw that arturia's rev intensity has optional soft clipping on the output.
I've tried tahn, arctan, and some of the soft clipping algorithms from this paper such as variable tahn:
Code: Select all
y = tahn(cx)/tahn(x).Regarding where the soft clipping should go, was thinking it could be good to softclip either:
- in the summing mixer of input + feedback, as the reverb can clip when summing here even with unitary feedback
- in the main loop or in an allpass's feedback, but if they are unitary and have a flat amplitude response it might not be needed, and allpasses can reduce dynamic range by spreading the peaks over time
- maybe just on the output, as i think the internal headroom of 32 bit floating point might mean we don't need to clip it before, but I'm not sure, as we might need to hard clamp the feedback to ensure safety, which could mean we get nasty clipping before it reaches the soft clipper
I have used commercial reverbs that can hard clip but in good plugins it's usually less nasty than naive hard clipping and pro plugins usually have a slightly thick sound that could be from subtle compression/saturation.
Any advice or discussion would be appreciated!
