Okay, that actually makes sense to me. Explaining the separate parts really did help me grasp how that all breaks down. So I can send a singular piece of data/request such as 0xF0, instead of sending a whole string?
So if I wanted to send say.. Dump current program I would..
byte testArray[1];
testArray[0] = 0x10; // Current Program Dump Request(I think)
MIDI.sendSysEx(1, testArray); // in a Function of course.
Then of course there’s the question of how to read bits, because it says in the Implementation that bit +30 is Filter1cutoff, and I assume there’s a way to read bit +31’s value? I assume it would relate to the setHandleSysEx(); and it’s function-call. which I’ve named ccTest() for now.
No you’ve totally missed the point of the sysex message, it needs a header to describe that it is sysex message, manufacturer ID, device id, channel, dump command, end of sysex.
Hence why the array is several bytes long
So you transmit around 6 bytes depending on the message and the R3 will respond with another sysex message starting with F0, manufacturer ID, device ID, channel, message type, data…., F8 and yes you will need to decode that data.
Typically you build a receive array of the size of the R3’s sysex data and as the message is received into the Arduino you populate the receive array with the data. Then you have it to decide, if you know byte 31 is cutoff then you can simply assign that.
I was just reading the MIDI implementation chart, it shows that you can request a dump of the current patch.
So to get the current patch dump, you send the following bytes
F0, 42, 3g, 7D, 10, F7
So its a 6 byte array
byte dumpRequest[6];
dumpRequest[0] = 0xF0;
dumpRequest[1] = 0x42;
dumpRequest[2] = 0x3g;
dumpRequest[3] = 0x7D;
dumpRequest[4] = 0x10;
dumpRequest[5] = 0xF7;
MIDI.sendSysEx(sizeof(dumpRequest), dumpRequest);
The only thing that concerns me here is it states 3g for one of the parameters and 3g is not a valid value, I think because “g” is in lower case it represents the device ID of your synth, so maybe it should be 0x30 and not 0x3g