4-Bit Audio Output Via Voltage Reference

[Bruce Land] switched his microprocessor programming class over from Atmel parts to Microchip’s PIC32 series, and that means that he’s got a slightly different set of peripherals to play with. One thing that both chips lack, however is a digital-to-analog converter (DAC). Or do they? (Dun-dun-dun-duuuuhnnnn!)

The PIC part has a programmable, sixteen-level voltage reference. And what is a Vref if not a calibrated DAC? With that in mind, [Bruce] took to documenting its performance and starting to push it far beyond the manufacturer’s intentions. Turns out that the Vref has around 200 kHz of bandwidth. (Who would update a voltage reference 200,000 times per second?)

Anyway, [Bruce] being [Bruce], he noticed that the bits weren’t changing very often in anything more than the least significant bit: audio waveforms, sampled fast enough, are fairly continuous. This suggests using a differential PCM encoding, which knocks the bitrate down by 50% and saves a lot on storage. (Links to all the code for this experiment is inline with his writeup.)

The audio hacks that come out of [Bruce]’s Cornell ECE classes are always a treat. From the lock that you have to sing to open, to chiptunes programmed into an FPGA, there’s something for music fans of all inclinations.

18 thoughts on “4-Bit Audio Output Via Voltage Reference

      1. It’s still 4-bit, however it can “simulate” more levels by use of dithering.
        It is like dithering in picture – if you get far enough from the picture, the dithered pixels merge into a continuous picture which looks like a picture using more colors. This happens because the spatial bandwidth of the picture exceeds spatial bandwidth of your eyes.
        The same applies to sound – dither at such a high frequency that most of the noise lies in non-audible part of spectrum and et voilá, you have something that may sound like 16-bit audio. And if the oversample ratio is high enough, it even may be a 16-bit audio.
        For more clear explanation, see “Oversampling” on Wiki— errh some encyclopedia of your choice.

  1. I wonder if [Bruce] has ever seen Roman Black’s “BTc Sound Compression Algorithm”. It goes a step further than dithering, simulates closed-loop operation by modelling the time constant of your low-pass filter at time of compression. I’d expect [Bruce] could get a noticeable improvement in quality using this technique.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.