SysEx - Newbie (voicelive GTX )

Hey All, have done very little with Sysex so seeking help on how to set up the following, and then hopefully I should be able to extrapolate that out
Essentially trying to control a Tc helicon Voicelive GTX via SysEx as their CC implementation is kinda non-existant
So yeah wondering if I can get some help to set up the following toggle
(13 byte)
The toggle on message is
F0 00 01 38 6A 22 05 00 00 00 00 01 F7

The toggle off message is
F0 00 01 38 6A 22 05 00 00 00 00 00 F7

Many thanks in advance…

1 Like

yes it’s possible
It looks to me like the new 3.8 firmware is a little different than the last firmware if I remember correctly…

Do not input the Begin message F0
or the End message F7

that leaves you 11 eleven bites for each of your Helicon ON / OFF messages

I need to look into doing this my end before I can tell you exactly how to do it tho…maybe someone else will answer before I get a chance…

1 Like

Does this look close… ?(my device isnt connected so its not letting me sort out toggle mode and POS 1 etc… but for 13 bytes minus first and last i make the length 11?? and then following as shown for this message?
F0 00 01 38 6A 22 05 00 00 00 00 01 F7

1 Like

sorry, I’m not sure…I just upgraded firmware and haven’t had the time today to jump thru sysex hoops my end…I don’t know if it’s the same

that does seem right to me, tho…does it work for you?
you are on the right track!

OK, I just jumped thru the hoops on this

your bytes look right to me, altho which MIDI Channel you are sending on I don’t know; you need to read your Helicon documentation to see which byte of the message the MIDI channel is and adjust that byte in your message

The button POSITION state is how the button knows there are different SysEx messages is my guess. I suppose if different actions are applied even more SysEx messages could be used.

for example the experiment I tested was using one button with Toggle Mode ON:
send TapeEko ON message to my device for Pos:1;
FX OFF for Pos:2
I just used PRESS action for all of these

my message is 7 bytes long= 3 button messages per SysEx message…
looks like:
Msg1: 0x7(length)_0x8_0x21_Pos:1
Msg2: 0x11_0x5_0x3_Pos:1
Msg3: 0x6_0x7B_0x0_Pos:1
Activates Tape Eko on a Fender CyberTwin

Msg4: 0x7(length)_0x8_0x21_Pos:2
Msg5: 0x11_0x5_0x3_Pos:2
Msg6: 0x0_0x7B_0x0_Pos:2
De-activates all FX on a Fender CyberTwin

in these CyberTwin messages
03=midi channel
and 6th byte= the action

so your Helicon is gonna be like:
Msg1: 0xB(length)_0x0_0x1_Pos:1
Msg2: 0x38_0x6A_0x22_Pos:1
Msg3: 0x5_0x0_0x0_Pos:1
Msg4: 0x0_0x0_0x1_Pos:1
On (action) message is the 11th byte;
which byte is the MIDI channel?

Msg5: 0xB(length)_0x0_0x1_Pos:2
Msg6: 0x38_0x6A_0x22_Pos:2
Msg7: 0x5_0x0_0x0_Pos:2
Msg8: 0x0_0x0_0x0_Pos:2
equals the OFF message
midi channel?

hope that helps :slight_smile:

Thanks so much
Yeah not sure about the channel I’ll have to figure that out

The setup was for channel 1 which was the way I procured the messages so I guess that kinda narrows it down…

I guess really am just gonna have to plug it in and see where I get too

Thanks for the info much appreciated

Now to test

1 Like

I found a Voicelive Sysex manual which is maybe where you got your info?
simple google search lead me here:
Or maybe you got your message from a midi listener? I’m posting because possibly the model 6A you have is similar to the model 4E and there is no MIDI channel in the message for the 4E that I see; just a SysEx Device ID which is really how SysEx is designed to be- essentially OMNI with device IDs to separate identical devices…so you likely not need to worry about midi channel as I had suggested.

here’s an example of your message:
On - F0 00 01 38 6A 22 05 00 00 00 00 01 F7
your message is one byte longer and I don’t see which is the Device ID byte in your message; you could change device ID on your unit and use a midi listener to track down which byte it is by comparing the difference…although that doesn’t really matter if you only have one device model 6A attached…

Why TC used decimal values for the list of SysEx IDs in this manual is anybody’s guess…just makes it harder IMO

From this manual:
Off - F0 00 01 38 00 4E 22 00 41 00 00 F7
On - F0 00 01 38 00 4E 22 00 41 00 01 F7

[message description of bytes:]
F0 = SYSEX start
00 = Byte 1 of 3 byte manufacturer’s ID for TC-Helicon
01 = Byte 2 of 3 byte manufacturer’s ID for TC-Helicon
38 = Byte 3 of 3 byte manufacturer’s ID for TC-Helicon
00 = SYSEX Device ID (defaolt value of 0)
4E = VoiceLive model ID
22 = VoiceLive Message Type Identifier (Parameter Data Identifier)
00 = Parameter Group ID
41 = Parameter ID for Voice #4 bypass state [65 in decimal]
00 = Data MSB (Most significant bit)
00 = Data LSB (Least signicant bit) (0 for voice off, 1 for voice on)
F7 = SYSEX message end

Maybe if you contact TC they might supply the correct SysEx details?

Hey Chris yeah it’s definitely weird
I tried the message I had and it’s not working
Basically I got the message by using the gtx editor and receiving the Sysex message from that

There is either something I that it won’t take via midi o my USB port
So just waiting for a USB host to arrive to see if it will work and have also reached out to tv for steed manual specific to the gtx

1 Like

Hi there.
I’ve spent this week deciphering the Voicelive-3 SysEx manuals I was able to find online after much work AND the critical help from James Toh at Morningstarfx (THANK YOU SO MUCH, James!), I finally had a breakthrough the last couple of days. Mind you, I’m programming the MSS Editor as we speak with little luck, haha.
**UPDATE: I got it working on my MC-6! I was confusing some Decimal vs Hexadecimal values in the Editor, hehe. So happy!

But here’s how I think I can help:

  • I noticed that your SysEx instruction is missing a “00” after the “38”, corresponding to the “SYSEX ID” of your unit (Default is 0) as per my Voicelive 3 SysEx manuals (and mentioned by ctreitzell). The first 5 bytes after the F0 are required IF you are sending SysEx messages to other devices at he same time, because they identify the manufacturer and the device. They can be omitted if you only have the GTX, as per my tests.

  • TIP: Download the free Pocket MIDI program and test your SysEx messages with it. It worked like a charm for me.

  • Lastly, what GXT parameter and parameter value are you trying to send, according to whatever SysEx table you’re using? These values are most probably quoted in Decimal format (as mentioned by ctreitzell and according to my manuals)(This part is where James’ help shone the brightest light for me :))

