• Please review our updated Terms and Rules here

Here's another project proposal: an 8bit ISA über sound card

digger

Experienced Member
Joined
Jul 9, 2008
Messages
395
Location
Amsterdam, the Netherlands
since some of us have been creatively pitching vintage hardware projects, here is one of mine, which I would like to call the "über sound card".

It would be an 8-bit sound card with some or all the following features (yes, I know I'm going all-out here):

  • compatibility with all systems that have 8- or 16-bit ISA slots (from 8088 to the newest CPUs)
  • full 8-bit sound blaster compatibility (1.5, 2.0, and Pro)
  • CMS compatibility
  • OPL3 compatibility
  • OPL3 Stereo switchable between SB Pro and SB16 modes
  • Tandy 3 voice compatibility (oh yes :mrgreen:)
  • virtual LPT port with Covox Speech Thing and Disney Sound Source emulation (a feature already found in some Sound Galaxy cards)
  • Full MPU-401 compatibility (intelligent and UART modes)
  • internal Waveblaster-compatible daughterboard connector
  • external game/midi port on the backplate
  • mini-XLR ports on the backplate (no more crappy mini-jack connectors or feedback hums)
  • digital S/PDIF ports on the backplate
  • internal 2-pin input connector for the internal speaker source
  • internal connector(s) for CDROM audio (perhaps both digital and analog)

You might have noticed the absence of Gravis Ultrasound compatibility, since all GUS revisions were 16 bit designs, requiring a high DMA port I believe, and hardware compatibility could therefore never be achieved on XT class machines, as far as I know. (But feel free to correct me on this if this is not the case.)

Now I know that the above feature list is quite ambitious, and it may not be practical to implement all of these features (well, not in a first revision at least ;) ), but what do the rest of you think? Is this just a pipe dream, or would such a project be feasible, even with just some of the mentioned features? And perhaps you have additional features to suggest that I hadn't thought of, particularly things that are typically missing in existing sound cards for no apparent reason, but are easy to implement and awesome to have.

Designing and building an actual working sound card (and LPT DACs don't count) was a dream of mine years ago. These days, in a forum of tinkerers such as this one, this idea has popped up in my head again. Also, since high performance DSPs and microcontrollers are very cheap these days, I think most of the features in this list may be surprisingly easy to implement. But of course, someone else in this thread is undoubtedly going to give me reality check on that. ;)

I think the best (and most flexible) way to go about it would be a flexible microcontroller design with a flashable BIOS (like in the XTIDE), the mentioned ports hooked up, and all inputs being run and mixed through a high resolution DSP, the analog inputs all being converted through ADCs first, methinks. Of course, quite a few microcontrollers these days are so fast, that they could mix and process all the audio sources without a separate DSP. But I do have to say that having a processor core on the sound card that is several orders of magnitude faster than the vintage host CPU does feel a little bit like cheating. ;)

Any thoughts on this are welcome, as a matter of fact. Let's have it. :)
 
Last edited:
Is OPL3 support necessary here? Are there any 8088 games with OPL3 support?
If you really insist on OPL3 instead of just OPL2, then probably total SB Pro 2 compatibility would be useful as well. But SB Pro cards were 16-bit ISA, would it be possible to recreate their functionality in 8-bit slot?
 
Is OPL3 support necessary here? Are there any 8088 games with OPL3 support?
If you really insist on OPL3 instead of just OPL2, then probably total SB Pro 2 compatibility would be useful as well. But SB Pro cards were 16-bit ISA, would it be possible to recreate their functionality in 8-bit slot?

I reckoned OPL3 would be a better choice, because it's fully downwards compatible with OPL2, and if I'm not mistaken there are actually games out there that still support 8086/8088 CPUs, yet can take advantage of OPL3. And isn't it true that OPL3 sounds better than an OPL2 chip even in OPL2 mode? (Someone please correct me on this if I'm mistaken.)

