VirtualMIDISynth/Chrome conflict?

It seems you're using an AdBlocker or JavaScript is disabled!

This sites offers only FREE software and it's supported by a few advertisement boxes (no intrusive popups).

This 10 seconds wait is to let you update your AdBlocker whitelist...

Got it, show me the content...
Please enable JavaScript!

Pages

Posts: 43
Joined: June 5, 2015 - 12:43
VirtualMIDISynth/Chrome conflict?

Hi,

I'm an independent Web MIDI developer, and have been using the VirtualMIDISynth without any problem for some time now (maybe a year or two) in various versions of Chrome and Firefox. The VMS is a great piece of software! Thanks very much! :-) I need it, firstly because its latency is so much better than the Microsoft Synth, and secondly because it lets me load custom SoundFonts. :-))

I updated to Chrome 43 when it was published a couple of weeks ago, and since then my application has been crashing.
We are currently trying to find out why at:
https://code.google.com/p/chromium/issues/detail?id=493663

My system files are somehow getting corrupted, and it currently looks as if the VMS has something to do with the problem. I've had a similar problem before on Windows 8, but not on Windows 7. This time, both OSs are affected.

As part of trying to narrow the problem down, I uninstalled the VMS from the (64bit) Windows 8 machine (#27 in the above thread). In #29, I discovered FAQ 12 at your website, and in #31 did what it said there to check that the uninstall was okay. The only problem was that the
C:\Windows\system32\VirtualMIDISynth
folder had not been deleted. Everything else, including the registry settings, was as it should have been.

I'm currently trying to restore my system files (I need to contact Microsoft again about that).

Chrome have not yet said anything about the question I posed in #27: Could this be a conflict between Chrome and the VirtualMIDISynth?

They say that "Chrome just relies on Win32 MIDI services.". Does the VirtualMIDISynth rely on those services too?

I'm out of my depth when it comes to Win32 MIDI services, but is it possible that Chrome and the VMS are trying to access the same DLLs?

Best wishes,
James

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

Posts: 1536
Joined: March 25, 2012 - 01:19
Re: VirtualMIDISynth/Chrome conflict?

Thanks for your detailed report, will try it on my testing virtual machines (both Win7 and 8).

Reading your tests I saw I forgot to explain how to reset WMP default MIDI device setting, changed by VMS Configurator.
I just updated FAQ#12, please take a look.

notator wrote:
They say that "Chrome just relies on Win32 MIDI services.". Does the VirtualMIDISynth rely on those services too?

VMS is an User Mode multimedia driver, so it is called/loaded by the OS through winmm.dll.
If that sentence means "Chrome relies on winmm.dll to work" so yes, VMS uses that DLL which is meant to be shared and used by all multimedia programs.

The client MIDI application calls, i.e., midiOutGetNumDevs() and midiOutGetDevCaps() of system library winmm.dll to get a list of available devices from the OS, and the OS routes these calls to each device, including VMS.
There's no way (and need) for any MIDI client to load it directly; it will be loaded by the OS in the address space of the calling process (like any other user mode DLL) when needed.
The list of available devices/DLL that will be called by winmm.dll is contained into registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32.

notator wrote:
is it possible that Chrome and the VMS are trying to access the same DLLs?

If Chrome uses winmm.dll (it could be ActiveMovie based, I don't know it) so yes, it is, and that's how it's supposed to work ;)

Posts: 1536
Joined: March 25, 2012 - 01:19
Re: VirtualMIDISynth/Chrome conflict?

I saw you're using Chrome x64 in your tests.

Looking at VMS 2.x history I found a bug when the driver is loaded by an x64 application under certain (extremely rare) conditions.
I've backported the same fix to VMS 1.x series because I suspect this could be the same bug.

Could you please try the attached setup and check if the bug disappears?

Attachments (Only registered users)
CoolSoft_VirtualMIDISynth_1.14.0-beta1.zip
Posts: 43
Joined: June 5, 2015 - 12:43
Re: VirtualMIDISynth/Chrome conflict?

Thanks for looking at this so quickly, and for even sending a possible fix! :-)

I've just manually uninstalled the VirtualMIDISynth from my Windows 7 machine, using your updated FAQ#12. That made a big difference! :-)

My application [1] now seems very stable, playing the reference score [2] on Chrome Canary using the Microsoft GS Wavetable Synth. It wasn't working well at all before. We are getting somewhere! :-))

There are still two unsolved questions:
1. Windows Media Player is still refusing to play Standard MIDI files (on both Windows 7 and 8.1). Have you got any idea why that might be?
2. I don't see a registry solution for getting Windows 8.1 working. Have I missed something?

Before trying your fix, I'd like to get really to the bottom of the problem I'm trying to solve with the Chrome programmers. I'm going to tell them that I've been talking to you, that your FAQ #12 has been updated, and that it makes such a difference. By the way, they have not said whether they've tried my application themselves (on a machine that has a pristine operating system). Are they able to repeat the bug I originally reported?

If this is purely a registry issue, then there's probably no need for you to join us, but if you think there could be a conflict with the DLLs, maybe you could chime in personally? I have no idea how things work down at that level...

Once the problems are sorted out, I'll definitely try your fix. As I said, I need the VirtualMIDISynth!

All the best,
James

[1] http://james-ingram-act-two.de/open-source/assistantPerformer/assistantP...

[2] Study 2c3.1 (scroll)

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

Posts: 43
Joined: June 5, 2015 - 12:43
Re: VirtualMIDISynth/Chrome conflict?

Hi!

My application is now working flawlessly on Windows 8 too. Bravo! (I missed that I should reset the registry settings for the default MIDI Out configurations there too.)

The question remains as to why Windows Media Player is still refusing to play Standard MIDI files (on both Windows 7 and 8.1).
I imagine there are some more WMP registry settings that also need restoring... I never use WMP, but it would be nice to sort the problem out anyway.

I'll try your 1.14.0-beta1.zip at the beginning of next week.

All the best,

James

 

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

Posts: 1536
Joined: March 25, 2012 - 01:19
Re: VirtualMIDISynth/Chrome conflict?

AFAIK all the WMP user-mode settings are self contained into this registry key:

HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie

In the FAQ I explained how to reset WMP default MIDI Out device, but maybe your config needs to be completely rebuilt.

You can try to:

  • delete the whole ActiveMovie key (or, better, rename it to ActiveMovie.original, just in case something goes wrong)
  • open WMP, then its configuration dialog
  • change anything, click Apply, revert your change and press Apply again
  • close WMP and reopen it

That registry key should have been rewritten by WMP with its default values.

Posts: 43
Joined: June 5, 2015 - 12:43
Re: VirtualMIDISynth/Chrome conflict?

That did the trick (on both W7 and W8.1). Thanks.

Actually all I did was rename the ActiveMovie key, then open my test Standard MIDI File with WMP. (I didn't want to spend time looking for WMP's configuration dialog...)

Is there another ActiveMovie key for 64bit systems? If there is, WMP has reset that too.

Next week I want to continue testing Chrome before reinstalling VMP on my W7 machine. I still think I may have overstressed Chrome at some point, and for that reason tried to uninstall VMP to create a vanilla system. That was before I opened the bug thread at Chrome.

The best thing for me to do, when Chrome has survived my stress tests, is install VMP on my main (W7) machine (where I need it because I need the low latency) but not on the W8 laptop. Then, if I run into a problem, I can find out easily whether the problem is in Chrome or VMP. VMP is going to get stress tested at some point too! :-)

