Last modified: Mon Mar 19 20:46:40 EDT 2018
Crimes against music: forced resampling
Sound Blaster 16
Sound Blaster AWE64 Gold
GUS and GUS-like
General overview on GUS sound fonts
Gravis UltraSound Plug & Play Pro Version 1.0
Gravis UltraSound "Classic" Rev. 2.4
Compaq Ultra Sound 32 Pro
SB Pro 2.0 clones
Crystal CS4235, CS4237B, CX4237B
ESS AudioDrive ES1868F
Analog Devices AD1812JS SoundPort
Logitech SoundMan Wave
Avance Logic Pro16/32+ (ALS100+)
Aztech Sound Galaxy Nova 16 Extra
Wave Blaster daughterboard
Playing MIDI files via OPL2/3
Playing MIDI files via EMU8000
When PC audio moved from the ISA bus to PCI, DOS compatibility was broken and music started getting mangled for no good reason. What was to like about it? It was a non-upgrade that screwed us up for years and from which we never completely recovered.
In the transition from ISA to PCI, and particularly with the introduction of AC'97, audio chipset manufacturers took the opportunity to drop multi-clocking from their products. All PCM input had to be resampled to the one frequency that the hardware supported. This was often done very poorly (the Sound Blaster Live! being a notorious example), resulting in a dramatic loss of audio quality. However, even if it was done well, it was still an unnecessary sacrifice of audio quality.
Later developments in the sound stacks of Windows and Linux only served to put more nails in the coffin of sound quality. Out of the box, all audio sources are resampled to a fixed rate and mixed in software. The only thing left for the audio hardware to do is the digital-to-analog conversion. Such a treatment is appropriate for garbage-grade AC'97, but if a sound card with a real 44.1 kHz clock is installed, it takes a lot of tweaking and workarounds to prevent CD audio from getting mangled en route from the application layer to the hardware.
This is not progress. This is not better. It is just dumbing down and cheaping out.
Enough has been written about "the" Sound Blaster 16 (SB16) that I won't repeat it all here, but it's important to note that "the" SB16 is really a bunch of different models that evolved in several important ways over a span of about 5 years.
Less importantly: the volume wheel went away and a separate line out jack was added; ASP/CSP went away; the cards got smaller and the chip count got lower; jumpers gave way to ISA PnP; words like Value, PnP, Vibra, Pro, and WavEffects came and went; finally, the SB16 name was applied to some PCI cards that are completely different.
Sound Blaster 16s have five fiddly settings that are frequently configurable: the base I/O port address, the MIDI (MPU-401) I/O port address, the IRQ number, the 8-bit or "low" DMA channel, and the 16-bit or "high" DMA channel. In practice, the default and correct answers for these are nearly always 220, 330, 5, 1, and 5, respectively. A non-PnP Sound Blaster will usually have jumpers for each one; however, I have a CT2800 non-PnP VIBRA 16 where all but the base I/O address are hardwired to the default values. (It does have jumpers to select the IRQ and port address for the included IDE interface.)
Some models furthermore have jumpers to choose a port and IRQ for the IDE or SCSI interface, or if you're lucky to disable it.
Linux prints no log messages during boot to acknowledge that a non-PnP Sound Blaster is present. You just have to load the ALSA module and specify the magic numbers thusly:
modprobe snd-sb16 isapnp=0 port=0x220 mpu_port=0x330 irq=5 dma8=1 dma16=5
The module needs no parameters to detect PnP cards.
In DOS the magic numbers are specified in the BLASTER environment variable, which Creative's INSTALL.EXE program will normally configure for you. I got tired of their installation process and now have a merged Sound Blaster drivers collection in C:\LOCAL\SNDCARDS\SB.
REM Non-PnP Sound Blaster 16 SET PATH=%PATH%;C:\LOCAL\SNDCARDS\SB SET SOUND=C:\LOCAL\SNDCARDS\SB SET BLASTER=A220 I5 D1 H5 P330 T6 SET MIDI=SYNTH:1 MAP:E REM For PnP, DIAGNOSE /S initializes BLASTER based on the hardware config. REM For non-PnP, DIAGNOSE /S initializes the hardware based on BLASTER! REM This is necessary. C:\LOCAL\SNDCARDS\SB\DIAGNOSE /S C:\LOCAL\SNDCARDS\SB\MIXERSET /P /Q
Besides playing .wav files and audio CDs like you would expect, Creative's PLAY.EXE (Play Utility Version 1.03) can play .mid files to the OPL3. It's not great, however.
If using the Wave Blaster header or external MIDI, most SB16s suffer from the infamous hanging note bug.
From Great Hierophant: "Look at the chip marked Creative Technology CT1471. That is the DSP chip and the version number is on it and starts with V4xx. If it's V405 or below, you don't have the bug. If it's V411, V412 or V413, then you do."
Later model ISA Sound Blasters that don't have a chip marked CT1471 are all affected except AWE64 cards, which don't have Wave Blaster headers.
The problem only happens when PCM and MIDI are used at the same time, so some people work around by using separate SB16s for PCM and MIDI—but then you have to mix the outputs somehow.
Be warned: If you are unlucky enough to have one of the hardware configurations that generates clicking or crackling artifacts in audio, it will be even more annoying on S/PDIF. I encountered that problem with the VIA Apollo MVP3 chipset.
The AWE64 Gold was supposedly shipped with an extra bracket to give you an RCA jack for S/PDIF output, but everybody on EBay apparently threw that out along with the other "bonus parts" like the drivers CD.
HOWTO: Make a coax S/PDIF output bracket
If you're not in the mood for soldering, a CA-1 cable from HT Omega can be made to fit the AWE64 Gold header by snipping plastic bits off the front and back of the otherwise flat 2-pin connector. It is not a pretty or robust solution, as the cable just runs out the back of your case and there is nothing to stop the connector from being yanked off the sound card, but it gets the job done.
|CA-1 plug, before modification|
|The jack that it does not fit|
To get S/PDIF output, first you have to set the volume, bass and treble controls for "Synth" to reasonable values. The defaults that I got had the volume set to zero, bass and treble set to weird. Then you have to send the music to device 1 instead of device 0.
dave@K6-2:~$ ./alsacap *** Scanning for playback devices *** Card 0, ID `S16', name `Sound Blaster 16' Device 0, ID `SB16 DSP', name `DSP v4.16', 1 subdevices (1 available) 1..2 channels, sampling rate 4000..44100 Hz Sample formats: S16_LE, U16_LE Subdevice 0, name `subdevice #0' Device 1, ID `Emu8000 PCM', name `', 1 subdevices (1 available) 1..2 channels, sampling rate 4000..48000 Hz Sample formats: S16_LE Subdevice 0, name `subdevice #0' dave@K6-2:~$ aplay -Dhw:0,1 LegitMusic.wav Playing WAVE 'LegitMusic.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
alsacap.c by Volker Schatz. A similar, but less detailed, listing of devices can be obtained via aplay –l.
See here about playing MIDI.
REM CTCM will set BLASTER based on CFG. REM DIAGNOSE and CTCU are unnecessary once configuration is stable. REM CTCU search-and-replaces *ALL* BLASTER settings in AUTOEXEC.BAT. SET PATH=%PATH%;C:\LOCAL\SNDCARDS\SB SET CTCM=C:\CTCM SET SOUND=C:\LOCAL\SNDCARDS\SB SET MIDI=SYNTH:1 MAP:E MODE:0 C:\CTCM\CTCM.EXE REM C:\LOCAL\SNDCARDS\SB\DIAGNOSE /S C:\LOCAL\SNDCARDS\SB\AWEUTIL /S C:\LOCAL\SNDCARDS\SB\MIXERSET /P /Q REM C:\CTCM\CTCU /S
DOOM and Duke Nukem 3D can play music either in Sound Blaster mode or in General MIDI mode. The former is to be avoided because AWE64s have only Creative's lousy clone of the OPL3. The latter gets you the ROM sound font, which is hardly stellar as sound fonts go. The TSR that is required to load and use other sound fonts from DOS (AWEUTIL) appears to be incompatible with protected-mode games. TBD: see if AWEUTIL even works with simple .mid players.
The music from DOS DOOM comes over S/PDIF regardless whether it is set up in AWE32 or SB16 mode, but the sound effects do not. Same with DN3D, even when the mixer rate is set to 44 kHz.
I could not get Mpxplay 1.59b to output over S/PDIF.
You can load arbitrary SF2 sound fonts and have them work from DOS games in W98SE, but you need the AWE Control app from the full Creative drivers CD and some luck to do it. Also, the "AWE64G MIDI Synth" might need to be selected from the MIDI tab of Control Panel → Multimedia → Multimedia Properties. Its default choice is "Creative Music Synth," which is that terrible generic OPL3 one.
The General MIDI routing from DOS games under W98SE is fragile and flaky. Sometimes it just starts working after a reboot; sometimes it doesn't.
When browsing for sound fonts, AWE Control won't see them unless the file type filter is changed to "All Files (*.*)," and then the change takes effect only upon entering a directory (so if you're there already you have to leave and come back).
The default sound font that the drivers CD installs is a 3.5 MB GM sound font called gm35revc.sf2. This one is closer to Sound Canvas and better for DOOMing than 4GMGSMT.SF2.
When it all works, DOOM and DN3D have their choice of synths:
2015-02: This topic is complicated and took a long time to sort out, so be careful with the following.
Gravis UltraSound (GUS) series cards use two different sound font mechanisms:
The following subsections address the two mechanisms in more detail.
The final revision of the default, stock, Gravis collection of PAT files appears to be the one included in the GUS PnP drivers for backward compatibility purposes. It differs from the collection included in Version 4.11 of the "old series" GUS installation disks by the addition of C550KC_1.PAT, C550SN10.PAT, C550SN_6.PAT, C550VIBS.PAT, and RINGWHSL.PAT (for whatever they're worth).
The ULTRADIR environment variable must be set such that the PAT files reside in a subdirectory of that called MIDI (i.e., in %ULTRADIR%\MIDI).
The mapping from MIDI instrument numbers to PAT files is sometimes given in a file called ULTRAMID.INI. One of four mappings is selected depending on whether you have 256 KiB, 512 KiB, 768 KiB, or 1 MiB of on-board memory. However, the "default" ULTRAMID.INI file that is installed with the DOS drivers is used by neither DOOM nor DN3D. DOOM gets its mapping from the WAD file (and mangles it), while DN3D comes with its own ULTRAMID.INI file in the game directory.
The naming of ULTRAMID.INI derives from the ULTRAMID.EXE TSR that some games use to interface with the hardware. The binaries for DOOM and DN3D have equivalent functionality built-in, making the TSR unnecessary.
The ULTRAMID mapping mechanism is not the only one in use:
I got the impression that one should be able to disregard the 1 MiB limit of the GUS Classic when replacing PAT files for a GUS PnP, but it didn't work that way. The only replacement patchset that worked for me was Pro Patches Lite 1.61, which carefully remains under 1 MiB. I am guessing that the ULTRAMID-equivalent code in DOOM is hard-coded to drop instruments whenever loading them would exceed 1 MiB of memory usage.
In any event, the sound font quality could be improved only so much given the limitations of the PAT format.
The GUS PnP came with a CD that included 1 MiB and 4 MiB .DAT sound fonts. Utopia provided both 8 MiB and 16 MiB replacements. Any of these can be used to play MIDI files within Windows, but I have had no success in using them for DOS games.
The Windows drivers for the GUS PnP, which are VxD drivers developed originally for Windows 95, superficially resemble the Windows drivers for other sound cards that route General MIDI output from DOS box applications to the Windows MIDI synth. Unfortunately, this is not the case with the GUS PnP drivers. DOOM music goes silent when sent to General MIDI, and DN3D setup reports that it failed to detect an MPU-401.
When Gravis UltraSound is selected as the music device, DOOM and DN3D both utilize the directory of PAT files regardless what sound font is selected in the UltraSound Properties configurator app. They operate the card in GUS Classic mode, bypassing the Windows MIDI device.
Collections of PAT files can be converted to DAT format with the GIPC tool, but there is no reverse conversion.
Although it's not marked as such on the board, evidently this is a Pro: it detects 2.5 MiB of memory. According to random internet listing, the chip marked HM514260ALJ7 is 512 KiB of 70 ns FPM RAM.
While an unmodified GUS PnP supports at most 8.5 MiB, they can be upgraded to 16 MiB with a hardware mod. Some clone cards might support 16 MiB out of the box (?).
The jumpers are best left alone. After installing 2 × 4 MiB 60 ns non-parity "Enhanced Page Mode" SIMMs, the UltraSound Properties Windows app detects 8.5 MiB in 4 banks as shown; but if the jumpers are changed to the other configuration that is supposedly necessary to use 4 or more MiB on some cards, the SIMMs are detected in banks 0 and 1 and the other two banks show as empty.
DOS setup for this card is infamous if not epic and deserves its own page.
As of 2014-01-18, the information provided in the Vogons Wiki page for this card is not too shabby. Most importantly, you do need the drivers in PNPV22B.ZIP and the collection of GUS patch files in SETRAM.ZIP, and you must remember to move those patch files into C:\GRAVIS\ULTRASND\MIDI from the unhelpful place that they extract to by default; otherwise you simply get no music and no explanation from DOS games that are expecting the GUS Classic.
The MIXER.EXE program that comes in PNPV22B.ZIP does work, but it's non-obvious how make mixer settings non-interactively from AUTOEXEC.BAT. A FAQ says to use the mixer from the Reveal Wave Extreme32 as a substitute, but I haven't been able to locate it. TO DO: write a command-line mixer control.
I may have jinxed myself by testing this card on a motherboard with the VIA KT133A chipset, which is known to have DMA issues, but it seems to be completely incompatible with the normal UDMA operation of UIDE (rev. 2014-01-12). Adding the /E switch to force UIDE to use BIOS calls works around the problem, as does using just UDVD2 (from the same drivers collection) instead of UIDE.
Compatibility with apps that support the GUS Classic:
The simple PLAY.EXE program that comes in PNPV22B.ZIP is able to play both MIDI and WAV files, but it seems hard-coded to use the ROM soundfont.
IWSBOS or MegaEm is required for Sound Blaster or General MIDI emulation in DOS. General MIDI emulation might plausibly allow the use of arbitrary sound fonts loaded into the card's RAM if it's not hard-coded to something else, but just like with AWEUTIL, it's moot because the damn thing never works. IWSBOS 1.43 works poorly at best and not at all with protected-mode games. I have never gotten MegaEm 3.11 even to load; it always complains about the memory manager and quits immediately. Usually the complaint is "EMM incompatibility problem: Unable to expand servers Page Directory." I've tried all kinds of EMM386 and clones with no success; not even loading the Windows 95 versions of HIMEM and EMM386 under Windows 98 SE made any difference. I think it must need Windows 95 or DOS 6.22.
The first time I tried it, the ALSA driver failed to initialize with the mysterious "Error! IRQ isn't defined." Using the source, I discovered that the driver expects the UltraSound IRQ to be one of 2, 3, 5, 7, 9, 11, 12, or 15. The problem was, the PnP driver had put the card on IRQ 10. Both 4 and 10 are supported by the hardware, albeit in a more roundabout way than the other IRQs. After some dinking in PnP BIOS the card got assigned a different IRQ and the problem went away; subsequent accidental patching of the GUS's firmware then made it impossible for it to reoccur, as IRQ 10 was removed from the list of acceptable PnP IRQs.
The synth device is exposed by ALSA, but aplaymidi can only play silence because there is no patchloader. Duh. The older playmidi program worked at some point with OSS, but with a modern kernel and OSS emulation from ALSA I got stuck at the error "No playback device found." The OSS GUS driver no longer exists in the kernel.
First the base drivers must be installed from PNPV22A.ZIP, then other stuff like the 4 MiB sound font can be installed from a separate CD. Here is the autoplay menu of the CD:
There was chatter about a third-party developed WDM driver, but I have not succeeded in downloading it from anywhere.
The Classic is easier to get working than the GUS PnP. The installer/setup in GUS411.ZIP asks for only one screenfull of magic numbers instead of three, automatically installs the patch files in the right directory, and sets ULTRASND correctly on the first try. The only thing it does wrong is choose 8-bit DMAs by default.
With the GUS PnP, the DOS mixer app is lousy. With the GUS Classic Rev. 2.4, you simply have NO MIXER. The volume is on the loud side and can't be adjusted no way, nohow except by lowering the source. (It's kind of funny that Advanced Gravis would be years ahead of their time on the other technical capabilities and yet didn't think that a basic volume control was important. Maybe it's a feature to avoid the old "stupid user set the volume to zero" problem.)
While the GUS PnP comes with a single PLAY.EXE command-line player for all file formats, the "old series" drivers come with separate PLAYMIDI and PLAYFILE applications for .MID and other formats (including .WAV) respectively. PLAYMIDI has a really cool display.
Same story as the GUS PnP for MIDI; the device is there but we have no patchloader.
TO DO: write a patchloader.
2015-01: This is what made me buy that as-is wholesale lot from EBay. It's an OEM clone of the GUS PnP Pro that was produced by STB Systems and used in the Compaq Presario 8000 series. Significant hardware differences from the GUS PnP Pro include:
I haven't yet found a SIMM for it that doesn't cause problems. With a 1 MiB 70 ns FPM parity SIMM, MIDI music played but was very noisy. A 4 MiB 60 ns non-parity "Enhanced Page Mode" SIMM seemed to work at first, but it turned out to be the cause of DN3D music failing more often than not. It sure would be nice to have some documentation of what it is expecting. The standard GUS PnP SETUP.EXE, which includes a memory test, won't run.
Overall, this is very close to a GUS PnP, but there is something wonky about stereo voice, like it's partly out of phase or something, and the balance is completely off on the CD analog audio input. Maybe a hardware failure.
Fortunately, ALSA does have a driver for this variant. The bass and
treble controls even work.
It's a problem. The OEM drivers are poorly-preserved abandonware; the ones that I found treat DOS only as an afterthought to Windows 95 and didn't even work right in W95. Nevertheless, my "working" configuration incorporated some stuff from ultra32.zip ("InterWave Software Version 2.34") in order to initialize the TEA 6330T to an audible volume at boot time:
[setup 0]section of an IW.INI file copied over from a working GUS PnP install:
I found no way to configure the TEA 6330T to anything except reasonable defaults in DOS. The most hopeful thing I encountered was this app among the "DOS Drivers & Files" subdirectory of a different putative Windows 95 dist:
- TEA6330.EXE Tone control initialization application
Alas, it does absolutely nothing.
Apart from that, most of what was said for the GUS PnP goes for this card too. UIDE still causes problems even though this was tested on an Intel chipset. With normal UIDE settings, DN3D triggers a spontaneous reboot immediately and Mpxplay does eventually. If /E is specified, DN3D locks up at "Loading...".
Clones clones clones clones clones clones clones clones:
2014-08: Crystal audio chips in the series from CS4235 through CS4239 appear frequently as the integrated audio on motherboards, where they provide Sound Blaster Pro 2.0 emulation, a hardware OPL3 clone, and real DOOM compatibility in a humble package, on the ISA bus with PnP. Discrete sound cards based on these chips are not as common as Sound Blasters and OPTi-based cards but they are gettable.
Unfortunately, the most common variant seems to be the CS4235, better known as "THE BROKEN ONE" because of its glitchy FM synth. Aside from that fatal flaw in one variant, as clones go their performance is respectable:
Chip-specific details follow:
These are the DOS drivers that worked for me:
36859 Feb 12 1997 CW3DCTRL.EXE from cwd_dos.zip 3D configurator v. 1.80 8676 Feb 4 1998 CWDAUDIO.BIN from PV2860.zip Microcode 774 Feb 4 1998 CWDAUDIO.INI from PV2860.zip Init file 79616 Oct 12 1998 CWDINIT.EXE from PV2860.zip Initializer v. 2.841x 239320 Oct 12 1998 CWDMIX.EXE from PV2860.zip Mixer v. 2.841x
PV2860.zip is the "VxD Driver for CS4235" distribution that is still available direct from Cirrus Logic. (Thank you, Cirrus!) It contains a 3D configurator, CWD3DSND.EXE, that only runs under Windows. I replaced it with a DOS-compatible version from an older drivers bundle (cwd_dos.zip) found in the VOGONS archive.
At some point, CWDINIT apparently created a file CWDAUDIO.WCM that contains the same configurables as CWDAUDIO.INI.
Although the port/IRQ/DMA resources can be configured by a PnP BIOS, CWDINIT still has to run before Sound Blaster Pro emulation will work right. Verbose output from CWDINIT /V (with CS4237B-KQ):
CrystalWare(tm) Audio Initialization Utility, Version 2.841x Copyright(c) 1997 Crystal Semiconductor Corp. All Rights Reserved. * Testing for SIS IOCHRDY chipset. * Found PCI BIOS. * Found C:\LOCAL\ARC\SNDCARDS\CS423X\CWDAUDIO.ini. * Making sure Crystal chip is in wait for key state. * Plug N Play BIOS Detected. * Card has been configured using a Plug N Play Bios with the following settings: WSS: I/O = 534, IRQ = 5, DMA0 = 1, DMA1 = 0. OPL3: I/O = 388, IRQ = Disabled. SBpro: I/O = 220. Joystick: I/O = 200 Control: I/O = FF8, IRQ = Disabled. MPU-401: I/O = 330, IRQ = 9. Logical device 4 disabled. PNP Read Address: IO = 213. * Modifying blaster environment variable. * Loading Minicode * Downloading Firmware Code, Version 17. * Both Crystals and DMA timing on.
If a PnP BIOS is present, CWDINIT will by default abstain from configuring the resources, even if the BIOS option "PnP OS" was set to Yes and the BIOS didn't do anything. In that case, it is mandatory to use the /O (override) switch that tells CWDINIT to configure the resources to the values indicated in CWDAUDIO.INI or the sound will not work at all.
CWDINIT sets BLASTER=A220 I5 D1 T4 but does not set ULTRA16 for WSS. Setting ULTRA16 is sometimes unnecessary, but running Mpxplay with wrong values in ULTRA16 can lock up the sound so that nothing works until a reset.
CWDMIX can run in interactive GUI or non-interactive command-line
mode. The volume control for "FM/Synth Volume" suffices to unmute both
FM and wavetable. OTOH, WSS has a separate hidden set of volume
controls that CWDMIX doesn't touch. To get sound out of Mpxplay in WSS
mode one has to unmute the WSS volume explicitly,
MPXPLAY -scv 85 -scs
To avoid lockups, UIDE must be run with the /E switch. (I don't know what changed, but UIDE is now incompatible with sound cards more often than not. It started with the GUSses, and now it's everything.) Wait, stop the presses: AOpen AW35 Pro moved from Via MVP3 to i845 chipset and the problem went away. With GUS cards I had problems with both Intel (440BX) and Via (KT133A) chipsets. Nothing is ever simple anymore.
For reference, the help screens for all three of the configurator programs follow.
"XCTL pins?" What?
For the AOpen card, aplaymidi –l shows:
Port Client name Port name 16:0 CS4237B CS4237B MIDI 17:0 OPL3 FM synth OPL3 FM Port
Shockingly, aplaymidi –p 16:0 does access the wavetable synth. Less shockingly, the music is all messed up (timing is broken).
The MPU-401 UART device only wants to PnP to IRQ 9, 11, 12, or 15. With 9 being ACPI, 12 being the PS/2 mouse, 15 being the second PATA channel, and USB, VGA, and Ethernet all competing for 11, I had to resort to the PnP BIOS and setting "PnP OS" to No to free up IRQ 11 for the MPU-401. Don't bother—the music is just as messed up with or without an IRQ. Yet another broken kernel driver.
sbiload + aplaymidi works nominally for the OPL3 clone.
Where the DOS mixer had just one combined volume control for both synths, alsamixer shows three, called Synth, FM, and Wavetable—plus DSP. ???
This chipset is a Sound Blaster Pro 2.0 compatible like so many others. A second DMA channel is used only for full-duplex operation.
SET DMXOPTION=-opl3trick does not work.
Differences among ES1868F cards:
With a daughterboard installed, MIDI is played by sending it to port 16:0, and the Aux control in alsamixer controls the synth volume. The synth channels are reversed just as they are in DOS.
Port Client name Port name 16:0 ESS AudioDrive ES1868 ESS AudioDrive ES1868 MIDI 17:0 OPL3 FM synth OPL3 FM Port
2013-10-03: ESS quit supporting their legacy products some time between 2008 and 2013. The necessary drivers are now abandonware.
The archive ESS_DOS_config.zip contains the PnP configurator ESSCFG.EXE and the mixer program ESSVOL.EXE, which are sufficient to get everything except for the IDE CD-ROM header working.
31119 Jan 10 1997 ESSCFG.EXE
ESSCFG Version V5.1 Change AudioDrive ES1868 settings. USAGE: ESSCFG [/?] [/V:1] [/I:xx] [/D:xx] [/A:xx] [/B:xx] [/J:xx] no option Interactive mode. /? Display this message. /V:1 Turn on messages. /I Change IRQ setting. /D Change first DMA channel setting. /E Change second DMA channel setting. /A Change base address. /B Change MPU-401 base address setting. xx=d to disable MPU-401. /J Change Joystick setting. xx=d to disable joystick. xx=e to enable joystick. xx New setting.
12543 May 28 1996 ESSVOL.EXE
Change AudioDrive volume settings. USAGE: ESSVOL [/?] [/v:xx] [/l:xx] [/w:xx] [/m:xx] [/c:xx] [/s:xx] [/a:xx] no option Display all volume settings. /? Display this message. /v Change master volume. /l Change line volume. /w Change wave volume. /m Change mic volume. /c Change CD volume. /s Change Synthesizer volume. /a Change AuxB volume. [ES1688 and above only] /p Change PC Speaker volume. [ES1688 and above only] xx Volume. Note: no xx means 0 The value range of volume is 0 - 15. [PC Speaker volume range is 0 - 7]
However, since I am using this card on an old 486, I actually need the IDE header to work. Yet again, I found that I had to complete a drivers installation under Windows just to extract an older DOS program. Buried within 1868W31_41653.zip, in a Microsoft-specific compressed format, is the small DOS driver that simply turns on the IDE interface.
1414 Aug 9 1996 ES1868.COM
ESS IDE CD-ROM controller ( ES1868 ) enable program V4.4 Copyright (C) ESS Technology, Inc. 1995-1996
; DVD-ROM activation, part 1. ; If JEMMEX is used, ES1868.COM must precede JEMMEX.EXE to avoid a crash. DEVICE=C:\ESS\ES1868.COM DEVICE=C:\BIN\XMGR.SYS DEVICE=C:\BIN\UIDE.SYS /S5 /H DOS=HIGH
REM DVD-ROM activation, part 2. C:\BIN\SHSUCDX.COM /C /D:UDVD1 REM Audio and joystick configuration. C:\ESS\ESSCFG.EXE /A:220 /I:5 /D:1 /E:3 /B:330 /J:E C:\ESS\ESSVOL.EXE /V:8 /L:0 /W:8 /M:0 /C:8 /S:8 /A:0 /P:0 REM Large card: REM A = FM & wavetable REM C = CD audio REM Voice apparently controlled only by master volume, V REM /V:5 /L:0 /W:0 /M:0 /C:10 /S:0 /A:14 /P:0 SET BLASTER=A220 I5 D1 P330 T4
Mpxplay –sct says:
ESS : soundcard found (type=688B) : SET BLASTER=A220 I5 D1 H0 SBP : SB-pro card found : SET BLASTER=A220 I5 D1 T4
Yamaha identifies all of YMF701, 711, 715, 718, and 719 as OPL3-SAx. I have tested examples of the latter two. The YMF718 card arrived dirty and damaged with a hole punched clear through the top of one capacitor as part of an as-is wholesale lot from EBay. The Labway YMF719B card I bought in an attempt to get a usable waveblaster header.
The module is
snd-opl3sa2. WSS music and OPL3 MIDI both
work, although with the YMF718 the channels are reversed and aplaymidi
produces repeatable glitches.
Here we go again. The DOS drivers can't be obtained without first
installing Windows. They show up in
SAx Driver after an installation of the 95v2343.exe package available
Having jumped through that hoop, the YAMAHA SAx Setup Utility 2.20 (SETUPSA.EXE) does work, albeit with the inconvenient behavior of trashing AUTOEXEC.BAT each and every time the card is initialized. Stupid workaround is stupid:
C:\LOCAL\ARC\SNDCARDS\SAX\SETUPSA.EXE /S DEL AUTOEXEC.BAT REN AUTOEXEC.BAK AUTOEXEC.BAT
The resource configuration and mixer settings are all stored in OPL3SA.INI, which is created or modified if SETUPSA is run without the /S.
Mpxplay –sct says the following:
WSS : soundcard found : SET ULTRA16=530,0,0,0 SBP : SB-pro card found: SET BLASTER=A220 I5 D1 T4
SET DMXOPTION=-opl3does not yield stereo music in DOOM.
W98SE comes with workable drivers for this card. Yamaha's driver package adds an "XGlite" software synth that can be accessed as General Midi from DOOM or DN3D. Although it's better than OPL3 General Midi, it's no match for a DS-XG. It's also very quiet, requiring extreme mixer settings for balance.
2014-06: OPTi chips were used on off-brand cards that are anything but rare. I tested two of these that came in the as-is EBay lot. In PnP they identify themselves as "OPTi Audio 16" and request separate DMAs for record and playback.
|ExpertColor MED3931 Ver. 2.0 without this logo sticker covering the OPTi chip →||BTC 1817DS|
Both cards have only a single output jack, both cards swap the left and right channels in most contexts, and both cards have lackluster bass response. Noted differences:
On the good side, the FM synth is as loud as voice and isn't obviously glitchy. However, after initial success it became obvious that some of the instruments are just bad and wrong for music that was tuned for a genuine OPL3. It is a working clone technically, but because of the mismatched instruments I find it unacceptable.
snd-opti93x works in WSS mode except that it disables
the record DMA with the log message "WSS dma2 # 3 not valid." This
message comes from sound/isa/opti9xx/opti92x-ad1848.c. The problem is
that PnP assigns DMA 3, but the module thinks that the only valid choices are
0 and 1.
sbiload + aplaymidi works without glitches except that the channels
are backwards. The channels are not backwards when tested
speaker-test -b 8192 -c 2.
On the BTC card, CD analog audio connected to the white header showed up on the Mic input. On the MediaColor card, CD analog audio connected to the black header showed up as CD.
BTC still has drivers for download, but I used drivers from VOGONS for both cards. Yet another case of DOS drivers buried within a Windows executable. Running SETUP.EXE under W98SE causes working DOS drivers to extract to C:\OPTI931, but may trash W98SE since this package was for Win3.1. (I wiped W98SE immediately after getting the DOS drivers out.)
The configurator SNDINIT.EXE (OPTi 82C931 Testing & Configuration Program v2.04) won't run until the SOUND16 variable is set to the path of the drivers directory. It is relatively nice, providing menu-driven configuration of resources, a mixer, and a sound test. It does, however, modify AUTOEXEC.BAT without asking. Once the desired settings have been saved to SOUND16.CFG and VOLUME.CFG, running SNDINIT.EXE /B in AUTOEXEC.BAT suffices to initialize the card on each boot.
:OPTI931 SET BLASTER=A220 I5 D1 T4 SET SOUND16=C:\LOCAL\ARC\SNDCARDS\OPTI931 C:\LOCAL\ARC\SNDCARDS\OPTI931\SNDINIT.EXE /B
SNDINIT makes you choose between SBPro and WSS modes at configuration time. Having chosen the former, Mpxplay –sct detects only SBP.
Like the GUSses, both cards cause hard lockups if UIDE is used in its normal UDMA mode but are OK with UIDE /E.
DOOM and DN3D are playable but the channels are backwards.
Mpxplay at startup often experiences a glitch where it starts playing at a very slow sample rate. Exiting and restarting it with no command-line switches seems to purge the problem, but it recurs.
Here's a surprise:
SET DMXOPTION=-opl3 does
yield stereo OPL3 music in DOOM and the channels are not reversed,
but the left side guitar is quiet and glitchy-sounding.
W98SE does not install drivers for these cards by default, but the install CD includes working drivers under drivers/audio/opti931. There's nothing special about them. W98SE's terrible OPL3 general MIDI synth is left unchanged and the channels are still reversed.
The drivers for W98SE on the BTC site include a 4 MiB file called Gmbank.iss, but after installing them manually (after following the instructions didn't work) I did not end up with a better softsynth, and I couldn't play a wav file without the music breaking up.
2015-12: Despite the prominent MegaImage32 label on the back, I still cannot identify this card with any well-known make and model. It includes a genuine OPL3 as well as a hardware wavetable synth with a respectable 512 KiB ROM soundfont: DOOM E1M1. (See the equivalent MPB-000028 daughterboard here.)
Despite appearances, the card is not PnP. Parameters are needed to make the module load.
modprobe snd-opti93x isapnp=0 irq=5 mpu_irq=7 dma1=1 fm_port=0x388
Port Client name Port name 16:0 OPTi 82C930 OPTi 82C930 MIDI 17:0 OPL3 FM synth OPL3 FM Port
I used these Vogons drivers. Setup using SNDINIT.EXE ("OPTi 82C930 Testing & Configuration Program v1.04") was very similar to that of the 82C931.
SET DMXOPTION=-opl3, but with MIDIer they are correct.
2014-09: I can't tell who made this. The grantee code of the FCC-ID indicates Great Concept Development Ltd. of Hong Kong. The product code doesn't appear in the database.
The OPL3 clone on this card is actually good, providing better definition of different instruments than an OPL3 does. On the downside, it doesn't work right with DN3D, and it's apparently an obscure chipset for which drivers are hard to find.
There is no driver for AD1812. The closest one,
snd-ad1816a, doesn't work and continues not working even after
ad1816a.c is hacked to recognize the device ID (replacing ADS7150/ADS7151
with ADS7140/ADS7141 in pnp_card_device_id).
After setting "PNP OS Installed" to No in BIOS setup and loading
snd-sb8 with manually specified resources, ALSA still doesn't
see the device. Possible kernel regression here.
As-is, Windows didn't recognize the card but proceeded to load generic SBPro and OPL3 drivers:
That partly worked, but wav music in Windows Media Player was mangled.
Trying again using VxD drivers from the Windows 95 PnP Driver Package V1.1 (ad1812.zip) that I found on a random FTP site, the card was better recognized:
Wav music in Media Player was no longer mangled, but there was now a noticeable echo or reverb effect for which there was no control to turn it off. MIDI files played by Media Player came out with reversed channels. The channels were correct everywhere else.
With either set of drivers, DOOM worked fine and
DMXOPTION=-opl3 worked to get stereo music. The sound tests in
DN3D setup sounded right but in the game itself the music was glitched.
I can't actually download anything from Driver Guide. It always pushes an unknown executable instead of the zip file that I asked for.
With "PNP OS Installed" set to No in BIOS setup and no drivers the card functions as an SBPro 2.0 in Mpxplay, DOOM, and DN3D.
SET DMXOPTION=-opl3works to get stereo music in DOOM.
With an MVP3 motherboard it was necessary to use the /E switch with UIDE to avoid lockups when any app tried to initialize sound.
2016-02, testing with 440BX motherboard.
This PnP card uses a Media Vision chipset. The MVD1216 (Jazz16) and MVA416 chips are the same as on the Media Vision Pro Sonic 16, but the mixer is a Sierra SC18076 instead of the MVA514 (ICS2514) that Media Vision used.
Its Sound Blaster Pro emulation has been the subject of some complaints. Logitech's marketing brochure stated boldly "100% Sound Blaster, Sound Blaster Pro, and AdLib compatible," but their technical reference said only "full SoundBlaster compatibility" and recommended a BLASTER setting of T1 (original Sound Blaster). Both documents are included in the PDF file here. In addition, a FAQ from Logitech (Customer Support Document #3120) that was bundled into the DOS drivers packet on VOGONS emphasized "NOT Sound Blaster Pro compatible." Despite all that, the SBPro emulation mostly worked for me (in DOS).
The unusual 5-pin connector for CD audio appears on several Media Vision cards. As shown above, from left to right, the pins are GRGLG.
For once, pitch bending works exactly like it should.
Interestingly but inconveniently, the MIDI interpreter is not hardwired. Code for the 8031 microcontroller has to be uploaded at boot time.
Gaah. Evidently this card works or worked with OSS as there are specific instructions for it in Documentation/sound/oss/README.OSS, even including how to upload the MIDI interpreter code to get the wavetable synth working. Unfortunately, it doesn't work with the Jazz16 driver that was ported over to ALSA. To get the module to load I had to specify the port manually:
modprobe snd-jazz16 port=0x220 irq=5 dma8=1 dma16=5 mpu_port=0x330 mpu_irq=7
Having done that, the mixer was totally broken. Alsamixer said Card: Media Vision Jazz16 and Chip: CTL1345. After initializing it in DOS and warm-booting to Linux, I got sound in the left speaker from PCM and the FM synth, but almost nothing from the right speaker.
Testing was done with ancient kernel version 3.2.55 because of Nvidia, but there have been no substantive changes to the ALSA driver as of 2016-02-05.
With justifiable trepidation I used the drivers that made it to VOGONS via the abominable DriverGuide.
After running INSTALL.EXE and sorting through the aftermath, the critical binaries were SMWSET.SYS ("SoundMan Wave Set Release 1.00") to upload the MIDI interpreter code MIDI0001.BIN and SMWVOL.EXE ("SoundMan Wave Volume Control Release 1.00") to initialize the mixer. SETUP.EXE can be used to change the mixer settings or resources in SOUNDMAN.INI, but it will overwrite AUTOEXEC.BAT every time. SOUNDMAN.INI is clear and easy to edit manually.
Thanks to SMWSET.SYS, this is the only sound card where I had to put something in CONFIG.SYS to get the sound initialized. Nothing remains in memory after it runs, so it ought to have been built as an EXE.
The installer set BLASTER to A220 D1 I5 T1 H5 P330. With that, MPXPLAY would enter its auto-detection routine on each run and take a very long time to conclude that it should use SBPro mode. I changed BLASTER to A220 I5 D1 H5 P330 T4 and MPXPLAY now starts quickly and works.
PCM ("wave") volume has to be set at 50% to balance it with the synth ("MIDI") at 100% (both wavetable and FM). The command line options of SMWVOL don't support setting different volumes for different inputs; the only way to get the desired mixer setting is to let it load as a TSR so it will initialize from the contents of SOUNDMAN.INI. But there is no reason then to keep it in memory: the mixer hotkeys don't actually work AFAICT.
SET PATH=%PATH%;C:\LOCAL\SNDCARDS\SOUNDMAN SET BLASTER=A220 I5 D1 H5 P330 T4 SET LSOUND=C:\LOCAL\SNDCARDS\SOUNDMAN SMWVOL SMWVOL U
The line level resulting from PCM 50% synth 100% is very low. The level of the speaker output in this case is comparable to the maximum line level of a more typical sound card.
FWIW, here are SOUNDMAN.INI and the usage help and normal output from SMWVOL.
[GLOBAL] TYPE=SMW PRODUCT=SoundMan Wave VERSION=1.0 [WAVE] DMA16=5 DMA8=1 IRQ=5 ADDRESS=220 [MIDI] FIRMWARE=MIDI0001.BIN ADDRESS=330 IRQ=7 [MIXER] OUT=100 MIDI=100 WAVE=50 MIC=0 IN=0 CDROM=100 TREBLE=50 BASS=50
SoundMan Wave Volume Control Release 1.00 Copyright (c) 1993 Logitech SA. All Rights Reserved. Syntax: SMWVOL [U] [R] [K=x] [L=x] [F=x] [M=x] [V=#,#] [B=#,#] [T=#,#] U unload from memory R reset mixer to defaults K[=x] hotkeys: active=0/inactive=1/toggle (default=0) L[=x] layout: keypad=0/english=1/toggle (default=0) F[=x] modifiers: AltShift=0/CtrlShift=1/AltCtrl=2/toggle (default=0) M[=x] mute: off=0/on=1/toggle (default=0) V[=#[,#] volume (0..100): set both/set left,right/reset B[=#[,#] bass (0..100): set both/set left,right/reset Mixer Hotkeys Alt+Shift+Home reset mixer to defaults Alt+Shift+End mute toggle Alt+Shift+Left balance left Alt+Shift+Right balance right Alt+Shift+V select volume control Alt+Shift+B select bass control Alt+Shift+T select treble control Alt+Shift+Up increment selected control Alt+Shift+Down decrement selected control Alt+Shift+NumPad5 reset selected control
MPLAY calls itself "Singing Electrons Standard MIDI File Player." Singing electrons... standard MIDI... LOL.
Last one from the as-is lot! I don't know if this is the correct name. The chip is obviously by Avance Logic, but I have no idea what brand the cards were sold under.
This clone stands out by claiming compatibility with the Sound Blaster 16 instead of merely Sound Blaster Pro 2.0. It does provide 16-bit fidelity without the need for WSS. However, unlike a real SB16, it does not support 16-bit DMA. Only DMAs 0, 1, and 3 are selectable. Reportedly, earlier ALS100 (non-plus) cards did not have this limitation.
The first test of this card, using an Intel 430TX chipset motherboard with an AMD K6 266 MHz CPU, went badly. FM synthesis worked OK, but every attempt to use voice either looped, hung, or failed quickly. Cleaning those cruddy contacts didn't help.
Working results were obtained using a 440BX motherboard with a 700 MHz P3 CPU.
The DOS installer DOSINST.EXE is in the WIN31_95 directory contained within the w95_100p.exe self-extracting archive which is contained within the rar archive that is described on VOGONS as Avance Logic ALS100plus drivers DOS, Win 3.x, Win95. All those layers of unpacking yield mercifully few important files:
260315 Mar 27 1998 A3CONFIG.EXE Configurator and mixer 39771 Mar 27 1998 A3INIT.EXE Boot-time initializer 1234 Sep 5 19:00 ALS3.INI Saved configuration 1859 Nov 18 1996 CDSETUP.SYS Driver for non-existent CD-ROM header 3714 Apr 9 1996 FMTEST.MID Sound test 15220 Oct 28 1998 README.TXT Docs 45092 Apr 9 1996 STEST16.WAV Sound test 27804 Apr 9 1996 STEST8.WAV Sount test
After unpacking files and modifying AUTOEXEC.BAT to add one line and comment out all BLASTER settings, the installer will offer to run A3CONFIG. A3CONFIG has a configurator for the resources, sound tests, and a mixer control. Be sure to disable "IDE CD-ROM" at this point or it will mangle CONFIG.SYS in an attempt to install the unnecessary device driver. Also, the volume on the synth has to be turned up for balance. Settings are saved to the file ALS3.INI.
A3INIT reads settings from ALS3.INI in the specified directory and sets
A220 I5 D1 H1 REC3 T6. Woo hoo, T6.
A3CONFIG can be run at any time to adjust the settings, and it will not trash
CONFIG.SYS provided that the CD-ROM remains disabled.
MPXPLAY detects both SB16 and SBPro. Oddly, it chooses to use SBPro by default when the 3D effect is enabled but SB16 otherwise.
The FM synthesis is quite credible, and
yields non-reversed stereo music in DOOM.
Unfortunately, the card is not compatible with DN3D. The sound FX test fails with the message "Playback failed, possibly due to an invalid or conflicting DMA channel. Make sure the 16-bit DMA channel is correct." This behavior continues even after the sound card type is demoted all the way to original Sound Blaster.
UIDE does not cause any problems.
0 [ALS100 ]: ALS100 - Avance Logic ALS100 Avance Logic ALS100, Sound Blaster 16 (ALS-100) at 0x220, irq 5, dma 3&1
With kernel 3.2.55, the "3D Enhancement" control is stuck in muted state.
Wav music sounds good. sbiload + aplaymidi works well except that the channels are reversed.
The joystick is functional but bizarrely laggy: motions are slow to engage and slow to release.
I only attempted W98SE on the non-working configuration, so I did not complete a successful test. FWIW: W98SE did not auto-detect the sound card at all. I manually installed VxD drivers from the WIN31_95 bundle and got the following devices.
Old Aztech cards like this one can be unambiguously identified by comparing the FCC-ID printed on the board against the list at ftp://ftp.aztech.com/SUPPORT/DOWNLOAD/sg/index.txt.
This quirky non-PnP card allows the base address to be selected by jumper, but other settings can be changed only using Aztech's proprietary configurator.
Often it will get wedged and cause driver failures after a warm reboot. This problem is resolved by pressing the reset button.
There is no auto-detection or changing of ports or IRQs in the Linux driver. You must provide the correct magic numbers. See sound/isa/galaxy/galaxy.c for the permissible values. An incorrectly guessed irq results in looping music.
modprobe snd-azt1605 port=0x220 fm_port=0x388 wss_port=0x530 mpu_port=0x330 irq=9 dma1=1
I found the correct port, fm_port, wss_port, irq, and dma1 values for my card by guessing. The working values were the same regardless whether the config mode jumper was set to EEPROM or Software and updating the EEPROM contents from DOS had no effect.
When the Aztech card is initialized, it apparently hooks IRQ 5, probably
for Sound Blaster emulation but possibly for the MPU-401. I inferred
this because it broke an NE2000 that had grabbed the same IRQ
previously. To prevent conflicts with PnP cards, the sound card's
resources should be reserved with kernel parameters. The full-paranoia
setting corresponding to the resources described would be
5: XT-PIC-XT-PIC SoundBlaster? 9: XT-PIC-XT-PIC WSS
0200-0207 : ns558-isa 0220-022f : AZT1605 0330-0331 : MPU401 UART 0388-0389 : OPL2/3 (left) 038a-038b : OPL2/3 (right) 0530-0533 : AZT1605 0534-0537 : WSS 0620-062f : AZT1605
1: WSS - 1
The MPU-401 is as yet untested. Two additional parameters accepted by the module are mpu_irq for the MPU-401 interrupt and dma2 for recording in full-duplex operation. The MPU-401 interrupt remains unknown and I can't verify that this particular card even supports full duplex.
In alsamixer, PCM is Wave (as usual), Aux = CD analog, and Aux 1 = Synth.
Playing MIDI files via OPL3 is the same as with a Sound Blaster (sbiload –v 1, aplaymidi –p 17:0 blah.mid).
TO DO: Test MPU-401 and dma2.
There is a configurator that works in plain DOS, but it was cleverly hidden inside of the Windows drivers package, which can't be extracted under DOS.
If you boot Windows and install this 3-floppy package available at ftp://ftp.aztech.com/SUPPORT/DOWNLOAD/sg/NOV16E/:
File:NOV16E-1.ZIP 1018 KB 06/18/2008 06:36:00 PM File:NOV16E-2.ZIP 1258 KB 06/18/2008 06:36:00 PM File:NOV16E-3.ZIP 1280 KB 06/18/2008 06:36:00 PM
You get, among other things, a 37 kB program called HWSET.EXE in the UTILITY directory. This one program is all you need to get the card initialized and working under plain DOS.
Mixer Control and Hardware Configuration Setting, Version 1.0 Copyright (c) 1993, AZI Labs. All rights reserved. Command Line Format: HWSET /[S|?] [/MR] [/MS] [/option:value ...] **** Miscellaneous Setting **** /S or /? Simplified single screen help message /MR Reset to factory defaults /MS Store settings to EEPROM **** Sound Card Mixer Volume Control **** /VV:L,R Set Sound Blaster Voice Volume (L = 0 -- 16, R = 0 -- 16) /VF:L,R Set FM/WaveTable Volume (L = 0 -- 16, R = 0 -- 16) /VL:L,R Set Line-In/CD Volume (L = 0 -- 16, R = 0 -- 16) /VM:X Set Microphone Volume (X = 0 -- 16) /VX:L,R Set Master Volume (L = 0 -- 16, R = 0 -- 16) **** Sound Card Hardware Address Setting **** /SBA:X Set Sound Blaster Port Address (X = 220*, 240) /MPUA:X Set MPU401 Port Address (X = 300, 330*) /MSSA:X Set MSS Port Address (X = 530*, 604, E80, F40) **** MITSUMI/SONY DMA Channel Setting **** /CDDMA:X Set Mitsumi/Sony DMA Channel (X = 0, 3, D -- Disable*) **** Sound Card Interrupt Setting **** /SBIRQ:X Set Sound Blaster Interrupt (X = 2, 3, 5*, 7) /MPUIRQ:X Set MPU401 Interrupt (X = 2*, 3, 5, 7) /CDIRQ:X Set CD-ROM Interrupt (X = 11, 12, 15, N -- None*) **** Sound Card CD, Game Port and Sound System Setting **** /CD:X Set CD (X = M -- Mitsumi/Sony/Aztech, P -- Panasonic, E -- All Enable*, D -- All Disable) /GPA:X Set Game Port Status (X = D -- Disable, E -- Enable*) /MSS:X Set MSS Status (X = D -- Disable, E -- Enable*) /MPU:X Set MPU401 Status (X = D -- Disable, E -- Enable*)
From my working AUTOEXEC.BAT:
rem Aztech Sound Galaxy Nova 16 Extra (NOVA16E) rem CD-ROM and MPU-401 are disabled to conserve IRQs. rem Only IRQ 5 and DMA 1 are required. rem (Not sure how or where DMA 1 is configged...) C:\LOCAL\ARC\SNDCARDS\NOVA16E\HWSET.EXE /VV:14,14 /VF:14,14 /VL:14,14 /VM:0 /VX:14,14 /SBA:220 /MSSA:530 /SBIRQ:5 /CD:D /GPA:E /MSS:E /MPU:D SET BLASTER=A220 I5 D1 T3
The status report that HWSET outputs afterward incorrectly shows all volumes at maximum (16), but setting the volume lower clearly works.
Mpxplay –sct says:
SBP : SB-pro card found : SET BLASTER=A220 I0 D1 T3
But T3 is Sound Blaster 2.0, not SB Pro. Alas, under DOS I was never able to get anything but monophonic wave (voice) sound. OPL3 stereo synth does work, but the channels in DOOM are reversed (in MIDIer they are correct). The program EMUTSR.EXE (again from the UTILITY directory) purports to enable Sound Blaster Pro emulation, but all it did for me was cause the monophonic sound effects to become screwed up and fade randomly from one channel or the other.
In another touch of irony, the Windows drivers didn't even work. They just broke the default auto-detected Windows 98 SE drivers that were working (albeit with monophonic sound effects and channel-flipped stereo MIDI).
Obtaining an XG daughterboard at a reasonable price was hard enough, but then my assumption that I would surely have a sound card in the drawer that would be good enough to use with it turned out to be false.
All of my Sound Blasters had the hanging note bug. I tried it, and yes, the problem is real. It was bad.
The following procedure for playing MIDI files gives poor results with a genuine OPL3 and even worse results with one of Creative's clone chips. It's not the FM synthesis per se; it's that certain high-pitched instruments are way too loud relative to the others (have a listen). So unless you know how to fix that (let me know!), are experimenting with the hardware, or have a very slow CPU, it is a better idea to install TiMidity++ and do it in software.
You need the program sbiload, which is included in alsa-tools in the seq subdirectory.
Important: Edit the top level Makefile to remove all except seq from SUBDIRS. The other tools are not necessary here and will only break the build.
Make install puts sbiload in /usr/local/bin and its stuff in /usr/local/share/sounds/opl3. If you move the stuff, you need to make the corresponding change to PATCHDIR in seq/sbiload/sbiload.c.
Just running sbiload with no options should initialize the sound correctly. Do sbiload –v 1 to see evidence that it has loaded std.o3 and drums.o3.
bash-4.1$ sbiload -v 1 Loading from /usr/local/sbiload-1.0.25/share/std.o3 Loaded instrument 000, bank 000: Acoustic Grand Loaded instrument 001, bank 000: Bright Acoustic ... Loading from /usr/local/sbiload-1.0.25/share/drums.o3 000: wrong instrument key! 001: wrong instrument key! ... Loaded instrument 035, bank 128: Ac Bass Drum Loaded instrument 036, bank 128: Bass Drum 1 ... bash-4.1$ aplaymidi -l Port Client name Port name 16:0 Sound Blaster 16 Sound Blaster 16 MIDI 17:0 OPL3 FM synth OPL3 FM Port bash-4.1$ aplaymidi -p 17:0 shakira-waka_waka.mid
The PLAY.EXE that appears in some versions of the Creative drivers (Play Utility Version 1.03) will play a .mid file on a SB16 OPL3 if all is configured correctly.
An alternative is MIDIer version 2.50. Following advice in a Vogons thread, I obtained it from the Wayback Machine archive for URL http://www.pldos.pl/windos/midier.htm. AFAICT, it does use the OPL3 and subjectively sounds better than either PLAY.EXE or sbiload + aplaymidi.
With certain .mid files, Creative's player and MIDIer both slow down when they get to the complicated parts.
You'll need the AWESFX utilities.
The EMU8000 driver in the Linux kernel for a long time had a bug that reduced the amount of soundfont memory by 512 KiB. The problem was corrected in kernel version 3.7.
With that fix, it is now possible to load the entirety of the nominally 4 MB E-mu soundfont provided by Creative, 4GMGSMT.SF2 (4174814 B), into the on-board RAM of an AWE64 Gold.
bash-4.1$ asfxload -M /usr/local/share/soundfonts/4GMGSMT.SF2 DRAM memory left = 198 kB bash-4.1$ aplaymidi -l Port Client name Port name 16:0 Sound Blaster 16 Sound Blaster 16 MIDI 17:0 Emu8000 WaveTable Emu8000 Port 0 17:1 Emu8000 WaveTable Emu8000 Port 1 17:2 Emu8000 WaveTable Emu8000 Port 2 17:3 Emu8000 WaveTable Emu8000 Port 3 18:0 OPL3 FM synth OPL3 FM Port bash-4.1$ aplaymidi -p 17:0 shakira-waka_waka.mid
It works, both analog and S/PDIF, but the musical qualities take some getting used to.
AWE cards come with a 1 MB sample ROM. To use it, you have to asfxload SYNTHGM.SBK (provided in SB16/SFBANK of an installation of Creative's DOS drivers). It doesn't consume any RAM and provides a cheesier sound than the larger soundfonts (but not as cheesy as the OPL3 emulation).
Other resources for MIDI on SB AWE cards:
The kernel patch for spurious "sfxload: no memory left" is not needed for ISA cards.
The standard fixed claims for 486 and newer PCs are shown in the table below. Additional IRQs may be claimed by USB controllers, network devices, video cards, and the tertiary IDE/SCSI controllers that appear on many sound cards. Additional DMAs may be claimed by SCSI controllers.
|IRQ||DMA||Normally claimed by|
|3||Serial port COM2 (if present)|
|4||Serial port COM1|
|6||2||Floppy drive controller|
|9||ACPI (if present)|
|12||PS/2 mouse port|
|14||Primary IDE (1 cable 2 drives)|
At a minimum, a sound card is going to need one IRQ and one DMA to emulate a Sound Blaster. The most likely choices are IRQ 5 and DMA 1. Additional IRQs may be needed for native-mode sound, the MPU-401, and/or the CD-ROM interface (tertiary IDE or SCSI controller). Additional DMAs may be needed for 16-bit sound, full-duplex operation, and/or the CD-ROM interface.
Toward the end of the ISA era some motherboards gained I/O APICs which made it possible for PCI devices to use IRQs above 15. These high-numbered IRQs are not useful for ISA sound cards but they reduce competition for the low-numbered IRQs.
Unless you absolutely need them, disable the serial and parallel ports in BIOS setup. On a typical Pentium or later PC this removes competition for IRQs 3, 4, and 7 and DMA 3. (On a 486, you need to keep one serial port for the mouse.)
If there's nothing on the second IDE channel, disabling that frees up IRQ 15. If you don't need the floppy drive, disabling that frees up IRQ 6 and DMA 2.
If there's a BIOS option called "Shared PCI IRQs," set it to "Share One IRQ." I get this option with the Phoenix BIOS on a Gateway Tabor III 440BX motherboard. When it is set to "Share One IRQ," all PCI and AGP devices share IRQ 9 instead of claiming a separate IRQ for each device. (This BIOS does not allow reserving IRQ 9 for "Legacy ISA" as it grants a fixed claim to ACPI.)
A PnP BIOS knows nothing about which IRQs and DMAs a non-PnP ISA card intends to use and will obliviously configure a network card or other PnP card to conflict with it. To prevent this, you have to go into BIOS setup and make sure that the relevant IRQ and DMAs are reserved for "Legacy ISA" (as Award's BIOS describes it) instead of "PCI/ISA PnP."
However, this option is also useful for PnP sound cards. It often happens that a DOS video game, a sound card driver, or a sound card's hardware only allows certain choices of IRQs and DMAs. So what do you do if those resources are already assigned to other PnP devices? The "Legacy ISA" choice in BIOS PnP setup solves this problem too.
Counter-intuitively, a "Legacy ISA" reservation does not prevent a PnP card from using those resources. It only prevents the PnP BIOS from allocating them.
Set "PNP OS Installed" to "Yes." The BIOS will still PnP the mainboard devices no matter what (IDE controllers, USB controllers, mouse, keyboard, etc.), but it will step around the reserved IRQs and DMAs and will not initialize an ISA PnP add-in card at all.
The reserved IRQs and DMAs are now free for the taking by a PnP or non-PnP sound card. The only difference is that the PnP card needs an initialization program to set it up while the non-PnP card is ready to go. The "initialization program" is either a Linux driver or a DOS sound card utility like CTCM, SBINIT, SBEINIT, ULTRINIT, IWINIT, CWDINIT, ESSCFG, SETUPSA, or HWSET.
There are only two reasons ever to set "PNP OS Installed" to "No:"
Whether some unknown device is making a stealth grab or the motherboard is just being crapulous, sometimes there's nothing you can do but use a different IRQ/DMA.
A kernel bug that broke PnP assignment of DMA channels whenever a card's first choice was unavailable persisted for 5 years. This fix was applied in kernel 3.11.
The kernel parameters
pnp_reserve_dma= are useful to prevent the Linux PnP driver from
selecting IRQs and DMAs that don't work. However,
pnp_reserve_dma= only works on kernels with the aforementioned
If Creative's PnP Configuration Manager Utility (CTCU) won't let you
select a working DMA, it's a simple matter to manually edit the CNPNP.CFG
file and change the value of Dma0 or Dma1 as needed. I was able to get
a card working by setting
Dma1=6 even though CTCU would not
Bad DMA manifested as no sound and lots of hard lockups.
Control Panel → System → Device Manager → Sound, video, and game controllers → Creative AWE64 Gold 16-bit Audio (SB16 compatible) → Properties → Resources, uncheck Use automatic settings, then must change from Basic configuration 0001 to Basic configuration 0002 before it will allow you to change the DMA from 5 to 6. (Having done that, it goes back to Basic configuration 0001 on the next boot, but the DMA setting sticks and is no longer locked...?)
Sound cards that use two DMAs for full-duplex operation (recording and playing at the same time) will usually fall back to half-duplex mode if the two DMAs are set to the same value. The GUS PnP appears to allow use of separate IRQs too, but they are always set to the same value even by its own setup program.
If a sound card has an IDE or SCSI interface, disabling it with jumpers or in the setup program will free up an IRQ and potentially a DMA as well (many are PIO-only and don't use DMAs).
An MPU-401 can work in polling mode if no interrupt is allocated for it. If you're not using it at all then look for an option to disable it. Alternately, it might be OK to set it to the same IRQ as is used for Sound Blaster emulation. (The GUS Classic does that by default.)
Some sound cards can use the same IRQ for native mode as for Sound Blaster emulation without a conflict.
As a last resort, where the sound card wants a 16-bit DMA you can try giving it an 8-bit DMA instead. On SB16-type cards, you can set the high DMA to the same value as the low DMA.