VirtualMIDISynth 2.x alpha available for testing

Pages

Posts: 9
Joined: December 23, 2014 - 23:45
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released

It's hard to remember that you came to drain the swamp when you're up to your ass in alligators.  Keep up the good work my friend!!!

Microsoft Windows 7 Home Premium 6.1.7601 SP 1 Build 7601

Alienware Aurora 0R4 X64-based PC

Intel(R) Core(TM)i7-390K CPU @ 3.2GHz, 3201 Mhz, 6 Cores

Encore 5 Music Software

 

Posts: 9
Joined: July 20, 2015 - 10:57
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released

here is da requested config file.

Attachments (Only registered users)
VirtualMIDISynth.zip
Posts: 43
Joined: June 5, 2015 - 12:43
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released

Re unnecessary "Device VirtualMIDISynth #1 is already in use" messages.

Ray890 wrote:

With VMS2, you are strictly stuck with port A, Port B, Port C, Port D, and you can't share a second program on the same port.

I don't think that explains the messages I'm getting from Chrome:

notator wrote:

1. load a Web MIDI website, and select the input and output devices: a MIDI keyboard (that is switched on), and "VirtualMIDISynth #1".
(Chrome finds both the keyboard and the VMS.)
2. Switch the keyboard (input device) off. VMS reports that it, the output device (!), is already in use.
3. Dismiss VMS's message. Sometimes 'OK' has to be clicked more than once.
4. Switch the keyboard on again.  VMS again reports that it, the output device (!), is already in use.
(Maybe this only happens because the live attachment of input devices is implemented on this web page.)
5. Dismiss VMS's message.  Sometimes 'OK' has to be clicked more than once.
6. GOTO 2.

This looks as if its Chrome that is trying to reconnect the port, only to discover that its already busy (and trigger VMS2's message).
Do ports keep a record of which programs they are connected to? Do programs identify themselves when asking for a port connection?
In other words: Can VMS2 check to see if the port-program connection already exists before it sends the message?

Ray890 wrote:

VMS1 on the other hand, when you connect a program to VMS, a port inside of a port, when multiple programs use VMS, new instances of the synth is opened (which explains the multiple taskbar tray icons), therefore bypassing the need for that error message.  I think this old behaviour should kept as a user option with VMS2.

Either VMS2 can be made to work without creating extra instances on demand, or it can't. If it can't, then there's no alternative but to go back to the old behaviour.
Either way, I'd prefer not to have a user option for this. It would be just another thing for users to get confused about, and another complication inside the VMS2 code.
Its may not be nice seeing all those new instances being created, but its something I can live with if I have to. I think VMS2's code should be kept small and tidy.

Related: If VMS2 ends up creating new devices on demand (as in VMS1), then we don't need the "number of devices" option in the VMS2.Options tab.

 

http://james-ingram-act-two.de/

Posts: 1491
Joined: March 25, 2012 - 01:19
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released
Ray890 wrote:
VirtualMIDISynth 2.x handles ports differently than 1.x does.
With VMS2, you are strictly stuck with port A, Port B, Port C, Port D, and you can't share a second program on the same port.

You're right, and that's how things are supposed to work both for virtual and hardware MIDI devices.
A MIDI Out device is not meant to be shared, like analog devices are.
I mean: when you share the same analog output between VLC, Skype and WinAmp (all running together) you'll hear the mixup of all the things being played.

A MIDI device can't (and shouldn't) be shared, because each MIDI device has its own state and configuration (instruments, controllers, SYSEXes, ...) that are related to its MIDI stream.
If you attach an external USB controller then you'll see that two different softwares (say Sonic and VanBasco) can't use it together.

Virtual MIDI Out devices should mimic the same behavior of real hardware ones.
VMS1 doesn't check this out because each instance of VMS1 is loaded by the MIDI software using it (i.e. VanBasco) and "hosted" into its process space. There's no "intra-process" check to see if that virtual port is already in use...
It just works because VMS1 is started in multiple instances (one for each hosting software), with only some quirks like multiple systray icons and mixers.
VMS1 instances are fat, slow to start and disjoined: if you load a soundfont it will be loaded X times, one for each driver instance.
That's why VMS2 started...

Ray890 wrote:
I think this old behaviour should kept as a user option with VMS2.

