SBMPU401 and UNISOUND

December 20, 2022 —

I just wanted to quickly write about two retro computing software utilities that have proven very useful to me over the past few months while working around some annoying and confusing issues.

SBMPU401

Download here

Most Sound Blaster 16 cards supported MPU-401 output so you could play MIDI music over any General MIDI device you might've had instead of using the card's built in FM for the same purpose. So, for example, using a Roland Sound Canvas for MIDI music through your computer.

The problem with doing this with many Sound Blaster 16 cards arose with certain games (e.g. Doom) where you selected "General MIDI" or "Sound Canvas" for the game music and then used the same Sound Blaster 16 card for the digital sound effects. Sometimes this could cause the game/system to lock up, or you could get some terrible slowdowns, etc. Note that this is a different issue than the infamous hanging note bug.

There have been two separate systems I've been working on over the past few months where I encountered this issue with slightly different symptoms and was really confused by it for a long while before finally stumbling upon SBMPU401, which is a utility distributed by Creative Labs back in the day specifically to address this issue.

I was personally encountering this issue with an Sound Blaster AWE64 Value CT4500, Sound Blaster 16 CT2230 and a Sound Blaster 16 CT1750, but as I understand the issue, most Sound Blaster 16 cards are affected by this. Sometimes the game in question (usually Doom/Doom2 in my case, not sure what others exhibit this problem) would either appear to lock up or run reeeeaaaally slowly right as it would be showing the initial title screen, or the game would run perfectly fine until some random point minutes later when it would all of a sudden slow down to a complete crawl. Most of the time I've heard the symptoms that SBMPU401 fixes described the phrase "locked up" is used, but I've not personally seen the issue completely lock up any of my systems ... yet. Perhaps the symptoms vary slightly from card to card. Who knows.

Integrating SBMPU401 into your system is easy. The documentation that was distributed with the tool describes wrapping your game executable(s) in simple batch files like so:

SBMPU401.EXE /E
GAME.EXE
SBMPU401.EXE /D

So, enable the fix, run the game, then disable the fix after the game exits. Simple.

I've no idea how important it is to only enable the MPU-401 fix only when it is needed and to disable it immediately after. The way I've been using it so far has been to just add SBMPU401.EXE /E to my AUTOEXEC.BAT after all of the usual sound card setup steps are all done. But maybe this is a bad idea and I will discover this in the future.

Anyway, this is a great utility to know about if your retro system uses any kind of Sound Blaster 16 card and you have any interest in using anything like a Sound Canvas or MT-32, etc.

UNISOUND

More info and download here

This is a super fantastic tool for use with almost any Plug-n-Play (PnP) sound card from back in the day. It is not just limited to Sound Blaster cards, but supports a whole bunch of others too. It also has limited support for some non-PnP Sound Blaster 16 cards.

Basically, this tool is a one-stop-shop for initializing your retro system's sound card(s) for use in DOS. And it will autodetect the card to be initialized as a bonus.

For Sound Blaster 16 / AWE32 / AWE64 cards, this is really, really, fantastic and vastly more foolproof to use than all the crap that Creative provided for you to stuff into your system's AUTOEXEC.BAT and CONFIG.SYS which is very easy to make a mistake with and have a misconfigured system.

For example to get most Sound Blaster 16 cards to work in DOS mode you'd need to add this line to your CONFIG.SYS

DEVICE=C:\CTCM\CTCM.EXE

And then add something similar to these to your AUTOEXEC.BAT

SET SOUND=C:\SB16
SET BLASTER=A220 I5 D1 H1 P330 T6
SET MIDI=SYNTH:1 MAP:E
SET CTCM=C:\CTCM
C:\CTCM\CTCU /S
C:\SB16\DIAGNOSE /S
C:\SB16\MIXERSET /P /Q

The exact ordering of the last three lines especially is I think somewhat poorly documented by Creative and is definitely a source of confusion amongst retro system builders today (and probably back in the day too I am sure, but I don't have a clear recollection of this). Also, for the record, I'm not actually sure if I have the above example AUTOEXEC.BAT configuration 100% correct ... so don't anyone use what I wrote above as a guide for how to do it!

Plus, if you're using an AWE32/64 card, you probably need to add AWEUTIL somewhere in there too. And if you are setting up DOS mode under Win9x (e.g. not MS-DOS 6.22 or earlier) then you might need a different patched version of the CTCU or CTCM tool ... I don't remember now, but this one also caused me some confusion recently.

But with UNISOUND? No big deal. No CONFIG.SYS changes necessary. In AUTOEXEC.BAT just add:

SET BLASTER=A220 I5 D1 H1 P330 T6
C:\PATH\TO\UNISOUND.COM

Done. Got some YMF-719 variant card instead of a Sound Blaster? Guess what? The same two lines are still all that's needed. Same goes for many other supported cards.

As a nice bonus, UNISOUND fixed an issue with a system of mine that was using a YMF-719 card. On this particular system in DOS mode, there would be no digital sound effects after Yahama's SETUPSA.EXE was run as you're normally supposed to do with these cards to initialize them in DOS. Switching to UNISOUND to initialize the card on this system in DOS mode fixed the problem. Neat! No idea why SETUPSA.EXE was failing to initialize it properly, but I'll gladly take this easy win.

Anyway, it's just an amazing utility all around!