03-18-2009 03:13 AM
Hai,
A-weighting or any weighting filter are values to be added with each frequency in frequency spectrum. Its a tabulation that says for Frequency 1Hz - Weight - 5dB and similary for all frequencies. Run a search in net to find out the tabulation that gives this relation and rest is math. Get the frequency domain of the signal add this weightage and then take Ifft now you have A-weighted signal.
03-18-2009 03:47 AM
To summarize,
1) the ambient "sound" pressure level (mechanical energy) is converted to electrical energy via the onboard microphones.
2) It is converted from analog to digital signal via A/D converter with 16 bits resolution.
3) A gain (depending on the gain setting) is applied to the signal and reflected on the waveform graph.
4) Weighting filter (usually A-weighted) is applied which response to the human sentivity hearing range (1-4kHz) for better illustration/understanding of what is being measured.
Hence, it is possible to implement the A-weighted filter using the LabVIEW Digital Filter Design toolkit (I know S&V measurement has it but it cant be executed in DSP module)?
1) Yes that is correct
2) yes 16 bit
3) correct
4) You may have may solutions here, You may create a lookup table, and applying it on the FFT. You may also use the A-weighting transfer function and convert it to digital filter using Z transform. And also LabVIEW Digital Filter Design toolkit placing zeros and poles from the transfer function Google is your friend, try the phrase ->hearing curve A-weighting
03-19-2009 02:25 AM
Hi Guys,
The NI support engineer has replied that the onboard microphone's sensitivity level is at 8mV/Pa (or -42dB at 1V/Pa). Also, the amplitude value displayed on the waveform graph is in "digitilize" value, hence, I still waiting for the amplifier volt gain in order to get back the actual analog voltage measured.
P.S: Beside the amplifier volt gain, will the resolution, frame size or sampling freq affect the actual analog voltage measure? If yes, how?
Thanks!
03-19-2009 07:57 AM
BK Lian wrote:P.S: Beside the amplifier volt gain, will the resolution, frame size or sampling freq affect the actual analog voltage measure? If yes, how?
Oh yes indeed 😉 Take a look at this link http://zone.ni.com/devzone/cda/tut/p/id/4278
04-04-2009 05:55 AM
JK1 wrote:Hai,
A-weighting or any weighting filter are values to be added with each frequency in frequency spectrum. Its a tabulation that says for Frequency 1Hz - Weight - 5dB and similary for all frequencies. Run a search in net to find out the tabulation that gives this relation and rest is math. Get the frequency domain of the signal add this weightage and then take Ifft now you have A-weighted signal.
Hi JK,
I roughly understand ur meaning but which area should I look into (search)? The transfer function of A-weighted filter is in s-domain. To implement using DFD toolkit, I need it to be in z-domain....
PS: A-weighted filter is apply on time-domain signal?
Regards,
Bee Kwang
04-04-2009 07:14 AM - edited 04-04-2009 07:16 AM
BK Lian wrote:I roughly understand ur meaning but which area should I look into (search)? The transfer function of A-weighted filter is in s-domain. To implement using DFD toolkit, I need it to be in z-domain....
PS: A-weighted filter is apply on time-domain signal?
Yes you apply the A-weighted filter on the time domain signal. In the theory this is quite simple. You take the s-domain transfer function, and apply bilinear transform. After some reworking you can extract the 'feed-backward' coefficients and the 'feed-forward' coefficients. These coefficients may be used as input to Labview filter functions. As I said the theory is simple, but I think it will be a hard job to do this. If you are planning to use spectrum analysis in your application, you can skip the filter and instead apply the A-weighted filter transfer function output to the frequency bins your spectrum. This way you may save a lot of work, since you stay in the frequency domain all the time.
You use this formulas to calculate the A curve in dB, for every frequency bin in your spectrum analysis output.
Then you simply add this array to the spectrum output array. For this to work the output from the spectrum must be in dB not dBm, scaled to Vpk. The output units from the power spectrum VIs is Vrms^2 or Vrms depending on which function used. But here you use the "Spectrum Unit Conversion VI" this VI will scale the output as you want it. Se example.
Edit: You will find the formula here http://en.wikipedia.org/wiki/A-weighting
04-04-2009 09:34 AM
Hi t06afre,
1) Thanks for ur feedback on bilinear transform. I understand the MathScript has a function to convert but as u have said, it is probably too hard to do it.
2) Regarding the transfer function, I'm still trying to digest it .
P.S. Do you mind converting the vi example to labview version 8.2?
Regards,
Bee Kwang
04-04-2009 10:16 AM
1) Thanks for ur feedback on bilinear transform. I understand the MathScript has a function to convert but as u have said, it is probably too hard to do it.
Doing the job by pencil and paper is not an easy job. But a computer may do this. You can try it. But as I said before, by using spectrum analysis you do not need the filter in time domain.
2) Regarding the transfer function, I'm still trying to digest it
The wiki paper on this is quite good, but it is more here http://www.cross-spectrum.com/audio/weighting.html
In my example I have used these fixed parameters 44100 Hz sample rate, 22050 samples(0.5 seconds of sound) It is saved in 8.0
04-04-2009 11:40 AM
Hi to6afre,
Thanks for the conversion. I can relate what u've said based on the simulation. However, I'm still confused on the block diagram section. Is there any way to simplify it? Perharps using a FFT Spectral measurement?
Also, refer to the link below, it demonstrate how to convert the weighted filter using bilinear transformation. Can u understand?
http://www.mathworks.com/matlabcentral/fileexchange/69
Regards,
Bee Kwang
04-04-2009 12:57 PM
Well, yeah... Huh Simplify? It can't be simpler than this. Using an Express VI will add a lot more of code. But NI hide it for you in a not so clever way. But perhaps the NI dsp toolkit do not support all spectrum analysis options. Since I am in a good mod I browsed through the DSP module documentation. I seams like the DSP module is supporting the Spectral Measurements Express VI. If this is correct. You have to do something like I show in the picture attached. I have never used the DSP module so I am not sure how correct this is in the NI DSP world. But the math is correct. Other have to help with the rest of your code.