As for SB Pro compatibility, that will not be a problem since the sound part of the card is 8-bit (that's why it works fine in an XT, as is stated by people in other threads in these forums). The 16-bit part of the card is simply for the integrated IDE controller, which would go unused (and undetected) in XT systems.
 
As for SB Pro compatibility, that will not be a problem since the sound part of the card is 8-bit (that's why it works fine in an XT, as is stated by people in other threads in these forums). The 16-bit part of the card is simply for the integrated IDE controller, which would go unused (and undetected) in XT systems.

It's actually not IDE, but the Panasonic interface. The 16-bit part is actually only used for some optional IRQ and DMA lines. Because of this, the card can entirely be run in 8-bit.

The reason the CD-ROM interface don't work in 8086/8088 PC's is because no 8086-compatible drivers has been made yet.
 
It's actually not IDE, but the Panasonic interface. The 16-bit part is actually only used for some optional IRQ and DMA lines. Because of this, the card can entirely be run in 8-bit.

The reason the CD-ROM interface don't work in 8086/8088 PC's is because no 8086-compatible drivers has been made yet.

Interesting... However, there would be no point reimplementing this in a new sound card, because we already have the XTIDE project. ;)

But you mentioned "some optional IRQ and DMA lines"? I thought the SB Pro didn't support any 16-bit IRQ or DMA channels?
 
But you mentioned "some optional IRQ and DMA lines"? I thought the SB Pro didn't support any 16-bit IRQ or DMA channels?

Talking about IRQ10, DRQ0, and DACK0. At leas the SB Pro 2 got jumpers where those are some of the options.
 
As everybody knows me for my short comments, here is my opinion about this:

YES!

The statement has concluded. For more information call 555-VIN-TAG-E or visit #VC.
 
Sound card like that would be really nice. It should be designed as a 16-bit card that could be installed to 8-bit ISA slot. When installed to 16-bit ISA it should support SB16 and Gravis Ultrasound. Since it would support MPU-401 it would be nice if it could be used as a general midi card without need for emulation software. The card should have lots of RAM so soundfonts or something like that could be loaded.

Anyway, card like that needs fast processor (maybe some ARM) that would emulate the necessary sound hardware.
 
There is quite some problems involving support for SoundBlasters. As we all know, the soundblaster processes digitalized audio, and this is done by a special sound processor. The problem is that making a similar soundprocessor with easily obtainable parts is not the easiest thing in the world. In addition, it will use quite a big number of chips, and take quite a lot of PCB space.

So to sum it up:
OPL3 is easily possible (YMF262)
Tandy is easily possible (SN76489)
CMS is easily possible (2x Philips SAA 1099)
Joystic Port is possbile, but it takes some work
XLR ports should be possible
Internal connector for PC-speaker and CD-ROM audio should be possible

The rest of the list is difficult to do unless you know how to make custom advanced ICs.
 
I am still not sure about the Tandy sound thing. From what I have experienced, most games and applications only support the 3-voice sound chip when it actually recognizes the machine as a Tandy 1000 or PCjr.
 
I am still not sure about the Tandy sound thing. From what I have experienced, most games and applications only support the 3-voice sound chip when it actually recognizes the machine as a Tandy 1000 or PCjr.

That could be a problem, though I'm not sure that's how they detected it (at least, not all the time.) I have assembler source that detects between (and existence of either) Tandy / PCJr 3-voice and Tandy DAC by writing a value to a specific port and looking for particular return values. This would work well for an adapter card so long as the address is not otherwise conflicting in a "normal" PC.

As for SoundBlaster support, arguably few of us probably ever cared for its specific features, we just needed a DAC for nice sound. I'd say you'd be better off making it "SoundBlaster compatible" and not worry about Creative's specific features that most clone vendors didn't bother with anyway. Wonder if you could have one DAC for Tandy and SB? Obviously couldn't use it for both at the same time, but I doubt anyone did that ever anyway.

AWE32 support would be the most complex thing of everything listed here... you'd probably be better off with doing like the clones did. Just have a wavetable in ROM (or maybe RAM) and run it over MPU-401; you'll still get advanced MIDI sound. Of course, this will require some amount of onboard mixing so you're probably looking at some kind of at least medium grade microcontroller. Fortunately the actual act of mixing channels and performing simple "pitch bends" and volume changes is not complex, but it is tasking. Would there be any reason to actually have Gravis / AWE32 / Roland / etc. specific support if you do that? MPU-401 is pretty compatible!
 
It looks like we've got an actual conversation going here! Good. I had initially expected more skeptical responses to this idea. :)

That could be a problem, though I'm not sure that's how they detected it (at least, not all the time.) I have assembler source that detects between (and existence of either) Tandy / PCJr 3-voice and Tandy DAC by writing a value to a specific port and looking for particular return values. This would work well for an adapter card so long as the address is not otherwise conflicting in a "normal" PC.

Exactly. I know that it probably won't work with some games that have Tandy sound due to the detection method, but as long as there are games out there with which it could still work (or could be made to work with a simple patch), this feature would be worth it. And as per mentioned, it's not that difficult to implement, as long as the right chip is used and wired up correctly. Plus it would just be cool to offer this feature to an add-on card for the first time in history. ;)

