Merge-split-transwiki default
Impossible Music Wikia has been moved to Official Black MIDI Wikia.

Due to some administrative difficulties, it is no longer possible to moderate the contents of this wiki. Because of that, this wiki will be abandoned and all updates will be done on the new wiki. We are sorry for the inconvenience.

To visit this page on the new wiki, click here.

VirtualMIDISynth 2.x is the second generation of VirtualMIDISynth. 2.x introduces a deep and important architectural change: Driver and Synth components have been split in two distinct parts, while the Configurator is now included into the new Synth.

The driver is still a DLL, loaded by the MIDI application as 1.x, but now it only contains the "windows multimedia driver" parts needed to identify the virtual MIDI device ("CoolSoft VirtualMIDISynth") to the system and receive MIDI streams from MIDI applications outputs.

The received MIDI stream is then forwarded to the new Synth component: a new, isolated and independent process that listens to VMS2 driver instances and plays the received MIDI streams. Syncronization between multiple driver instances could be done easily, from a single point.

Required BASS libraries are now loaded by the Synth process; so a MIDI application can use BASSMIDI Driver using BASS v.2.2 and VMS using BASS v.2.4 with no issues.

VirtualMIDISynth 2 is currently at alpha/beta stage, and therefore is not by any means complete nor a stable release.

It is encouraged that we test the software out and leave feedback, reporting any additional bugs found to aid development.


Sound Set: Any *.sf2* files

Polyphony: Adjustable between 16-1000 notes by the configurator

Latest alpha version: Alpha16

Alpha version history: Read changelog chart below

VirtualMIDISynth v.2.0.0 alpha development discussion: Can be found here

Readme: Yes

Driver path: Only a 32-bit driver is used, and will cover both 32-bit and 64-bit MIDI players.
32-bit O.S.: %windir%\system32\VirtualMIDISynth
64-bit O.S.: %windir%\SysWOW64\VirtualMIDISynth

Sound Quality: Med-High

MIDI OUT Ports: 1 (Default), up to 4 ports
Port 1: "VirtualMIDISynth #1"
Port 2: "VirtualMIDISynth #2"
Port 3: "VirtualMIDISynth #3"
Port 4: "VirtualMIDISynth #4"

2.x Alpha build history Edit

Alpha4 - July 30th 2014 Edit

Release Notes:

  • FIX: "Unknown client IPC command: 3" error message.
  • FIX: MIDI reset commands were badly interpreted, leading to crashes or bad behaviour (like wrong program names on Mixer).
  •        FIX: Settings not saved pressing OK (clicking on Apply works).

Alpha5 - August 8th 2014 Edit

Release Notes:

  • NEW: Added a watchdog to "driver <--> synth" IPC channel to silent audio in case of a driver/MIDI player crash.
  •        NEW: Configurator window now has a complete system menu that includes window Minimize and Restore commands.
  •        NEW: Only a single instance of the driver can be opened at a time. The other ones will receive a "device is busy" error message.
  •        NEW: The "No soundfont warning" MessageBox has been replaced by a Systray balloon.
  •        FIX: Fixed configurator dialog Minimize button, not working on some systems.
  •        FIX: Configurator won't open after installation.

Alpha6 - September 12th 2014 Edit

Release Notes:

  • NEW: Rewritten (and optimized) MIDI message queue.
  • NEW: Updated BASSMIDI.dll to version
  • NEW: MaxVoices parameter now accepts a maximum value of 1000.

Alpha7 - November 3rd 2014 Edit

Release notes:

  • NEW: Rewritten IPC queue between driver and synth processes, now fully async.
  • NEW: Synth systray icon was not removed on application close.
  • NEW: Configurator and MIDI Mixer windows now snap to desktop edges when moving.
  • FIX: Fixed wrong Master channel label.
  • FIX: Device busy test is now working again.
  • FIX: Avoid MIDI client crash when synth closes.

Alpha8 - March 1st 2015 Edit

Release notes:

  • NEW: Added multi-device support (2 devices are active)
  • NEW: Live apply of most of settings, including soundfonts.
  • NEW: Redesigned configurator dialog, now is bigger, resizable and scrollable.
  • NEW: Updated BASS to 2.4.10 and BASSMIDI to 2.4.9.
  • FIX: Added check to avoid adding an already existing soundfont to the list.

Alpha9 - March 7th 2015 Edit

Release notes:

  • NEW: Soundfont add dialog can now add more than one SF at a time (limit increased to 50).
  • NEW: Soundfont list management buttons now are enabled/disabled based on list state.
  • NEW: Soundfonts can now be enabled/disabled with numeric keyboard keys.
  • FIX: Removed lag introduced in alpha7 to MIDI clients that open/close the devicequickly (like GZDoom).
  •        FIX: Configurator tab pages controls can now be focused using TAB key.
  •        FIX: Fixed flickering with Aero in Win 8.1 and Win 7.

