VirtualMIDISynth

VirtualMIDISynth is a software MIDI synthesizer implemented as a Windows multimedia user driver, accessible as a standard MIDI Out device.

It works on Windows XP (SP3) / Vista (SP1) / 7 (SP1) / 8.x / 10 (both x86 and x64), and is based on the great BASS library from un4seen.

Introduction

Playing a MIDI (o karaoke) file on Windows has always been a poor-quality experience, because the well known bundled "Microsoft GS Wavetable Synth" synth is just... ehm... simple: poor samples, mono sound, no effects (reverb, chorus) support.

Software synts deeply improve quality, but sometimes they're difficult to install or limited to specific uses, like the ones integrated in some DAWs or karaoke players.

Till Windows XP some virtual devices existed on 32bits systems, like the well-known YAMAHA XG SoftSynthetizer S-YXG50 and Cakewalk-sfz+ (both unsupported now).
Nowadays, on x64 systems, we're out of luck: none of them works anymore.

One day Ian Luck (un4seen) added to his BASSMidi library a great feature: the possibility to render a live MIDI stream, including SysEx messages. I quickly realized that, if only I could intercept that MIDI stream and drive it through Ian's library, well, we would have got a great MIDI Synth.
The challenge was to create a good quality synth and keep the end user away from complicated virtual MIDI chains (ever tried VanBasco -> MIDI Yoke/LoopBe1 -> SynthFont chain ?).

User only needs a new virtual MIDI Out device, select it as output on his preferred player settings and... start playing, nothing more.

Here we are, VirtualMIDISynth is the answer: an user mode multimedia x86/x64 driver that works on Windows XP / Vista / 7 / 8 / 10 (both x86 and x64), implemented as a MIDI Out virtual device.

Main features

  • User mode multimedia driver, no reboots, no BSOD
  • Directly accessible as MIDI Out device, no need for virtual MIDI cables (like MIDI Yoke, LoopBe1)
  • Supports up to 4 virtual devices, each with its own soundfont configuration (new in version 2.x)
  • Virtually unlimited polyphony (limited only by available CPU power)
  • MIDI mixer to set track mute/volume, accessible through systray icon
  • Integrated MIDI converter to easily convert your MIDI files to WAV/MP3/FLAC
  • Lightweight setup (~1.2 MBytes)
  • No DLL cluttering, everything is self contained installation folder (except for MIDI device driver) (new in version 2.x)
  • Clean installer, won't affect other MIDI devices
  • Efficient RAM usage (allows using large SoundFonts, > 1GByte)
  • Load soundFonts (up to available memory), enable/disable/chain them at your will; native 64bit version (on x64 OS) is not limited to 4GByte (new in version 2.x)
  • Configure MIDI Mapper default device (this feature is already available in XP, but missing in Vista / Windows 7)
  • Windows 8/10 users can also install CoolSoft MIDIMapper and configure it straight from VirtualMIDISynth configurator to get the well-known MIDI Mapper back to their systems
  • Multilanguage dialogs.
    If you want to help in translation, see here for status then get in touch to have access to the online translation system.

Take a look at the TODO list of what features you'll find in next versions or propose your ideas.

What now?

Well, having a better MIDI experience is easy as 1-2-3:

  • Download VirtualMIDISynth setup following the link at the bottom of this page and install it (you need administrative privileges)
  • Download a SoundFont (you'll find a list of free high quality files below), save it locally on your computer and add it to VirtualMIDISynth
  • Run your favourite MIDI application and configure it to use VirtualMIDISynth (or set VirtualMIDISynth as your default MIDI Out device)
  • Donate to CoolSoft ;)
    oops, this step was not mandatory, anyway... thanks for doing it!

Maxime Abbey wrote a really detailed documentation on how to setup and configure VirtualMIDISynth; you can find it here.

FAQ & Troubleshooting

Why are you still playing MIDI files? Have you ever heard of MP3?
Well, first because MIDIs are cool and compact; in a few megabytes you can store thousands songs.
Second, I love Karaoke; VanBasco is one of my preferred MIDI/KAR players.
Third, with MIDI you can silent some tracks, change tempo and pitch easily.