As for SoundBlaster support, arguably few of us probably ever cared for its specific features, we just needed a DAC for nice sound. I'd say you'd be better off making it "SoundBlaster compatible" and not worry about Creative's specific features that most clone vendors didn't bother with anyway.

I agree that game/application compatibility is the most important thing, not necessarily reimplementing an official Creative product right to the spec. (Besides, the latter might hinder the possibility of improving upon the original thing.)

Wonder if you could have one DAC for Tandy and SB? Obviously couldn't use it for both at the same time, but I doubt anyone did that ever anyway.

Actually, I would like the Sound Blaster digital audio output, Tandy digital audio output, and LPT (Covox/DSS) digital audio output to all be mixed and sent out over a single high quality DAC. So even if no game or app ever supported these standards simultaneously, I wouldn't want the hardware to be the limiting factor here. ;)

AWE32 support would be the most complex thing of everything listed here... you'd probably be better off with doing like the clones did. Just have a wavetable in ROM (or maybe RAM) and run it over MPU-401; you'll still get advanced MIDI sound. Of course, this will require some amount of onboard mixing so you're probably looking at some kind of at least medium grade microcontroller. Fortunately the actual act of mixing channels and performing simple "pitch bends" and volume changes is not complex, but it is tasking. Would there be any reason to actually have Gravis / AWE32 / Roland / etc. specific support if you do that? MPU-401 is pretty compatible!

Exactly. That is the same reason why I didn't mention GUS compatibility in my initial list (apart from the fact that it would require a 16-bit ISA slot). MPU-401 (whether with MT-32/LAPC-1 or General MIDI) was by far the dominant standard, and it would be a lot simpler and cheaper to just concentrate on a 100% compatible MPU-401 implementation that is exposed both through a DB15 game port and an internal Waveblaster-compatible connector. This allows people to hook up their MIDI device of choice, such as an MT-32, or attach a Yamaha DB60XG daughter board to it. Plus it would also work in an 8-bit slot, and thus on XT systems!

Apart from wavetable MIDI support, the only advantage a GUS has, is the fact that it supports hardware mixing of tracker music, like the Paula chip in an Amiga. But since pretty much every game that used tracker music doesn't work on XT machines anyway, and faster machines are capable of mixing this through software, there would be no point to reimplement this on such a card, at least IMO.
 
A quick, very simple (first) schematic of an analog-only design using dediated chips

A quick, very simple (first) schematic of an analog-only design using dediated chips

