VirtualMIDISynth FAQ

This page contains a list of questions VirtualMIDISynth users asked by email or Website contact form.
If you can't find a solution to your issue, feel free to contact me and provide these info (the more the better):

  • Operating system version, including service pack and bitness (32 or 64 bit)
  • CPU type, RAM size
  • Sound card type
  • VirtualMIDISynth version installed
  • MIDI Software and soundfont you're using to play

FAQ

#1 - Troubleshooting steps to solve issues with VirtualMIDISynth

If you're experiencing problems playing MIDIs with VirtualMIDISynth, here's a list of common issues I got from users feedbacks.
Please check all of them before contacting me.

  1. VirtualMIDISynth requires a modern CPU to run.
    An Intel Core2 CPU (or newer) should be fine, like an AMD AthlonXP processor (or newer).
    RAM is not so important, 1GB should be enough unless you use a very big SF2 like CrisisGeneralMidi.
  2. Ensure all of your system drivers are updated, including video, audio, chipset, motherboard.
  3. Ensure your operating system is fully updated through Windows Update (maybe MS guys already solved your bug...).
  4. Disable your antivirus/firewall/malware detector (I don't mean Windows Firewall but any other third-part firewall software, like ZoneAlarm or Comodo).
  5. This kind of software could have some scheduled tasks running while you're playing on-stage and is still the most common cause of playing issues.
    You can't believe how many people still go on-stage with their antivirus/firewall/skype/msn active!
  6. Disable any other software running in background: skype, msn, mail checkers, printer monitor softwares, cell phone suites, 3G keys softwares.
    They all could have background tasks that unespectedly use CPU power.
  7. Set these settings to their default value:
    - Output audio device: <default>
    - Enable hardware mixing: On
    - Preload the whole soundfont: On
    - Increase process priority: On
    - Additional output buffer: 250ms
  8. Play a MIDI with VanBasco player and ChoriumRevA soundfont. The first is a really light MIDI/KAR player and the latter is a light (and good) SF2.
    Please configure VanBasco's MIDI output to use VirtualMIDISynth directly, not through MIDI Mapper (se the screenshot above).
  9. If your MIDI player has a MIDI output device setting, configure it to use VirtualMIDISynth directly instead of MIDI Mapper; this will shorten the MIDI chain and give the best results.
  10. If you hear nothing, please:
    - Double check if you have selected at least one soundfont, and this soundfont contains the instruments needed by the MIDI you're playing.
    - Try to load a General MIDI SF2 like ChoriumRevA, Weeds or Fluid (see above).
    - Open the MIDI Mixer while playing (double click on VirtualMIDISynth systray icon) and check if the output level indicator near the master volume is active.
    - If not, that means VirtualMIDISynth is not receiving MIDI data so recheck your player configuration.
    - On Vista/7/8 the system audio mixer now has a channel for each process using an audio output; open the full audio mixer (not only the master volume) and check the volume slider associated with your player.
    - VirtualMIDISynth can use another audio device for playing (other than the system default one).
    - If you have more than one audio device (usually laptops have more than one), please check that you're listening the selected one.
  11. If you still have problems, feel free to contact me providing with these info (the more the better):
        Operating system version, including service pack and bitness (32 or 64 bit)
        CPU type, RAM size
        Sound card type
        VirtualMIDISynth version installed
        MIDI Software and soundfont you're using to play

#2 - I have a delay on notes played through VirtualMIDISynth

See the advanced option "Additional output buffer" into VirtualMIDISynth confgurator.
This buffer is meant to be useful on mid-low performance systems, to avoid stutering and glitches while playing.
If you set it to 1000ms (1 second) it means that each note is player 1 second after the MIDI message is sent.
Default value is 250ms, which is an acceptable value for everyday use. VanBasco player also have a setting to delay karaoke text over music; setting it to the same value will make text and sound synchronized back again.

If you use VirtualMIDISynth for live performance (i.e. connecting an USB piano keyboard), set this buffer down to 0ms.

#3 - How can I play my USB piano keyboard through VirtualMIDISynth?

USB MIDI keyboard is a MIDI input device, while VirtualMIDISynth is a MIDI ouput device.
It's the same as microphone and speakers connected to your PC.
The only way for them to talk each other is a MIDI software configured to stream MIDI IN to MIDI OUT.

Some users had success using MIDIOX: set your USB keyboard as MIDI IN and VirtualMIDISynth as MIDI OUT.
MIDI-OX also allows you to patch the MIDI stream between them.

#4 - I have an error before play: "WARNING: Your MIDI client application is using BASS libraries, therefore VirtualMIDISynth can't load its own bundled version. Please check if your MIDI client software has an updated version available."

VirtualMIDISynth is a usermode multimedia driver, contained into a DLL. Being a DLL, it will be loaded by the MIDI application (say Player.exe) and executed into the same process (Player.exe file).
VirtualMIDISynth needs BASS libraries to work and it loads them upon start.
That said, if Player uses BASS libraries itself, VirtualMIDISynth cannot load its own copy of BASS and MUST use the ones already loaded by Player.
If those libs (the ones loaded by Player) are too old, VirtualMIDISynth won't work with them and throw this kind of error.
Sadly this is a Windows process architectural limit and can't be avoided.

Anyway I'm working on a newer VirtualMIDISynth version (2.x) that will workaround this limit.
See next FAQ for further information.

#5 - What will VirtualMIDISynth version 2.x change?

Version 2 of VirtualMIDISynth will try to solve the DLL hell issues with MIDI softwares that use BASS libraries.
As said in the previous FAQ, these programs (like KaraFun, Midifile optimizer, ...) load their bundled version of BASS libraries and VirtualMIDISynth is forced to use them.

VirtualMIDISynth 2.x will be splitted into two separate components: Driver and SoundServer (I haven't choosed a final name for the latter).
The Driver will be the only part loaded by the MIDI application, will be as small and fast as possible and will not contain any reference to BASS libs. That way it would be loaded by any MIDI application without issues at all.
The SoundServer will be the audio rendering component; will be an isolated process (.exe) and so it will load its own BASS libraries.

Pros:
- Driver DLL will be much smaller and independent
- SoundServer can be set to stay always-on, removing the current initial delay on play when the "Preload the whole soundfont" option is active
- SoundServer can easily serve more than one driver, so multiple devices can be implemented

Cons:
- communication between Driver and SoundServer is the bottleneck of the whole architecture, so it must be as fast as possible

Actually VirtualMIDISynth 2.x is in alpha stage, you can test it here.

#6 - VirtualMIDISynth is not listed as output device in Cakewalk / Sonar

This solution works for Sonar 5, but can be adapted to newer versions (here's the original Cakewalk knowledge base page):

Internal Sound Card Playback:
If you have a built-in sound card and want Cakewalk to play MIDI through the synth built into Windows, you will need to switch Cakewalk's driver mode so it can see it.

- Go to Edit > Preferences > Audio - Playback and Recording (Options > Audio > Advanced in legacy products)
- Change the Driver Mode to "MME (32-bit)" and click Apply (in legacy products put a check in the box that says "Always Use MME Interface" then click OK)
- Restart the program and let the Wave Profiler Test your hardware.
- Go to Edit > Preferences > MIDI - Devices (Options > MIDI Devices in legacy products).
- You should now see "Microsoft GS Wavetable S/W synth" under outputs.
- Select this new device and click Apply (if available) then OK.

#7 - DosBox games crash with VirtualMIDISynth

Open VirtualMIDISynth configurator -> Options and disable Increase process priority to REALTIME option.
You could also disable Preload the whole SoundFont into memory option on the same page to have a shorter startup time.

#8 - How does the Soundfont list work?

Think it like an ordered list of soundfont files, where the last loaded wins (at instrument level).
For normal use you could load a single (your preferred) soundfont and use it for all instruments.

But some users don't like some instruments contained in a SF2, so they could change them with others.
Suppose you configure a full GeneralMIDI soundfont at first position (A.SF2), then a small SF containing only your preferred Acoustic Grand Piano samples at second (B.SF2).

Now VirtualMIDISynth will use A.SF2 for all instruments except for Acoustic Grand Piano that will be played from B.SF.

Please note that all of the configured (and active) soundfonts are loaded at startup, so a long list could introduce a delay at startup.
With VirtualMIDISynth 1 you'll see this additional delay each time you play a new song (if your MIDI client releases the MIDI device in between).
VirtualMIDISynth 2 optimized this behavior by remaining alive between play sessions; this way soundfonts are loaded only once.

#9 - Are you going to support SFZ soundfont format?

SFZ is an interesting soundfont format.
To make a long story short, instead of packing audio samples and data into a single SF2 file (that could grown a lot), SFZ is a folder where each sample is in a separate audio file (can also be compressed). This folder also contain an "index" file to let the software know where the required sample is.
Sadly the underlying synth library doesn't support SFZ file format, and implementing it on my side is not possible.

There's a thread on un4seen forum asking for it... maybe you could join there and support that request ;)

#10 - How can I record VirtualMIDISynth output?

VirtualMIDISynth does not provide an option to record its output to an audio file; it is like an audio card, it only plays each MIDI command received on its input.
So it can't know when to start/stop recording; this info is only known by the MIDI player.

As a workaround you could use a software like Audacity to live record your soundcard output.

Please note that on Vista/7/8 you may need to enable the hidden Stereo Mix sound device to record your own audio.
Here's a good explanation on how to do it:
http://www.howtogeek.com/howto/39532/how-to-enable-stereo-mix-in-windows-7-to-record-audio

#11 - What happened to MIDI Mapper on Windows 8?

MIDI management under Windows became a nightmare after Windows Vista.

Windows XP: device 0 is MIDI Mapper, device 1 is Microsoft GS Wavetable Synth and so on (VirtualMIDISynth becomes the #2)
Windows Vista / 7: same as above, but MIDI Mapper configuration dialogs (control panel applet) disappeared (VirtualMIDISynth still #2)
Windows 8: no more MIDI Mapper, so device 0 is the first installed (Microsoft GS Wavetable Synth) and VirtualMIDISynth becomes #1

The worst part in Windows 8 is that in most old MIDI softwares device #0 is fixed to "MIDI Mapper".
Since this kind of device is missing on Win8, when user configures this device as output, the Microsoft GS Wavetable Synth device is used instead.
VanBasco is one of them and on Win8 shows two devices: MIDI Mapper and Microsoft GS Wavetable Synth, that link both to the same device.

#12 - How can I manually remove VirtualMIDISynth and reset multimedia drivers configuration?

VirtualMIDISynth uninstall procedure will completely cleanup all installed files (except your soundfont files) and its configuration.
Sometimes (if you installed other drivers other than VirtualMIDISynth) it could happen that the configuration becomes garbled or inconsistent.

Here's how you can reset your system to a default state.

VirtualMIDISynth manual uninstall and cleanup procedure.

Folders to delete:

  • C:\Windows\System32\VirtualMIDISynth
  • C:\Windows\SysWOW64\VirtualMIDISynt (only on 64bit systems)

Registry keys to delete:

  • HKEY_LOCAL_MACHINE\SOFTWARE\CoolSoft VirtualMIDISynth
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CoolSoft VirtualMIDISynth (only on 64bit systems)

Registry keys to edit:

These keys contain the registered multimedia drivers on the system.
To reset the registry to default state, set all midi* subkeys (midi, midi1, midi2, ..., midi9) values to wdmaud.drv.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32 (only on 64bit systems)

Default MIDI output device configurations:

The following keys contains the default MIDI device configured for MidiMapper (up to Windows 7 included) and Windows Media Player.
NOTE: if WMP keys are missing they will be recreated at next Windows Media Player configuration change / close / reopen.

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap --> szPname = Microsoft GS Wavetable Synth (up to Windows 7 included)
  • HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum\{4EFE2452-168A-11D1-BC76-00C04FB9453B}\Default MidiOut Device --> MidiOutId = FFFFFFFF
  • HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum 64-bit\{4EFE2452-168A-11D1-BC76-00C04FB9453B}\Default MidiOut Device --> MidiOutId = FFFFFFFF (only on 64bit systems)

 

#13 - How can I temporarily disable VirtualMIDISynth?

VirtualMIDISynth has no option to enable/disable it; once installed it will be always available through MIDI-Out devices.

A workaround to temporarily disable it (instead of uninstalling it) is to rename its DLL so the Operating System won't load it when needed.
VirtualMIDISynth installs up to 2 DLLs:

  • C:\Windows\System32\VirtualMIDISynth\VirtualMIDISynth.dll
  • C:\Windows\SysWOW64\VirtualMIDISynt\VirtualMIDISynth.dll (only on 64bit systems)

Renaming these DLLs will make the system unable to load them (without errors) so the virtual devices won't be available.

Now create a batch file (see here) to automate the renaming task with the following content (remove the 64bit commands if not needed).
Name it disableVMS.bat (double check that the file was not created as disable.bat.txt by Notepad).

ren C:\Windows\System32\VirtualMIDISynth\VirtualMIDISynth.dll C:\Windows\System32\VirtualMIDISynth\VirtualMIDISynth.dll.disabled
ren C:\Windows\SysWOW64\VirtualMIDISynth\VirtualMIDISynth.dll C:\Windows\SysWOW64\VirtualMIDISynth\VirtualMIDISynth.dll.disabled
pause

Now run the file (as administrator on Vista and newer) to disable VirtualMIDISynth.

NOTE: all MIDI applications must be closed, otherwise the rename will fail because the DLLs are in use.

To enable it back, create an enable.bat batch file with this content:

ren C:\Windows\System32\VirtualMIDISynth\VirtualMIDISynth.dll.disabled C:\Windows\System32\VirtualMIDISynth\VirtualMIDISynth.dll
ren C:\Windows\SysWOW64\VirtualMIDISynth\VirtualMIDISynth.dll.disabled C:\Windows\SysWOW64\VirtualMIDISynth\VirtualMIDISynth.dll
pause

And run it like the other one.

warning

Warning, JavaScript is disabled!

JavaScript is not available, maybe because you disabled it globally into your browser settings or you are using an addon like NoScript.

We do not have any dangerous JavaScript running here.
Please enable JavaScript; if you're using NoScript this image will help you adding CoolSoft to your whitelist.

Thanks for your comprehension and enjoy CoolSoft.