I tried playing a MIDI file on my PC, and it sucks!
I agree, that's why I wrote VirtualMIDISynth!
MIDI only contains "instructions" on what should be played: instruments, notes, their length, power and so on. It's up to the synthesizer to generate sound from these "commands".
The bundled Windows synthesizer, "Microsoft GS Wavetable Synth", is the worst.

Which players work with VirtualMIDISynth?
VirtualMIDISynth works with Windows Mediaplayer and MPlayer classic. Since these players cannot change their MIDI out device, you must set VirtualMIDISynth as your default device.
I suggest you to try VanBasco player, which is one of the best MIDI/KAR players around.

How much does it cost?
VirtualMIDISynth is freeware, you can use it as you like.
If you use it "professionally" you're encouraged to make a donation.

Why are you releasing it for free?
Because the greatest part of MIDI synthesis is done by BASS libraries from un4seen; I only wrapped them in a Windows driver and gave them an easy to use interface.

That's great, how can I thank you?
Join to the forum and help other users, or promote it to your friends / forums / social networks.
You could also support development with a donation.

Is there a tutorial available?
Don Allen wrote a great setup tutorial on MIDIKAR Yahoo group, freely available here.
That group is full of great MIDI experts and enthusiastics, please follow it.

If you're experiencing problems using VirtualMIDISynth, here's a list of common issues already solved.
Please check all of them before reporting a bug.
VanBasco

License

VirtualMIDISynth is freeware, use it as you like.
Donations are welcome, especially if you earn money with it (live performances, public karaoke sessions, ...).

SoundFonts

Here you'll find a list of some free and quality SoundFonts available on the net.
Please let me know if I miss something or if any link dies...

Some fonts are compressed with sfArk or sfPack.
This page contains links to decompressors: http://woolyss.com/chipmusic-soundfonts.php#compressors
You could also try this online converter: https://cloudconvert.com/sfark-to-sf2

FREE

MIXED LICENSING

  • Good list of soundfonts, suggested one is 084.0mg ALL In ONE GM V1.1 Bank.sf2
    (sorry, I can't read Japanese so I can't categorize its licensing)

DONATION

References

Links to sites that talk about us:

Translations

Latest stable version includes these languages: English, Italian, French, Spanish, German, Greek, Portuguese (Portugal), Russian, Japanese, Polish, Finnish, Danish, Indonesian, Czech, Dutch, Hungarian, Chinese (simplified), Chinese Traditional (Taiwan), Thai, Turkish, Korean, Ukrainian, Vietnamese.

You're welcome to help in translation: VirtualMIDISynth has an on-line translation system that's really easy to use: see here for current language status then get in touch, I'll create a "translator" account (or allow your already existing account to access the translation system) and you're ready to go.

Version history 

v.2.5.2 - 2018-08-05

FIX Improved BASS_MIDI_FONT_XGDRUMS algorithm detection.
FIX Fixed autostart registry setting.
NEW Added Serbian latin translation, updated Ucrainian, Thai and Chinese simplified.

v.2.5.1 - 2018-07-12

NEW MIDI Mixer volume level indicator now shows both left and right levels.
FIX Improved volume level running average algorithm to better detect peaks.
NEW False positive peaks shown by volume level indicator when opening/closing MIDI clients.

v.2.5.0 - 2018-06-26

