|
|
|
|
|
by cben
2796 days ago
|
|
Yep; it's one-dimentional variant of Error Diffusion (which itself is a notably beautiful dithering algorithm), where "input" = slope of line and output is quantized dy=0 or dy=1. Dithering also appears in audio.
The old PC Speaker had merely 1/0 states. It's supposed to be limited to square waves, limited and unpleasant, right?
But at some point people figured out if you flip 1/0 fast
enough you can approximate continuous values:
http://bespin.org/~qz/pc-gpe/speaker.txt I once played with using "error diffusion" like dithering to play wav files. In theory that should produce better audio than the simple fixed-table and PWM dithering suggesting in above article, but I did this on a much newer computer (Pentium?) by which time PC Speaker was irrelevant (only for hack value) and only reached 30-40 bits per input sample at 100% CPU. Plus as that article explains, simple PWM might(?) actually produce less noise from timing irregularity. But the technique is not merely an obsolete hack!
Every CD player that visibly brags it has "1-bit DAC" uses a closely related technique, though in fast hardware. See:
https://en.wikipedia.org/wiki/Delta_modulation
https://en.wikipedia.org/wiki/Delta-sigma_modulation
Take me with a grain of salt, I always get confused trying to grok these... Full explanations of the noise shaping properties that make Delta-Sigma highly useful involve quite a bit of signal-processing, but the core accumulate-compare loop is a very simple algorithm... |
|