For anyone struggling, and for my own reference, I’ve been playing (and managed to soft lock my device on the way - thanks Martin for the help!) with a setup that makes editing and uploading presets a bit of a better experience in Windows, given the limitations of MIDI USB as single client.
Basically - I’ve tried to extend on @Flyweight 's suggestion:
1. Download and install all the needed software:
2. Setup a virtual MIDI port that supports multiclient (loopMidi):
- Open loopMidi and create six virtual MIDI devices (note.- not sure this is the best approach, see notes at the end). I called them the same way they are supposed to be called based on the documentation (USB connection issues | Electra One Documentation), with a V prefix to indicate Virtual:
- Make sure the Electra web app and the Electra One Console are closed (and any other application that might be using Electra’s MIDI ports).
- Make sure loopMidi is running and connect Electra One via USB to the computer
3. Setup routing between Electra control MIDI port and the virtual MIDI port:
- Open Midi-OX->Options->Midi Devices
IMPORTANT: Unclick Automatically attach Inputs to Outputs during selection, otherwise Midi-OX will setup the ports in a feedback manner.
- Select the ports that we want as input in the input section, and the ports we want as output in the output section. A picture better than a thousand words:
Press OK. Now you should see a window called Midi Routing Port, where you can drag and drop lines to connect the ports as we want. There is a default MIDI-OX Event Port connection for MIDI-OX connectivity, that can be left alone.
Drag and drop the cables as shown. Notice the names, that is the most important, and make sure in your setup the names correspond to what I have in my windows system:
- Electra Controller in my computer is Electra Port 1 in the documentation.
- MID**2 in my computer is Electra Port 2 in the documentation.
- MID**3 in my computer is Electra CTRL in the documentation.
IMPORTANT: I believe MIDI-OX was not intended for large SysEx messages, given that it’s pretty old software. By default, it’s not capable of handling very gracefully large presets. This can be remediated by setting up the buffers MIDI-OX will use when sending MIDI in Options->Configure Buffers. The values that worked for me can be seen here (64k is the maximum the software allows):
Increasing the max SysEx size in loopMIDI is probably not necessary as by default it’s setup at 256 KB. I have not found a preset template larger than that, but using Lua scripting it’s probably possible to have one a larger preset. This value can be setup to a max of 512 KB.
4. Use the new ports in the applications
Leave MIDI-OX and loopMIDI running - and good to go! Setup the virtual ports as I/O in any application, as those ports are multiclient. We’ve basically wrapped a multiclient driver around the single client ones that come by default in Windows!
If you do not see the virtual ports in any of those applications (or any other application for that matter), restart them first; sometimes they do not pick up new MIDI interfaces immediately.
I’ve personally managed to do the following simultaneously with this setup:
- Have the console opened with logging in
- Control some parameters of RME TotalMIX
- Change presets and control Arturia Prophet in Reaper
- Have the web app opened, work on a preset and upload it to the device
Hope this setup is stable, as it makes everything easier in Windows if you upload or edit presets often. Also, having the logging on when editing presets is a god send.
5. General notes
- Do not deactivate SYSEX forwarding in Midi-OX, otherwise the Electra One console will not work.
- Once everything is working, Midi-OX can be setup to run on the taskbar (pretty convenient)
- This setup allows you to send SYSEX to Electra via the V Electra CTRL OUT port. I’ve tried enabling logging:
./sendmidi.exe dev “V Electra CTRL OUT” syx hex 00 21 45 7F 7D 01 01
- Logging does indeed seem to make the device a bit less responsive (noticeable, but not a show stopper at all).
- This setup uses 6 virtual ports. I’ve tried with only three loopback ports in loopMIDI, but could not get around some weird feedback stuff. There is probably a better way to do this.
- Not sure yet how stable this setup is. Hope it does not cause any issues!
12/11/2021 - small addition to eliminate some instability found (increase buffer size in loopMIDI and Midi-OX)