The LPT DAC

About 30 years ago, before every computer had CD quality audio built in, audio cards and chips were technological marvels. MIDI chips, FM synthesis, and synths on a chip reigned supreme but one little device – just a handful of resistors – sounded fantastic. it was the Covox Speech Thing, a simple resistor ladder wired up to the parallel port of a computer that would output 8-bit audio to an external amplifier. [FK] recently built his own Covox (Czech, Google translatrix) with just 18 resistors, and the results sound fantastic.

Instead of fancy chips, the original Covox Speech Thing used the 8 bit parallel port on a PC. Back in the olden days, this was the fastest way to get digital data out of a computer, but since it was digital only, a DAC was required to turn this into audio. A simple resistor ladder was sufficient, and this hardware was eventually supported by the old DOS games from Sierra and Id.

[FK] has a demo of this LPT DAC available here, but we’re not thinking that link will last long. If anyone has a better link, leave a note in the comments and we’ll update this post. Thanks [beavel] for sending this in.

38 thoughts on “The LPT DAC

  1. Covox was in Oregon. Other than the Speech Thing they made two 8 bit ISA soundcards. The Sound Master and Sound Master II. The Sound Master was essentially an internal Speech Thing with a pair of Atari 2600 compatible joystick ports and IIRC another feature or two.

    The Sound Master II lost the 2600 ports, and (IIRC) gained Adlib compatibility plus Covox’s own digital audio while retaining the Speech Thing. One of the last things the company did was releasing drivers to make the card Soundblaster compatible.

    Even after Covox was gone, the Sound Master II wasn’t done. Media Vision released a sound card dubbed “Pro Zonic” that rolled all the major sound card standards into one, including all the features of the Sound Master II. The Pro Zonic was the successor to the Pro Sonic. I think the Pro Sonic had Adlib, Soundblaster Pro, Soundblaster 16, and Pro Audio Spectrum support. Don’t recall what else the Pro Zonic added other than Sound Master II. Most likely had wavetable MIDI too, which I’m pretty sure the Pro Sonic did not.

    The card was very short lived, soon after that, Media Vision was done, bankrupt and bought by another company that denied the “Pro Zonic” (and some other MV products) had ever existed. Yes, a company rep told me over the phone there had never ever been such a product, nor did the Jazz 16 exist, despite me having one in hand while talking to him. (Nevermind all the games with Jazz 16 in their configuration options.)

  2. There was even a windows (3.0) driver for this thing. Watching videos was somewhat odd, though, because the sound output needed realtime access to the parallel port, and the computers at this time couldn’t do both at the same time, output sound and decode and display video. So you saw about a second of the video, then it stopped and you heard the corresponding sound for a second, then the sound stopped and the video started again.
    Funny things we wasted our time with, back in these days.

  3. “The results sounds fantastic” – Yea right. If you think that 7 bit (you won’t get more without carefully selected 1% resistors) lofi sounds good then I suppose so, but personally I prefer a few bit more resolution to get rid of the horrible quantisation noise and other artifacts.

    1. Well, samples sounded awful, but FM synthesized music (tracker) was much better than you would have expected. Maybe, because the music from home computers (C64) always had a “rough” touch, and the composers back then were clever enough to use this characteristic to their advantage, and created a whole new musical style, that is still known as “8-Bit”.

      1. It’s allright [F], we all have been once young, some of us still are:)
        Thing is, by “PC speaker” [semicolo] most likely meant internal tiny (piezo?) buzzer, which produced maybe 5 distinguishable beeps. At least so it was on the first computer I saw insides of. Covox was not only wonderful, it was mindblowing, compared to this. Wolfenstein 3D was suddenly immersive and fun (neighbors must have died of heart attack when we connected Covox to a large amplifier and started rippin’). Covox was pure magic in a tiny package.

        It was years before we got to experience 16bit clone of Sound Blaster, and stereo, through unbelievably crappy “multimedia” speakers…

  4. maybe this should have been filed under Retrotacular?

    Still, it’s about 30 years old, and while matseng may be correct that it suffered from the limitations of audio DAC in that form factor, it also shows how innovative the hackers of the time were when they did this.

    I had all but forgotten about the technique.

  5. Instead of this elaborate ladder one can just use 8 Resistor, each with twice the resistance as the one before. Use 1% or better 0,5% resistors, and add a simple filter, the result will actually sound surprisingly well. but the precises resistors are expensive, one might end up paying a tad more then one euro for a set ;)

        1. Because a resistor ladder DAC isn’t restricted to audio only? You may need to add a low cost or simple DAC to a uC and don’t want or need a full DAC chip. Carefully selecting the resistors in your VGA DAC will give better results but you’ll say you should integrate a full graphics chipset into your uC presumably.

    1. Have you looked? My current system, while not the absolute latest and greatest, is still fairly new (I just finished building it a couple of weeks ago – but I didn’t use the most up-to-date parts, but rather what I could afford – which is still a sight better than my old machine) – and while it doesn’t have a parallel port on the back panel, there is a connector for the port on the motherboard. Maybe you have one and don’t know it? I know I was surprised when I saw it (that, as well as a 9-pin serial port, too!)…

  6. When I was 12, 30 years ago, learning electronics with my father, I used to package R2R ladders directly soldered into DB25 plug pins, no PCB, ending into a female cinch exiting the connector plastic cover via the cable hole. I made the whole thing less fragile by filling the cover with silicon. I would sell them for 100 Belgian francs :) I recall I had de-asm’ed a SoundBlaster driver called something like ctdrv.SYS, and created one with same API targeting that LPT-R2R driven by the clock interupt… Good old 8088 DOS days :)

  7. I never realized there was a sound device could be as simple as that. Learn something new…

    A few links to put the sound card development and audio quality in perspective.
    PC audio development as seen thru Monkey Island theme: https://www.youtube.com/watch?v=a324ykKV-7Y
    A sound card history http://www.crossfire-designs.de/?lang=en&what=articles&name=showarticle.htm&article=soundcards
    Another with audio samples http://macgateway.com/featured-articles/sound-card-history/

    I ran across a better list a few months back but can’t find it now.

  8. I remember trying to get something like this up and running in college as part of my labwork (extra credit, off the clock). Unfortunately, my college wasn’t set up with the latest OSs and systems, so it was really hard to get any drivers. We ended up using 2 LPT ports and a serial port to make a rudimentary 16-bit stereo card. One port controlled the first 8 bits. The other port controlled the second 8 bits. The serial port controlled the switching between stereo channels and voltage levels of the op-amps at the outputs. It took way too much time and energy. But, the $10 in parts and the learning experience was WAY better than spending the $300+ that sound cards cost at the time.

    1. Those last-generation parallel ports can get up to about 2.5MHz. Plenty enough to do a *very* high quality stereo output.

      You can trade excess sample rate for more bit depth, a sort of partial-PWM approach. (look at it this way, PWM DAC and “Class-D” audio amps are really just doing exactly as above, but with a “1 bit” DAC. ).

      You just need to digitally resample up to the higher rate, add a little high frequency jitter, digitally filter (a few daisy-chained moving average filters will do it) and truncate to 4 bits (so you can have stereo), then for the parallel port circuit have two four bit resistor DAC’s feeding a couple of low pass filters, say bessel aligned passive inductor/cap setups (will need to adjust values depending on what the input impedance of your load looks like, but that can be done. ) Just make sure the cut off frequency is not too high (I prefer around 8 kHz, or so).

      For bonus marks, measure the resultant channel impulse response with a real ADC setup, then add another stage to the digital filtering you’re already doing to correct for the inaccuracies on your passive filters. Oh, you might be able to improve the 4-bit output further by using a logarithmic scaling (changing the resistor values and digital truncator appropriately), and using some digital negative feedback to reduce the error between the log-scaled-truncated stream and the desired high-precision output.

      I wonder if I’ll ever get around to doing this little thing :)

      The big hairy hard part is that you’ll probably need to be running a dedicated hard real-time stripped down OS to actually play back audio without glitches, and it’s going to somewhat of a pain to do much more than just play back .wav’s.
      PC’s are just really lousy at doing something reliably at the sub-micro-second time scale.
      Maybe you can get DMA working to help that though – but you’re still going to have to be never late about preparing the buffers.

      Probably easier to just use a microcontroller, DSP or fpga hanging off some USB-audio chip’s I2S stream, that way once you make the damn thing work, you won’t have to dedicate a whole PC to it.

      But then, there are a lot of old, otherwise useless PC’s… hmm… All you really need to make it useable as a “sound device” is some way to connect it to your actual PC…

      Have fun!

      1. I forgot to mention that this was ~20 years ago. And, we were using 386SX-20 computers running Win3.0 which we later upgraded to 386DX-40 running Win3.1. All of our drivers were run through DOS6.2.

  9. Btw.

    This Stuff is supported by Temu and Virtual Soundblaster
    Virtual Soundblaster gives you Digitalsound in some Games..
    (Soundblaster Emulator)
    And Temu = Tandy Emulator (Works with Civilisation and Eye of Beholder and much more)

Leave a Reply

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