[linux-audio-dev] JAAA Bandw parameter

Fons Adriaensen fons.adriaensen at skynet.be
Sun Dec 12 14:05:54 UTC 2004


On Sun, Dec 12, 2004 at 03:04:31PM +0300, Andrew Gaydenko wrote:

> So, if I understand well, gray drawing is some kind of noise filtering
> which is possible when analysis takes place some period of time.
> 
> In othe words, a card SNR is blue, as our ears do not integrate a
> sound during such long period of time. But for more o less constant
> noise spectrum (which is true for any card), noise integration alow
> us to expand measurement range (about 20db in my case) - gray spectrum.

No, this is not correct. The difference between the two traces has
nothing to do with averaging over time. There is nothing magical about
it - it's just an artefact of the limitied display resolution.

In case the combination of bandwidth, display range and display size
is such that there is more than one measurement per displayed pixel,
the blue trace is the maximum over the frequency range represented
by a pixel, and the gray one is the average over the same range.

An example should make this clear.

Suppose the sample frequency is 48 kHz, and the FFT length is 4096.
The FFT will give a measurement every 48000 / 4096 = 11.72 Hz.
JAAA interpolates the spectrum at half the FFT step, so we really
have a measurement every 11.72 / 2 = 5.86 Hz.

If we display the full range of 0..24 kHz, and the picture is 500
pixels wide, then each pixel represents 24000 / 500 = 48 Hz.

So there are 48 / 5.86 = 8.2 measurements per pixel. In this case
each pixel will represent 8 or 9 measurements. The blue line shows
the maximum of these 8 or 9 values, and the gray trace the average.

The two traces are displayed because you need them both, depending
on what you want to measure. An analog spectrum analyser would
show a wide band, with the average somewhere near the middle. This
can be done as well, but the current method provides a more accurate
display.

The Video Average function (VidAv) does averaging over time. This
reduces the variation for noise signals, so they can be read and
measured more accurately. The reduced variation also means that
peak and average value will come closer, as you can see on the 
traces.

To measure the SNR of your card:

- Disconnect all input signals.
- Set the display range so you can see the noise. This spectrum
  should be flat, except at the lowest frequencies.
- Switch on the VidAv function and put a noise marker in the
  flat part of the spectrum. 
- Read the noise density value, No, in the upper left corner.

Now compute -(No + 10 * log10 (Fsample / 2)), this is the SNR.

Example: you read No = -130 dB/Hz, and the sample frequency is
48 kHz. 10 * log10 (24 kHz) = 43.8 dBHz, so the SNR is
-(-130 + 43.8) = 86.2 dB.

This assumes the noise spectrum is flat. If it isn't you need to
integrate No over the frequency range. Future versions of JAAA will
probably contain a function to do this, together with A-weigthing.

-- 
FA













More information about the Linux-audio-dev mailing list