[Preset ] Roland SE-02 (V2)

HI, I’ve received my E1 last week, and this is the first preset I’ve made, which is for the Roland SE-02 last firmware version.
image

Main points:

  • the patch features that are hidden in the menu are now brought into the open, including the second LFO specifically for PWM purposes!
  • I’ve made a transposing page for both octaves and semitones, which can be useful when running a sequence.

Main missing feature : allthough the Roland uses SysEx for patches, I can’t find any documentation about it, so any help is appreciated.

Check it out :slight_smile: Roland SE-02 (V2) PRESET

2 Likes

amazing, just came in to look for this today! thank you so much.
I’ve just integrated the SE-02 into my live setup and am struggling with the fact that it doesn’t have a knob “pick-up” mode like many synths with presets. does your template update when you load a new preset on the synth? is that related to the sysex patch request feature you mention is missing?

Unfortunately it is indeed the SysEx I need to provide a template update.
This being said, I still completed this Preset with all patch functions because I found it quite inspiring when playing the SE-02, even without the template update.

I looked around but I can’t find the Sysex implementation chart , especially the parameter table for the patch dump, for the SE-02. That one is vital to be able to get you your pickup mode.

If anyone has it . Or cares to reverse engineer the said table?

I couldn’t find it either.
There is a software editor done by SE themselves, I looked into the manual and there’s no implementation detailed there either.

https://www.studioelectronics.com/products/Software-Editors/SE-02/

I will try to ping somebody at Roland. I think it is quite a pity they do not publish sysex implementations for all their gear. It is weird especially for them, because they often provide extra functionality/parameters over the sysex…

1 Like

worst case is someone takes the time to stick a MIDI Monitor in between the SE-02 editor and the hardware and captures/maps out everything being sent and received.

Roland in the past has been very helpful when I contacted their service centers for parts, manuals, etc. Not sure what they are like today though.

Wrote SE too, will let you know if I hear back!

1 Like

I have the SE-02 editor from Studio Electronics, so I thought it might be worthwhile monitoring the traffic going on between the two of them. The editor only finds the SE-02 via USB, any one has an idea how to intercept USB MIDI data from editor into SE-02 (MIDI thru won’t work, I tried that, but the editor won’t connect with the SE-02 if midi thru or MIDI echo is on)? I’m pretty sure it is MIDI !

The other way round is easier, by monitoring what came out of the DIN MIDI OUT of the SE-02.

Here’s what I found: if the editor requests a patch from the SE-2 , the SE-2 responds in 4 chunks:
3 times 78 Bytes, and one time 62.

image

