ΣSigmaStudio Ask AI Русский Log in

Signal peak limiter related to RMS level

SigmaDSP & SigmaStudio DevPH1 Dec 6, 2023 00:00 3 replies Original on forum ↗
Subscribe
DevPH1 Question
Dec 6, 2023 00:00

Hi ADI Experts team,

I need to know what blocks should be used to get the signal peaks limited by multiples of RMS signal. As example, using a factor related to RMS value to define the maximum peak value for limiting an audio signal. E. g. set 5x factor the signal fast peak will be limited to 5x the RMS value (1V RMS lead to 5V maximum peak value), the factor can be adjustable.

Other question, in the Limiter Block, how to achieve lower thresholds (since the minimum is -24dB)?

Thanks in advance!

Audio Signal Processors

Audio Products

software

dynamics processors

sigma studio 4.7

SigmaDSP Audio Processors

limiter

adau1701

Show More

KJBob Reply
Dec 8, 2023 00:00

Hello DevPH1,

This appears to be rather difficult to achieve. Because the RMS and peak levels both vary with the audio, we need to adjust gain according to their ratio. Thus, the desired limiter must perform real-time division of these levels. The example project below measures the RMS and peak levels, multiplies the RMS level by your desired factor, then divides this by the peak level. If the peak level is too high, the division comes out less than one. This result reduces the gain of the two audio channels, thus limiting their level to the RMS level times the desired factor.

The project, attached below, runs on a ADAU1701 eval board. Adapt as needed for other hardware. The Real-Time Display shows the limiting action in operation. Here we see limiting approaching the halfway line (-6 dB) at regular intervals in some popular music:

The catch here is the ADAU1701's division block, which has a known problem. It becomes inaccurate for divisors below 0.0625. Thus, when your input's peak level falls below 0.0625 -- about -24 dB -- this error causes more limiting than expected, in fact gating off very low-level inputs. The project above includes a simple "range extender" which scales both the divisor and output of the divider by 15.99 when necessary, adding another 24 dB of dynamic range. Hopefully this is enough for your application. With SigmaDSP there's often more than one way to achieve a desired function. For example, it may be possible to use the implicit division method shown at the link referenced above. Or run both levels through log lookup tables, converting them to suitably scaled dB levels. Then the division problem simplifies to subtraction..

Best regards,

Bob

RMS-Ratio-Peak-Limiter.zip

RMS-Ratio-Peak-Limiter_sch.png
RMS-Ratio-Peak-Limiter_sch.png
RMS-Ratio-Gain-Display.png
RMS-Ratio-Gain-Display.png
DevPH1 Reply
Dec 18, 2023 00:00

Hi KJBob,

Thank you for your help. I will test here and give a feedback soon.

But is desirable that threshold parameter go below -24dB with some accuracy. So I think test also two limiters in series with different (but dependents) thresholds would be a good idea.

Best regards,

PH

KJBob Reply
Dec 19, 2023 00:00

Hello PH,

Thanks for your reply. The range extender allows for accuracy at inputs down to -48 dB. At a multiplier of five, this works out to a minimum limit threshold of -34 dB -- even lower with multipliers under five. Let me know how your test goes, and if you still need better.

Best regards,

Bob