overshoting control in rms compressor
Hello,
I have a question about dynamics processors.
I'm trying to create something like auto-mastering, a maximizer. In the previous post, I showed the settings for my 4-band compressor. It sounds okay, but I know it can be much better.
The RMS compressor doesn't have an overshot control. You can adjust the compressor's response time, but you can't make the transient being passed louder or quieter. It just is what it is.
That's why I used a peak compressor with the setting shown on the right side of the image. It works almost as I expect.
However, I think this type of connection is inefficient and takes up a lot of MIPS.
Could ADI add an overshot control option to the RMS compressor?
Maybe it would be better if I tried creating my own algorithm. I know a little about audio, but not much about DSP programming. Could someone tell me how to get started?
Best regards, Kuba.
software
Hello Kuba-s,
I am not certain exactly what you are trying to accomplish? Exactly what an "overshoot" control would do differently?
I know compressors fairly well and have designed some analog compressors yet, I am still confused.
You can experiment with the modules that have an external sidechain output and input. This gives you the ability to "process" the sidechain signal. Like EQ'ing the audio going into the sidechain input will create something like a De-Esser.
You could also take the sidechain output and add gain or something like that and feed that back into the sidechain input. This is what a feedback style of compressor does. However, this may not work as well as you like because there will be some compression right away then the sidechain output will feedback and add more gain reduction.
This is what is do great about a device like an 1176 that is a feedback style. So when a peak hits, this raised level out of the sidechain has to be fed back into the compressor before it will change the gain!! So the peak has already passed and is gone!! Is this the overshoot you are talking about?
You could also run the sidechain output through a delay line to give you more time for it to overshoot.
It is funny that this logically makes zero sense... why compress AFTER the peak has passed? But, this style of compressors have been the most sought after for decades!! They are not good for doing things like protecting speakers or to prevent clipping, but they are great for obtaining an awesome sound!!
I was looking for a good example I have built for a feedback style compressor but it looks like I have never done it!! Shame on me!!!
There is a post where I mentioned it and there is a lot of info on this post.
Mono vs. Stereo Compressors - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone
Let me think about this and share some ideas to try.
So following my guess that this is what you are looking for. There are two ways you can do this.
Sum the audio and feed it through a delay line then feed that into the sidechain input of the RMS compressor. You can adjust the delay to give you the amount of overshoot.
Keep in mind that the Attack control does this a little as well. You can setup a slow attack.
Then for a feedback try something like this:
You will have to experiment with this to get the gains right etc. I have NOT tried this. I am just thinking out loud.
Actually, you could also do this: Take the audio from the output of the compressor just like it would in an 1176. (I assume you know what an 1176 is?)
Have fun experimenting!!
Regarding writing your own code. It would be in assembler and not easy to learn and we do not make those tools available to everyone.
But, as you can see you can do a lot with standard blocks!!
Dave T
Thanks for the comprehensive answer, Dave.
I'm testing various solutions. In professional equipment, I see a few sliders that I know how they affect the sound, but I don't know the algorithm behind them.
For example, the parameter I marked with a green circle produces a similar effect to what I suggested in the first post. I'm simply curious how they did it :)
I know I can't fit it all in adau1701, but you have to start somewhere.
DaveThib said:
This is what is do great about a device like an 1176 that is a feedback style. So when a peak hits, this raised level out of the sidechain has to be fed back into the compressor before it will change the gain!! So the peak has already passed and is gone!! Is this the overshoot you are talking about?
Yes, that's what I mean. I know what 1176 is. I'm trying to improve the sound so that the sound after the compressor is more detailed, while still having a solid body. It's not easy :)
When I asked about building the algorithm myself, I meant building it from basic blocks like add, multiply, etc. Also, is there a tool in sigmastsudio where you can load a number of samples into memory and manipulate that data? For example, average it or something else?
Thanks again for the examples, I will test them as time permits :)
Hello Kuba & Dave,
I made a test circuit which generates a 1KHz sine wave changing between -12 dB and +6 dB to test several compressors:
The compressors are from top to bottom of the output Mux: straight RMS, RMS+peak, none, and a homemade contraption with a sidechain feeding a peak external input compressor. All compressors have the same curve.
I'm assuming that the desired response would maximize signals while keeping peaks as close to 0 dB as possible -- much like a radio station engineer might need. Low level signals see a lowpass filter in the sidechain, to be kinder to the music. Loud peaks above -6 dB bypass the filter so the peak compressor catches them immediately. Variations in the overshoots are likely from the limited response of the Real-Time Display; likely they are all about the higher one shown.
Of course this is not necessarily the best possible arrangement, rather this project demonstrates how one can use SigmaStudio to help evaluate your ideas with little or no external test gear. Dave has a fine video exploring this idea. At work I have a signal gen available, but I'm still home after spending most of yesterday shoveling 19" (0.5m) of heavy snow. AD is likely buried even worse.
Best regards,
Bob
Max.dspproj
Hello again,
I'm testing various solutions and have come to the conclusion that the biggest impact on the sound isn't so much the type of compressor itself, but rather the way it's connected, the drive level, the response to individual bands, etc.
I've noticed two things:
In an RMS stereo compressor, the detection circuit responds to the sum of both inputs. But if the inputs are exactly out of phase, the detection circuit doesn't respond. In my opinion, this shouldn't happen. We need to protect ourselves against this.
And secondly:
What's the difference between a peak limiter and a 'fast release' peak limiter?
Hello Kuba-s,
Well, any good mix engineer would not have a high level of out-of-phase signals in a stereo audio stream!! However, that said, more and more of audio is going towards more 3D audio that this may be more of an issue in the future.
I have several things to say... so read on...
One thing you can do is use out independent stereo compressor.
This is what it looks like:
Now you can run this as a dual mono compressor with absolutely no linking of the channels. The problem with this is that signals mixed into the center of the speakers will move left to right as the channels do not compress equally. This is the reason for the "LINK" button, to keep the image equal. So this might solve your problem where it will limit a signal from clipping even if they are out of polarity left to right.
Next discussion,
You can literally build your own compressor if you like. You can use envelope generators and do something like sum both channels. Send it to an envelope generator. Then take the two channels, invert one channel and then sum it and send it to another envelope generator. So one output will be the in polarity level and the other the out of polarity level. So you can either sum them or take the greater of the two and send it to a compressor external input or use lookup tables to generate your own gain factors and multiply the audio with that gain factor. This is more intensive and you need to be good with SigmaStudio.
I think sending it to a compressor block would work fine. Save some trouble. Sorry that I did not have time to work out an example file.
So be creative. You can pretty much do anything you imagine with SigmaStudio.
Dave T
Kuba-s said:
In an RMS stereo compressor, the detection circuit responds to the sum of both inputs. But if the inputs are exactly out of phase, the detection circuit doesn't respond. In my opinion, this shouldn't happen. We need to protect ourselves against this.
In general, it saves CPU cycles if math is done on fewer channels. In your case, combining stereo to mono ends up with an unusable signal due to phasing. One solution is to completely process each channel separately before combining the resulting values into the detection signal, but there might be a better way.
RMS starts by squaring the input values, which also happens to make them positive values. If you could create your own RMS detector, you could perform the squaring on each channel separately, before combining them. Since those would be guaranteed to all be positive values, any phase differences would not cause a problem. After this step, the average (Mean) and square Root math could be done on the combined signal to create the detection signal.
i.e. rather than:
stereo (2) -> mono (1) -> Root (1) -> Mean (1) -> Square (1)
it would be:
stereo (2) -> Root (2) -> mono (1) -> Mean (1) -> Square (1)
That's only slightly more math, but it's protected against any phasing issues in the bipolar audio signals.
I have not experimented with the building blocks in SigmaDSP, but something like this might be possible.
Thanks for your replies.
This isn't a problem for me today because, as Dave mentioned, normal musical material doesn't contain 100% out-of-phase signal. However... things happen. I tested my circuits with various signals that came to mind, hence my observations.
What about the fast and regular peak limiters? I haven't noticed either of them having a wider release parameter range, so what's the difference?
Please log in to reply.








