• Play audio from a serial port

    From AKAcastor@21:1/162 to All on Sun May 5 14:53:36 2024
    A fun post I saw today on Mastodon, by Rue Mohr (who is a great person to follow for interesting retro computer and embedded electronics projects).


    Chris/akacastor

    The post on Mastodon: (includes a quick demo vid of audio playback) https://infosec.exchange/@RueNahcMohr/112389733393979313

    Play audio from a serial port!!!
    I came up with an encoder that can turn audio into a 115200 baud serial stream that when played back thru an RC filter, recovers the audio. :] #lookmumnocomputr

    You can make this easy player here!
    https://github.com/ruenahcmohr/115kaudio


    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Tue May 7 16:34:00 2024
    Re: Play audio from a serial port
    By: AKAcastor to All on Sun May 05 2024 14:53:36

    Hi, AKAcastor.

    Play audio from a serial port!!!

    That's some top flight bodgery - I love it. I will have to try setting that up for myself. 100 bonus points for a tenuous Look Mum No Computer connection, as well.

    I wonder what the low pass works out as? Surely if the start bit is 0 and the stop bit is 1 you're going to end up with a constant 11.5kHz whine?

    Heha, look at me worrying about audio quality... this thing's going to sound like balls and that's completely OK.

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Wed May 8 15:42:24 2024
    Play audio from a serial port!!!

    That's some top flight bodgery - I love it. I will have
    to try setting that up for myself. 100 bonus points for
    a tenuous Look Mum No Computer connection, as well.

    It really is a fun hack, isn't it?

    I wonder what the low pass works out as? Surely if the
    start bit is 0 and the stop bit is 1 you're going to
    end up with a constant 11.5kHz whine?

    The low pass filter would probably be filtering out the start bit if it is the only 0 bit? A single bit at 115.2 kbps would be filtered out at 57.6 kHz (it's a pulse lasting 8.68 microseconds, that would be half the cycle), I think - though I really don't have much knowledge of analog electronics.

    Heha, look at me worrying about audio quality... this
    thing's going to sound like balls and that's completely OK.

    I'm actually surprised to have not seen this kind of trick in use before. Seems like it could have fit in during the 80s when any (cheap) audio more than a beep was highly desirable.


    Chris/akacastor


    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Thu May 9 07:45:15 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Wed May 08 2024 15:42:24

    Hi, AKAcastor.

    The low pass filter would probably be filtering out the start bit if it is the only 0 bit? A single bit at 115.2 kbps would be filtered out at 57.6 kHz (it's a pulse lasting 8.68 microseconds, that would be half the cycle), I think - though I really don't have much knowledge of analog electronics.

    That's a good question. I suppose the instantaneous pulse would be 57.6 kHz but an alternative way to look at it would be as a 11.5 kHz signal with a really wonky 9:1 duty cycle... I further suppose since it's a "square" wave the instantaneous frequency could be considered to be infinity (obviously not really).

    I will ask my good friend Martin - he loves this kind of thing.

    I'm actually surprised to have not seen this kind of trick in use before. Seems like it could have fit in during the 80s when any (cheap) audio more than a beep was highly desirable.

    There were a good number of consumer and homebrew projects for doing this with the parallel port. In theory a nice clean 8 bit output, I made one with my school friend back in the day and it sounded *awful*. I suspect our quality control was not good enough as other people reported good results.

    Oh for the days when you could just walk into Maplin and buy qty. 1 components... In fact we just turned up with a list of "0.1uF electrolytic" etc and handed it to the poor guy behind the counter to rummage through the catalogue and find the 20 or so part codes we needed for us and then fetch them from the back!

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Thu May 9 11:06:48 2024
    That's a good question. I suppose the instantaneous
    pulse would be 57.6 kHz but an alternative way to look
    at it would be as a 11.5 kHz signal with a really wonky
    9:1 duty cycle... I further suppose since it's a
    "square" wave the instantaneous frequency could be
    considered to be infinity (obviously not really).

    Being a square wave definitely makes the frequency measurement less intuitive! (and far beyond my analog comprehension) After I sent the last message, I thought about how hilariously over-simplified my intuitions on analog frequencies are. Usually everything is digitized by the time it makes it onto my plate.

    There were a good number of consumer and homebrew
    projects for doing this with the parallel port. In
    theory a nice clean 8 bit output, I made one with my
    school friend back in the day and it sounded *awful*. I
    suspect our quality control was not good enough as
    other people reported good results.

    It could also be especially hard to compare reported results if some peoples standard for good results were different. :) But with results being awful that does suggest the quality control may have been suspect. ;)

    Oh for the days when you could just walk into Maplin
    and buy qty. 1 components... In fact we just turned up
    with a list of "0.1uF electrolytic" etc and handed it
    to the poor guy behind the counter to rummage through
    the catalogue and find the 20 or so part codes we
    needed for us and then fetch them from the back!

    I still like to order very small quantities from Digikey, I assume if any of the orders aren't being filled by robots then the people working there are probably judging me for wasting their time packaging 83 cents worth of resistors. (and I still end up with spare parts left over!)


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Spectre@21:3/101 to AKAcastor on Fri May 10 04:18:00 2024
    I'm actually surprised to have not seen this kind of trick in use before. Seems like it could have fit in during the 80s when any (cheap) audio more than a beep was highly desirable.

    Most seemed to use a parallel port instead, or even just 8 bits straight off the BUS off whatever they're in, in a D2A setup. MOD era D2A in ModPlay on
    the PC. SAM on the Apple II, "Hellooh, my name is Saaam."

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From Spectre@21:3/101 to Spectre on Fri May 10 04:24:00 2024
    I'm actually surprised to have not seen this kind of trick in use

    The bit I forgot, is that these tend to be fairly CPU heavy, and you have to
    be able to hit the Parallel/Serial port pretty fast. Making it difficult for the systems of the age to do anything else save drive these sound devices.


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From Nightfox@21:1/137 to Spectre on Thu May 9 12:50:47 2024
    Re: Play audio from a serial port
    By: Spectre to Spectre on Fri May 10 2024 04:24 am

    The bit I forgot, is that these tend to be fairly CPU heavy, and you have to be able to hit the Parallel/Serial port pretty fast. Making it difficult for the systems of the age to do anything else save drive these sound devices.

    In the early 90s, I saw a sound driver for Windows 3.1 that used the PC speaker, so that WAV audio files & such could be enabled that way. Although it worked, and was kinda cool for what it was, it slowed down the PC significantly while playing audio that way. I imagine it was a similar issue.

    Nightfox
    --- SBBSecho 3.20-Linux
    * Origin: Digital Distortion: digdist.synchro.net (21:1/137)
  • From AKAcastor@21:1/162 to Nightfox on Thu May 9 16:52:40 2024
    In the early 90s, I saw a sound driver for Windows 3.1
    that used the PC speaker, so that WAV audio files & such
    could be enabled that way. Although it worked, and was
    kinda cool for what it was, it slowed down the PC
    significantly while playing audio that way. I imagine
    it was a similar issue.

    Just recently I was reminded of that same sound driver (I have vague memories of being wowed by it as a kid without a sound card) in the DOSBox-X discord chat. For anyone curious to try it, a link to the PC speaker audio driver for Win 3.1:

    https://winworldpc.com/product/pc-speaker-driver-wi/pc-speaker-driver-windows-31


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Fri May 10 14:01:16 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Thu May 09 2024 11:06:48

    Hi, AKAcastor.

    I have returned from my work travels and put the incredibly complicated 2 component circuit together - great success!

    So, essentially if I fire all zeros at it then (pre-filter) my oscilloscope measures 11.5kHz. I suspect it's just counting transitions, though, so it's probably being a bit literal. The low pass does a good job on that, like 370mV p2p left out of the 3.5V leaving the UART.

    I didn't have a 0.02uF capacitor so I used a 0.022, according to an online calculator that means the low pass comes out to 2.7 kHz instead of 2.95 kHz. It have a pair of .01uF here so I could try that, but it worked well enough that I didn't bother. I'm sure someone far more into the maths and engineering than me could do some sums and figure out if the analogue circuit is attenuating that as if it's 11.5kHz or 57.6kHz... I dunno :)

    And so... the output was quite "hot" as described on the blog, about 3V p2p with audio. I hadn't thought about it before but obviously it also has a bias of about 1.5V. I didn't fancy feeding that into anything so I stuck a potentiometer after the output and a capacitor in series to block the DC.

    Result: Surprisingly decent audio, actually. Nothing you'd want to listen to for leisure but, yeah - broadly similar to what's shown in the video on the blog. Possibly it would sound better if it were played through speakers and re-recorded to smooth out some of the rough edges (as in the video).

    Fun oddity: with my oscilloscope sat post-filter I noticed that it would trigger and display a waveform when sending audio but not when I just sat there mashing the keyboard in the terminal. Space would sometimes trigger it and the arrow keys always did... It turns out because it idles high, you need either a lot of data (arrow keys send 3 characters back to back) or a very "zero-dense" character, such as space (which only has one bit set), to drain enough out of the filter capacitor for the 'scope to notice the voltage drop :)

    I'm going to put together a cheeky YouTube video showing all of this but I need to source some different audio, as I think that LMNC track is available to buy and I don't have permission to use it...

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Bob Worm@21:1/205 to AKAcastor on Wed May 15 22:08:14 2024
    Re: Play audio from a serial port
    By: Bob Worm to AKAcastor on Fri May 10 2024 14:01:16

    Hi, all.

    I'm going to put together a cheeky YouTube video showing all of this but I need to source some different audio, as I think that LMNC track is available to buy and I don't have permission to use it...

    Finally got the YouTube video up - if anyone's interested it is here:

    https://youtu.be/Q9vlxCXxzrg

    If not... don't watch it :)

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Sun May 19 12:36:38 2024
    Re: Play audio from a serial port
    Finally got the YouTube video up - if anyone's interested it is here:

    https://youtu.be/Q9vlxCXxzrg

    Bob - wonderful video! Great presentation and excellent demonstration of what's coming out of the serial port and how it sounds. Super well done.

    Your observation about single keypresses with a low number of '0' bits being filtered out is interesting too - as you said, it makes sense when you think about it - such a clear demonstration can be really enlightening to see in action.

    Thank you for sharing your video, it's a great watch and you do a great job of showing us the technical details.

    The audio quality is shockingly good! I know I would have been overjoyed to have audio of this quality before I got a Soundblaster in the 90s.


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Mon May 20 09:23:39 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Sun May 19 2024 12:36:38

    Hi, Chris.

    Bob - wonderful video! Great presentation and excellent demonstration of what's coming out of the serial port and how it sounds. Super well done.

    Thanks for the kind words. As usual I wasn't really happy with it by the time I started cutting the clips together but I couldn't quite bring myself to re-film any of it :) I'm sure it will improve with practice.

    The audio quality is shockingly good! I know I would have been overjoyed to have audio of this quality before I got a Soundblaster in the 90s.

    Yeah, tell me about it. I remember those Windows 3.1 PC speaker sound drivers that would basically halt the PC until sound stopped playing, I'm not sure it even sounded as good as the serial port thing. It's kind of ironic that I suffered for so long without a sound card yet now good sound is available everywhere I'm back, voluntarily, messing around with scratchy low-fi :)

    I have a USB parallel port kicking around somewhere, maybe I'll try one of those oldskool parallel to audio adaptors now that I actually have some veroboard to mount it on... then I just need to find some software that supports it. I can see how this is going to go...

    Cheers,

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Spectre@21:3/101 to Bob Worm on Tue May 21 01:51:00 2024
    I have a USB parallel port kicking around somewhere, maybe I'll try one of those oldskool parallel to audio adaptors now that I actually have some veroboard to mount it on... then I just need to find some software that supports it. I can see how this is going to go...

    I don't know about anything modern, but there's the old ModPlay I think it
    was 1.12 for DOS. It'll have both the resistor ladder and the DAC versions. There were a few games that tried using it too, but I don't remember what
    now.
    https://esoom.com/mark/dev/modplay.html

    I used the modplay schematic and mounted it straight onto an Apple II bus.. worked just like a SAM speech card.


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From AKAcastor@21:1/162 to Bob Worm on Wed May 22 21:10:48 2024
    Bob - wonderful video! Great presentation and excellent demonstration of what's coming out of the serial port and how it sounds. Super well done.

    Thanks for the kind words. As usual I wasn't really
    happy with it by the time I started cutting the clips
    together but I couldn't quite bring myself to re-film
    any of it :) I'm sure it will improve with practice.

    I understand the inclination to look for defects in our own work, but I honestly thought the video was great. Well put together, well explained, well paced, interesting and informative. Really very good.

    You had me at "BOB WORM - SERIAL PORT ENTHUSIAST"!

    I also consider myself a serial port enthusiast, and I think your clear explanation and visualization of the data/audio signal with the oscilloscope is one of the clearest presentations I've seen. And then the shock of how acceptable the quality of the audio ended up being!

    I'm pasting a link to the video here in case anyone reading hasn't watched it but is interested:
    https://www.youtube.com/watch?v=Q9vlxCXxzrg

    Yeah, tell me about it. I remember those Windows 3.1 PC
    speaker sound drivers that would basically halt the PC
    until sound stopped playing, I'm not sure it even
    sounded as good as the serial port thing.

    I think you're right! I remember being wowed by the PC speaker sound at the time, but it was pretty terrible. I'd have happily played a ton of games with the 115.2kbps audio. :)

    It's kind of ironic that I suffered for so long without a sound card
    yet now good sound is available everywhere I'm back,
    voluntarily, messing around with scratchy low-fi :)

    There's purity in the audio beyond just "sound quality". :)

    I have a USB parallel port kicking around somewhere,
    maybe I'll try one of those oldskool parallel to audio
    adaptors now that I actually have some veroboard to
    mount it on... then I just need to find some software
    that supports it. I can see how this is going to go...

    I think USB parallel ports will probably have timing problems for audio DAC output. The USB interface requires packetization that breaks fine grained timing, the USB parallel ports I've tried have only been usable on a printer. (I'd be happy to hear I'm wrong about this, though!)

    PCIe parallel ports should work still, I think. If you don't have a PC with a parallel port but do have a desktop with an open PCIe slot there are cards available.


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Thu May 23 10:42:49 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Wed May 22 2024 21:10:48

    Hi, Chris.

    I think USB parallel ports will probably have timing problems for audio DAC output. The USB interface requires packetization that breaks fine grained timing, the USB parallel ports I've tried have only been usable on a printer. (I'd be happy to hear I'm wrong about this, though!)

    Aww, boo. All may not be lost, though - I know this will probably come as a shock but I *may* have a couple of devices here with real parallel ports that I could also play with.

    Thanks for pointing that out - it means instead of starting out on the USB port, potentially getting nowehere then giving up, I can begin on a "real" port then have fun seeing what a mess switching to USB makes of it.

    I wonder if I can get my Acorn to drive it? Blow up another line driver in that poor thing...

    Cheers,

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Bob Worm@21:1/205 to Spectre on Thu May 23 11:12:37 2024
    Re: Play audio from a serial port
    By: Spectre to Bob Worm on Tue May 21 2024 01:51:00

    Hi, Spec.

    I don't know about anything modern, but there's the old ModPlay I think it was 1.12 for DOS. It'll have both the resistor ladder and the DAC versions. There were a few games that tried using it too, but I don't remember what now.
    https://esoom.com/mark/dev/modplay.html

    Thanks for the link - that is definitely the *kind* of thing I remember playing with over at my friend's house... may even have been one of the versions of that exact software. How many of these projects could there be?

    I used the modplay schematic and mounted it straight onto an Apple II bus.. worked just like a SAM speech card.

    That's some solid confidence in your soldering skills :)

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Spectre@21:3/101 to Bob Worm on Fri May 24 13:44:00 2024
    I think USB parallel ports will probably have timing problems for audio

    Aww, boo. All may not be lost, though - I know this will probably come as

    Used to be someone I knew they messed around with all sorts of parallel port stuff. Most of the home brew interface software with in GW-Basic and DOS I think. (Its been a looong time). He found that by the time he was trying to use 486's with a DOS shell and Win95 none of the timings would match anything that was previously expected. Windows was burying the physical interface
    behind some layer of obfuscation.

    He went back to keeping an XT class box with DOS on it for further work.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From Spectre@21:3/101 to Bob Worm on Fri May 24 13:49:00 2024
    I used the modplay schematic and mounted it straight onto an Apple II bus..worked just like a SAM speech card.

    That's some solid confidence in your soldering skills :)

    Pfft, my soldering scared most people that looked at it. Vaguely passable,
    but there were a couple of more electronic tech types, if I took my ugly project in, they'd look at it, then redo most of the soldering :)

    PS: I don't believe the DAC listed in ModPlay is available. I used a
    different one way back when, thats not longer available either.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From AKAcastor@21:1/162 to Bob Worm on Thu May 23 20:21:34 2024
    Aww, boo. All may not be lost, though - I know this
    will probably come as a shock but I *may* have a couple
    of devices here with real parallel ports that I could
    also play with.

    What are the chances?! :)

    Thanks for pointing that out - it means instead of
    starting out on the USB port, potentially getting
    nowehere then giving up, I can begin on a "real" port
    then have fun seeing what a mess switching to USB makes of it.

    It might actually be easier to maintain a stable rate on old systems without multitasking? Though I guess we aren't talking about extremely high sample rates, when it comes to hardware from the past couple decades.

    I wonder if I can get my Acorn to drive it? Blow up
    another line driver in that poor thing...

    I heard they thrive on use! Abuse is a kind of use. :)


    I have a Covox Speech Thing clone but I haven't really used it (just hoarding) maybe I should try it on the Pocket386. I don't remember for sure which clone I got but maybe this one:
    https://www.serdashop.com/CVX4


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to Spectre on Fri May 24 12:07:13 2024
    Re: Play audio from a serial port
    By: Spectre to Bob Worm on Fri May 24 2024 13:44:00

    Hi, Spec.

    He found that by the time he was trying to use 486's with a DOS shell
    and Win95 none of the timings would match anything that was previously expected. Windows was burying the physical interface behind some layer of obfuscation.

    I remember a friend of mine switching from Windows 3.11 to 95 and the parallel port timing got so broken on his machine that his laser printer used to print junk artifacts all over his work and quite often would just spit pages out half done.

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Bob Worm@21:1/205 to AKAcastor on Fri May 24 12:12:58 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Thu May 23 2024 20:21:34

    Hi, Chris.

    I have a Covox Speech Thing clone but I haven't really used it (just hoarding) maybe I should try it on the Pocket386. I don't remember for sure which clone I got but maybe this one:
    https://www.serdashop.com/CVX4

    That looks pretty cool. I guessed they would have gone with a DAC chip rather than just a resistor ladder like I'm going to try... but I don't see one? Possibly that's why they brag about their "0.1% High Precision Resistors" :)

    20 Euros is a bit outside my budget... hehahaha

    Time to get DOS running on the craptop, I guess. I only just got a working BSD on there!

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Fri May 24 13:18:52 2024
    That looks pretty cool. I guessed they would have gone
    with a DAC chip rather than just a resistor ladder like
    I'm going to try... but I don't see one? Possibly
    that's why they brag about their "0.1% High Precision
    Resistors" :)

    I think a big part of the concept of these parallel port sound interfaces like Covox (or the similar Disney Sound Source) was that they were SO CHEAP to make because they didn't even need an IC.

    I wonder if there are other versions of parallel port sound devices that did use DAC or other more sophisticated hardware (more than a handful of resistors) - I'm not aware of any, but that doesn't mean there are none of course.

    20 Euros is a bit outside my budget... hehahaha

    Hey it's better than $30 CAD!! haha :)

    Time to get DOS running on the craptop, I guess. I only
    just got a working BSD on there!

    I haven't dabbled in BSD much, but given its ability to run pretty much anywhere it is for sure somewhere on my list of future projects I'll get lost inside while doing a deep dive.


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Sat May 25 11:21:03 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Fri May 24 2024 13:18:52

    Hi, Chris.

    I think a big part of the concept of these parallel port sound interfaces like Covox (or the similar Disney Sound Source) was that they were SO CHEAP to make because they didn't even need an IC.

    Yes, the link you sent had a video from (I think) 8 bit guy showing the Covox clone alongside Disney Sound Source - I had forgotten all about that thing! My friend had one and I remember it was better than what I had (nothing) but it barely worked with any software. I never imagined it was sub-$20 to buy, though - that's pretty amazing for something with a power supply, amp & speaker, plus it sounds like it did some buffering? Crazy.

    Then again, I seem to remember my first SoundBlaster clone was about GBP20 so there is that... Orchid Sound Producer, possibly? Got to love the naming of off-brand stuff.

    I was going to say I think I remember parallel adaptors with a DAC for the Amiga (not that I had one), but I that's probably all in my head because the Amiga had that capability on-board anyway so why make an external one? Probably I'm just getting confused with the multitude of parallel ADC units for the Amiga used for sampling.

    The link Spec posted has ASCII art diagrams* for putting together your own parallel adaptor with a DAC chip (a couple of different DACs, actually) - funtionally the same but probably better quality. I imagine someone must have cranked out a manufactured version of that at some point.

    * Said ASCII art was in a file with a .DOC extension - I was suddenly reminded that .DOC used to mean plain text before Word hijacked it. It's funny that I'm still finding things like that which give a sudden, unexpected burst of nostalgia.

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Sat May 25 11:07:46 2024
    Yes, the link you sent had a video from (I think) 8 bit
    guy showing the Covox clone alongside Disney Sound
    Source - I had forgotten all about that thing! My
    friend had one and I remember it was better than what I
    had (nothing) but it barely worked with any software.

    Well said, this describes my memories well, too - I remember it was better than what I had (nothing) but it barely worked with any software.

    Then again, I seem to remember my first SoundBlaster
    clone was about GBP20 so there is that... Orchid Sound
    Producer, possibly? Got to love the naming of off-brand
    stuff.

    So much time spent trying to figure out the right combination of settings for all sorts of clones and variations back then. I think my first CD-ROM was Orchid, I think I dealt with some driver nightmares before getting that working. Later on when all the CD-ROMs were IDE/ATAPI it was so much easier to plug a new drive in and get it working.

    I was going to say I think I remember parallel adaptors
    with a DAC for the Amiga (not that I had one), but I
    that's probably all in my head because the Amiga had
    that capability on-board anyway so why make an external
    one? Probably I'm just getting confused with the
    multitude of parallel ADC units for the Amiga used for
    sampling.

    I'm not very familiar with Amiga, but now I have one more thing to be curious about regarding Amigas! :) I never really got to use Amigas, in the 90s I didn't know anybody who had one except for one guy (another teenager) that called my BBS and always complained I didn't have enough Amiga files, and I should ditch my PC and get an Amiga because it was way better. We used to chat pretty regularly, it was fun.

    The link Spec posted has ASCII art diagrams* for
    putting together your own parallel adaptor with a DAC
    chip (a couple of different DACs, actually) -
    funtionally the same but probably better quality. I
    imagine someone must have cranked out a manufactured
    version of that at some point.

    It does seem like it must have been a thing, I can't recall hearing of it specifically though. Makes me curious!

    * Said ASCII art was in a file with a .DOC extension -
    I was suddenly reminded that .DOC used to mean plain
    text before Word hijacked it. It's funny that I'm still
    finding things like that which give a sudden,
    unexpected burst of nostalgia.

    Files from the late 90s can be so confusing, how to open that .DOC file - it could be either type. Another extension (a bit less common) that I 're-discovered' recently is .PRN for a printable document (ASCII with form feeds for page breaks). I remember printing hundreds of pages of BBS documentation on the dot matrix printer (24-pin, so it was mostly readable too).


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Spectre@21:3/101 to Bob Worm on Sun May 26 17:13:00 2024
    The link Spec posted has ASCII art diagrams* for putting together your own parallel adaptor with a DAC chip (a couple of different DACs, actually) - funtionally the same but probably better quality. I imagine someone must have cranked out a manufactured version of that at some point.

    I have a sneaking suspicion and I haven't checked, that Wolf3d might have supported Parallel DAC. I also think there was a pretty small window where they became useful. Where there was enough spare horsepower too drive it
    while still doing something "useful" and before SB clones arrived in force. I seem to remember having a resistor ladder version for a bit... and the DAC version I stuck in the Apple II. Would've been late 386 DX40 era I guess.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From AKAcastor@21:1/162 to Spectre on Sat May 25 23:05:10 2024
    I have a sneaking suspicion and I haven't checked, that Wolf3d might have supported Parallel DAC. I also think there was a pretty small window where they became useful. Where there was enough spare horsepower too drive it while still doing something "useful" and before SB
    clones arrived in force. I
    seem to remember having a resistor ladder version for a bit... and the DAC version I stuck in the Apple II. Would've been late 386 DX40 era I guess.

    Wolf3D did indeed support Disney Sound Source. It looks like there's a driver to allow a Covox Speech Thing to work with Wolf3D also (though it's not supported by Wolf3D otherwise).

    I found the below at:
    http://dosdays.co.uk/topics/Manufacturers/covox.php

    Interestingly, despite the fact that the Disney Sound Source is similar to the Covox Speech Thing, Wolfenstein 3D only works with the Disney Sound Source - it does not work with the Covox Speech Thing, Voice Master, or Sound Master. This is explained thanks to one of my contributors, Stefan Goehler. He writes:

    "It's not really compatible to Covox, it's just the same principle - meaning to send samples to the parallel port. But it works
    differently!

    1. It only switches on when the software tells it to (there's no physical switch)
    2. It can ONLY do 7 kHz
    3. It doesn't need such extreme timing as a classic Covox, as it has its own 16-sample FIFO buffer.

    So that explains why Wolfenstein won't work with a DSS - it can't detect nor enable the DSS. That's also why no Covox-designed game will play audio on it (no SW-enabling of the thing), also DSS-designed games that just ignore the state of the DSS may not work as well, as they may have been designed to work with the FIFO in mind and don't generate an interrupt every sample, but push a few samples at a given time - to fill the playback buffer again. As the timing would be off in such a case, such games, if they were designed for the DSS, will sound poorly on the Covox." Stefan Goehler, May 2023


    Chris/akacastor


    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Sun May 26 10:53:45 2024
    Re: Play audio from a serial port
    By: AKAcastor to Spectre on Sat May 25 2024 23:05:10

    Hi, Chris.

    Wolf3D did indeed support Disney Sound Source. It looks like there's a driver to allow a Covox Speech Thing to work with Wolf3D also (though it's not supported by Wolf3D otherwise).

    Interestingly, despite the fact that the Disney Sound Source is similar to the Covox Speech Thing, Wolfenstein 3D only works with the Disney Sound Source - it does not work with the Covox Speech Thing, Voice Master, or Sound Master.

    So that explains why Wolfenstein won't work with a DSS - it can't detect nor enable the DSS.

    Some really mixed messages here... might require a bit of experimentation :)

    Of course, I don't have a Disney Sound Source, but I'm in that dangerous "how hard can it be?" mindset - if the protocol is documented somewhere then it would probably be possible to implement it using crap out of my cupboard - which is my favourite kind of implementation.

    1. It only switches on when the software tells it to (there's no physical switch)

    I wonder if it handshakes back for detection? Probably... which would make life harder.

    2. It can ONLY do 7 kHz

    Probably a win for my purposes :)

    3. It doesn't need such extreme timing as a classic Covox, as it has its own 16-sample FIFO buffer.

    16 samples? As in 2ms? I suppose in true Disney Sound Source style, "barely anything" is better than "absolutely nothing"! Will have a mooch around and see if there's an off the shelf FIFO to fit that bill.

    Hmm. My interest is piqued but I really want to finish writing my Acorn terminal emulator before I move onto something else. I've been meaning to do it for about a year now and once I finally started it came together really quickly. I just need to move the control flow into assembler (probably an afternoon's work) and then plumb it into the serial port (another hour?) - hopefully that will give me the ~ 20x speedup I need for it to run smoothly on the A3020 and I can succumb to other distractions...

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Sun May 26 11:50:22 2024
    So that explains why Wolfenstein won't work with a
    DSS - it can't detect nor
    enable the DSS.

    Some really mixed messages here... might require a bit
    of experimentation :)

    I noticed when pasting that some of it seemed a bit mixed (I suspect the last part about why Wolfenstein won't work with a DSS is meant to be "why Wolfenstein won't work with a Covox"). Adding to the confusion I threw in the driver that is supposed to actually allow the Covox to work.

    In Wolf3D the sound menu lists Disney Sound Source specifically. (though I can't say I have ever tested it)

    Of course, I don't have a Disney Sound Source, but I'm
    in that dangerous "how hard can it be?" mindset - if
    the protocol is documented somewhere then it would
    probably be possible to implement it using crap out of
    my cupboard - which is my favourite kind of
    implementation.

    I like the way you think, Bob.

    1. It only switches on when the software tells it to
    (there's no physical switch)

    I wonder if it handshakes back for detection?
    Probably... which would make life harder.

    I'm speaking out of ignorance here and haven't done any research but I suspect detection will be based on one or more bits being latched (or reset?) when writing to the parallel port - it shouldn't be TOO complicated, I expect (simple is cheap), though it does add one more layer to the onion this project is becoming. ;)

    2. It can ONLY do 7 kHz

    Probably a win for my purposes :)

    At our age, how much is there to hear above 7 kHz anyway? :D

    3. It doesn't need such extreme timing as a classic
    Covox, as it has its own
    16-sample FIFO buffer.

    16 samples? As in 2ms? I suppose in true Disney Sound
    Source style, "barely anything" is better than
    "absolutely nothing"! Will have a mooch around and see
    if there's an off the shelf FIFO to fit that bill.

    I assume the driver to allow Covox to work with Wolf3D is emulating the 16-sample FIFO in software, on a "fast" machine that seems workable.

    And hey, being able to supply 2ms of samples at a time is 16x more efficient than the alternative, right? Practically luxurious! :)

    Hmm. My interest is piqued but I really want to finish writing my Acorn terminal emulator before I move onto something else.

    I support your choice of priorities! Terminal emulator sounds like an important project and deserves attention too.

    I've never used any Acorn machines (unless you count everything ARM haha), I just know them by reputation. (since they weren't really marketed in North America - though I looked it up now and apparently some attempts were made to enter the North American market)

    The A3020 looks like a nice machine, what kind of speed do you expect your terminal emulator to be able to operate at? 115.2k seems doable? I am assuming this is serial port based, or are you writing a network client?


    Chris/akacastor


    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Sun May 26 23:06:07 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Sun May 26 2024 11:50:22

    Hi, Chris.

    At our age, how much is there to hear above 7 kHz anyway? :D

    Heha, well, ironically... despite it now being hard to follow conversations in loud rooms I can still hear those damned mosquito speakers they put in shopping centres to stop teens loitering really clearly. But then, when we went in for the ultrasound for my son 18 years ago I could hear that really clearly - including the pitch changes when they adjusted the depth setting. The little foetus went kind of nuts as well, must be genetic :)

    Hmm. My interest is piqued but I really want to finish writing my Acorn terminal emulator before I move onto something else.

    I support your choice of priorities! Terminal emulator sounds like an important project and deserves attention too.

    Out of interest I tried just adding the serial handler without assembler-ising the code and optimising it. It needs the optimisations :) Or I need to find BBSes that don't send more than one line of text at a time as it can't keep up at volume and just hits the wall. I will probably add a FIFO / circle buffer to soak up bursts as some of the routines are just... slow.

    The A3020 looks like a nice machine, what kind of speed do you expect your terminal emulator to be able to operate at? 115.2k seems doable? I am assuming this is serial port based, or are you writing a network client?

    Oh, this is serial. It didn't have a network card when I rescued it from a skip 20 years ago and I've tried to keep it original (other than the essential CF card to IDE adaptor). In theory its serial port can do 19200bps but I believe it's not assured to be stable at that rate so 9600 is the recommended maximum. Once I get all the BASIC out of this it should cope at 9600.

    FWIW I absolutely love the A3020, and I never even experienced one back in the day so this is objective love rather than nostalgic love :)

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From AKAcastor@21:1/162 to Bob Worm on Sun May 26 15:44:28 2024
    At our age, how much is there to hear above 7 kHz anyway? :D

    Heha, well, ironically... despite it now being hard to
    follow conversations in loud rooms I can still hear
    those damned mosquito speakers they put in shopping
    centres to stop teens loitering really clearly. But
    then, when we went in for the ultrasound for my son 18
    years ago I could hear that really clearly - including
    the pitch changes when they adjusted the depth setting.
    The little foetus went kind of nuts as well, must be
    genetic :)

    Funny ultrasound story. :) I don't have ultrasound experience myself, but I can relate somewhat to still having the high frequencies, while noticing it getting harder to follow voices sometimes. I think I've lost a bit of the high frequencies, but I might still be able to pick up CRT whine if I ever turned one of those back on.

    Part of it may be my hearing become more selective as I've found how helpful (and necessary) it is to tune more things out as I've aged.

    I support your choice of priorities! Terminal emulator sounds like an important project and deserves attention too.

    Out of interest I tried just adding the serial handler
    without assembler-ising the code and optimising it. It
    needs the optimisations :) Or I need to find BBSes that
    don't send more than one line of text at a time as it
    can't keep up at volume and just hits the wall. I will
    probably add a FIFO / circle buffer to soak up bursts
    as some of the routines are just... slow.

    FIFO always ends up being the solution, doesn't it. It might be worth trying to connect to a CBBS system, I have called into CBBS/TN before and it's a very low bandwidth interface (I also found the late 70s-style BBS surprisingly pleasant to navigate).

    CBBS/TN is at cbbs.mitsaltair.com port 8800 or dialup +1 702 216 6148.

    Oh, this is serial. It didn't have a network card when
    I rescued it from a skip 20 years ago and I've tried to
    keep it original (other than the essential CF card to
    IDE adaptor).

    I am always conflicted between keeping systems as original as possible, and bolting on every retro-hack I can find. :)

    In theory its serial port can do 19200bps
    but I believe it's not assured to be stable at that
    rate so 9600 is the recommended maximum. Once I get all
    the BASIC out of this it should cope at 9600.

    Ohhhh if its running interpreted BASIC I completely understand the serial speed problems. Based on the serial port speeds I assume there's no UART buffer - sounds like a good test of your optimization abilities!

    FWIW I absolutely love the A3020, and I never even
    experienced one back in the day so this is objective
    love rather than nostalgic love :)

    If you're thinking about showing it off in videos, I'll be watching. :)


    Chris/akacastor

    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Spectre@21:3/101 to AKAcastor on Mon May 27 20:44:00 2024
    Wolf3D did indeed support Disney Sound Source. It looks like there's a driver to allow a Covox Speech Thing to work with Wolf3D also (though it's not supported by Wolf3D otherwise).

    For a short time some DOS titles had "Generic Parallel Port" or something similar, thats what I was thinking Wolf3d had... mebbe is was an early Doom with one of the Launchers... memory fails me now.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From Spectre@21:3/101 to Bob Worm on Mon May 27 20:49:00 2024
    So that explains why Wolfenstein won't work with a DSS - it can't detect nor enable the DSS.

    Ponder, there's only limited lines on the parallel port, you could probably
    tie the enable either high or low as required. Not sure what it'd be using for detection though, something specific out for a response of some sort? Or loading on some line or signal.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From Spectre@21:3/101 to AKAcastor on Mon May 27 20:57:00 2024
    I'm speaking out of ignorance here and haven't done any research but I suspect detection will be based on one or more bits being latched (or reset?) when writing to the parallel port - it shouldn't be TOO complicated, I expect (simple is cheap), though it does add one more layer to the onion this project is becoming. ;)

    Ponder a lot of parallel ports were not bi-directional. Meaning you'd have to use a control line for detection, not a data line, and or the detection is only transient. Mind you I don't know if there were any port requirements
    for DSS or Covox.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From AKAcastor@21:1/162 to Spectre on Sun May 26 20:11:56 2024
    For a short time some DOS titles had "Generic Parallel Port" or something similar, thats what I was thinking Wolf3d had... mebbe is was an early Doom with one of the Launchers... memory fails me now.

    The DOS Days page mentions there being approximately 60 DOS game titles directly supporting the Covox Speech Thing, and almost 150 DOS game titles that directly supported the Disney Sound Source.
    http://dosdays.co.uk/topics/Manufacturers/covox.php

    No numbers for other variations besides Covox/Disney, but already that's more games than I remember. :)


    Chris/akacastor


    --- Maximus 3.01
    * Origin: Another Millennium - Canada - another.tel (21:1/162)
  • From Bob Worm@21:1/205 to AKAcastor on Mon May 27 07:01:13 2024
    Re: Play audio from a serial port
    By: AKAcastor to Bob Worm on Sun May 26 2024 15:44:28

    Hi, Chris.

    Ohhhh if its running interpreted BASIC I completely understand the serial speed problems. Based on the serial port speeds I assume there's no UART buffer - sounds like a good test of your optimization abilities!

    There is some kind of buffer but I guess it's in system RAM rather than in the controller itself. For sure you need to go assembler to reliably drain it out before it fills :)

    If you're thinking about showing it off in videos, I'll be watching. :)

    I did film an intro to begin a series on it, then I broke it (again) so didn't film the rest. When it first came out of storage the serial Tx driver chip was dead, it caught a bit of Varta juice but was only on the fringes so I was surprised that died out of all the chips. I managed to source new old stock for it, seemingly the last ones anywhere, and replaced it. Then several months later the Rx died, sadly in replacing that the traces and pads pretty much all came off the board (much closer to the CMOS battery) so there's a more "creative" repair on that and it's... iffy. I will have it back to fill functionality at some point, I'm sure.

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Bob Worm@21:1/205 to Spectre on Mon May 27 08:46:05 2024
    Re: Play audio from a serial port
    By: Spectre to AKAcastor on Mon May 27 2024 20:57:00

    Hi, Spec.

    Ponder a lot of parallel ports were not bi-directional. Meaning you'd have to use a control line for detection, not a data line, and or the detection is only transient. Mind you I don't know if there were any port requirements for DSS or Covox.

    I just found a guide to interfacing the DSS on archive.org, it appears to just use control lines:

    Select (PC->DSS): set and held high for DSS to power on, momentarily strobed low to latch data into the FIFO. The example code does a stack push / pop to introduce enough delay for the strobe to work, possibly that wouldn't be enough time on modern processors.

    Ack: (DSS->PC): used to indicate whether the FIFO is full... though I don't entirely see the point in this as their example code just discards the current sample when the FIFO is full, which I guess is what a full FIFO would do anyway

    Possibly the ack also lets the PC "see" that there's a DSS connected? Dunno.

    Doesn't seem too complicated anyway :)

    BobW
    --- SBBSecho 3.20-Linux
    * Origin: >>> Magnum BBS <<< - bbs.magnum.uk.net (21:1/205)
  • From Spectre@21:3/101 to Bob Worm on Tue May 28 05:07:00 2024
    Ohhhh if its running interpreted BASIC I completely understand the
    serial
    speed problems. Based on the serial port speeds I assume there's no

    There is some kind of buffer but I guess it's in system RAM rather than in the controller itself. For sure you need to go assembler to reliably drain it out before it fills :)

    Sounds a little like the A2. It had an ACIA :), no UARTs in sight. Off
    hand I forget what the ACIA acronym stands for... asynch communications or
    some such. Most common on 6502s was the 6551 chip. Capable of 19.2k if you could drive it. Otherwise the only odd bod I know of.. actually there's 2,
    is the C64 and early IIc models which are just bit banging.

    Most of the A2 software was written in Applesoft, interpreted ms-basic.
    You'd have ASM or ML code to call too get the IO done. Load it with what to send and call the subroutine to do it.

    Spec


    *** THE READER V4.50 [freeware]
    --- SuperBBS v1.17-3 (Eval)
    * Origin: A camel is a horse designed by a committee. (21:3/101)
  • From mary4@21:1/166 to AKAcastor on Fri Jun 21 14:25:12 2024
    Re: Play audio from a serial port
    Finally got the YouTube video up - if anyone's interested it is here:

    https://youtu.be/Q9vlxCXxzrg

    Bob - wonderful video! Great presentation and excellent demonstration of what's coming out of the serial port and how it sounds. Super well done.

    Your observation about single keypresses with a low number of '0' bits being filtered out is interesting too - as you said, it makes sense when you think about it - such a clear demonstration can be really
    enlightening to see in action.

    Thank you for sharing your video, it's a great watch and you do a great job of showing us the technical details.

    The audio quality is shockingly good! I know I would have been
    overjoyed to have audio of this quality before I got a Soundblaster in
    the 90s.



    yo this is interesting i need to watch this video

    --mary4 (Victoria Crenshaw) the 286 enthusiast

    ... Redundant book title: DOS For Dummies

    --- Mystic BBS v1.12 A47 2021/12/24 (Linux/64)
    * Origin: Datanet BBS | telnet://datanetbbs.net:23 (21:1/166)