RMS Averaging

Official support for: sonicbirth.sourceforge.net
Post Reply New Topic
RELATED
PRODUCTS

Post

Any advice on how to make a RMS averaging circuit in Sonicbirth?
I mean averaging based on the real root-mean-square concept/function.

Math speaking, the rms averaging is performed by squaring the values sampled in a range of time (let's say 30ms)
and calculating the square root of their mean.... Am I right?

Thanks in advance for your help!

Post

Hi!
I made an experimental circuit by arraying many sample-delays.
Am I right?

http://www.kvraudio.com/banks.php?s=dl&id=1391

I used to use envelop follower for detecting levels with no inspection,but I thought it seemed to be quite different from the "real" RMS unit.

If this is not wrong,I'm going to use this for level-detection.

Thank you.

Post

Thanks a lot! I will take sometime tomorrow to look in details your "massive" work :-)
BTW in the meantime I've been searching on the net and found out RMS averaging seams to be achievable using FFT as well. Sounds like, as per the Parseval's Theorem, RMS in the time domain is equal to the RMS in the frequency domain...

"Back to school" time for me :-) time to understand if this can be done using the FFT related modules in Sonicbirth.

Post

Hi!
I think RMS from FFT is theoretically possible,but, in sonicbirth,it's very hard.

Sonicbirth's FFT modules have very limited functions.
They can process audio streams,but there is no way to access individual FFT values.
In other words, you can make GEQ , vocoder or some filters,but cannot make RTA or some analyzers.

Post

jreverse wrote:Any advice on how to make a RMS averaging circuit in Sonicbirth?
I mean averaging based on the real root-mean-square concept/function.

Math speaking, the rms averaging is performed by squaring the values sampled in a range of time (let's say 30ms)
and calculating the square root of their mean.... Am I right?

Thanks in advance for your help!
Seems that there is a lot of creative thinking going on in some of the responses, but you've got the correct answer right there in your question...!

It's trivially simple, and I've used RMS conversion in a LOT of my own creations.

You 'll need three sonicbirth elements connected in series:

1: a multiplier feed the input signal to BOTH inputs of the multiplier, thereby SQUARING the input value.

2: a change slower which will smooth the input signal. The integration time is set in Milliseconds.

3: a Square root element. These three in series will produce an RMS signal.

I've improved that basic circuit by following the input multiplier (squarer) with an Exponential element followed by a constant subtraction of 1, change slower followed by a constant addition of 1 then the natural log and finally the square root.

Post

Thanks,zmix!
I learned a lot.

1.change slower
I'd missed this,but now I learned the usage.
I tried this and found that this seems to be nearly equal to the envelope follower which attack time and release time are set to the same value as the change slower's.

2.What is "real" RMS.
I learned about RMS through the Wikipedia , usw on the net. I found there is a lot of information.
I knew there are two types of RMS:simple RMS and exponentially time-weighted RMS.
What I made is based on the simple RMS that doesn't seems to be used in audio-processing usually.
The change slower(or envelope follower) seems to be related to the exponentially time-weighted RMS.
It seems more ordinary than the simple RMS.
I'd mixed those up.
I'm going to use the change slower to detect levels.

Post Reply

Return to “SonicBirth”