Uh-huh. That's what I'm sayin'....
Uh-huh. That's what I'm sayin'....
At some point you have to make it back to integers. So you don't want to do that back and forth too many times. Moreover, it also depends on other factors, for instance the type of windowing is being used to go to freq domain calculations.
Theoretical SNR should be about -144dB, but not A-weighted. I figure with A-weighted SNR should be even greater.
With +/- 1 LSB triangular dither (a widely used "standard" dither that is easy to implement), the unweighted SNR at 24-bit resolution is ~141.5 dB, or exactly 23.5 bits. The A-weighted SNR depends on the sample rate, and the spectrum of the noise (white vs. shaped). It is easy to push some of the noise energy of triangular noise into the top octave if it is generated by differentiating 1 LSB uniform distribution noise, and this is even cheaper to compute than triangular white noise. Here is a table that shows the A-weighted SNR at various sample rates with both types of noise (white first), at a measurement bandwidth of 22000 Hz:
44100 Hz: 143.9 dB / 145.5 dB
48000 Hz: 144.3 dB / 146.1 dB
96000 Hz: 147.3 dB / 150.9 dB
Dithering 24-bit PCM samples might actually be overkill, and it is in fact often not used (undithered quantization produces some low level distortion, but lower noise level). But with dither, it is easier to calculate the overall noise level for multiple stages of quantization by simply summing the noise power, since the quantization noise is made uncorrelated to the input signal. That is why I assumed TPDF dither in my previous example.
I think dithering will also add non-linear distortion. Either way, dithering is deliberate addition of spectrally shaped noise. We are simply shifting power spectrum of noise elsewhere in frequency to "fool" our ears. We are not actually improving the situation.The further we push it away from useful signal information, the more we preserve the original signal. There is a benefit of higher than necessary sampling rate from that perspective.
As far as distortion it is not clear to me. So I am still not convinced that superflous processing iterations in computations are all that benign. Obviously it is more forgiving than generational copies of analog signal on analog mediums, but it is not transparent. Or put it another way, it can be measured. It's a different debate whether anyone can perceive that or not.
No, correctly implemented dither will eliminate distortion, and replace it with uncorrelated noise (a demonstration of this can be seen here).
That depends on what kind of processing is being performed. For many simple effects that can be mathematically well defined (e.g. volume control, filters, delay), the error can be made very small. For some other, more complex ones (like pitch shifting/time stretching or noise reduction), the algorithm used does affect the sound quality, but the issue is usually not numeric precision.
No, correctly implemented dither will eliminate distortion, and replace it with uncorrelated noise (a demonstration of this can be seen here).
That depends on what kind of processing is being performed. For many simple effects that can be mathematically well defined (e.g. volume control, filters, delay), the error can be made very small. For some other, more complex ones (like pitch shifting/time stretching or noise reduction), the algorithm used does affect the sound quality, but the issue is usually not numeric precision.
All processing affects sound quality in a way that can be measured. Generally any signal processing step (except the proverbial "ideal unity gain") impacts the signal, be it in digital form or analog form (or the psuedo in-between like high precision float). The rest of the debate focuses around perception and human factor.
I do not recall saying that is not the case. But much of the time the "artifacts" can be reduced to a level that is negligible for practical purposes. There are more important things to worry about than a -300 dB "noise floor" added by some simple processing performed using 64-bit floats.
That is, assuming that the amount of delay is an integer number of samples, which is often an acceptable limitation for simple constant time delays. Otherwise, interpolation is needed.
It's ideally an all pass+constant group delay filtering operation. Fractional sample delays are going to deviate from that slightly.
Seriously over-thinking what "time delay" is. I didn't say "group delay". Fractional sample delays? Really, no need.
Point taken. -300dB noise floors is also more than "good enough". Judging by the title of this thread, so is 16 bit resolution then.