How to intercept midi traffic, exchanged between two USB devices (Lexicon MX200)?

Hi I’m in the process of making a preset for the Lexicon MX series devices. Creating a controller with all parameters and program changes is not a big challenge, but parsing the MIDI SysEX is rather a challenge.

I can"t find any decent Sysex implementation description so I need to perform reverse engineering by sniffing into the MIDI streams. Usually via MIDI-Ox

But here is the catch: the MIDI DIN OUT port of the MX200 is disabled. Not in my device alone, but it seems so for all devices, when looking on the internet for testimonials.

The only bidirectional communication left is via USB. Lexicon has an editor for this device, and the interaction between the editor and the MX200 works flawlessly.

However, on my windows PC I can’t find a way to be the man-in-the-middle and intercept the traffic going between the two devices. So I can’t perform the desired reverse engineering.

Anyone suggestionson how to intercept these messages?
(I don’t own an Apple PC, I do have an iPad)

isn’t there an Electra One controller mapping that lets you re-route some data around?
It might show up in the Electra One debug/command screen

(my solution for these things has been to take it downstairs to the Mac and use MIDI Monitor to tap into the stream).

You’d think there’d be some way in MIDI Ox to just watch and capture the data.

1 Like

Try LoopBe1 - A Free Virtual MIDI Driver and use the the software defined midi ports in the middle

1 Like

Does it work? :thinking::blush:
(20 character fill)

Still need to test! The tension rises…

I can’t figure it out. The Lexicon Effects processor itself is visible as USB ‘Lexicon Mx200 Control’, but it doesn’t send any MIDI when tweaking the knobs. And allthough it has a MIDI DIN port labelled ‘Out/Thru’, it’s not outputting anything that way.
Yet, when the Lexicion program ‘MX-Edit’ is started on the PC there is clearly realtime bidrectional communication going on. But as that program has no set up parameters, it is auto-detecting the presence of the MX-200 and it can’t fool it into believe other loopMIDI ports are the ones it should be talking to.

Very frustrating to see a physical device only wanting to talk MIDI and SysEx to an application, but not to anything else.

So putting a man in the middle is not working. Any other ways of looking into a communication stream?

Can you see that (‘Lexicon Mx200 Control’) as a MIDI Interface (on you computer) or is that a general USB Product name on the list of connected USB devices?

Through MIDI-Ox the ‘Lexicon Mx200 Control’ appears as a MIDI interface.

hmm, as @oldgearguy mentioned… Do you have access to any Mac? MidiMonitor can do that out of the box:

Just to see that there is some MIDI traffic…

I’ll have to buy a mac to continue the work, it seems It is very tedious to work on a PC what with all the port reservations that is continuously intervening between legacy applications, midi-ox and the electra one app. :smirk:

googled a bit for you:
Lexicon MX200 Sysex-Kommandos herausfinden | Sequencer & Synthesizer-Forum somebody was able to get sysex out of the mx200 here.
did you try with other lexicon device sysex? Appendix D: Midi Inquiry Message - Lexicon PCM 90 - MIDI IMPLEMENTATION DETAILS Midi Implementation Manual [Page 39] | ManualsLib
btw there is a way to let osx apps run on windows, but not sure if worth the hassle (virtual box).

Also are you sure that the loopbe thing was correctly done? did you use 4 virtual cables?
mx-edit > cable 1 > midi-ox > cable 2 > usb > mx200
mx200 > usb > cable 3 > midi-ox > cable 4 > mx-edit

Oh also the manual says that mxedit should work over midi din as well, did you try that? It might be that the program needs a handshake to start working so better have in and out connected.

1 Like

Thanks @markus.schloesser .
Some good and bad news: until now I found no evidence from anyone the DIN MIDI OUT is functional. The MIDI thru certainly isn’t.
But perhaps it needs a kickstart as you suggested will try that.

The MX-edit software is simply invisible as MIDI device, so I can’t use the 4 cables, only two (to and from the device). However it got me that far I could see traffic in one way for a short while, which looks like the MX-edit finding out where the device is.

With Lexicon you can find sysex info on their MX300 and MX400, but their internal architecture is quite different, I can see they rearranged parameters making it difficult to efficiently extrapolate it to the Mx200.

This being said, I reached out to Sean yesterday and he responded immediately! he was the guy reverse engineering it, and for sure he came back with his intermediate results :slight_smile: it’s not final but I think he might have crossed the hurdle I got stuck on.

So by combining your ideas with his findings, there is light again at the end of the tunnel!

However, today is ‘Ronde Van Vlaanderen’ day, so I’m off going to see Van Aert, Vanderpoel, Pojacar and Pidcock!

The E1 experiments will have to wait a bit longer.


Did this ever go further? I’m curious :thinking::blush:
If not, this might be something for you Cheap USB Sniffer Has Wireshark Interface | Hackaday

No , it didn’t . The MX200 is fairly straightforward, and I actually do not use its on-board presets.
Controlling the MX200 without parsing it is sufficient for me. But I need to finish it in order to publish it.

1 Like