====================================================================
VirtualMIDISynth 2.x entered the Beta stage, Beta1 has been released in a new thread here.
This thread is now closed, please post your comments there.
====================================================================
This thread has been started to let all VirtualMIDISynth 1.x users test the preview of next major version: version 2.x series, VMS2 from now on.
If you're an unexperienced VirtualMIDISynth user you should not try alpha/beta versions but fallback to the stable 1.x versions.
WARNING: VMS2 is actually in alpha stage; it means that it's still experimental, consider it as a preview and DO NOT use it during your live performances. Don't worry your system won't be messed up and you can remove it completely (and get back to VMS1), but errors and any other issue could happen unexpectedly.
What's wrong with VirtualMIDISynth 1.x ?
VirtualMIDISynth 1.x is (technically) a DLL, loaded by a MIDI application (typically a MIDI player like VanBasco or WMP) with the help of Windows User Mode Multimedia driver architecture.
It works great, but this architecture has some important drawbacks:
- Being a DLL, VMS can't control when it's being loaded or unloaded.
Suppose you have a MIDI that ends with a sustained note and you play it with a player that releases the DLL immediately after the last note has been played. VMS will be unloaded (and it can't delay) then sound will be truncated with no chances to play the last sustained note correctly. - DLL loading and unloading is controlled by the MIDI application; some do a good job, waiting a little bit before unloading the DLL, while others (more conservative) unload it immediately after use. Since VMS needs a few seconds to initialize (more if the "preload soundfont" option is active and a large soundfont must be loaded), playing more than one MIDI one after the other with such players adds pauses between tracks.
- VMS uses BASS libraries to synthesize the received MIDI stream. That's good, but only if the MIDI player doesn't use BASS itself.
If so, we could be in a DLL Hell: to circumvent it, VMS tries to detect the already loaded BASS library version and use it but, if an incompatible version (maybe too old) is loaded, there's no way to load a newer one so VMS can't work properly (or even can't work at all). - If MIDI application uses BASS and have already initialized it on a specific device and/or applied a specific configuration, VMS could use that configuration (if good for it) or stop working.
- MIDI synthesis process is the same as MIDI player.
VMS has an option to raise its priority, but doing this also the MIDI player application priority will be raised. Some applications doesn't support (or crashes after) priority changes. - Intra-process communication between VMS Driver and Configurator is really difficult.
That's why configuration changes can't be applied immediately and require a VMS Driver restart. - For the same reason as above, MIDI Mixer is built into the Driver and not into the Configurator, making it impossible for the Mixer to stay open if the driver is not loaded.
- Making VMS a multiple-device driver is really difficult, because the multiple instances must be syncronized one each other.
What's new in VirtualMIDISynth 2.x ?
VirtualMIDISynth 2.x indroduces a deep and important architectural change: Driver and Synth components have been splitted 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; we could now have a MIDI application using BASS v.2.2 and VMS using BASS v.2.4 with no issues.
What now?
I'm a VMS2 user and I'm testing it on 3 different systems, but I can't fix all of the issues without your help.
If you're ready to test it, download the setup file linked to this post and be prepared to post your comments here.
Each bug report should be as complete as possible (the more the better):
- Check you're running the latest available version
- Check the post below to see if the bug you're going to describe is already known and/or has already been fixed
- Describe the bug with as much details as possible: what happens, when, what you did
- Try to find a way to reproduce the bug: a sequence of operations, a particular configuration.
Reproducible bugs are easier to fix. - Post your system details: Operating system version, MIDI Player, soundfont, ...everything that could help.
I suggest you to add these informations to your signature, so it will appear below each of your post.
When will it be released?
In a few words: when ready!
I don't have any scheduled release time for VMS2 because I actually don't know how much I can work on it.
VMS2 development is done on my spare time, which is limited by real job, family, personal affairs, ... sorry ;)
Download
You must be registered to download the attachment below...
PLEASE REPORT ALPHA VERSION BUGS HERE, do not start new threads in "Bug reports" forum.
NOTE: NO MORE DOWNLOADS HERE, please go to the Beta forum instead...