SysEx implementation on TR-8S and other Roland gear

ah, you were one step ahead of me :slight_smile:
I guess it is possible. Seems like the 2 same messages you do see could be start/end headers. Other than that I’m not sure i’m any more help.

I’m sure someone else on the forum will have some ideas :crossed_fingers:

I presume you have the Roland driver installed on your computer?

1 Like

Yep! Meanwhile i did what you suggested but using another, third party editor, and there i found the right hex codes for the knob i want to control. Now i just need to go from completely noob to creating a Max device with knobs :slight_smile:hope this will work :wink:

1 Like

Interesting thread. I am currently investigating in a similar direction. I want to control specific parameters of the TR8S with an external MIDI controller, e.g. FilterCutoff and Release.
(While I still don’t understand, why the CTRL knobs have no detents… Maybe because prodcut engineers always work in daylight… and sober… XD)
Yesterday I managed to squeeze out two sysex messages for the Filter Cutoff on the LT channel:
F0 41 10 00 00 00 45 12 10 76 12 47 00 00 21 F7 (FltCutoff = 0)
F0 41 10 00 00 00 45 12 10 76 12 47 0F 0F 03 F7 (FltCutoff = 255)
I used midi-ox for this. I was also able to send these messages back to the TR8S and it worked. I will now have to see how I can use either midi-ox or maybe the bome midi translator to map my hardware controller CC messages to the corresponding range of sysex messages for the TR8S.
This site was a big help to understand how the sysex messages are set up: Eddie's Home - MIDI - SysEx Tutorial
The TR8S sysex messages look a little bit differently. You can see it when you just look at them for a while and find similiarities and patterns.
I am pretty certain they are designed like this:

Here is an example sysex message:
F0 41 10 00 00 00 45 12 10 76 22 09 0E 07 3A F7

F0 41 - sysex standard, always the same
10 - Device ID, always the same
00 00 00 - just 6 zeros, always the same
45 - Model ID, always the same
12 - what I read is: “specifies whether we are sending (12h) or requesting (11h) information.” I don’t fully understand this one yet.
10 76 22 09 - start address, remains the same for the same type of message (e.g. Filter Cutoff). Part of the checksum calculation. EDIT: The 76 is actually the Kit number -1. So this was taken from Kit number 76h = 118+1 = Kit 119.
0E 07 - contains the data we are sending. These are the actual controller values. Also part of the checksum calculation.
3A - Roland checksum. Must be calculated for each message indivdually (see the website I mentioned above). However, it somewhere says you could also just ignore it… will have to check. EDIT: I checked, the checksum has to be accurate or the TR8S will not accept the message. There is a way to calculate this automatically for each value with a formula. I will post this later.
F7 - sysex standard, always the same

This is where I am so far.

2 Likes

This is an almost accurate translation for the BOME Midi translator of CC#54 from a hardware controller to the LowTom Filter Cutoff in the TR8S in Kit No. 119. The instrument of the LowTom needs to have a FilterCutoff of course. Not all of the instruments have it.
I have no idea if this is of any use to anybody. What I wanted to say is: Yes, it works! :slight_smile:

[x] Translator 0.0: New Translator
Options: swallow
Incoming: Control Change on ch. 1 with CC#:54 (0x36) and any value set ‘pp’ to value
Rules:
qq=pp2
uu=qq/16
vv=uu
16
vv=qq-vv

//CHECKSUM
// Address
rr=223
// value 1
rr=rr+uu
rr=rr+vv
// Get remainder
rr=rr%128
// Skip next step if remainder is 0
if rr==0 then skip next rule
//Subtract from 128
rr=128-rr
// rr is now the checksum

Outgoing: MIDI F0 41 10 00 00 00 45 12 10 76 12 47 uu vv rr F7

Yo! I Just found this thread. Thanks @Ache08 That is definitely of some value, as I was just about to start poking myself.

The problem I have is that I want to be able to control certain non-CC parameters, and am hoping I can get to them via sysex. The specific parameter I’m after at the moment is LFO Rate and LFO Waveform in the kit settings. Also the delay, reverb, master fx parameters.

Just found this as well, I love the instrument but it’s been frustrating to integrate into a DAW setup. My only point of reference is the SH-01, which has a very complete sysex implementation that was greatly appreciated after software support ended. The document provides a memory map of the device and then describes how to use the data request and set messages to retrieve/set data in a given address (including checksum calculation). Check it out here.

If Ache08’s description above is accurate, then as far as I can tell, the form of the command is exactly the same for these devices, so it might be justified to hypothesize that the memory layout has some similarities as well. In any case, somebody just needs to do the painstaking work of mapping out the parameters with trial and error. Change one thing in the device and do a bulk request, then see what changed in the output and note it down in a spreadsheet.

I’ll get back to you guys if I find the will to get started on this.

Cheers.