How to bind MIDI Remote surface buttons to Sysex commands?

I’m currently programming my Novation 49SL MKII to work with Cubase, and I would like to have the buttons I make be bound to Sysex messages, instead of just a single CC command/value.

My SL MKII has an “automap” mode that allows for far more functionality (more buttons, command changes, etc). However, when in the mode, all commands to and from the SL MKII are in the Sysex format below.

However, while I can easily send the appropriate sysex commands to the SL MKII with the .sendMidi() function, I can’t seem to find any way to bind knobs/buttons/faders/etc to Sysex inputs from the device like with .bindToControlChange() and similar. The closest thing I can find to anything is an .mOnSysex() function for midiInputs, but the documentation doesn’t show how that’s supposed to be used at all, nor do I know what function it serves. If anyone can point me to the right direction on how the above can be achieved, I would be super grateful.


I think the only way to receive Sysex message is to use the mOnSysex method. I haven’t tried it myself, but i would start with something like this:

var midiInput = deviceDriver.mPorts.makeMidiInput()

midiInput.mOnSysex = function (context, MidiMessage) {

  //could be interesting to know of which type is MidiMessage
  console.log(typeof MidiMessage)

  //then do something with that data


then you could use setProcessValue method to forward info to some control.

Again, I haven’t tested it, this i where i would start from in such a situation.

Good luck, :wink: