Saturday 5 September 2015

algorithms - Applying A-weighting


I want to calculate the loudness of a given signal and I've come across this thread. I'm slightly confused about the A-Weighting aspect of it. I can't post images, but I think this site has the formula I need. (Wa = 10log...)


What I don't understand is how to actually use it in my program. If the f stands for frequency, then presumably I can hardcode the values since they will remain constant. If that is the case, how do I apply Wa to my sample values and what values do I use? Do I calculate the power spectrum to get WINDOW_SIZE/2 values and multiply each value in the frequency band with relevant precalculated Wa value or is that the wrong way of doing it? Thank you in advance.



Answer



Yes, you could hardcode the values, do an FFT of your signal, and multiply by the hardcoded values, then get the amplitude in the frequency domain from Parseval's theorem (example).


You could also implement a digital filter and do it in the time domain. Here's Matlab code and my translation to Python.



Note that the bilinear transform causes the digital filter to roll-off more quickly than the analog filter, introducing measurement errors at common sample rates. A simple fix is to upsample the data first, so the discrepancy is minimized. Other filter design approaches here: http://dsp.stackexchange.com/q/36077/29


No comments:

Post a Comment

readings - Appending 内 to a company name is read ない or うち?

For example, if I say マイクロソフト内のパートナーシップは強いです, is the 内 here read as うち or ない? Answer 「内」 in the form: 「Proper Noun + 内」 is always read 「ない...