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 to HomerCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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