On Thu, 2007-02-22 at 21:45 +0000, Tim Orford wrote:
32 bit seems to be plenty for us mere mortals with
more practical
problems, but I wouldnt dismiss the esoteric benefits of increased
resolution for complicated processing tasks so easily when quality
is the prime concern. The maths is very tricky.
the issue is not complexity, its whether the operations produce results
outside of the range of a 24 bit integer. if they do not, then floating
point is 100% accurate, and greater resolution/bit depth is of no use.
if they do, then things get more interesting.
Some nice products do use 64 bits (or other high
resolution integer
formats), and I'm not so convinced that their nice sound is
completely unrelated to the sample size.
As an interesting, though slightly obsure example, this article claims
that 32bit float is not enough to make a dithered 24bit integer signal:
http://www.cadenzarecording.com/floatingdither.html
dither is a perennial subject on many pro-audio/DSP mailing lists.
having just survived the latest one on another list, i don't wish to
start another here. i will just note that Nika is smart, but his paper
skips over some basic issues in a way that causes his results to appear
more important than they actually are. adding two 24 bit numbers does
not create a 48 bit result. multiplying a 24 bit number by a relatively
small number does not create a 48 bit result. in fact, for the vast
majority of possble 24 bit sample values and the vast majority of gain
coefficients used in audio processing, the result is still a 24 bit
number. his results/conclusions are not incorrect, they just apply to
the majority of data flow through a typical 32 bit floating point
system.
This old article also points out some mathematical
problems:
http://www.jamminpower.com/PDF/48-bit%20Audio.htm
Perhaps someone more versed in dsp maths can point out the flaws
in these articles, and other hi-end audio misconceptions?
many of these articles seem, like Nika's, to assume that the full
representational range of the 32 bit floating point number will be in
use. it is certainly true that there are many inaccuracies when
representing computational results with floating point numbers *BUT*
these do not apply (or certainly do not apply in the same way) when the
range of values that you are representing remains within the bounds of
the 24 bit mantissa.
for most audio, most of the time, this condition is satisfied.
i will admit to a minor uncertainty in this when it comes to the
normalized form that is generally used: i.e. full scale (0 dBFS) samples
are represented not by 2^24-1 but by 1.0. i have a suspicion that this
still allows 100% accurate computation as long as the final answer is
less than 1.0, but on this i am slightly less sure than i would like.
The primary use for 64 bit is the critical mastering
stage, where it
arguably doesnt make sense not to make use of available processing power.
as i've explained repeatedly, the "64 bitness" of a processor is
irrelevant when discussing 32 bit floating point math except for an
increase in bus bandwidth, register width and a few other factors that
affect speed, not accuracy.