32 bit audio redux


In my previous post, I don't think I explained very well why a 32-bit signal wouldn't work on the low-end.  The point, I think, was well-taken on the high-end.  You don't want a 192 dBSPL audio signal applied to your body (or your planet, for that matter).  However, Tricky asks

Why have the 6.02 dB increment per bit? Why not reduce this amount, or make it variable?

I'm asking instead of going the standard way it's done 6.02dB per bit .. why not implement so that 32 bits per signal sample doesnt have to mean that you need to go up to 192dB.

That is, sample only the range of human hearing. low end is 1 dB ? and then the upper end .. 120 dB?

First of all, dB is a logarithmic scale.  Numbers on a dB scale represent the ratio between two values, not the difference.

dB = 20 * log10(n1/n2).

Each bit doubles the linear precision of the value.  20 * log10(2n / n) = 20 * log10(2) = 20 * 0.301 = 6.02.  The 6.02 dB per bit number is a mathematical conversion factor.  It is the same as asking to make 3600sec/hr a variable number.

What I think he is actually suggesting is to take the pressure level of 120dB (about 20 Pa) and divide it into 4 billion slices, each one about 0.005 µPa.  The reason I chose 20 µPa (0 dBSPL) as a base is actually an important one.  That is about the sound pressure level (broadband) exerted by garden-variety air molecules bouncing off of your speaker in Earth's atmosphere.  It also, coincidentally, is just about the smallest pressure change that a human ear is capable of perceiving.

Re-using our metaphor from the previous post, suppose the ultimate amp/speaker is actually capable of displacing exactly enough air to create a sound pressure wave of 0.005 µPa.  At the same time a stray air molecule could hit the speaker adding a random pressure oscillation to your signal at 100 times that level.  Even if your pickup device is sensitive enough to discern 0.005 µPa (obviously not talking about the human ear here), there will still be no way to separate the meaningful signal from atmospheric noise.  An audio signal more precise than atmospheric noise is meaningless, because the signal is lost in the random variations.  That is why 0 dBSPL is a good base for your step size.

Given that you never want a sound louder than 120 dBSPL (20 Pa), and that it's meaningless to get any finer resolution than 0 dBSPL (20 µPa), we can calculate how many steps we actually need for any audio signal we care to hear.  20 Pa / 20 µPa = 1000000 steps.  Taking the log2 of that, we end up with 19.93 bits (I don't know how to take a fractional bit, so let's round up to 20).  Therefore, you will never need more than 20 bits per sample to describe any audio to which you care to listen.

Comments (9)
  1. What about sound waves in media other than air?

  2. Vorn says:

    Well, water has an even smaller dynamic range – the noise level inherent in it is much higher.  I imagine there is a correlation between medium density and noise level, but I couldn’t tell you what it is.  And there’s only so much pressure change your ears can stand.

    Vorn

  3. Tristan says:

    What about 32-bit internal processing by a DAW such as Sonar? Would this increase the accuracy of DSP calculations in a way that they are more accurately represented at lower bit depths?

  4. Brandon P says:

    This is not entirely true.  If it were, 8 bit audio would sound just as good as 16 bit audio, as 99% of music recorded on CD has less than 48dB of dynamic range.

    Also, if a 20 Hz tone were generated or normalized to -0dBfs (full scale digital), an equivalent 20 kHz tone would occupy 10 bits less.

    That’s right. A 20 kHz tone on a 16-bit CD only gets 6 bits of precision! (in the real world anyway.)

    This debate will go on forever, or will it?

    Once we get to bit-depths of 32 or 64 bits, and sample rates of 192, 384 or higher, it won’t matter anymore.

Comments are closed.

Skip to main content