Another thing: What I really need is an online version of VMP. This would reside on the website next to the Assistant Performer and be able to play sounds (SoundFonts?) provided by the website owner. Such a device ought to be feasible using the Web Audio API. I've already asked for something like this at
https://github.com/WebAudio/web-midi-api/issues/124

Any ideas?

Best
James

[Moderator edit: fixed link]

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

Posts: 1536
Joined: March 25, 2012 - 01:19
Re: VirtualMIDISynth/Chrome conflict?

When you say VMP you mean VMS (VirtualMIDISynth) right?

Well, WMP should have only one registry key under HKEY_CURRENT_USER.

notator wrote:
Another thing: What I really need is an online version of VMP. This would reside on the website next to the Assistant Performer and be able to play sounds (SoundFonts?) provided by the website owner. Such a device ought to be feasible using the Web Audio API. I've already asked for something like this at
https://github.com/WebAudio/web-midi-api/issues/124

Any ideas?

No, I really have no knowledge of Web Audio API, sorry.

Anonymous user
Re: VirtualMIDISynth/Chrome conflict?

I meant VMS. Yes.

It's a shame you don't know the Web Audio API.
I've never used it myself either. I'm working at the (much simpler) Web MIDI API level. The Web MIDI API is built on top of the Web Audio API.

I think of the Web Audio API as being a bit like Max implemented in Javascript. There's a good introduction to it here:
http://www.html5rocks.com/en/tutorials/webaudio/intro/?redirect_from_loc...

Maybe you know someone else who'd like to dive in there?

Posts: 1536
Joined: March 25, 2012 - 01:19
Re: VirtualMIDISynth/Chrome conflict?

I hope that someone reading this forum could help...

Pages