cgc wrote on Fri, 28 January 2005 16:04 |
Ok, I think we are saying the exact same thing - the precision is finite. That is an advantage with audio since signals can have the same resolution even at very different amplitudes.
|
Actually, no. I mean, yes, it has the same statistical resolution at all samples, but this means that the quantization error oscillates (modulates) with the amplitude of the signal, and this creates distortion. In other words, the precision is not
actually finite because the error in the overall result is not-finite. It changes with the changing amplitude of your input signal. This makes it, actually, not an advantage in audio systems. The notion that your precision is constant and that the accuracy floats is actually of no benefit in audio systems. It does have certain benefits in processing - there are places in processing where it would be nice to do the math where the coefficients can float respectively, but to actually store and work with the signal itself as 32 bit floating point like this actually offers no benefit - it is actually a detriment with respect to the error that the system imparts.
Quote: |
Now the part about 'error' is a bit tricky. If I decide that 32 bits provides enough numbers for my application then I live with those results.
|
In a properly dithered fixed point system the error is kept at a constant level and the error is maintained as random. This ensures that the quantization error after either the initial sampling stage or any processing stages is kept as white noise at a constant level.
In non-properly dithered fixed point systems the error is kept at a constant level but the error is not random - it is correlated with the signal. This causes the quantization error to manifest itself as distortion instead of noise.
In floating point systems of any form ("dithered" or not) the error changes as the signal changes and therefore is not at a constant level and is also not random (despite the attempts to dither it). This causes the quantization error to manifest itself as distortion instead of noise.
This characteristic of floating point systems can DEFINITELY affect the sound quality of those systems.
Quote: |
I don't know how much dither is really going to resolve the absolutely huge amount of difference in precision between floats and doubles.
|
None. It is impossible (as I stated above) to adequately dither a floating point signal, because the dither amplitude or its precision would have to change along with the change in amplitude of the waveform, so the signal can never be totally decoupled from the dither added to it. Therefore, the dither is not random and therefore is not adequate to prevent distortion. Fixed point does not suffer from this problem, so no amount of dither can solve this problem in floating point systems.
Quote: |
Also, how one would implement it because the number of bits dithered would change depending on the magnitude of the signal. Numbers approaching full scale would presumably have the bottom few bits dithered while those approaching 0 would have almost all of their bits dithered right?
|
Precisely! Though I don't like to refer to "dithering bits." In theory, all bits always get "dithered" according to this nomenclature. The appropriate terminology would be "dither noise of x amplitude is added." For a signal approaching full scale indeed the dither noise would get added at a very low amplitude with respect to the precision bits. For a signal closer to zero indeed the amplitude of the dither noise would exceed the amplitude of the signal.
Nika