The header starts as follows
F0
41 = Roland
10 = Device ID (if the SE-02 follows Roland standards)
00 00 00 44 will be the Model ID SE-02 (Roland typically adds one or more 00H’s in front of the Model ID to ‘differentiate various things’ (found in D-05 MIDI manual)
12 is usually a Roland command ID (DT1) for transfer while 11= RQ1 is the counterpartner for Request.
So my guess is where are indeed looking at a data transfer where shortly after 12 is the body , consisting of an address then data and it ends with a checksum.

When the SE02 editor is finding the SE-02 for the first time, this is what the SE-02 responds :
image

Last check: retrieving the first patch of the first bank, for which I know it is called INBOUND . I believe the names to be 16 digits long. The name is in the second to last row: 49 6E 62 6F 75 6E 64 and a bunch of zero’s stand for “Inbound”
image

Hope this has some value for someone somewhere :slight_smile:

Can you select the output in the editor?
Because then you can use loopbe midi as a virtual midi connection to route traffic thru midi-ox

2 Likes

Thanks. Ports can be selected.
I’ll try it out later in the week. I haven’t used loopbe yet, but I know more or less what it is, so this might work.

1 Like

The show can go on. The requests were intercepted.


These are the 2 requests the SE-02 editor asks the SE-02 when the software starts up:

image

I expect the answers at least contain the following data:

  • roland firmware version
  • midi channel
  • midi thru setting
    (in my case channel is 8, version = 1.11 and MIDI thru is off)

Whatever patch I ask the editor to retrieve it sends the same 4 commands, so it looks like it is indeed requesting the edit buffer of the SE-02.
Requests are:
F0 41 10 00 00 00 44 11 05 00 00 00 00 00 00 40 3B F7 (response = 78 bytes)
F0 41 10 00 00 00 44 11 05 00 00 40 00 00 00 40 7B F7 (response = 78 bytes)
F0 41 10 00 00 00 44 11 05 00 01 00 00 00 00 40 3A F7 (response = 78 bytes)
F0 41 10 00 00 00 44 11 05 00 01 40 00 00 00 30 0A F7 (response = 62 bytes)

In the response the first 12 bytes (including F0) are the same except 11 that turns into 12.
image


With this info, every one with an SE-2 might consider experimenting. Happy reverse engineering !

1 Like

I have a new challenge here: the transmission in the Roland SysEx does not correspond with the transmission of the CC changes.
An example: SysEx transmits VCO1 range as a value between 0 and 5. But the CC controller 16 for the same purpose transmits the values 0,25, 51, 76, 102 , 127. Is there a clever way I can have the SysEx values correspond with the order of the items in the control list, rather than with the value I gave to each list item?
Any other ideas?
How I can best correlate 0 into 0, 1 into 25, 2 into 51 using the patch editor?

Well, in LUA, a formula like:

ccnum = sysexnum × 25
if sysexnum > 1 then
ccnum = ccnum + 1
end

if sysexnum > 2 then
ccnum = ccnum + 1
end

Might work

Not there yet.

Imagine I built a function stretchValues() based on @oldgearguy 's formula.
It takes a value 0…5 and returns 0…127.

What I need, is to find a way to insert this function:

  {
    "type": "function",
    "name": "stretchValues"
  },

somewhere in the patch conversion of parameter 22:

        {
            "parameterNumber": 22,
            "type": "cc7",
            "byte": 62,
            "bitWidth": 3,
            "byteBitPosition": 0,
            "parameterBitPosition": 0
          },

In other words the received 0…5 from the 3 bits of byte 62 need to get converted via stretchValues() and the resulting 0…127 is to be stored in parameterNumber 22.

How do I construct such json syntax in the responses section?

(By the way @oldgearguy, thanks for the tip of monitoring the traffic between SE-02 and its editor. I overlooked it the first time you suggested it, but subconsciously I think you planted that idea in my head anyways)

Hi, I’ve just implemented patch parsing on the SE-02. It now should retrieve the settings from the SE-02 if you use the ‘patch request’ pad, or the left upper button of the E1. This is the “pick-up” mode you were looking for.

Be aware: only the fader controls should work fine for now. The list controls will change also but retrieve the wrong value from the patch request as yet. I need some more feedback from the guys on this forum before I can mend it.

@moullinex Can you try it out? It should drastically improve smooth sound transitions when playing live.

Hey @NewIgnis
Would you mind sharing your knowledge about SE-02 SysEx with the world? For posterity / in open source spirit.
This investigative thread of yours is probably the only real source of info about SE-02 specifics on the Internet.
I don’t own Electra One so can’t even download your work in order to try reverse-engineering it.
It would be great to document the meaning of various elements of SE-02 SysEx, especially the patch-related messages.

1 Like

No problem, but I’ve moved on to other synth investigations since. Tell me specifically what you are looking for. Also, you can actually check my work even if you do not have an Electra One. If you use the Electra One editor, you can ‘read’ my preset and check the SysEx in it yourself.

It’s the great thing about Electra One: the work we share is open to everyone.

1 Like

@NewIgnis I would like to document what do different parts of SE-02 SysEx mean.

Whatever patch I ask the editor to retrieve it sends the same 4 commands, so it looks like it is indeed requesting the edit buffer of the SE-02.

This part is of particular interest to me. Have you figured out the meaning of these 4 commands / responses?
Do you know on a byte-level how do these correspond to patch values (specific knobs/switches)?

I am not sure if @NewIgnis used that, but E1 allows users to reverse engineer the incoming SysEx messages quite easily. One can change the parameters on the synth and observe changes in the coming SysEx patch data.