02-07-2017 11:35 AM
I'm currently working with the Sound and Vibration Toolkit to measure loudspeaker performance. One common measurement runs pink noise through the DUT and analyzes the output with an 1/N octave filterbank. Both the pink noise and filterbank VIs were easy enough to find and use. I constructed a quick VI to analyze the raw pink noise generated before a measurement.
As you can see, below 10 kHz, the noise is sufficiently flat (+/- 0.25 dB). However, above that frequency and still in the range of audio measurements, the signal rolls up over 1 dB and compromises potential measurements.
Is there a configuration issue in my VI that is causing this? Can someone suggest parameter/program structure changes that may fix the issue?
Solved! Go to Solution.
02-07-2017 01:26 PM
The first thing I would do is check your noise source. What is the upper freq band and falloff of its spectrum. It looks like you are sampling at 51.2kHz, Nyquist freq is 25.6 kHz. If there is sufficient noise above the Nyquist freq, it will alias into the lower bins. Noise power is additive. In your case, if the aliased power is about -6dB below the passband power, it will give you the 1 dB error.
02-07-2017 01:50 PM
Thanks jamiva. To clarify, the noise source is the "Pink Noise" VI supplied by NI in the Sound and Vibration Toolkit. The waveform output is wired directly to the filter bank VI with no resampling.
I generated it at 51.2 kHz because that is the highest sample rate supported by my cDAQ hardware, and the problem persists as I change the sample rate control.
Maybe there is aliasing occuring within the generator VI, because it does look like aliased power on the graph. I'm hoping that an NI applicatons engineer may see this post and clarify if there is a fault in the VI or if it's simple user error on my part.
02-07-2017 03:44 PM
The SVT Pink Noise generation VI is based on the generic LabVIEW Inverse f Noise Waveform generation VI that can create noise signals with various shapes and bandwidths using appropriate IIR filtering of a white noise waveform.
What you see here is caused by the deviation of the filter response from the expected ideal response. As often with IIR filters the deviation gets worse the closer you get to half the sample rate (Nyquist), in your case 51.2 kHz / 2 = 25. 6 kHz.
If you open the Pink Noise VI diagram you can extract magnitude error (dB) from the Inverse f Noise Waveform sub-VI. This will return a plot that looks like this
As you can see the ripple is around 0.2 dB from 1 Hz to 6 kHz but increases to approx. 1 dB at 20 kHz.
If you want to partially compensate for that peaking you can try to apply an appropriate IIR or FIR filter to your pink noise signal before generating it.
02-07-2017 04:17 PM
Here is for example what you get if you filter your pink noise signal with a 2nd order Bessel filter with a cut-off frequency of 22 kHz.
02-07-2017 04:24 PM
Thank you, everyone - this was so educational for me!
02-17-2017 09:49 AM
localDSP has already indicated how to measure and compensate for the rise in band power as you approach Nyquist. Is this acceptable for your application? Also, what measurements are you concerned will be compromised? With DSA outputs a couple of years ago, it would have been easy to suggest a higher update rate. However, with the 9260 in cDAQ and even the 4463 in PXIe, your update rate is limited.
Filed CAR 631135 to add high-frequency compensation within the SVT Pink Noise Waveform VI.
02-20-2017 10:17 AM
Hi Doug, thanks for your reply. localDSP's method for compensating has worked well for my application so far. I'm using a cDAQ with 9263 analog out and 9234 connected to reference microphones to measure frequency responses up to 24kHz on tweeters in a vehicle. So I am limited to a 51.2kHz output sample rate.