Reply To: Noise shaped dither – Does it cause issues with DSP-based volume controls?

March 22, 2023 at 4:07 pm #5552

Okay, just a couple of dumb things so that I can get a better idea of what is going on.

1. I edited your last comment just a little, Bob.  Just a little spelling and usage.  Undo it if you want.  Yer the boss.

2. I presume “Alex” is Alexey.  But I just wanna make sure.

3. Can you be a little more descriptive of what MBIT+ is?  How it is defined?

4. Now the original tone is at -80 dB fullscale, right?  Does it stay at -80 dB?  What is the dB gain indicated in the upper left corner?  Does it reflect the signal level?  To the dither level?  Or the quantization step size?  What exactly is changing by “+1 dB” or “+4 dB” or “-4 dB” or “-10 dB”?  (Oh, duh, it’s the gain control, so that does affect the level of dither.)

5.  I’m thinking it might be the dither level that is changing because I cannot understand why the screen goes black if the dither level is constant.  If that is the case, exactly what is mean by “0 dB”?  I think I know what it means for TPDF, but I have no idea what it means for MBIT+.

6.  Now noise spectrum is *not* the same as the probability density function (PDF).  You can have various PDFs attached to various noise power spectrums.  Noise shaping is about the power spectrum.  But decoupling the “moments” of the quantization error signal is about the PDF.

Rectangular PDF that’s exactly as big as the quantization step size will decouple the first moment (that is the mean) or DC of the quantization error from the input signal.  This means, if the input is a very slowly changing DC ramp, that the mean (the first moment) or DC of the error from rounding will always be zero, no matter if you are mid-tread or just on the edge of the quantizer step.

But that does not decouple the variance (the second moment) or AC power of the error signal from the input level.  If the input is a slowly changing DC ramp, when the ramp is mid-tread, rectangular PDF dither will be rounding up and down equally likely and the AC power of the quantization error signal will be maximum.  When the ramp is right on the step, it will always round to that step value and the AC power is zero.  So there is noise modulation based on the pre-quantized signal value.

But triangular PDF (TPDF) dither that is as wide as two quantizer steps will completely decouple both the DC and AC power of the error from the input value.  And I don’t think anyone yet has shown that we can hear higher statistical moments than the first and second (and since we can’t hear DC, we can really only hear the second moment).  With a slowly changing ramp, you can only hear a constant quiet level of dither noise, no matter what the signal DC level is.  No noise modulation.


Now “noise-shaped dither” can mean two different things.  It could mean coloring the spectrum of the dither before it’s added to the signal just before quantization.  It’s hard to control both the dither spectrum and dither PDF independently.  What comes out of a good uniform pseudo-random number generator (PRNG) is rectangular PDF and white spectrum (up to Nyquist).  Adding two independent rectangular PDF and white random numbers together gets you a triangular PDF and is also white.  This is the dither that Stanley generally talked about because it was easier to model and predict.

But if you added two dithers one generated now and the other from the previous sample, that is adding d[n]+d[n-1], what you get is TPDF that is sorta low-pass filtered.  Zero amplitude at Nyquist.

However if you subtracted the previous dither sample from the current dither, d[n]-d[n-1], what you get is TPDF that is high-pass filtered.  Zero amplitude at DC and maximum Nyquist.  That’s a little more useful perceptually and it’s still TPDF so all of these Lipshitzian properties remain: It’s the smallest amplitude dither that will completely decouple both the DC and AC amplitudes of the quantization error from the signal getting quantized.

I have used that kind of high-pass TPDF dither when I wasn’t doing noise shaping in the manner that Stanley normally meant by “noise shaping”.  This kind of noise shaping that is commonly done (like it’s what is done in ΣΔ converters) is where white TPDF dither is added to the pre-quantized signal in addition to an error feedback (from after the quantizer).  This is what is depicted in Fig. 2 here:

dither and noise shaping

This is what we normally mean by “noise shaping” and it doesn’t even have to be dithered.  With the Mot DSP56K and in other fixed-point contexts, I have done simple noise shaping without dithering.  The simple noise shaping was done with “fraction saving”.  Whatever M bits at the right of the N+M bit word that I lobbed off, I would save those bits in a state and in the next sample I would zero-extend those bits before adding them back into the signal just before quantizing.  It was pretty cheap, normally sorta self-dithered, and took care of a nasty limit-cycle problem I otherwise had with IIR filters having a pretty high Q.  Even when dead silence goes in (as zeros), the output of the filter would decay until it got to be about -70 dB and then it got stuck at -70 dB DC, even though it was dead silence going it.  Digital meters would get stuck.  This was the easiest way to fix it, but full-tilt dithering would have also fixed it.  But then you wouldn’t have dead silence coming out, just the dither.