I am trying to see if there is anybody who would be able to give an advice on this.
Electra is a MIDI class compliant device. It means no drivers needed to get it working when you connect it to a computer. This works perfectly on Mac OS X and Linux. It also works on Windows but there is a big drawback. The Windows MIDI driver allows only one application to access/use the device at the time. So if you want to use the editor and the DAW in the same time you will fail. This problem was reported long ago by the @ColdSteel. I was trying to find some decent way to resolve it, develop own driver or find some work around (loopback driver), anything. But I am not very familiar with Windows…
I am developing a new console app. Over the time this application will become the native editor app. The application is developed in the JUCE framework. I was hoping I could create a virtual port there - but again - not supported on Windows even in JUCE.
Does anybody have any pointers on how this could be solved. I am perfectly ok with developing own driver in C++. But there is almost now documentation available from Microsoft on that. I also tried to reach Tobias from virtualMIDI | Tobias Erichsen but no response.
Immediate workaround would be to do it over midi instead of USB, than the midi interface would need to be multi client (which the iconnectivity stuff is).
Iirc iconnectivity licensed their driver from thesycon (don’t remember the exact name). You could ask them.
Re writing your own’ ask Pete from Microsoft (psychlist1972 on every forum)
I don’t use windows … but I know a few friends that do…
they seem to always be recommending LoopBe to handle this side.
I’ll ask them for more details, but from memory, they just seem to accept that windows is not great in this area - and so have these workarounds.
(I think as mac users we sometimes take for granted how good core audio/midi is!)
Yes, this is an unnerving topic on Windows. According to this: MIDI Enhancements in Windows 10 - Windows Developer Blog as long as the code is using the old Win32 MME DLLs, as most likely all code out there still does (JUCE as well), there is no multi-client USB for Midi.
Only the “new” (in 2016) Windows 10 UWP MIDI API allows multi-client. Not even sure if JUCE is compatible with UWP apps (which is seemingly the new Microsoft API).
@martin FYI I bought an ERM Multiclock, which comes with multi-client midi drivers for Windows. I checked the install files and apparently they licensed the driver called “MIDIJunction2” from usb-audio.de (Ploytec)
There is progress on this. I got a license for Bome bmidi driver for virtual MIDI ports. Not cheap but Florian is so helpful that implementing the driver for Electra should not be hard.
I am actually thinking about two ways to implement this:
- straight-forward. There would be three virtual MIDI ports: Port 1, Port 2, CTRL. ie. exactly the same thing as MacOS users have.
- device-based. Electra driver would create virtual ports for all devices defined in the preset. It would also take care of routing the messages to-from correct connected device. Plus the CTRL port for the web application. ie. if your preset would define controls for Prophet 5 and DX 7, “Prophet 5” and “DX 7” USB Midi ports would be available on the computer.
What is your thinking on this? Any other suggestions?
Not sure I understand correctly?
Multi-client drivers is completely different to virtual midi ports?
Also, we already have the 3 ports?
each virtual port acts as an independent MIDI device. Thus the web management app will not lock the other ports.
let’s check what ports are to be adressed simultaneously
- A port you address when E1 is connected to the Electra Website ?
- A port needed when you start up the console (right now, both can’t be used at the same time, for the same reason)
- I will check what port is used by MIDI-Ox.
- For that preset in which there is a direct connection into Ableton LIVE, what port is used there?
- Next to this, I we still need the 2 regular MIDI ports inside the DAW for connecting gear onto.
I mean, there are at least 6 ports I can think off that should be useable simultaneously , and that should not influence each other.
Tbh I think that’s rather complicated and error prone. Plus some applications grab all available ports.
Why not proper multi-client driver?
I discussed that with other windows developers and the problem is that Electra already is a MIDI class compliant device and as such it will always appear as a MIDI device on windows. There is no decent option to hide that. The extra virtual ports that will be multi-client provide a decent solution I think.
The other option would be making Electra a proprietary USB device without MIDI class compliance. Then a custom multi-client driver would make sense. But that would also mean that driver was required for MacOS, Linux, and Electra would not be recognized by MIDI routers. I do not want to go that way.
The iconnectivity devices are both, either class compliant or, if the special driver is installed, multi-client capable
o ok, I will check with USB debugger what is happening when iconnectivity is connected to windows. I am mean if the device stays class compliant.