New Preset posted: 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.