Alpha10 - March 19th 2015 Edit

Release notes:

  • NEW: Setup now detects processes locking x64 version of the driver.
  • NEW: Mixer window open/close status is now preserved between instances. Removed option to automatically open mixer, now useless.
  •        NEW: Added context menu to mixer to allow quick mute/unmute/reset of channels.
  •        FIX: Added support for softwares using more than one device per driver instance (like Reaper).
  •        FIX: Options with UpDown controls now working again (alpha9 regression).
  •        FIX: MIDI default device selection (alpha9 regression).
  •        FIX: Mixers show wrong volume level (VUMeter was shared between devices).
  •        FIX: Resize issues of Configurator tabs and "Additional buffer" option.

Alpha11 - March 20th 2015 Edit

Release notes:

  • FIX: x64 working again (alpha10 regression).

Alpha12 - April 11th 2015 Edit

Release notes:

  • NEW: Changed MIDI device name to a shortest form: "VirtualMIDISynth #x" instead of "CoolSoft VirtualMIDISynth (#x)" to make it easily recognizable in clients with short dialog controls (like some game emulators).
  • NEW: Added soundfont bank/preset support: double click on soundfont list items to set.
  • NEW: Soundfont preload is not a global option anymore; it is now an option of each soundfont.
  • NEW: Starting another instance of synth won't show the error message "Another instance is already running..." anymore; existing instance will now open its configurator dialog.
  • FIX: Fixed crashes in x64 build, causing some x64 softwares (like TeamSpeak Client 3 and possibly other x64 MIDI players) to crash under Win8.1.
  • FIX: Fixed wrong soundfont device assignment under some circumstances.
  • FIX: Fixed watchdog implementation, rewritten from scratch.

Alpha13 - April 29th 2015Edit

Release notes:

  • NEW: Gain can now be set for each soundfont, allowing quieter/louder soundfonts to play together.
  • NEW: Virtual devices count is now a user configurable option, from 1 up to 4. Once changed, VirtualMIDISynth must be restarted to enable it.
  • NEW: Dialogs can now be snapped to all active windows.
  • NEW: Upgraded bassmidi.dll to version that brings noticeable improvement in MIDI rendering efficiency with less CPU usage.
  • NEW: Added a new "About" tab to configurator, with some runtime informations.
  • NEW: A warning message is shown if the synth is closed with active clients.
  • FIX: Fixed Options tab controls overlapping.

Alpha14 - May 26th 2015Edit

Release notes:

  • NEW: All settings changes can now be applied live.
  • NEW: Mixers can now be kept always on-top (through mixer context menu).
  • NEW: Option to set CPU usage limit.
  • NEW: Option to enable dynamic voices limit control.
  • NEW: Option to release only the last occurrence of a note when voices limit is reached.
  • NEW: Option to enable "sinc interpolation" (BASS_MIDI_SINCINTER flag).
  • NEW: Status box (into About tab) now auto updates its content when needed.
  • NEW: Added OS, memory, MIDI client and active voices info to Status box.
  • FIX: Improved soundfonts loading and their assignment to devices.
  • FIX: An error message is now shown when a soundfont file fails to load.
  • FIX: Fixed painting issues when resizing configurator dialog under Win8.
  • FIX: Fixed detection of WinXP-x64 that hasn't SP3 available.
  • FIX: Fixed linker parameter that prevented VMS running on XP

Alpha15 - June 7th 2015Edit

Release notes:

  • NEW: Status box in About tab now updates itself more frequently.
  • NEW: New statistic added to status box: BASS update rate.
  • FIX: Dynamic voices limit algorithm fixed, now it only increases BASS update frequency without touching voices limit. Also removed configuration option, now it's always active.
  • FIX: Changed description of CPU limit setting (in BASS it's not a CPU percentage, like windows task manager, but render/play rate).

Alpha16 - June 25th 2015Edit

Release notes:

  • NEW: Confirmation dialog, shown when VirtualMIDISynthAdd is being closed, now shows active clients process names and PIDs.
  • FIX: Lowered fast-mode threshold level, it now switches to 1ms update rate even with non-intensive MIDIs to avoid stuttering.
  • FIX: Disable Mixer VUMeter option is not applied live.
  • FIX: Increased watchdog timeout from 2 to 5 seconds, to avoid false positives when playing black MIDIs.

Show/Hide ChangeLog



  • Fixes MIDITrail crashing problem
  • Fixes hang at playback start
  • Soundfonts can be changed without restarting driver
  • Two driver devices are supported
  • Can give higher performance than 1.x


  • Currently unreleased, in alpha/beta state
  • Unstable, the external synth (VirtualMIDISynth.exe) can crash anytime, but improving every version
Community content is available under CC-BY-SA unless otherwise noted.