Do install the Electra One editor, so you can get to the details yourself.
Here’s some info:
Value conversion SysEx versus Midi CC
- most parameters are CC controllable and they are straightforward
- some selection lists receive their values via SysEx as between 0…x where x equals the amount of options minus 1. Between when sending them via CC, these values are spread over the entire CC range of 0…127. To resolve that , the preset uses the SysEx values (so they can be understood when received via SysEx) to store them, but then multiply the results when changed in real time on the Electra One. This is done with the lua functions in the preset, I called ‘choicen’.
- there were some other particular conversions to do to keep this concept , i.e. storing values as received in SysEx, but send them converted into CC values when tweaking.
- the other way around, when CC messages are received by the E1 I had to convert them back into the SysEx values before storing them in the parameterMap. I used “midi.onControlChange” for this purpose. In the preset editor you will find what controls needed what kind of conversion.
Patch Parsing
Each time a Program Change is executed , I sent 4 SysEx messages to collect the current patch dump
midi.sendSysex (devPort, {0x41, 0x10, 0x00, 0x00, 0x00, 0x44, 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3B})
midi.sendSysex (devPort, {0x41, 0x10, 0x00, 0x00, 0x00, 0x44, 0x11, 0x05, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x7B})
midi.sendSysex (devPort, {0x41, 0x10, 0x00, 0x00, 0x00, 0x44, 0x11, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3A})
midi.sendSysex (devPort, {0x41, 0x10, 0x00, 0x00, 0x00, 0x44, 0x11, 0x05, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x30, 0x0A})
The first three messages deliver a response in which parameters are found , necessary for the Patch. The fourth message was obsolote, I found afterwards. That may be for instance because it contained data for the sequencer which I didn’t parse.
The exact parsing can be found back in the json editor of the Electra 1.
Be careful: Roland did not implement anything simple like a 1 byte = 1 parameter philosophy. Very often 1 parameter was composed of bits from 2 different subsequent bytes.
Example: parameter 81 "Contour Sensitivity’
You will find it back as a composition of 7 bits, as a response against the first SysEx request:
- the first 4 bits are found at position 0 in byte 9
- the next 3 bits are found at position 0 in byte 8


Be mindful
- page 2 “Modulation & FX” page has 4 (hidden) buttons: each of them fires one of the 4 SysEx requests separately. That made it easier during reverse engineering to perform the parse mapping.
- page 3 “Transpose” of the preset : that is not a SE-02 specific thing, but an add-on to the SE-02 coming from the E1 itself , that controls the SE-02’s transpose setting.