After having used 2.1-RC1 for a long time being quite happy. I now updated to 2.4.0.
One reason for using 2.1-RC1 was your statement "Noticeable changes: Virtual MIDI devices can now be shared between clients. ", which worked very well for me.
I believed, this would be included in 2.4.0 too. But I failed. It isn't included. Or - if it is - it does not work. I made a simple test script (in Lua, sorry, but the Workflow should be clear):
for n=-1,10 do local caps=MmMidi.OutGetDevCaps(n) if caps then printf("Port %2d :%-32.32s ",n,caps.szPname) local hmo1,err1=MmMidi.OutOpen(n) local hmo2,err2=MmMidi.OutOpen(n) printf("%-20s [%-10s] %-20s [%-10s]\n",tostring(hmo1),tostring(MmMidi.ErrorText(err1)),tostring(hmo2),tostring(MmMidi.ErrorText(err2))) MmMidi.OutClose(hmo1) MmMidi.OutClose(hmo2) end end
The output is:
Port -1 :Microsoft MIDI Mapper userdata: 0x006d2708 [MMSYSERR_NOERROR] nil [MMSYSERR_ALLOCATED] Port 0 :VirtualMIDISynth #1 userdata: 0x006d2708 [MMSYSERR_NOERROR] nil [MMSYSERR_ALLOCATED] Port 1 :Microsoft GS Wavetable Synth userdata: 0x006d2708 [MMSYSERR_NOERROR] nil [MMSYSERR_ALLOCATED] Port 2 :DMX 6Fire MIDI Out userdata: 0x006d2708 [MMSYSERR_NOERROR] nil [MMSYSERR_ALLOCATED]
At least for "Port 0" I had expected to get MMSYSERR_NOERROR also for the second OutOpen. This worked with 2.1-RC1.
Did I miss something? Please give advice. Do I need to return to 2.1-RC1?
Regards