If you're having a problem with an internal IBM PC card not working, then you should first check for any hardware conflicts in your system. Read the article "Resolving hardware conflicts" for more information.
Questions in this FAQ are:
"How do I install/setup an audio/MIDI driver?"
"How do I remove an audio/MIDI driver?"
"Where is Win95's MIDI Mapper?"
"Why didn't Windows autodetect my second sound card?"
"How do I get my 16-bit sequencer program to have more stable digital audio under Win95?"
"Why can't I get sound from my MS-DOS game programs run under Win95?"
"What is that yellow exclamation mark in Device Manager?"
"Why won't my Windows 3.1 or Windows 95/98/ME driver work under Windows NT/2000/XP?"
Nowadays, most driver packages ship with a program you can run which installs the driver for you. Typically, this program is named setup.exe. There will often be numerous other files (in the package) along with setup.exe, but these are used only by setup.exe to install driver support. (Once the driver support is installed, you can delete setup.exe and all other files in the package, or save them if you need to reinstall). If the driver package is shipped on a CDROM, the CDROM will typically have a file named autorun.inf on it. All autorun.inf does is automatically run setup.exe when you insert the CDROM into the drive. (This is a function of Windows' autorun capability. Unless you have this feature disabled, Windows will "autorun" any CDROM with an autorun.inf file on it).
Setup.exe will automatically detect what operating system is on your computer, and install the correct driver. (ie, Many maunfacturers will ship one CDROM containing drivers for several versions of Windows. But not every driver is compatible with all versions of Windows, so the correct one must be installed for your system).
If the driver does not ship with its own setup program, then you will have to manually install the driver yourself. (Some manufacturers farm out their driver development to programmers who don't know how to, or don't take the time to, write a self-installing driver package).
To manually install a driver, the driver should have a .INF file (ie, created by the manufacturer and shipped with the driver). The INF file (ie, the filename ends with a .INF extension) is really just a text file that tells Windows what kind of driver is being installed (ie, digital audio, MIDI, video, printer, etc). It also contains the text that Windows uses when it displays the "name" of the driver (ie, not the driver filename, but rather, a more meaningful name which I'll call the "device name") in various displays, such as in the Control Panel's MultiMedia notebook. The INF also lists what the driver filenames are so that Windows knows what files to copy off of the install disk. You can view this INF file in a text editor (and even edit the device name). For example, the Roland RAP-10 INF indicates that the driver supports digital audio, MIDI, and LINE IN (ie, aux). Windows treats these 3 "sections" of the card as if they were 3 separate devices. The device name for each of these sections of my RAP-10 is "Roland Audio Producer". Windows ships with several audio/MIDI drivers for various cards and the INF files (and drivers) for those are included with Windows.
Note: Before installing new MIDI/Audio drivers, I recommend that you first manually remove any currently installed drivers that the new drivers are meant to replace, unless the new drivers are written to be installed over those old drivers. Usually, if you're updating new drivers over old drivers written by the same manufacturer for the same card, then there's no need to remove the old drivers first. But, if you had also changed your sound card, or gotten drivers from a different source, then I recommend removing the old drivers. For example, here's how I would go about changing to a different sound card and installing new drivers:
Here are the steps to install a MIDI/audio driver:
On the other hand, if you prefer to use drivers other than the included ones (ie, you have updated drivers), or the driver you need isn't included with Windows, then click the Have Disk button instead.
Note: If the driver package contains drivers for various versions of windows, or various models of cards, then there may be numerous INF files in the package. You may have to search around, selecting various INF files, until you find one that lists the desired model.
After you've installed the driver, you can now configure Windows' (and ultimately, all Windows applications') use of the driver. For example, do you want all Windows programs to send their MIDI output to this driver, and get their MIDI input from this driver? Do you want all programs to use the card's ADC (assuming it has such) to record digital audio (usually stored in a WAVE file)? Do you want all programs to use the card's DAC to play digital audio? You use the Control Panel's MultiMedia notebook to configure the card's use. Open the MultiMedia notebook. It has several pages that you can flip to (ie, the tabs are at the top of the notebook).
The first page is called Audio. This page concerns playing and recording digital audio. The page is divided in half, with the Playback settings on top, and the Recording settings below. If your card has a Digital to Analog Converter (ie, for playback) and Analog to Digital Converter (ie, for recording), then your card's device name should be listed in both the dropdown list in the Playback section of the page as well as the dropdown list in the Recording section. Select the device name so that it appears as the "Preferred Device" for both Playback and Recording. Now all Windows apps (as well as Windows itself when it plays "system sounds") will use your card for digital audio playing and recording. For cards that support various sample rates and bit resolutions, you should be able to select a "Preferred quality" for recording. You can also set default values for playback and recording volume. The "Use preferred devices only" setting is only effective if you have more than one digital audio device (and driver) installed. When selected, Windows forces all programs to use just the one "preferred device". When not selected, if some program has the preferred device in use, and another program wants to do something with digital audio, Windows will automatically have the second program use some other digital audio device in your system. Note that it's perfectly OK to have different cards chosen for playback and recording, which is one way to get around the problem of not having a full duplex sound card (ie, one that can record digital audio at the same time that it is playing back previously recorded digital audio).
The above settings don't mean that all programs must use the "preferred device" for digital audio, with those volume and rate/resolution settings. Rather, these are default values (for programs that don't offer ways to change such settings). On the other hand, a Windows program could query all of the digital audio devices installed on your system assuming that you had more than one installed), and let you choose to use any and all devices, maybe even simultaneously for many tracks of digital audio. The program could provide controls with which you adjust volume and rate/resolution, and maybe even additional parameters. But such a program would have to be written to use Windows' MCI API in a fancy manner. Your average CD-ROM Encyclopedia, and other titles that aren't geared for fancy audio work, generally use the preferred device and default settings verbatim.
There is another page in the MultiMedia notebook for MIDI. This page concerns MIDI input and output. If your card has MIDI input and output ports, then your card's device name should appear in the list below "Single Instrument". If you want to set all 16 MIDI channels to come in and go out through that card's MIDI IN and OUT, then select "Single Instrument" (ie, make sure that the dot is highlighted), and then highlight the device name (ie, so that it also appears in the box beneath "Single Instrument").
Note: In Windows NT/2000/XP, the MIDI page is missing. Instead, only the one, preferred instrument for MIDI playback (ie, output) is listed under the "Audio" page. There is no facility for configuring any patch remapping via the MultiMedia notebook.
On the other hand, if you have more than one MIDI device installed, and you wish to divide up the 16 MIDI channels between those devices, then select "Custom configuration" instead. For example, assume that you have two cards, an MPU-401 and a Monterrey. You've installed drivers for both, and so there are 2 device names in the MIDI device list. You want to have all MIDI events on channels 1 to 8 go through the MPU-401, and all MIDI events on channels 9 to 16 go through the Monterrey. Click the Configure button, and a window will pop open listing all 16 MIDI channel numbers. Now follow these steps to setup MIDI channel 1.
You've now set MIDI channel 1 to go through the MPU-401. Repeat the steps with channels 2 to 8. Repeat the steps for channels 9 to 16, but select the Monterrey device name instead. (Note that you can select several channels simultaneously for changing, by holding the SHIFT key while highlighting channel numbers).
Now, by default, any Windows program that transmits a MIDI message on channel 10 will send that message to the Monterrey's MIDI OUT.
For multi-port (ie, multiple bus) MIDI interfaces, the driver for that device should make it look like each bus on that one card is itself a separate card. Therefore, you should have a unique "device name" for each port on that multi-port interface. For example, maybe port 1 will have a device name of "Brand X MIDI Port 1", whereas port 2 will have a device name of "Brand X MIDI Port 2", etc). Hopefully, the driver will also be "multi-client" so that, if desired, you can have different programs simultaneously doing MIDI data transfers to different outputs. (In that case, you'd have to setup "custom configuration" and restrict each program to using different MIDI channels than the other programs).
Note that System Exclusive, as well as System Realtime (ie, MIDI Clock/Start/Stop, MIDI Time Code, etc) messages do not have a "MIDI channel" associated with them. I'm not sure how Windows handles such events given a custom configuration. It may simply output such events to whatever device you've selected for "Single Instrument" or may automatically duplicate all System Realtime, Common, and Exclusive messages to all MIDI devices.
Just like with the Audio settings, the above MIDI settings don't mean that all programs must use the "Single Instrument" for MIDI. Rather, this is the default MIDI IN and OUT (for programs that don't offer ways to change such). On the other hand, a Windows program could query all of the MIDI devices installed on your system (assuming that you had more than one installed), and let you choose to use any and all devices, maybe even simultaneously for many MIDI channels (ie, 16 per device). The program could provide controls with which you adjust which MIDI data goes to which device. But such a program would have to be written to use Windows' MCI API in a fancy manner. In fact, CakeWalk Pro does exactly that, which is how it supports MIDI interfaces with multiple MIDI busses. Your average CD-ROM Encyclopedia, and other titles that aren't geared for fancy MIDI work, generally use either the "Single Instrument" (ie, one MIDI card) or for "Custom configuration", will automatically have the MIDI data routed to various cards as per your channel/device assignments.
Never, never, never manually delete driver files by dragging icons to the Recycle Bin nor typing "del" from a command prompt. That's not the way that you uninstall a driver. There's a difference between uninstalling a driver and deleting files on your HD. If you do the latter, then you'll likely still leave behind references (to the now-missing driver files) in Windows' registry and INI files. This can cause all sorts of error messages to pop up. And if you later install other drivers without removing those references, you could end up with a completely confused set of error messages and weird behavior.
The proper way to uninstall a driver is as follows:
Note: In Windows NT/2000/XP, Device Manager is located by flipping to the "Hardware" page and then clicking the "Device Manager" button.
If your audio device isn't listed on System notebook's "Device Manager" page, then you'll have to open the MultiMedia notebook and flip to the "Advanced" page. This is like the Device Manager listing, but it only shows MultiMedia components broken down into smaller catagories. You'll need to go through each sub-category (ie, "Audio Devices", "MIDI Devices and Instruments", etc) to remove each component that pertains to the device that you wish to remove.
Microsoft didn't have time to finish rewriting the MIDI Mapper for Win95 before the OS's release. Subsequently, MS created the IDFedit.zip utility which you can download from my Web Site now. This utility can be used to create an Instrument Definition File (ie, IDF) in which you determine how the GM patch set and drum note assignments are remapped. Then, you install this IDF as if it were another MIDI device upon your system, and use it for MIDI IN and OUT.
For example, let's assume that the very first GM patch "Acoustic Grand Piano" is actually the second patch upon your JV-80 and you wish to remap GM patch 1 to JV-80 patch 2.
You can also choose which MIDI channel the "drum kit" is assigned to (which defaults to channel 10) in case you have a drum box set to a MIDI channel other than 10 and wish to apply the IDF drum note remapping to that MIDI channel.
Once you've saved your new IDF, you can "install" this new instrument.
"JV-80 GM Patch Set" should now appear in the MultiMedia notebook's list of "Single Instruments". You can select this as if it were a device in your system, and when you do, Windows will apply the remapping to MIDI IN and OUT. This new "device" should also appear in CakeWalk's list of output devices.
You can add as many IDFs as you like, even applying more than one to a given MIDI card. (This may be useful if you have several non-GM multitimbral devices attached to a single MIDI interface. By using "Custom Configuration", and then selecting different IDFs for the various 16 MIDI channels, you can divide up the 16 MIDI channels between those instruments, as well as apply different remappings to each MIDI module. But if dealing with multitimbral instruments, you'll still have to set each instrument to actively ignore MIDI channels reserved for other modules).
If you wish to remove a particular IDF, you can do so. Let's remove our "JV-80 GM Patch Set" IDF.
NOTE: Some sequencers support defining patch maps for each of your MIDI modules. (For more information, see MIDI connection and computer setup). This is more flexible than using an IDF because you can usually define more than 128 patches with the former (ie, the sequencer supports banks of patches whereas IDFs don't). Plus, the sequencer lets you apply any patch map to any track, regardless of MIDI channel, so it's a lot easier to setup.
Just don't use an IDF in conjunction with the built-in patch naming features of your sequencer. You don't want to remap your custom patch sets. The exception to this is if your sequencer completely bypasses Win95's MultiMedia MIDI setup. Such a sequencer would use the "low level" MIDI API of Windows. In this case, you can still setup an IDF for the benefit of sequencers and multimedia software that uses the "high level" MCI API of Windows. But then, don't select the MIDI Mapper as the output driver for your software that has its own patch naming features.
Windows' "AutoDetect hardware" only does a search for one (non-PnP) sound card (since that's all that is really needed for normal use). As soon as it discovers one card, that's the end of the search for an audio card. Needless to say, the first card that Windows searches for is an SB compatible. I'm not surprised that it found your SB16 (and set that up) before finding your MPU-401.
Also, Windows is written to only check for those sound cards that have drivers that are shipped with Windows. If you have a card for which drivers were not included on your Windows CDROM (or floppies), Windows will not detect it (unless it's a PnP card. In that case, Windows will detect, but if there are no drivers, it will label it an "Unknown device" without any driver support).
In conclusion, Windows will not autodetect more than one non-PnP audio/MIDI card. For any second card, you'll have to manually install the drivers. Windows will also not autodetect any card that it doesn't know anything about. (ie, Windows will not autodetect a card for which drivers aren't included with Windows itself). You'll have to manually install the drivers for this case too. This is easy to do, and is explained in "How do I install/setup an audio/MIDI driver?".
Most of the problems with old (16-bit) software playing digital audio tracks (ie, recording to, or playing from, the hard drive) are due to the differences between Win3.1's and Win95's disk cache handling and virtual memory. 16-bit Windows software is written for Win3.1, and consequently may not be designed to perform well with Win95's different methods. You can minimize adverse effects Win95 may have on 16-bit software by forcing the disk cache and virtual memory (ie, swap file on your HD) to fixed sizes.
To set Win95's disk cache to a fixed size, load the file SYSTEM.INI (found in your Windows directory) into NotePad. Find the line that reads [vcache]. Alter the MinFileCache and MaxFileCache lines below it (or add these 2 lines if they aren't already there). If you have a system with 8 MEG of RAM, set both to 1024. If you have a system with 16 MEG of RAM, set both to 2048. For example, here's what it would look like for 16 MEG:
[vcache]
MinFileCache=2048
MaxFileCache=2048
Resave the file.
This limits the RAM that Win95 uses for its disk cache. Normally, Win95 allocates all free RAM for that, which could interfere with memory allocations that your sequencer is trying to make during playback, and cause slowdowns in performance.
To set Win95's virtual memory (ie, swap file) to a fixed size, open Control Panel's System notebook and flip to the Performance page. Click on the "Virtual memory" button. Select "Let me specify my own virtual memory settings". For the Minimum setting, enter 0. For the Maximum setting, enter 20 if you have 8 MEG of RAM, or 28 if you have 16 MEG.
This prevents the swap file from growing and shrinking on your hard drive. It's also recommended that you defrag your drive afterwards. If you have more than one drive, try putting the swap file on a drive other than the one where you'll be recording digital audio.
After the above adjustments, reboot your system.
The problem is that this DOS prompt window or screen is really running under Win95 (ie, you're running an MS-DOS shell that uses Win95's "Current Configuration", rather than booting into a "New Configuration" without Win95 loaded and in control), and you have incomplete Win95 drivers for your sound card.
Here's the deal. When you boot into this DOS shell, Win95 is still loaded and in control (ie, you're running a Win95 DOS VDM). All of your Win95 drivers are managing access to your hardware, including your sound card. In MS-speak, you're using Win95's "Current Configuration". Your system isn't really rebooting into DOS so much as it's running DOS on top of Win95. (And that's why you can enter and exit from that DOS prompt, back to Win95, so quickly). Whether you select an MS-DOS Prompt from the Start Menu's Programs group, or Shutdown to MS-DOS Mode, Win95 is still loaded and in control (if you're using the "Current Configuration"). In fact, the Win95 drivers for your sound card are always in control of the card, unbeknowst to your MS-DOS program even. It's sort of like how a DOS "Terminate and Stay Resident" (TSR) utility can surreptiously wedge itself inbetween a program and some hardware.
There are 2 things that your Win95 drivers do. First, they manage interaction between Windows programs and your hardware. Secondly, they manage interaction between MS-DOS programs and your hardware... when Win95 is still in control. Your MS-DOS programs don't even know that Win95 (and its drivers) are still in control. Everytime that your MS-DOS program tries to execute an instruction that reads or writes to hardware, the Intel CPU (sneaky guy that it is) immediately "traps" that access and gives control over to Win95 and its drivers, who then manage the actual access. (In the process, Win95 also gets a chance to try to implement some crash protection, and perform multi-tasking).
Whereas your sound card's Win95 drivers may well support Windows apps access to hardware, it appears that those drivers don't properly support access by an MS-DOS program running under Win95. So, you can't run your MS-DOS stuff under Win95 (unless you get new Win95 drivers that support MS-DOS programs). What you're going to have to do is completely flush Win95 and its drivers out of memory, and reload MS-DOS so that it really is in control. That's exactly what happens when you boot into "MS-DOS Mode" without loading Win95. You can also choose to have your MS-DOS programs run under a "New Configuration" which causes Win95 to kill itself, and MS-DOS 7.0 (included with Win95) then loads.
You can setup that MS-DOS Prompt (or the Shutdown "Restart in MS-DOS Mode") to boot into a new configuration of MS-DOS only, instead of using Win95's current configuration (and leaving Win95 still in control). The only problem is that, now that your DOS programs don't have Win95's drivers managing the hardware, for example Win95's drivers for your CDROM and mouse, you're going to need to copy some DOS drivers for your mouse and CD-ROM to your HD, and create CONFIG.SYS and AUTOEXEC.BAT files that load these drivers.
Here's how to setup your computer so that it boots into MS-DOS only:
REM Stuff that you probably need
DOS=HIGH,UMB
Device=C:\WINDOWS\Himem.sys
FILES=20
REM Set this to the last drive on your system
LastDriveHigh=E
REM Here's my CD-ROM driver. Your driver may have a different name.
REM It may require you to use "Device" instead of "DeviceHigh".
REM Consult your CDROM manual.
DeviceHigh=C:\d011v110.sys /d:mscd000 /n:1
Now, in the lower box, you need to type the lines for an AUTOEXEC.BAT file. Here's what I use:
REM A place where programs can toss garbage files. It must exist
SET TMP=C:\WINDOWS\TEMP
SET TEMP=C:\WINDOWS\TEMP
REM Just for the shell's prompt
SET PROMPT=&p$g
REM Where Win95 system files reside
SET winbootdir=C:\WINDOWS
REM Where MS-DOS can find system files
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
REM This is for the Sound Blaster Vibra16 PnP applets
SET BLASTER=A220 I5 D1 H5 P330 T6
REM Here's my mouse driver. Yours may have a different name.
C:\MOUSE.EXE
REM My CDROM is an IDE unit. Its driver uses MSCDEX to manage
REM the driver under MS-DOS.
MSCDEX.EXE /d:mscd000 /m:18
So what's happening here? What's the difference between "Specify a new MS-DOS configuration" and "Use current MS-DOS configuration"? As I explained, with the latter, Win95 doesn't reboot the computer. Win95 is still loaded and in control, using its Win95 drivers to manage your MS-DOS programs use of hardware. But, when you use a "new MS-DOS configuration", Win95 is completely flushed out of memory, and runs those CONFIG.SYS and AUTOEXEC.BAT scripts above. As you'll notice above, I've using my old MS-DOS drivers. So this is how you can boot into an environment that is the same as MS-DOS running your old drivers or TSRs, and yet, when you go back to Win95, you're back to using your new Win95 drivers (and the old real-mode drivers or TSRs are flushed from memory again -- which is good because, you don't want that stuff loaded with Win95 if you can avoid it). This is how you can have your MS-DOS games run without the interference of incomplete Win95 drivers that don't support sound for those MS-DOS programs, and yet still use those Win95 drivers with Windows programs which are supported.
The disadvantage is that, in order to completely flush Win95 and leave MS-DOS totally in control, Win95 has to reboot the computer. So, using "Specify a new MS-DOS configuration" will take much longer to switch to than "Use current MS-DOS configuration". But, it will allow you to use your old DOS TSRs with MS-DOS software, and your new Win95 drivers under Win95 (without resorting to always loading your old drivers/TSRs under Win95 and risking any weirdness between the two simultaneously loaded "old versus new" drivers). Plus, if you have Win95 drivers that don't properly support MS-DOS programs running under Win95, then you need to boot into MS-DOS mode anyway.
Incidentally, if you prefer to have only certain programs reboot into this "MS-DOS only" mode, then instead of performing the above procedure on the "Exit to Dos" shortcut, do this on the shortcut for the particular MS-DOS program(s) you desire. (ie, Click on the program's shortcut to bring up "Properties", and take it from there).
That exclamation mark you see next to a device name in Windows' System Notebook "Device Manager" page indicates a conflict (usually IRQ) or that something is wrong with the device's response. (ie, For example, I use SCSI devices rather than IDE, so I disabled my motherboard's IDE ports. My Plug and Play BIOS told Windows that I had IDE ports, but Windows didn't get any response from them, hence that exclamation mark next to my "PCI IDE controller".
In fact, it's common to see exclamation marks related to Plug And Play ISA cards. Often the devices appear to have several "phantom" units, each one dedicated to whatever IRQs the device supports, and Windows thinks that these are real yet gets no response from them. Hence you may see several instances of a particular Plug and Play ISA card listed, with all but one having an exclamation mark. It's OK to leave these phantom devices, and if Windows ever tells you it detected new hardware the next time you boot, tell Windows to ignore each one of those phantom devices as it pops up a dialog for each, asking you to choose a driver to install). Furthermore, for such phantom devices, you should highlight the name of each one in Device Manager, click on the Properties button, and remove the checkmark for "Original Configuration (current)". Leave only the real device (ie, the one whose IRQ and base is set to what your card really is using) enabled for "Original Configuration".
Furthermore, Device Manager can be used to identify possible hardware conflicts in your system. If you click upon the "Print" button, a dialog will pop up which allows you to print out a listing of what devices are using various IRQ, base I/O addresses, and DMA channels. (The dialog also offers an option, "print to file" to save this text listing in a file on your harddrive. The file will end in a .PRN extension. This is handy if you need to email your settings to tech support). If you look through this list and find a resource being used by more than one hardware device, that would indicate a likely hardware conflict. You should change the DIP switches or jumpers upon one of the devices (or if both devices are PnP, then try to use a software configuration utility to alter one of the device's resources. Better yet, make sure that you're using a PnP BIOS, and it's the latest version).
Windows NT/2000/XP uses an entirely different driver model than Windows 95, 98, ME, or Windows 3.1. Windows NT/2000/XP has a 32-bit driver model whereas Windows 3.1 and Windows 95/98/ME still have some 16-bit components in their sound card drivers. You cannot use Windows 3.1 or Windows 95/98/ME drivers under Windows NT/2000/XP. You need a Windows NT/2000/XP driver for your sound card. Although Windows NT/2000/XP recognizes the INF file for a Win3.1 or Win95/98/ME driver (since WinNT/2000/XP drivers also use the INF file for installation purposes), it may appear that WinNT/2000/XP has installed the 16-bit driver, but it can't use such a driver. Typically, you'll get some sort of error message that the driver is not readable when you reboot your system
Recently, Microsoft has created a new driver model (Windows Driver Model, or WDM) which works with both the Windows ME and 2000 and XP operating systems. So a WDM driver written for Windows ME will should work under 2000/XP (and vice versa). Of course, you would need a new driver for your sound card if you wanted one of these WDM drivers. Otherwise, Win2000/XP continues to support current Windows NT drivers (so if you can't specifically find a Windows XP driver, then at least try to find a Windows 2000 or Windows NT driver), and Win98 continues to support Win3.1 and Win95 drivers, but neither will be able to use the others' current drivers.