Comment by spider-mario
8 hours ago
> 16 bit isn't enough for hard, objective reasons. One is that the noise spectrum of quantisation is not simple. Most people assume it's something close to plain white noise, but it really isn't. It's actually a very complex spectrum with some prominent peaks at specific subdivisions of the sample rate.
What you are describing is the result of blunt truncation. If you use the most basic (“uniform” or “rectangular” a.k.a. “RPDF”) dither, the spectrum is in fact flat, as demonstrated by the video you are likely alluding to and calling “pseudoscientific” (https://youtu.be/cIQ9IXSUzuM?t=12m50s). If you sum two uniform dithers together, you get what pretty much everyone uses (“triangular” or “TPDF” dither) which, in addition to decorrelating the mean quantisation error from the signal, also decorrelates the standard deviation, eliminating noise modulation and leaving a correlation only in still higher-order moments like skewness and kurtosis.
You can even try it for yourself with SoX. Find a 24-bit track, quantise it with dither to 16-bit, calculate the difference between both tracks, blow up the difference and take its spectrogram and it will be completely flat. Or listen to the difference (mind the volume) and see if you can make out anything meaningful.
$ sox source.flac -b 16 dithered.flac
$ sox --combine merge source.flac dithered.flac loud-difference.flac remix 1,3i 2,4i norm -1 spectrogram # assumes stereo input
$ open spectrogram.png
$ open loud-difference.flac
And then remember that this difference would normally sit at roughly -93 dB FS, so to hear it in a typical room, you would have to be listening at deafening levels. You claim that it “clearly isn’t” below the threshold of audibility but it’s not clear how you arrived at that conclusion. You then claim that the audibility of that noise floor is somehow related to what you said before about the effects of undithered quantisation, even though those effects stop being relevant the moment you apply any sort of dither.
> We hear much more complex signals in an active way, and if there's information missing in the quiet parts - which there is with limited quantisation - then the signal simply isn't accurate.
It’s not missing. You can do a similar test where you “bury” your source material in the 16-bit dither noise floor, blow it up again, and you’ll be able to detect it under the noise.
$ sox source.flac -b 16 quiet.flac gain -100
$ sox quiet.flac loud-again.flac norm -1
$ open loud-again.flac
No comments yet
Contribute on Hacker News ↗