Beware of the “28-bit 2’s complement signed value” quoted in the TC-Helicon manuals for Data Type Messages (see below). The last four bytes require 28-bit handling of NEGATIVE values (in case you need to send those) in four separate, independent 7-bit binary strings (yeah, I HAD to read quite a bit about Binary and hexadecimal operations)
The following webpage allows you to set the 28-bit resolution manually, as well as providing 2’s complement results:
Two’s Complement Calculator (
And this page was suggested by James:
Hexadecimal to Decimal Converter (

Parameter Data ID:0x22
“Data” is 6 bytes. The first two bytes identify the SYSEX Parameter ID. The last four bytes determine the value of the parameter represented as a 28-bit 2’s complement signed value. If a value exceeds the limits of the parameter, the value will be automatically limited.

I hope this helps.

Hey Luis you are right actually 14 bytes with sysex I’d after the 38
The midi channel is after the 22 (7th byte after the F0)

I’ll have to retest the issue I’m finding is that the gtx only has a USB port and midi in port

Using a external midi device to send the sysex mag back into the gtx via the midi in as opposed to the USB is not working but sending back via the USB is … hence waiting for a midi to USB host converter to retest

Not sure

Essentially just trying to separate out the control for the different effects and harmony just
On /off really

Actually scrub that changed the midi function from merge (as in USB and midi in merge to midi in only) and It works via the midi port

I think we may have a winning formula here now

Thanks for all y’all’s help

If you are sending Data messages (22), as opposed to Preset (20, 21) or Setup (13) messages, the next two bytes after the 22 (which is the code for Data messages) correspond to the SyxEx ID of the parameter you’re manipulating. The first byte correspond to the MSB part and the second byte to the LSB part. The MSB and LSB format allows for Decimal values greater than 128, in which case MSB > 0
James posted an explanation about MSB and LSB, just search for these in the forum.

The channel info is required for Preset data type and the SysEx format is also different after that byte. I’m still trying to figure out why the Channel number (#) is required twice (before and after the 20 or 21) in this case, using the format B# and C#, respectively. The SysEx manuals don’t mention Channel at all, I just found the info online without much explanation.

This is the answer that James gave me regarding coding a parameter SysEx ID with a value of 915 (decimal) for my VL3, and it was crucial for my understanding everything. I later had to find out how to use this info for coding negative values in the following 4 bytes (I posted that earlier):

" ​Ok, based on the manual (and by experience), if you want to add the 915 value into the sysex message, you need to split the bits. They likely use 14 bits so you just need to split it into 2 7 bit values. So here’s how to do it:

Input 915 into the calculator and you’ll get the binary number 1110010011. If you split that into 2 7-bit values, it will be 111 and 0010011.

111 is the MSB while 0010011 is the LSB.

Then just run this values into the binary to hex calculator

and you’ll get 13 for LSB and 7 for MSB. So 7 and 13 should be the values you are using."

1 Like