First post, by ks4
This guide allow users of powerful Windows 9x computers to use VST synthesizers in Windows 9x. There are some VST MIDI drivers for Windows, but all are targeted to NT architecture (2000 and above), and as far as I know, there are no such drivers for 9x family systems. By using VDMSound for 9x it's even possible to get those synthesizers in DOS session (but not in real-mode DOS). It's also possible to to use MUNT with this method, resolving problem how to get MT-32 emulation in DOS box running natively in Windows 9x.
To work it requires computer powerful enough to handle VST synthesizer and/or MUNT. I haven't checked yet how slower (Pentium II and below) configurations handle it.
I do not guarantee that it must work correctly in all configurations, and that it can't damage your computer. You do it at your own risk.
VST host installation and configuration
1. Get VST host like SAVIHost or VSTHost
From my experience SAVIHost consumes less CPU power and has lower latency (important in DOS session) but is less stable than VSTHost and have problems with ASIO
2. Install virtual MIDI cable driver like MIDIYoke or similar
3. In your VST host go to Devices --> MIDI and set your virtual midi cable device as one input and output. If sound plays in loop, then change output device to any other device (the best option is to choose unused device, for example physical MIDI port if no device is connected to it).
4. Go to Devices --> Wave. You can choose between MME, DirectSound and ASIO if available. ASIO is the best option, but not all configurations like it. You can also change sample rate and buffer size. Experiment with different configurations and choose which sounds best. It's important that DOS sessions don't like big buffers (music plays slower) and sound better with small buffers.
5. To have VST synthesizer as default MIDI device load VSTi into VST host, set your default MIDI device to virtual MIDI cable device in:
Control Panel --> Multimedia --> MIDI (Win 95, 98)
Control Panel --> Sound and multimedia --> Audio --> MIDI (Win ME)
When you plan to use VST only in Windows apps that will be enough. For DOS session you need to follow next steps.
You can also get MUNT VSTi and use it in DOS programs for MT-32 emulation
VDMSound emulation for DOS session
1. Get VDMSound for Windows 9x
2. Install all patches (vxds0002 and vxds0003, available in the VDMSound topic some posts below) to eliminate the need to unload VDMSound every time you close DOS program
3. Disable annoying "Tip of the day" message by applying registry patch:
"TipsFile"="C:\\*your VDMSound path*\\VDMSound.tips"
Or download VDMSoundTipsFix.reg file below, modify path to your VDMSound folder and apply.
4. Disable laggy and unstable Sound Blaster emulation. Download modified VDMS.ini below and replace it in your VDMSound folder. If you really need Sound Blaster emulation you can leave .ini file unmodified, but I don't recommend it.
5. It's highly recommended to use address 0x330 for MPU-401 emulator as it's the most popular address. If you have another MPU-401 emulator (often included in Sound Blaster emulation drivers from sound card manufacturers like Sound Blaster Live!, or by system like Microsoft SBEMUL.SYS) its address can conflict with this provided by VDMSound. There are 2 ways to resolve conflict:
[*]5A. Change MPU-401 base address in VDMSound.ini from default 0x330 to 0x300 or 0x310
[*]5B. Go to Device Manager, in Sound, Video and Game controllers section select your current Sound Blaster/MPU-401 emulation device (if you use WDM drivers and you can't see separate device, then it means that Windows uses SBEMUL.SYS which address can't be changed) go to configuration, uncheck "automatic configuration", find section that uses 0x330 address and force it to use 0x300 or 0x310 (if you cannot force it, change configuration from config 000 to 001 or other and try again).
Although method A is easier than B, some games may still use fixed 0x330 address even if BLASTER variable points at 0x300 or 0x310. The solution is to use B method and replace your previous default MPU-401 with VDMSound one.
6. Each time you start a game you need to enable VDMSound. To do it automatically I've written small .bat script which you should put in your PATH directory (for example C:\WINDOWS). Check if BLASTER environment variable settings in STARTVDM.BAT correspond to your Sound Blaster emulation settings (if you have one) and contain new MPU-401 address. Make sure that you correctly set up VDMSPATH variable in AUTOEXEC.BAT (stated in VDMSound installation file). Each time you start a game, first call STARTVDM.BAT, for example create small .bat file to start a game:
Addition: Run MUNT for DOS games
Although it is possible to use MUNT VSTi in VST host to get MT-32 emulation in DOS session, it is quite laggy and unstable. There are also very high latencies on VST hosts which make music playing much slower than it should. To solve it you can use MUNT for 9x with special driver.
1. Install MUNT for Windows 9x
2. Install MUNT driver for Windows 9x
Driver must be installed through Add New Hardware --> Choose manually --> Sound, video and game controllers --> Have disk --> OEMSETUP.INF in driver directory.
When running, driver requires MUNT program to be running in background
3. To have MT-32 emulation in Windows and DOS just set MUNT driver device as your default Windows MIDI device in:
Control Panel --> Multimedia --> MIDI (95, 98)
Control Panel --> Sound and multimedia --> Audio --> MIDI (ME)
Then just run game with VDMSound and it should work fine.
MUNT device can be also used in Windows
- VDMSound MPU-401 emulation processes large SysEx messages slowly. This can cause some games loading much longer, especially many Sierra games
- When moving mouse in DOS program music can slow down. This is caused by VxD mouse driver which preempts Windows VM when receiving interrupt from DOS session
- Some VST hosts input/output port configurations can make sound crackling or even cause a BSOD. If you experience those problems try to change output to other MIDI device and experiment with sound frequency
- Some emulation drivers that provide Sound Blaster and MPU-401 emulation automatically set BLASTER environment. Trying to overwrite it may disable whole driver (for example Microsoft default SBEMUL.SYS). Some of them are overwriting AUTOEXEC.BAT BLASTER variable. To resolve it, BLASTER variable is set from STARTVDM.BAT each time you start a game, so you don't need to set it up in AUTOEXEC.BAT
-MUNT for Windows 9x can cause problems with Windows shutdown. Some Windows configurations have problems with closing MUNT program before ending Windows session. In this case exit MUNT manually each time you want to shut down Windows.
I've set up this only on few machines, so it's not well-tested and there are probably many bugs which I haven't seen. So when you encounter a problem or discover new improvement please post it here.