Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Also check out the Facebook Group.

Of course, if you want to send us an email, feel free.

MIDI Designer
Design your perfect MIDI controller for iPad, iPhone and iPod touch.
Most basic SYSEX questions. - MIDI Designer Q&A

Most basic SYSEX questions.

0 votes
asked Jan 26, 2019 in Advanced by ed_saxman (710 points)
recategorized Feb 2, 2019 by MIDI Designer Team (Dan)
I dont think there is such a thing a "basic" sysex question lol. Sysex by nature is complicated, so dont be worried if your having trouble with it.
Changed the category to "advanced," actually, then I read your comment here Brett.

1 Answer

0 votes
Hey there, here’s the very short, text-only answer to get you moving for now.

The thing about other types of MIDI messages — Control Change, for instance — is that they have a variable piece in them (usually the last byte). So if you set up a button in MD and set its type to control change, you can see how the ON and OFF values show up in the Log (also in MD). Basically, the last byte changes, usually from 0 to 127 (the max value for a 7-bit byte).

Sysex in MD isn’t automatically set up the same way, so there’s no variable piece. So you need to take one of the bytes and substitute it with a V in MIDI Designer. This will make that byte send out the OFF value and the ON value that you have set up in the MIDI panel.

How can you know which is the variable piece? Usually your MIDI target (thing you’re controlling) will expect two “different” sysex’s, one for ON and one for OFF. These two messages differ on only one byte. That’s the one you want to use V for.

It’s possible that it’s more than one byte, and then things get a bit more complicated. Rest-assured that MD was created from me asking these same questions about sysex, starting from Roland manuals for the HPD-15, and that stuff is all follow-your-nose in the Sysex panel in MD.

Comment on this answer (not via email) and let us know where you’re stuck and we can push this further ahead.
answered Jan 26, 2019 by MIDI Designer Team (Dan)
I merely put this in the bytes: 41 00 00 00 20 12 20 00 V

Then I added a Roland 1-byte checksum.

I left the ON and OFF values for the button where they are, but you probably want to invert them.

This is my log output

Message Out: Length=12: F0 41 00 00 00 20 12 20 00 7F 2F F7
Message Out: Length=12: F0 41 00 00 00 20 12 20 00 00 2E F7
Message Out: Length=12: F0 41 00 00 00 20 12 20 00 7F 2F F7
Message Out: Length=12: F0 41 00 00 00 20 12 20 00 00 2E F7

and then MD should be able to handle all values coming in. Sorry, there's a lot of text here, what am I missing?
Is it that the checksum is wrong? You're putting 61 and 60 inside brackets way above. If you need those values, then you'd need two buttons with the fixed values, a supercontrol and another button spinning the supercontrol.

However, I should be worried that the Roland checksum math is wrong on my end, but I've been through this dozens of times before and in the end the checksum always proves out. Hmmmm....

There are extensive unit tests in the MD code around this topic, which was the only way to get some sanity on it. I'd be very surprised if we're doing it wrong, yet... not sure why those MIDI values would be so weird.
The checksum inside brackets is correct (61 and 60). These are the values (empty cells means "same as above"):

And yes, my log output is the same as yours (2F and 2E) as output values from the button (it should be 61 and 60), but.... still, it works!:
The button responds correctly to incoming messages (from the FC-300) with 60 and 61, but when the button is pushed "manually" (in MDP), then it sends 2F and 2E.

That was the same I was doing so far, so I was thinking I probably did something wrong.

The most strange thing is that despite the mismatched checksum values, it works as intented anyway! (dont ask me why)

SYSEX is really a dark art, fellas.

PD to Dan: Do you have a FC-200, isnt it? I think I remember seeing it in some of your videos. The SYSEX implementation is quite similar, if not the same, based on what I could read in the manual.
Ed Saxman, I'll check if we still have one. Yes, MD just discards the checksum on the way in. What I don't get is that our Roland sysex implementation for one-byte sysex has been working since 2011 without issues and it hasn't changed. So... is it an issue that we're sending a different outgoing sysex? What are you controlling, the pedalboard itself?

It's not impossible to think about adding a second roland 1-byte sysex type, I just don't know where I would get the calculations. Perhaps in the FC300 manual?
The only thing the manual mentions about the Checksum is: "The error-checking process uses a checksum that provides a bit pattern where the last 7 bits are zero when values for an address, size, and that checksum are summed."

But no, this isn't a issue for me at all, becouse its working anyway.

I'm controlling a third device too, but the SYSEX only relates to the FC-300.
By the way: I have noticed that the Checksum Byte doesn't matter at all when sending input SYSEX messages to the FC-300. Any checksum value works (for example to turn on/off leds, or sending text to the screen)

My setup is: FC-300 >> Roland UM-ONE MkII >> Apple CCK USB3 >> Ipad Air >> MDP
The third device is an HX Stomp (or a Helix Floor) using a Yamaha MD-BT01 both connected wirelessly to the ipad >> MDP

Currently, I'm using Stream Byter ouput rules to capture what my MDP template sends, so both devices are being controlled, although the FC-300 also acts as a controller. Crazy, isn't it?

And so far so good! I really like how Stream Byter is integrated with MDP, its a really powerful tandem.
I can use the FC-300 to receive text, control all the leds in different ways, take control over the 3 digit-7 segment screen, use both expresion pedals... almost everything so far.

IMHO, Stream Byter is to IOS almost what Bome MIDI Translator is for IOS/Windows. Really great tools (and deep rabbit holes! ;-)  ).