NEW Added MIDI Mixer to MIDI Converter.
NEW Added channel "solo" feature to MIDI Mixer.
It can be enabled/disabled by clicking on the new "solo" button or by pressing the S key (while the channel is selected).
Solo ratio can be configured with Mixer context menu.
NEW MIDI Converter window can now be snapped to others.
NEW Mixer button in MIDI Converter shows (*) when Mixer is not in default state.
NEW Added new "clone" feature to MIDI Mixer that lets user clone Mixer state from another mixer.
NEW Added new "settings" icon to MIDI Mixer to ease opening its contextual menu.
NEW Added peak indicator to MIDI Mixer master channel.
NEW Added icons to systray context menu, MIDI Mixer context menu and MIDI Converter window.
NEW New soundfont option that let VMS use bank 127 as drumkit in XG mode, instead of the default 128.
FIX Mouse pointer goes out of dialog title when undocking or unmaximizing a window by dragging it with mouse (Aero docking/undocking feature).
FIX Fixed options tab layout errors when maximizing/unmaximizing the configuration window.
FIX Entering numeric values with keyboard in soundfont editor fields is difficult because cursor position changes after each key press.
FIX Added forced Mixer repaint when a new MidiDeviceInstance is created to avoid Mixer still show old program names.
FIX Soundfont configuration import dialog allows user to select an unexisting .vmssf file, leading to current SF configuration being cleared.
FIX Soundfont configuration tab buttons do not update their state after import.
FIX Clicking to enable/disable a partially visible SoundFont item at the bottom/top of soundfonts list cause the previous/next item to be enabled/disabled.
FIX Fixed wrong interpretation of NOTE_OFF MIDI events, leading to MIDI Mixer channel LEDs (except for channel 1) stay ON forever.
FIX Fixed setup procedure not creating registry keys on x86 systems (2.4.0 regression).
FIX Wrong watchdog initialization caused disconnection of MIDI clients that open the device and do not immediately send another message.
FIX Exported MIDI Mixer state file can't be imported on another device mixer (with a different #id).

v.2.4.1 - 2018-06-04

FIX Fixed setup procedure not creating registry keys on x86 systems (2.4.0 regression).

v.2.4.0 - 2018-05-02

NEW Each VirtualMIDISynth MIDI device can now be assigned to a different analog output device.
NEW New output device selector that shows each VMS device together with its assigned output device.
NEW Updated setup procedure to improve compatibility with newer Windows 10 versions.
FIX Fixed driver crash when client process tries to open the same DeviceID more than once.
FIX Close any device left open by broken clients that do not send the expected MODM_CLOSE messages.
FIX Fixed bug in setup procedure causing unneeded reboot request.

v.2.3.2 - 2018-03-20

FIX Fixed bug in setup procedure that leads to unneeded reboot request

v.2.3.1 - 2018-03-16

NEW Improved MIDI converter efficiency and let it use Reverb/Chorus settings
NEW Extended error messages in case of failure of x86 MIDI devices enumeration
FIX Fixed bug in watchdog that caused paused MIDI clients to disappear when another client is disconnected
FIX If a loaded soundfont is removed from soundfonts list, its handle is not released and the SF2 file is kept in use
FIX Optimized Reverb/Chorus SysEx management

v.2.3.0 - 2018-01-16

NEW If <default> output device is selected and Windows default output device is changed while playing, VMS will automatically switch to the new default device (@Falcosoft: thanks for your suggestion).
NEW Updated BASS.dll to version 2.4.13.2.
FIX Window snapping now works correctly with Windows 10 trasparent borders.
FIX Fixed a memory leak in device opening/closing.
FIX Optimized memory allocation and usage.
FIX Watchdog thread sometimes got stuck in a dead-lock instead of being terminated.

v.2.2.1 - 2017-12-24

NEW New configuration option to enable/disable windows snap.
FIX Improved window snap on Vista+, now excluding no-title, minimized, maximized, system and overlapped target windows.
FIX Fixed possible deadlock on IPC watchdog when quickly and repeatedly opening/closing devices.
FIX Fixed crash when showing balloons longer than 256 chars.

v.2.2.0 - 2017-11-27

NEW MIDI converter support to batch conversion of multiple files at once.
NEW User can now pass custom parameters to external encoder (actually MP3/FLAC formats are supported).
FIX MIDI converter doesn't use configured Reverb and Chorus settings.
FIX It's now possible to add the same soundfont multiple times, with different preset/bank settings.
FIX Minimum accepted bank value changed to -128 (with preset = -1).

v.2.1.0 - 2017-10-31

NEW Virtual MIDI devices can now be shared between process and opened multiple times. Each client will see each of them as it was the only one.
NEW Better soundfont Preset/Bank management (@Falcosoft: thanks for your help).
NEW Updated BASSMIDI.dll to version 2.4.11.0.
NEW Added Greek, Thai and Vietnamese translations.
FIX Increased watchdog timeout to avoid disconnection of long startup clients.
FIX Fixed update checker that won't stop notifying users when an update has been found before setting check frequency to "Never".
FIX Uninstaller now restores the default device both for MIDIMapper and Active Movie.
FIX Missing vertical scrollbar in Soundfont list at first config dialog open.

