SysEx OSC X32 Communciation

I see little in this forum (maybe one post) with regards to sending OSC via SysEx Midi. My goal is to send a “communique” to an X32 digital mixer to adjust the Delay Timing for each song. Right now, I’m just going to hardcode the delay in milliseconds (maybe later there is a way to use Cantabile Song Tempo?).

Per X32 Documentation (X32-OSC.PDF):

The general format for sending OSC commands over MIDI Sysex is: F0 00 20 32 32 “OSCtext” F7

The Stereo Delay is on channel FX3 and the parameter to modify is “Time”

Manual also states sending parameters to a particular effect is formatted like this:

So if the stereo delay in on FX Buss 3 and the delay is to be changed to 1000 ms, I believe the correct Sysex format is

/fx/3/par/Time 1000

And when embedded in the Cantabile SysEx command:

When the song loads, a song binding sends the above Sysex to the X32 and the delay time is supposed to change.

Before I attempt this possible boondoggle, has anyone successfully sent OSC via Sysex Midi to an X32 mixer using Cantabile? This method would be much better than having a separate snippet for each delay.

Easier to use snippets on the X32 and then just use program changes?

Thanks for the comment. I’m trying to avoid having to save a snippet for every song then recalling with Cantabile during a song load; however, that may be the only way if the OSC over Sysex MIDI does not work. But I agree the snippet method would work. Send a PGRMCHNG# over MIDICH2 loads the Snippet saved in Slot#.

I have an XR18 and I am curious to know if you are able to successfully modify the FX settings using the SysEx approach. Please let us know your progress.
Thank you - David

I’ve finally have had time to play with the OSC over MIDI. Yes, parameters can be changed over SysEx, but it’s convoluted so far. One must reference the “Unofficial X32/M32 OSC Remote Protocol” to find out what the numbers sequence mean. The captures below are from the Cantabile SysEx window so it’s what is actually sent to the X32. Note that the first five HEX of SysEx/OSC must always be F0 00 20 32 32 and the last must be F7. F0 start and F7 end are typical SysEx, but OSC requires the additional 00 20 32 32 after the initial F0 followed by the OSC text command.

What I’ve been able to do so far:

This changes the CH1 Fader to 5.3

This mutes CH1

I run the Stereo Delay in FX3 slot, so this is the particular delay time I was trying to change. The first capture below loads an entire preset to that particular effect module.

Notice that this is in order of the effects window parameter so every integer-space-integer falls into place. The “/fx/3/par/” tells the X32 what is coming, then the 100 Mix, 1000 ms time, STereo, 1 L Factor, etc… follow until the F7 SyxEx is received.

I want to change the TIME, which is the second parameter. A shorter SyxEx is

I’ve been unable to find a null character to take the place of the 100 (Mix parameter), but the rest of the parameters do not need to be sent.

In Cantabile, there is a preview pane to the right that takes the HEX and converts to Text for review. I have to leave Cantabile to construct the Text String, Convert to HEX, then Copy/Past into the Cantabile SysEx window. If there is a demand for more SysEx, it would be nice to have a way to type in text in the Cantabile SysEx window and output HEX within Cantabile (@Brad)

This appears to be a viable way to load a song in Cantabile, then use an “On Load Song” binding to change the delay time, multipliers, mix, feedback, mix, etc. on the x32 (or other mixers) to match the song requirements.

1 Like

You can enter the string in double quotes and Cantabile will handle it:


Excellent. I was just typing away without the quotes and getting all kind of errors. By the way, with a massive trial and error approach, the null character is actually two characters in sequence: \0 also known as 5C 30. I could not find a single HEX value that worked (I tried 48). Seems line the F8 (ø) would work, but nothing. When OSC for X32 encounters the \0, the current parameter is skipped (remains as-is).

So with what Brad explained, the following sequence will change the time delay to 1000 ms on the Stereo Delay that is loaded in FX slot 3.

The top line is required for SyxEx and OSC and the bottom line is end of SyxEx.

Middle line /fx/3/par sets up x32 to overwrite data. The 0x5C 0x30 0x20 skips the first parameter in the effects block (Mix in this case). The 1000 is the ms time delay, then end

1 Like

I’m starting to use the SysEx OSC more and have run into a problem which I’d like some one to verify. I’m running C4132 and I don’t remember having this problem in earlier versions.

Binding for song load to send SysEx (Damn, that’s hard to type)

On song load, send SyxEx to MidiPort

This is the SyxEx command

Here is the problem: When the SyxEx data string is typed and OK is hit, only the first line is saved. After hitting OK and reopening the SysEx box, this is all that remains.

I’ve tried different ways to enter (pure hex, more strings, etc.) but only the first line is saved. What am I doing wrong?

Update: I just opened some previous songs with SysEx that I’m positive were working and now there are errors because the SyxEx string has been truncated. “unterminated string literal” error on the old songs.

Hi Eric,

You aren’t doing anything wrong I think because I tested my RD2000 rack and found some Sys-ex truncation errors in it too. So I too have sys-ex issues in 41xx to resolve.

40xx sysex message box - (verified working)

41xx sysex message edit box for same entry after conversion

This is one for @brad I think.



1 Like

Thanks, Dave. I don’t think I’ve saved these files as the new C4100+ format, so the information is probably still there but truncated by C4132.

Thanks for reporting.

Build 4133 available now should resolve this:

  1. Fixes the sys-ex truncation issue
  2. Made the single line editor in the edit binding dialog is read-only and you now have to use the “…” dialog for editing the sys-ex expression. (this was the cause of the truncation)
  3. Made the fixed pitch preview font slightly smaller to avoid the messy wrapping
  4. Fixed the unresolved identifier ‘value’ error when previewing


1 Like

Loaded C4133 and the old SyxEx messages are legible and send “good” data to x32 as before. Thanks!

Excellent! Now I don’t have to “open” to window to the right to stop the text wrap.

The old saved SysEx messages work well. When a new SysEx is entered in the SysEx data window (below) and the edit binding window is closed,

The entered SysEx data disappears when an edit attempt is made.

I’m getting scolded for entering three replies in a row…

Ah my bad. Fixed in 4135 4134 available now.

It’s just the forum software trying to bend you to its way of thinking. You can either go back and edit instead of posting new replies or just ignore the scolding.

Wow… I feel like I have two wives now…

Had to change download link to 4134

This update performs as expected:

  • Upper window retains the text as entered even when reloading the song
  • Lower window shows the hex/text renditions with no text wrap
  • SyxEx transmission appears in MidiMonitor on song load per binding

There was one point when I thought the upper windows was reopening with all the text converted to HEX. For my purposes, it’s much easier to cut/paste the binding from song to song and change the “541” without having to find where the 541 is in the HEX and then look up what the new value is in HEX.

Thanks again!

Brad, 4135 link → 404

You don’t need to use those one off links any more… 41xx is now available on the downloads page.

Please check the link on the downloads page: 4135 > 404.