It would be SO incredible to be able to switch variations with midi program messages.
Alas, it seems it’s not to be
It would be SO incredible to be able to switch variations with midi program messages.
Alas, it seems it’s not to be
Agreed. I was trying to make a simple tool that mimicked song mode since that feature doesn’t exist either. I know Roland have focused on live performance but song mode would have been useful for me since i have 2 tb-03’s to control as well.
Hi @MellowTron and @bradders
I have managed to sniff the variation change message, and have successfully sent it to my own TR-6S to change the pattern - so the 01 towards the end is the variation, and the 00 after the 20 is the Pattern number. The 1E before the F7 is the checksum which is always calculated according to the same formula which I think has been described above.
If I send this message, it sets the variation to A on Pattern 1-01
F0 41 10 00 00 00 6D 12 20 00 00 41 00 01 1E F7
This will set it to variation B
F0 41 10 00 00 00 6D 12 20 00 00 41 00 02 1D F7
And this sets Pattern 1-02 to Variation A
F0 41 10 00 00 00 6D 12 20 10 00 41 00 01 0E F7
etc
For the TR-8S, I do not have one, but from analyzing other messages, we simply subtitute “45” instead of “6D” for the device, so to set Pattern 1-01 to Variation A i expect it would be
F0 41 10 00 00 00 45 12 20 00 00 41 00 01 1E F7
If you’re able to try it out, let me know.
The difficulty is always that you need to know the pattern number and to calculate the checksum correctly, so you have to do a bit of work to get it working universally. I haven’t figured out the exact rule for these pattern/bank numbers yet but let me know if that would be helpful at all.
@TDA thanks for the info, it is proving valuable. So i made it switch variation from ‘A’ to ‘B’ using a python script. However, the LEDS on the TR-8S still look like it is queuing the change and is in a funny state preventing other variation changes. I’m guessing i need to send another command.
How did you sniff the command on your TR-6S? I am using Midi Monitor and SysEx Librarian and nothing ever shows for variation changes.
Once i have got further I will post my findings.
Try Wireshark on the USB port if you have a Windows or Linux machine available. If you’re on MacOS, try using a Linux virtual machine and do the sniffing there.
On MacOS it requires disabling SIP (System Integrity Protection) which is cumbersome and opens a tremendous security hole which I really can’t recommend unless you know what you’re doing.
Thanks i’ll try that now
I’m using Midi Translator Pro, which will show all the incoming and outgoing MIDI messages and have also used Midi Ox in the past.
As you may be aware you’ll need to switch on ‘Tx Edit Data’ in Utility settings if you haven’t already!
Try sending this after the initial Variation message, it seems like it always sends this exact message after the first one, no matter what pattern/variation
TR-6S
F0 41 10 00 00 00 6D 12 01 00 00 16 00 69 F7
TR-8S (Probably the same)
F0 41 10 00 00 00 45 12 01 00 00 16 00 69 F7
Also worth noting, it only sends the SysEx edit data out over USB, and it shows under the ‘TR-6S CTRL’ midi port rather than the ‘TR-6S’ which is where you would see e.g. normal MIDI CC messages being sent out when you tweak the knobs on the device.
Again thanks for your help. i managed to get a trace working with Midi Monitor and SysEx Librarian.
The command is F0 41 10 00 00 00 45 12 20 00 00 41 00 02 1D F7 to choose variation 2 on pattern 01-01 if anyone is interested. I just have to get my code to do the change properly.
The TR-8S sends the message 8 times when you press the button once.
Im very close now. I think timing the command correctly is key. I am getting varied results where messages are getting missed even with multiple sends.
That’s great. Yeah i noticed the message was sent multiple times. 6 times on the TR-6S so i assumed it was once per instrument.
Let us know if you achieve the perfect variation switch!
I thought you could just queue it up anytime and it would execute once the last variation was finished.
Personally i just fully sequence it externally except for the occasional jam so i don’t worry about variations too much
Just skimming through all of this because variation selection via SysEx sounds super intriguing.
One thought; because the TR6/8S have 8 variations and they can be chained, is it possible that the multiple messages have to do with each variation reporting their state? So, selecting a variation is one scenario but reporting back the state of all other variations (selected as part of a chain or unselected) is also part of the equation?
Not to add complexity to the process but certainly something that needs to be considered. Whether or not chaining spans multiple messages or is conveyed through octets would be something to look at.
EDIT: Something else to consider is that a variation can also be selected but not active. This is done by hitting ‘TR-REC + variation’. So you can edit a variation that’s not currently active/playing.
I got there in the end. To make sure the variation change doesn’t get missed, my script sends the change just after the start of the preceding bar. So now i have a python script that has a sequencer loop, takes a csv with a list of bars and the variation to play on that bar. Which is a very crude song mode but it is doing the job for me, now i can be more hands on with my TD-3 and TB-03.
I’ve spent far to much time on this so im taking a break to actually try and make some music
Hi @MellowTron and @bradders
I tested your sysex messages (MellowTron) with cakewalk on my TR8S, on canal 10 with TR8S usb midi port.
Everything works perfectly!!!
Many thanks to both of you.
The sysex message to be able to change variation of a pattern for TR8S (tested with cakewalk):
(Exemple for variation A of pattern 1-01) F0 41 10 00 00 00 45 12 20 00 00 41 00 01 1E F7
F0: start msg
41: id Roland
10: device id (16)
00 00 00 45: model id
12: data transmit (11 for data request)
20 00 00 41: memory address, for pattern 1 → 20 00, pattern 2 ->20 10,…, pattern 127 ->2F 70 and “41” for variation address
00 01: data variation A->00 01, B->00 02, C->00 04, D->00 08, E->01 00, F->02 00, G->04 00, H->08 00
1E: checksum
F7: stop msg
Variations for pattern 1-01:
A: F0 41 10 00 00 00 45 12 20 00 00 41 00 01 1E F7
B: F0 41 10 00 00 00 45 12 20 00 00 41 00 02 1D F7
C: F0 41 10 00 00 00 45 12 20 00 00 41 00 04 1B F7
D: F0 41 10 00 00 00 45 12 20 00 00 41 00 08 17 F7
E: F0 41 10 00 00 00 45 12 20 00 00 41 01 00 1E F7
F: F0 41 10 00 00 00 45 12 20 00 00 41 02 00 1D F7
G: F0 41 10 00 00 00 45 12 20 00 00 41 04 00 1B F7
H: F0 41 10 00 00 00 45 12 20 00 00 41 08 00 17 F7
Regards