v.2.0.1 - 2017-04-23

NEW Added Korean and Ukrainian translations.
NEW Added analog audio devices list to debug report.
FIX MIDI Mixer context menu is now shown both when right clicking on title bar and pressing the Application key.
FIX Fixed vertical scrollbar in options tab becoming transparent on Win10, making it unaccessible.
FIX Reverb and chorus override is not applied live to active devices.
FIX Some MIDI messages (0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFE, 0xFF) could not be processed correctly.
FIX Fixed wrong "Bank MSB/LSB" handling (control change 0 and 32).
FIX Post-setup custom dialog is disabled on Win8+ due to undefined variable.

v.2.0.0 - 2017-03-22

NEW Multiple virtual devices supported (up to 4), each one with its soundfont configuration.
NEW No more DLL conflicts, driver component (loaded by MIDI client) is now lightweight and independent from the synth component.
NEW MIDI Mixer can now stay open when play stops.
NEW MIDI Mixer can now be kept on top of other windows.
NEW Instant play start (if synth is already started), no more soundfont load delay.
NEW Integrated MIDI --> WAV/MP3/FLAC converter to easily perform MIDI file conversion.
NEW Soundfont configuration editor to set bank, preset and volume. It also shows soundfont details like contained presets.
NEW Native 64bit for 64bit operating systems; now all the available system memory can be used to load soundfonts.
NEW Integration with CoolSoft MIDIMapper.
NEW Customizable MIDI client blacklist to exclude misbehaving clients.
NEW Redesigned (and resizable) configuration dialog.
NEW Configuration report feature, to ease bug reporting.
NEW Version 2.x introduces some other architectural changes, see here for further technical details about them (respect to 1.x series).

Download

VirtualMIDISynth automatically notifies its updates (if enabled), otherwise you can subscribe in the announcements forum to be notified.
Beta versions are announced in the same place, please subscribe there.

NOTE: legacy 1.x version of VirtualMIDISynth is still available here, but it's not supported anymore.
All users are encouraged to update to 2.x series.
Read here for further info about what's new in 2.x series.

Mirroring, repackaging and any other way to redistribute my software to end users from outside coolsoft.altervista.org is FORBIDDEN! (unless expressly authorized)
Links to this page are welcome (do not use HTML #fragments and do not link the .exe file directly).

ANTIVIRUS FALSE POSITIVE WARNING: some antiviruses are reporting CoolSoft VirtualMIDISynth (and also CoolSoft MIDIMapper) as infected.
These are false positives, maybe due to the fact that both softwares install some components in "sensitive" system folders like C:\Windows\System32.
To be cristal clear with my users I always publish a VirusTotal scan report link next to each download, even if it contains those false positives.
There's no way for me to demonstrate I'm right; submitting my files to each AV vendor is simply unfeasible.
Read here for further details.

CoolSoft_VirtualMIDISynth_2.5.2.exe
Descrizione Stable version
Release date 2018-Ago-05 Dimensione 1,357,388 bytes
MD5 0bfcd5ea85be9b866079bd5bcf12409b
SHA1 c019b2c77b85c47c39ff9b370c06bb01c0c93655
SHA256 64278aecd91aac72b2c308692dd0a1b8deda62876c50234b6979ad6ea2e58a13
Virus check Open virus check report
CoolSoft_VirtualMIDISynth_2.4.1.exe
Descrizione Previous stable version
Release date 2018-Giu-04 Dimensione 1,336,415 bytes
MD5 e189d844c308e2169ee48af15bf86956
SHA1 2f16f16c70d73f060296babbc7628dc94db66494
SHA256 9a0e8f9cfafb2f93200665deb615ec190d477849de5a3a40d00656d7c8f41e94
Virus check Open virus check report

Beta versions

VirtualMIDISynth beta versions are released on the Announcenments forum.
Feel free to subscribe to the whole forum or its single threads to be notified about new releases.

...no beta actually available...

NOTE: you must register to be able to download forum attachments.
BEWARE: beta versions are only for the braves! Feel free to experience issues and help in testing their fixes ;)

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.