[sdiy] Dithering 8-bit waveforms (was Re: PPG or Prophet VS waves for class)

rburnett at richieburnett.co.uk rburnett at richieburnett.co.uk
Wed Jul 18 11:29:22 CEST 2012

Hi Olivier and Tom,

This is an interesting discussion.  I listened to the examples and 
looked at their spectra.

I'm not sure how adding noise to a short wavetable of say 256 samples 
can de-correlate the quantisation noise.  The noise you are adding to 
the wavetable is cyclic too by the very nature of a limited-length 
wavetable.  It would seem that by adding 256 samples of dither noise to 
a 256 sample sine wavetable, you are just adding a cyclic buzzy waveform 
to a relatively clean one.  The situation would be different for the 
case where the dither noise is truley random and has poor 
auto-correlation over a long time.  In this case the noise you are 
adding is different for each cycle of the underlying sine and OVER MANY 
CYCLES helps to de-correlate the quantisation noise from the underlying 

I don't mean to nitpick, only discuss :-)  And if it works for you and 
sounds better then go for it.  It just seems like the theoretical basis 
for adding cyclic dither noise to cyclic waveforms in short wavetables 
is questionable.


On 2012-07-18 00:29, Olivier Gillet wrote:
>> Does dithering the waveform data give a noticeable improvement, 
>> Olivier? Or is it something that's supposed to help but doesn't make 
>> much audible difference? (Not that I'm knocking that - a lot of 'good 
>> practice' stuff is in that category!)
> With a 8-bit resolution and for very pure tones - sine waves and
> drawbar-like sounds - the difference is very easy to spot, not just
> audiophile nitpicking. Dithering removes the "metallic" quality of 
> the
> tone due to the first high harmonics in the quantization noise, and
> spread the noise more evenly - it sounds like a "rounder" tone but
> with more uniform hiss. When the sine table is used as a carrier or
> modulator for FM, there's also a difference in harshness which can be
> more drastic.
> I can't say that one is superior to the other, it's a matter of
> preferences, so you should try both. I prefer the dithered version
> because the hiss goes out easily with a LPF set on moderate cutoff -
> while the metallic overtone is harder to smooth with a VCF.
> Here is a simple test with first-order dithering:
> http://dl.dropbox.com/u/612135/flavors_of_8bit_sine.zip
> Which is as simple as:
> x = np.hstack((numpy.zeros(1,), np.cumsum(x)))
> x = np.round(x)
> x = np.diff(x)
> Olivier
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy

More information about the Synth-diy mailing list