Communicating with the Play Electric

Auto-generated from param-defs.js — only verified, user-facing parameters are listed. For Play Acoustic, see the Play Acoustic reference.

Introduction

The TC Helicon Play Electric is a vocal and guitar effects processor that connects to a computer via USB. While it appears as a standard USB MIDI device, it does not respond to conventional MIDI messages like Control Change (CC) or Program Change (PC). Instead, all device control happens through SysEx (System Exclusive) messages — a part of the MIDI specification designed for manufacturer-specific communication.

Standard MIDI vs SysEx

Standard MIDI messages are short (1–3 bytes) and well-defined: Note On, Note Off, Control Change, Program Change. Most MIDI devices respond to these — for example, sending a Program Change to a guitar pedal typically switches presets. The Play Electric sends these messages (CC#28 for HIT, CC#32 + PC for preset changes, CC#102–107 for footswitches) but ignores them when received.

SysEx messages are variable-length, manufacturer-specific data packets that can carry anything — preset data, configuration, firmware updates. They start with F0 (SysEx start) and end with F7 (SysEx end), with all data bytes between limited to 7-bit values (0x00–0x7F). This means regular 8-bit data must be encoded into 7-bit format.

How the Play Electric Communicates

All messages to and from the device use the TC Helicon SysEx header:

F0 00 01 38 00 71 [command] [data...] F7
│  │        │  │
│  │        │  └─ Play Electric device ID (0x71)
│  │        └──── Device group (0x00)
│  └───────────── Manufacturer ID (TC Helicon = 00 01 38)
└────────────────  SysEx start
Warning: Device ID 00 60 is the bootloader. Sending messages with this header will put the device in firmware update mode, requiring a power cycle to recover.

What the Device Sends (outgoing standard MIDI)

What the Device Accepts (incoming SysEx only)

This is the same protocol that TC Helicon's VoiceSupport 2 application uses. Everything documented here was reverse-engineered by capturing and comparing data packets between VoiceSupport and the device.


Setup Parameter Map (Global Settings)

Global setup is stored in 7 packets of 112 bytes each (0x13 command). Each parameter has a logical index s<n> used by the editor; the underlying byte positions are handled by tch-format.js.

Read: BeginSync → RequestSetup (0x15 00) → receive 7 packets → EndSync

Write: BeginSync → RequestSetup → receive 7 packets → send 7 modified packets (30ms apart) → ACK → EndSync. Read and write must be in the same sync session.

Checksum: (sum of raw bytes 10–109) % 128, stored at raw byte 110.

IndexNameGroupRange / Options
s5Out LevelSetup: Mixer-36–0 dB (-36=Off)
s6Headphone LevelSetup: Mixer-61–0 dB (-61=Off)
s8Guitar LevelSetup: Mixer-31–24 dB (-31=Off)
s9USB LevelSetup: Mixer-36–0 dB (-36=Off)
s10Delay/Reverb LevelSetup: Mixer-36–0 dB (-36=Off)
s11Harmony LevelSetup: Mixer-36–0 dB (-36=Off)
s16OutputSetup: Output0=Stereo, 1=Mono, 2=Dual Mono
s26Pitch CorrectionSetup: Vocal0–100 %
s27Mic TypeSetup: Vocal0=Dynamic Mic, 1=Condenser Mic, 2=MP-75 Mic, 3=E835FX Mic, 4=MP-76 Mic, 5=USB
s28RoomSenseSetup: Vocal0=Off, 1=Ambient, 2=Ambient/Auto, 3=Voice
s29Aux LevelSetup: Mixer-36–0 dB (-36=Off)
s30RoomSense LevelSetup: Mixer-36–0 dB (-36=Off)
s41Tune ReferenceSetup: Device830–930 Hz
s42Guitar Input LevelSetup: Guitar0–24 dB
s43Global Guitar FXSetup: Guitar0 = Off, 1 = On
s44Global KeySetup: Device0 = Off, 1 = On
s46Global TempoSetup: Device0 = Off, 1 = On
s47Lead DelaySetup: Vocal0=None, 1=Voice Sync, 2=Auto
s48Lead MuteSetup: Vocal0 = Off, 1 = On
s50LCD ContrastSetup: Device0–5
s51Up/Down FunctionSetup: Device0=Looping, 1=Set Key
s52Loop FeedbackSetup: Looper0–100 %
s56Out LevelSetup: Output0=Mic, 1=Line
s59Tone StyleSetup: Vocal0=Off, 1=Normal, 2=Less Bright, 3=Norm+Warmth, … (9 total)
s60Aux In TypeSetup: Device0=Live, 1=Tracks, 2=Monitor
s61Loop InputSetup: Looper0=Guitar, 1=Lead, 2=Aux, 3=Lead+Guitar, … (7 total)
s65Vocal CancelSetup: Vocal0 = Off, 1 = On
s66Guitar GateSetup: Guitar-81–0 dB (-81=Off)
s70Speaker SimSetup: Guitar0 = Off, 1 = On
s75Mic BoostSetup: Device0=Off, 1=Low, 2=High
s85RoomSense LoCutSetup: Device0–112 Hz
s91FootswitchSetup: Controls0=Switch-3, 1=Switch-6

SysEx Commands

All messages use header: F0 00 01 38 00 71 [command] [data] F7

Warning: Device ID 00 60 is the bootloader. Never send messages with this header.
CommandDirectionArgsResponsePurpose
0x57 00 00Host → DeviceBegin sync session
0x57 00 01Host → DeviceEnd sync session
0x15 00Host → Device0x13Request global setup
0x45Host → Devicebank, preset#0x20 + 4× 0x21Request full preset
0x46Host → Devicebank, preset#0x20Request preset header only
0x47Host → Devicebank, preset#0x22Request preset metadata
0x50Host → Devicebank, preset#0x34Delete preset slot
0x13Host → Device104 bytes0x34Write setup packet (×7)
0x20Host → Deviceheader dataWrite preset header
0x21Host → Devicechunk data0x34Write preset data (×4)
0x7EBothvaries0x7EIdentity / handshake
0x34Device → HoststatusAcknowledgement

Preset Parameter Map

Each preset consists of 4 data packets (0x21), each containing 25 parameters encoded as 4-byte 28-bit signed integers. Parameters are indexed 0–99 across the 4 packets.

Encoding: Each parameter uses 4 bytes in 7-bit MIDI format (28-bit signed). val = ((b0 & 0x7F) << 21) | ((b1 & 0x7F) << 14) | ((b2 & 0x7F) << 7) | (b3 & 0x7F). If val ≥ 0x08000000, subtract 0x10000000 for negative values.

Packet structure: F0 00 01 38 00 71 21 [chunk#] [100 bytes data] [checksum] F7 = 110 bytes total.

Header packet: F0 00 01 38 00 71 20 [bank] [num] 01 0x03 [16-byte name] [tags] [meta] 01 F7. Byte 10 (0x03) is the preset format version — must match the device's own value or the write is silently dropped.

Packet 0 (Params 0–24)

IndexNameGroupFirmware IDRange / OptionsByte Offset
0StyleGuitar FX: AmpEXP_AMP_STYLE_GUITAR0=Clean Brit, 1=Cali Clean, 2=UK Clean, 3=Deep Clean, … (26 total)8
1BassGuitar FX: AmpEXP_AMP_BASS_GUITAR-9–9 dB12
2MidGuitar FX: AmpEXP_AMP_MID_GUITAR-9–9 dB16
3Mid FreqGuitar FX: AmpEXP_AMP_MID_FREQ_GUITAR0–25520
4TrebleGuitar FX: AmpEXP_AMP_TREBLE_GUITAR-9–9 dB24
5Gate ThresholdVocal FX: TransducerEXP_TRANSDUCER_GATE_THRESHOLD-50–0 dB28
6StyleVocal FX: HarmonyEXP_HARMONY_STYLE0=High, 1=Higher, 2=Low, 3=Lower, … (28 total)32
7KeyVocal FX: HarmonyEXP_HARMONY_KEY0=Auto, 1=C, 2=C#/Db, 3=D, … (13 total)36
8ScaleVocal FX: HarmonyEXP_HARMONY_SCALE0=Major 1, 1=Major 2, 2=Major 3, 3=Minor 1, 4=Minor 2, 5=Minor 340
9StyleVocal FX: DoubleEXP_DOUBLE_STYLE0=1 Voice Tight, 1=1 Voice Loose, 2=2 Voices Tight, 3=2 Voices Loose, … (10 total)44
10LevelVocal FX: HarmonyEXP_HARMONY_LEVEL-36–0 dB (-36=Off)48
11LevelVocal FX: DoubleEXP_DOUBLE_LEVEL-36–0 dB (-36=Off)52
12LevelVocal FX: µModEXP_MICROMOD_LEVEL-51–0 dB (-51=Off)56
13LevelVocal FX: DelayEXP_DELAY_LEVEL-51–0 dB (-51=Off)60
14LevelVocal FX: ReverbEXP_REVERB_LEVEL-51–0 dB (-51=Off)64
15LevelGuitar FX: DelayEXP_DELAY_LEVEL_GUITAR-51–0 dB (-51=Off)68
16LevelGuitar FX: ReverbEXP_REVERB_LEVEL_GUITAR-51–0 dB (-51=Off)72
22StyleVocal FX: µModEXP_MICROMOD_STYLE0=Micromod Clone, 1=Micromod Wider, 2=Thicken, 3=Light Chorus, … (24 total)96
23StyleGuitar FX: µModEXP_MICROMOD_STYLE_GUITAR_PRESET0=Corona Chorus, 1=Corona Fast, 2=Corona Slow, 3=Vortex Flanger, … (17 total)100
24SpeedVocal FX: µModEXP_MICROMOD_SPEED0–1000 Hz104

Packet 1 (Params 25–49)

IndexNameGroupFirmware IDRange / OptionsByte Offset
25SpeedGuitar FX: µModEXP_MICROMOD_SPEED_GUITAR0–1000 Hz8
26StyleVocal FX: DelayEXP_DELAY_STYLE0=Quarter, 1=Eighth, 2=Triplet, 3=Dotted 1/8th, … (18 total)12
27StyleGuitar FX: DelayEXP_DELAY_STYLE_GUITAR_PRESET0=Flashback 2290, 1=Flashback Analog, 2=Flashback Tape, 3=Flashback Lofi, … (16 total)16
28TempoVocal FX: DelayEXP_DELAY_TEMPO40–300 BPM20
29Time LVocal FX: DelayEXP_DELAY_DELAYTIME_L1–1500 ms24
30Time LGuitar FX: DelayEXP_DELAY_DELAYTIME_L_GUITAR0–1500 ms28
31Time RVocal FX: DelayEXP_DELAY_DELAYTIME_R1–1500 ms32
32Time RGuitar FX: DelayEXP_DELAY_DELAYTIME_R_GUITAR0–1500 ms36
33FeedbackVocal FX: DelayEXP_DELAY_FEEDBACK0–100 %40
34FeedbackGuitar FX: DelayEXP_DELAY_FEEDBACK_GUITAR0–100 %44
35Filter StyleVocal FX: DelayEXP_DELAY_FILTER_STYLE0=Digital, 1=Tape, 2=Analog, 3=Radio, … (13 total)48
36Filter StyleGuitar FX: DelayEXP_DELAY_FILTER_STYLE_GUITAR0=Digital, 1=Tape, 2=Analog, 3=Radio, … (13 total)52
37StyleVocal FX: ReverbEXP_REVERB_STYLE0=Smooth Plate, 1=Reflection Plate, 2=Thin Plate, 3=Bright Plate, … (28 total)56
38StyleGuitar FX: ReverbEXP_REVERB_STYLE_GUITAR_PRESET0=HoF - Hall, 1=HoF - Plate, 2=HoF - Room, 3=HoF - Church, … (36 total)60
39DecayVocal FX: ReverbEXP_REVERB_DECAY91–290 s64
40DecayGuitar FX: ReverbEXP_REVERB_DECAY_GUITAR0–290 s68
41StyleVocal FX: TransducerEXP_TRANSDUCER_STYLE0=Megaphone, 1=Radio, 2=On The Phone, 3=Overdrive, … (8 total)72
42ControlVocal FX: TransducerEXP_BLOCK_TRANSDUCER0=Off, 1=On, 2=HIT76
43DriveVocal FX: TransducerEXP_TRANSDUCER_DRIVE0–100 %80
44GainVocal FX: TransducerEXP_TRANSDUCER_GAIN-20–10 dB84
45FilterVocal FX: TransducerEXP_TRANSDUCER_FILTER0–10088
46StyleVocal FX: HardTuneEXP_HARDTUNE_STYLE0=Pop, 1=Country Gliss, 2=Robot, 3=Correct Natural, … (7 total)92
47ShiftVocal FX: HardTuneEXP_HARDTUNE_SHIFT-36–36 semi96
48GenderVocal FX: HardTuneEXP_HARDTUNE_GENDER-50–50100
49MixGuitar FX: µModEXP_MICROMOD_MIX_GUITAR0–100104

Packet 2 (Params 50–74)

IndexNameGroupFirmware IDRange / OptionsByte Offset
50ControlVocal FX: µModEXP_BLOCK_MICROMOD0=Off, 1=On, 2=HIT8
51ControlVocal FX: DelayEXP_BLOCK_DELAY0=Off, 1=On, 2=HIT12
52ControlVocal FX: ReverbEXP_BLOCK_REVERB0=Off, 1=On, 2=HIT16
53ControlVocal FX: HarmonyEXP_BLOCK_HARMONY0=Off, 1=On, 2=HIT20
54ControlVocal FX: DoubleEXP_BLOCK_DOUBLE0=Off, 1=On, 2=HIT24
55RoutingVocal FX: TransducerEXP_TRANSDUCER_ROUTING0=Output, 1=FX28
56ControlVocal FX: HardTuneEXP_BLOCK_HARDTUNE0=Off, 1=On, 2=HIT32
57StyleGuitar FX: CompEXP_COMP_STYLE_GUITAR0=Subtle Tube, 1=Subtle Sustain, 2=Sustain Attack, 3=Sustain Pop36
58AmountGuitar FX: CompEXP_COMP_AMOUNT_GUITAR0–10040
59MakeupGuitar FX: CompEXP_COMP_MAKEUP_GUITAR0–24 dB44
60DriveGuitar FX: AmpEXP_AMP_DRIVE_GUITAR-25–5048
61LevelGuitar FX: AmpEXP_AMP_LEVEL_GUITAR-25–18 dB52
64ControlGuitar FX: DelayEXP_BLOCK_DELAY_GUITAR0=Off, 1=On, 2=HIT64
65ControlGuitar FX: ReverbEXP_BLOCK_REVERB_GUITAR0=Off, 1=On, 2=HIT68
66ControlGuitar FX: µModEXP_BLOCK_MICROMOD_GUITAR0=Off, 1=On, 2=HIT72
67ControlGuitar FX: CompEXP_BLOCK_COMP_GUITAR0=Off, 1=On, 2=HIT76
68ControlGuitar FX: AmpEXP_BLOCK_AMP_GUITAR0=Off, 1=On, 2=HIT80
69DivisionGuitar FX: Delay0–2084
70HumanizeVocal FX: HarmonyEXP_HARMONY_HUMANIZE0–10088
71PortamentoVocal FX: HarmonyEXP_HARMONY_PORTAMENTO0–20092

Important Notes