Recent change slightly broke MCU emulator

I've been using the awesome MCU emulator (GitHub - jean-emmanuel/open-stage-control-mcu) to fill in when I don't have ready access to a real MCU control surface.

Something in the last couple updates seems to have broken it a bit. It was working fine in 1.9.3, but after the update to 1.9.7 each of the channel strips is shifted to the right by one in terms of the MIDI data that it sends.

I've looked at it a bit but haven't yet figured out what's causing the problem. Anyone have any ideas?

Yes, could it be the removal of the start property in matrices perhaps?

Yes, could it be the removal of the start property in matrices perhaps?

Yes. I've updated the repository.

1 Like

Your efforts never cease to amaze me, jean-emmanuel.

I've made some material modifications to your MCU to adapt it to various usages. Looking quickly at the updated MCU.json commit I see a lot of what seem to be minor changes. (443 it seems.)

I'm not keen on the idea of manually editing my own modified .json files. Is this all a propagation of some relatively minor change you made through the editor? If so, what was it? It's not immediately apparent to me viewing the commit.

That's the only relevant change: update for 1.9.7 · jean-emmanuel/open-stage-control-mcu@af72eca · GitHub

edit: + this for the extender

1 Like

Man, I didn't even know you had added that Extender.

Looking at the git, I'm not sure where or when I got the version I was using. It looks like I've made all my personal edits to an earlier version.

As long as we're talking about the vMCU, one minor thing I'll point out just so you're aware of it...

The official MCU protocol for button pushes and releases is a little different than what most other MIDI control surfaces do, and different than what you've implemented.

The MCU protocol, and real hardware devices that use it, never send MIDI note off messages. (At least not the one's I've used.) The official MCU protocol says button push should send midi Note On, velocity 127, and button release sends Note On, velocity zero.

In midi hex, that's 0x90 0xnn 0x7f for push and 0x90 0xnn 0x00 for release.

The vMCU sends note off messages on release, like 0x80 0xnn 0x00.

Fortunately most modern software treats 0x90 0xnn 0x00 [note on velocity zero] and 0x80 0xnn 0x00 [note off velocity zero] as the same thing, or doesn't care about button release events.

The only reason I came across this difference is that I wrote an extension for a piece of software (GigPerformer) that's designed to interface with MCU compatible hardware. For debugging purposes, it spits out notification messages when it sees unrecognized midi from the MCU. With real MCU hardware it doesn't get any surprises. With the vMCU it was spitting out notifications for every button release.

I changed my software so it accepts both Note Off and Note On velocity zero as the same thing, which I suspect most other software does as well.

I just thought I'd mention it to you in case anyone ever says "hey, this thing isn't working right for me!"

1 Like