There are basically two ways to go about it:

  1. We use dedicated chips, and for the time being, only implement analog connectors (since most sources will be analog to begin with).
  2. We go for a microcontroller-based solution (probably ARM-based) that emulates OPL3, Tandy, and everything else all digitally and mixes it in software. We can reuse GPL code from DOSBox and ScummVM for this. If we equip the card with enough RAM, we could even have it implement wavetable General MIDI through Timidity++, and possibly MT-32 through MUNT/Mt32emu (although the latter is still quite CPU intensive, the last I heard of it). Heck, if we could get that to work, such a flexible solution could even be extended with GUS and AWE32/64 compatibility with a simple firmware update later on. :)
The first option "feels" the most vintage to me, and might be the easiest to implement, at least for a first version. Using Dia, I created a simple schematic of what I had in mind, using the chips mentioned by per. This schematic only concentrates on the audio mixing part, although MPU-401 should definitely be part of such a first design. What do you all think?

8-bit uber sound card analog discrete design v0.1.jpg
(click on the thumbnail to enlarge)​
 
Oops!

Oops!

Hmmm, I should've read the YMF262 page on Wikipedia before creating that schematic. Apparently, that chip actually generates audio digitally, and requires an external DAC after all. :blush:

So I guess we'd run that through the DAC as well, just as the other three digital sources in the schematic.

Anything else I failed to take into account?

Here's a corrected version of my schematic with the YMF262 going through the DAC first:

8-bit uber sound card analog discrete design 0.2.jpg
(click on the thumbnail to enlarge)​
 
Last edited:
Re: Option #2

True, you could end up with a card that simply hosts a completely software solution. This could end up with a very simple and low cost unit (just basically supporting a host CPU connected to a ROM and some audio amp stuff on the other end, probably with a flash block for configurations.) But I would warn of a couple things; for one, ARM is pretty much going to be surface mount (unless someone knows of a "hobbyist" version mounted to a pin adapter??) The other is that "purists" will probably tell you how no emulation is going to be as "perfect" as the real thing. ;) But that mostly matters to audiophiles, of which I'm not. A software emulation of everything under the sun would be fine with me if you could pull it off.
 
For my $0.02, I think that such a project is an awesome idea! With that said, I would only be interested in the MPU-401 midi for myself - having an intelligent-mode and UART-compatible midi card without having to spend $150+ on a Roland card would be AMAZING! FWIW, this is really the only thing I want for my 486-gaming machine that's missing... I've got it stocked with anything else of value to me, outside of a CGA card for a dual-monitor setup. And that will happen soon enough... :)
 
I'd be more interested with a PCI (or PCIe x1 as the time may necessitate now) SoundBlaster-compatible card that doesn't require DDMA/etc., but I know that isn't happening.. :p
 
I'd be more interested with a PCI (or PCIe x1 as the time may necessitate now) SoundBlaster-compatible card that doesn't require DDMA/etc., but I know that isn't happening.. :p

It would be more sensible to put the effort into the development of a generic Sound Blaster emulator (in the form of a DOS TSR) that would work with most AC'97 and USB sound cards and with most recent motherboards, but something like that has already been discussed elsewhere, and is outside of the scope of the project proposed in this thread.
 
I say go for it, digger! You should be able to make a killer sound card using a mixed-signal FPGA.

Let us know when you get a prototype done. :)
 
Unfortunately, I haven't had even remotely the time available that I would need to seriously work on something like this. :( Anyway, about option 2 again (since an OPL2-based sound card design project has already been started in a different thread elsewhere in this forum), do you think an ARM-based microcontroller such as the STM32F100C4T6B would have enough processing power to do wavetable mixing in software? 24MHz might be a bit slow for that, no?

More info about this microcontroller:

http://youtu.be/6JhCtATFVEU
http://parts.digikey.com/1/parts/1866445-mcu-32bit-arm-16k-flash-48lqfp-stm32f100c4t6b.html
 
Back
Top