There's no way to reproduce that behavior in VMS2 because MIDI devices are now allocated by a single process (VirtualMIDISynth.exe), sharing the same soundfonts instances and config file.
The driver component (the one loaded by MIDI software) is now really small and loads up instantly; play also starts instantly because the soundfonts were already (pre)loaded and the device is already allocated.
Blacklisting is the way to go, waiting for misbehaving softwares (like Chrome.exe seems to be) be fixed.

notator wrote:
This looks as if its Chrome that is trying to reconnect the port, only to discover that its already busy (and trigger VMS2's message).
Do ports keep a record of which programs they are connected to? Do programs identify themselves when asking for a port connection?
In other words: Can VMS2 check to see if the port-program connection already exists before it sends the message?

Programs do not qualify themselves when opening (or trying to) a MIDI port, but being VMS2 a DLL, it can retrieve the name of the process that is trying to load it.
This is how VMS2 retrieves its "hosting" program name.

I still have to give a deep look to this Chrome issue, but your last post thrown an idea I could try: suppress error message when the same port is opened more than once by the same .exe.
I don't like it too much because... why a program should try to open the same MIDI port more than once?
This is not going to work for hardware devices, so it should not work on virtual ones too.

Maybe there's something more VMS2 should return to these misbehaving programs...

Posts: 1491
Joined: March 25, 2012 - 01:19
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released
CVMS2Epic wrote:
here is da requested config file.
Your config file seems good.

Two ideas:

  1. you're going out-of-memory:
    I don't know how big are those 4 soundfonts you're trying to load, but being VirtualMIDISynth.exe a 32bit program it cannot allocate more than 4Gb of memory
  2. one or more of these soundfonts have some issues with VMS2

Both my ideas can be tested by disabling all the soundfonts and enabling them one by one.
If you cannot open VMS2, just open the config file with a test editor and set all of the sfX.enabled items to 0, then enable them one by one.

Posts: 14
Joined: October 14, 2014 - 00:11
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released
coolsoft wrote:
  1. you're going out-of-memory:
    I don't know how big are those 4 soundfonts you're trying to load, but being VirtualMIDISynth.exe a 32bit program it cannot allocate more than 4Gb of memory

Seems also a 64 bit Synth will only be usefull for multiple soundfonts rather than bigger sf2 soundfonts (with sfz begin an exception, since samples are no stored on the soundfont) since sf2 have a 2 GB file size limit. I tried making a +2 GB soundfont and it ended begin corrupted. Also it hapened to a firend of mine. Also 64 bit synth will have some perfomance gains compared to 32 bit depeding of the CPU

Carlos S. M. - Black MIDI Team Member
Channel: https://www.youtube.com/channel/UCgVv5sa3hZluRZ8AQdq5tEg

Posts: 9
Joined: July 20, 2015 - 10:57
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released

Carlos S.M, what sort of 64-bit midi synth? name one plz.

Posts: 43
Joined: June 5, 2015 - 12:43
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released
coolsoft wrote:

I still have to give a deep look to this Chrome issue, but your last post thrown an idea I could try: suppress error message when the same port is opened more than once by the same .exe.
I don't like it too much because... why a program should try to open the same MIDI port more than once?
This is not going to work for hardware devices, so it should not work on virtual ones too.

I don't like it much either. Hardware devices probably just don't say or do anything when they are "re-connected". :-)

coolsoft wrote:

Maybe there's something more VMS2 should return to these misbehaving programs...

A bug report? Maybe, when you've taken a deeper look, we should file a bug with Chrome:
"Chrome unnecessarily tries to re-connect connected output devices."

 

http://james-ingram-act-two.de/

Posts: 1491
Joined: March 25, 2012 - 01:19
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released
CVMS2Epic wrote:

Carlos S.M, what sort of 64-bit midi synth? name one plz.

Some posts ago I was evaluating the possibility to build an x64 version of VirtualMIDISynth.exe synth component...
Actually the synth component is 32bit while driver is both 32 and 64bits.

Posts: 9
Joined: July 20, 2015 - 10:57
Re: CoolSoft VirtualMIDISynth 2.0.0-alpha19 released

i got virtualmidisynth fixed now, it was ZDocPiano II.sf2 that was causing the problem. I think its because it's 1.60gb...

Pages

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.