VOGONS


First post, by ks4

User metadata
Rank Newbie
Rank
Newbie

Introduction

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:

[HKEY_CURRENT_USER\SOFTWARE\Freeware\VDMSound]
"ShowTips"=dword:00000000
"NextTip"=dword:00000000
"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:

@ECHO OFF
call startvdm
mygame.exe
exit

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

Known bugs:
- 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.

Attachments

  • Filename
    STARTVDM.zip
    File size
    321 Bytes
    Downloads
    75 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    VDMSoundTipsFix.zip
    File size
    311 Bytes
    Downloads
    78 downloads
    File license
    Fair use/fair dealing exception
  • Filename
    VDMS.INI
    File size
    13.49 KiB
    Downloads
    77 downloads
    File license
    Fair use/fair dealing exception

Reply 1 of 4, by stanwebber

User metadata
Rank Member
Rank
Member

nice writeup. i had been using midiyoke and falcosoft midi player for vsti synths in win9x. i never thought to use vdmsound for wavetable midi in dos sessions although i've used it to replace fm for an ess es1978 laptop with no hardware opl3. i'll have to try vdmsound to eliminate dosbox. i also find virtual audio cable & repeater very useful for playing multiple applications simultaneously with vxd sound drivers:
https://software.muzychenko.net/en/virtual-audio-cable-3/

i had an issue with system shutdowns using munt as well. i had kernelex installed and it was disabled for munt. when i enabled kernelex for munt my system was able to shut down properly.

edit: unfortunately, i don't think this method is possible with vxd sound drivers. the drivers take direct control of the soundcard in a dos session and lock out any other windows applications like munt (or munt locks out the drivers if started first). virtual audio cable is no help here as vxd dos support talks directly to the device. the only workarounds i see are wdm drivers (virtual kernel mixer) or a 2nd soundcard (preferably with wdm drivers).

Reply 2 of 4, by stanwebber

User metadata
Rank Member
Rank
Member

my motherboard has cmi8738 sound onboard so i enabled it and installed wdm drivers with the mpu-401 and joystick ports disabled. i routed the audio-out to the audio-in on my cs4232 soundcard (vxd).

vdmsound wavetable midi works ok for some games. i completely removed the soundblaster modules and switched everything over from directsound to waveout in the ini file so my cs4232 could take over sbpro2 duties. for some reason the vdmsound adlib emulation runs really slow on every game i've tried. i don't think it's cpu constrained as i've tried this on a p3 1ghz and k7 1.8ghz with the same result. so much for a dosbox killer...

daggerfall crashes my system after about 15sec of vdmsound wavetable playback no matter what. the setup program even ignores the emulated adlib and plays back midi on my awful cs4232/cs9233 fm synth.

Reply 3 of 4, by ks4

User metadata
Rank Newbie
Rank
Newbie
stanwebber wrote on 2023-06-04, 17:49:

my motherboard has cmi8738 sound onboard so i enabled it and installed wdm drivers with the mpu-401 and joystick ports disabled. i routed the audio-out to the audio-in on my cs4232 soundcard (vxd).

Combining WDM and VxD sound drivers in one machine is a straight way to BSoD. They use different mixers, so all system becomes very unstable and can have unpredictable behaviour.

stanwebber wrote on 2023-06-04, 17:49:

vdmsound wavetable midi works ok for some games. i completely removed the soundblaster modules and switched everything over from directsound to waveout in the ini file so my cs4232 could take over sbpro2 duties. for some reason the vdmsound adlib emulation runs really slow on every game i've tried. i don't think it's cpu constrained as i've tried this on a p3 1ghz and k7 1.8ghz with the same result. so much for a dosbox killer...

I've also experienced VDMSound very slow emulation on much faster machine (P4 OC 3.85 GHz), so it's the VDMSound problem. Because of it I recommend to disable both Sound Blaster and Adlib emulation and leave only MPU-401 and use other OPL/Sound Blaster emulator often provided by PCI sound cards VxD drivers. You have CMI8738 which has also VxD drivers which you can use instead of WDM. Then you can get OPL3 emulation, and as a side effect - poor Sound Blaster and MPU-401 emulator, which you should redirect to other ports to avoid conflict with your CS4232 better ones.

Reply 4 of 4, by stanwebber

User metadata
Rank Member
Rank
Member

i'm starting to favor this method over dosbox. with all dma, sb, adlib, joystick modules disabled and the mpu-401 address set to overlay over 0x330, vdmsound win9x is working somewhat reliably. one particular advantage over dosbox is the use of mapper files to convert to & from gm or mt-32. i've installed all the softsynths i could find and it's interesting to hear them render mt-32 soundtracks with few or no custom instruments. so far i've been able to install the following on the same box:
- roland vsc
- yamaha s-yxg100 plus
- conexant/rockwell wavestream
- casio sw-10
- faith websynth d77
- wingroove
- timidity++ (maybe fluidsynth?)
- falcosoft midiplayer (bassmidi & vsti)
- microsoft synthesizer (dls)
- microsoft gs wavetable (wdm)
- munt

in addition i have some hardware wavetable (admos, samsung, dream, crystal) cards which have no mt-32 mode utility which also benefit from the vdmsound mapper files.