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. Synchronization 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.

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

Latest version: 2.0.1

Latest development version: 2.1 RC2

Development version history: Read changelog chart below

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

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

2.x Alpha build history

Alpha3 - July 18th 2014

Release Notes:

  • NEW: Multiple devices. (up to 4)
  • NEW: Multiple MIDI mixers. (one for each device)
  •  NEW: Settings live change while playing, including soundfonts.
  • NEW: Resizable and scrollable configurator dialog.
  • NEW: Driver/synth separation and fast performance IPC communication channel.
  • NEW: Window snap.

Alpha4 - July 30th 2014

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

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

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

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

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

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

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

Release notes:

  • FIX: x64 working again (alpha10 regression).

Alpha12 - April 11th 2015

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 2015

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 2015

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 2015

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 2015

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.

Alpha17 - July 22nd 2015

Release notes:

  • FIX: Fixed "Another instance of VirtualMIDISynth is already running..." bug when quickly restarting more than one instance of the synth.
  • FIX: Lowered update FAST mode threshold: 1ms update rate is now active for most of the time.
  • FIX: IPC MIDI queue deadlock with really fast rate MIDI traffic.
  • FIX: Optimized MIDI queue efficiency.

Alpha18 - July 29th 2015

Release notes:

  • NEW: Driver now returns MMSYSERR_NOTREADY if the queue is full; now is up to the MIDI client to decide if wait for queue free space or give up.
  • FIX: Fixed queue overflow issue.
  • FIX: MIDI Mixer sometimes stops updating.

Alpha19 - August 6th 2015

Release notes:

  • NEW: Added support for SFZ soundfonts.
  • FIX: Fixed paint issues when scrolling Options configuration tab.

Alpha20 - August 30th 2015

Release notes:

  • NEW: User can now add custom exe names to driver blacklist. These blacklisted executables won't load VirtualMIDISynth anymore.
    NOTE: actually there's no GUI for this feature, custom names must be manually added to VirtualMIDISynth.conf file, section "[Advanced]", key "ClientBlacklist".
  • NEW: Updated BASSMIDI to
  • FIX: Optimized configuration parser.

Alpha21 - September 17th 2015

Release notes:

  • NEW: SoundFont filename can now be changed by double-clicking on it in soundfonts list.
  • NEW: SoundFont filesize is now shown in soundfonts list.
  • NEW: Increased voices limit to 2000, following BASSMIDI changes.
  • NEW: Updated BASSMIDI to
  • FIX: MIDI devices now persist their state when BASS is restarted (i.e. after a configuration changes).
  • FIX: VirtualMIDISynth does not crash anymore if it goes out-of-memory loading large soundfonts.

Alpha22 - September 27th 2015

Release notes:

  • NEW: MIDIConverter feature to convert MIDI files to analog (WAV/MP3/FLAC). MIDIConverter uses the soundfont configuration of device #1. This feature is accessible from systray menu.
  • NEW: Optimized settings save/load to/from configuration file.

Alpha23 - September 28th 2015

Release notes:

  • FIX: Added missing bassenc.dll to setup.
  • FIX: Extended error message in case of missing external encoder.
  • FIX: MIDIConverter input file selection doesn't work.
  • FIX: MIDIConverter rendering issues on Win8+.

Alpha24 - October 20th 2015

Release notes:

  • NEW: Configurator tab "About" now has a button to generate a detailed configuration report, to be used for error reporting and debugging.
  • FIX: Optimized MIDI queue; NoteOFF messages now are not dropped in case of a queue-full situation. This should reduce stale notes with Black MIDIs.
  • FIX: Restored resize grip on bottom-right corner of Configurator dialog.

2.x Beta build history

Beta 1 - January 5th 2016

Release notes:

  • NEW: Synth component now has a native x64 version for x64 operating systems only.

This will allow using more than 4GB of memory for soundfonts. Driver still has x86/x64 versions to let x86 MIDI programs work.

  • NEW: VirtualMIDISynth is now installed into its own folder under %PROGRAMFILES% (except for the Driver DLL only, that must reside in \System32 subfolder).
  • NEW: Devices selector in MIDIMapper configuration tab now shows both x86 and x64 installed devices (x64 synth only).
  • NEW: Soundfont list can now be imported/exported from/to external files to make it easier to switch between configuration sets.
  • NEW: Mixer status can now be imported/exported from/to external files to make it easier to switch between configuration sets.
  • NEW: Added a dialog to edit custom client blacklist items.
  • NEW: Added setup option to make VirtualMIDISynth automatically start with Windows.
  • NEW: Added version update check feature.
  • NEW: Updated BASS to version, BASSMIDI to version, BASSENC to version
  • NEW: Increased max voices limit to 100000 (kinda useless for realtime playing, but useful for MIDI-->wav/mp3/flac converter).
  • NEW: Added new command line options to VirtualMIDISynth.exe:

--configurator: opens the configurator dialog --converter: opens MIDI Converter dialog

  • NEW: Added new start menu shortcuts to open configurator, MIDI Converter and encoders folder.
  • NEW: BASS errors will now show a more descriptive text instead of their code.
  • FIX: Fixed handling of external encoders, now they have a dedicated subfolder.

FIX: Restored the button to change soundfont filename in soundfont editor.

Beta 2 - January 9th 2016

Release notes:

  • NEW: Soundfont property editor now shows soundfont details like name, copyright, comment and contained presets.
  • FIX: MIDI Client was sometimes returned a wrong queue-full value.

This also made the alpha24 feature "Optimized MIDI queue; NoteOFF messages now are not dropped in case of a queue-full situation..." broken and useless.

  • FIX: Fixed wrong BASS error message descriptions.
  • FIX: Setup won't wait for the previous version uninstaller to complete before proceeding.

Beta 3 - January 14th 2016

Release notes:

  • NEW: Readme file is now in HTML format, with better readability and formatting.
  • FIX: Reupdated BASS to version, BASSMIDI to version, BASSENC to version (were downgraded in beta2).
  • FIX: Uninstall doesn't completely uninstall VMS, leaving some keys around (i.e. Autostart with windows).
  • FIX: Soundfont editor now detects changes to soundfont configuration instead of simply relying on the button (Ok or Cancel) used to close its window.
  • FIX: Message boxes as long as soundfont and blacklist editors now have a parent window to avoid them being hidden below other windows.
  • FIX: MIDI conversion to WAV gives an error under certain conditions.

Beta 4 - January 28th 2016

Release notes:

  • NEW: Readme file is now in HTML format, with better readability and formatting.
  • FIX: Soundfont volume setting only works at 100%, any other value make it silent.
  • FIX: Added a workaround for Chrome that hides the "Device is already in use..." message (chrome.exe process).
  • FIX: Debug report now doesn't show "Missing keys" errors on Win8+.

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 ~ Not anymore, as of Beta 1.


  • Unstable, the external synth (VirtualMIDISynth.exe) can crash anytime, but improving every version