Midi Remote API - SysEx Questions

Hi All… very inexperienced Java person here (well, zero), and therefore very new to MR API too.

I’ve been searching and learning… not trying to bug people with too many basics… although I do struggle with basic implementation of various commands haha…

I’m looking into the API side of things to see if I can get midi remote to do a few specific Sysex things for controlling external midi gear. I’m slowly working things out, and can create knobs and assign min / max values… all for CC at the moment, but I’m getting there slowly at a basic understanding and things are looking promising for what I’m trying to achieve…

What I’m hoping someone can spell out to me, as though I’m intellectually challenged, is:

Basic Sysex for controllers:
I can get CC control via “.bindToControlChange (CH, CC)”

If my midi unit sends: “F0 3E 10 00 20 00 00 26 0A F7”, where bold is the variable…

  • Do I use the mOnSysex to recieve the message from hardware?
  • And then do I use sendMidi to send to the hardware?
  • How do I define that specific byte as the variable?
  • I assume setValueRange still works for the variable?

Could someone possibly snip up basic implementation of the above Sysex message for use as a controller for a knob that only sends and recieves sysex…?.. Something like the following, but for that sysex example, not CC…

knob1.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .setOutputPort(midiOutput)
    **.bindToControlChange (0, 21) // channel 0, cc 21**
    .setValueRange(0, 10)

I would greatly appreciate that, but no stress if it’s not that simple and people can’t be bothered…

Longer term goal…
There’s some promising use cases for me just via the above… but down the track, I wonder if it’s possible to recieve some complex SysEx for e.g. a patchdump from a synthesiser, and define ALL the variables in that complex message and then use each variable as the value assigned to a controller…

For this one I don’t need anyone to try and write this code for me hahah… all I want to know is “is this possible with the API??”

Example where each of the bold bytes are a parameter value for a different parameter:

F0 00 20 29 02 01 22 07 0C 0F 0F 00 00 07 0C 00 00 00 04 04 00 0E 0C 00 00 00 04 04 02 0F 0D 01 01 07 0F 00 00 00 04 04 0B 0F 0F 00 00 00 04 02 0E 0F 0F 04 00 00 00 00 07 03 0E 0F 0F 04 00 00 00 00 04 03 00 0F 06 00 00 00 00 00 04 05 0A 0F 0F 01 0F 00 00 00 01 02 0E 0F 0F 07 0D 00 00 00 04 02 09 0F 0F 04 00 00 00 00 05 02 06 0F 0C 02 00 00 00 00 04 05 0B 0E 0C 04 08 07 0F 00 00 00 04 04 01 0E 0F 00 00 00 04 00 0B 0E 0A 00 00 00 04 04 00 0F 05 03 0F 03 0F 00 00 00 04 04 00 0F 0F 04 00 00 00 00 03 04 00 0F 0F 04 00 00 00 00 07 04 00 0F 0F 02 00 00 00 00 05 04 00 0F 0F 04 00 00 00 00 04 0F 0F 04 00 07 03 00 00 00 04 04 00 0F 0F 02 0B 00 00 00 01 04 02 0E 02 00 00 00 02 04 00 0F 0F 00 00 00 08 04 00 0D 0A 00 00 00 04 04 00 0F 0F 00 00 00 00 04 00 0E 0F 00 00 00 01 04 00 0E 09 00 00 00 07 00 0B 00 01 00 0B 00 0C 00 00 00 01 00 07 00 07 00 06 00 09 00 01 F7

Take the first three bytes in that series… can I use the API to send “02” as a value to a specific knob; “01” to a different knob; “22” to yet another knob… and so on through the whole horribly tedious Sysex message… so that upon recieiving the above message, midi remote parameters update their values to suit (and send their values to wherever they are mapped)…

THIS would be incredible and worth me investing time into understanding the whole API at a much deeper level.

Hi,

It’s JavaScript, not Java. :wink:

Yes.

Yes.

You get an array. So in your case of the 0xF0 0x3E 0x10 0x00 0x20 0x00 0x00 0x26 0x0A 0xF7 message, you gen the following array:
myArr = [0xF0, 0x3E, 0x10, 0x00, 0x20, 0x00, 0x00, 0x26, 0x0A, 0xF7]

To get the 9th value, you go for:
myVal = myArr[0]

1 Like

This is great… lol @ java vs javascript… :rofl: well, i now know more than zero about javascript… i k ow its not java haha!!

Ive got something working now… i have a knob on my Waldorf MicroQ sending sysex to control an MR knob. Its all very confusing haha… but its working!!