Trying to understand Yamaha TG33 dump request in the manual

Hi all,

Having recently receive the Electra One MKii I wanted to get it working with my TG33.

Stuart Hossack made a good start in the public presets.

But it has no patch request function yet.

Looking here in the TG33 manual there are two relevant sections.

Page 107 (Page 144 of PDF) - 4.1.2 - Single voice data
Page 116 (Page 123 of PDF) - Appended Table 2 - contains the whole voice layout

In the bottom right of Page 116 is the BULK DUMP REQUEST 1 VOICE chart, which is what we need.

However the formatting is odd, with abbreviations that don’t appear to be keyed, I can’t work out what they are.

This presents a stumbling block when following the tutorial here

Any help in understanding this would be much appreciated!

All the best,


I would recommend reaching out to Chadwick who made the Patchbase editor. he is very generous with information on tg33 sysex

Imho no, a bulk dump request would ask the device to send all patches, you only want the current one

If you have a look at the charts, it mentions this here, the ones termed “1 voice” are just current voice, while ones with “64 voice” are for all the voices. It’s all contained in the “bulk dump” section of the manual though.

In the smaller charts these become “voice bulk dump request” and “1 voice dump request”, so despite it being confusion they are just about labelled…

So the difference is byte 13 c (bulk) vs e (1 voice)

Many thanks for the response l, what’s confusing to me is a can’t find a key for the lines labelled L, M, V and E that would give me a clue as to what to put there.

I guess L and M are least and most significant, but for a patch request I can’t for the life of me work out put there…

TG33 patch dump request chart

Tg 33

As an aside I’ve gotten quite a way with the PSS480 for example, but it’s amazing how different every manual is in the sysex area and how complex they make it. For example the header in the 480 manual is literally just wrong and by chance I accidentally added another zero row and it worked :joy:

Do you plan on implementing control over the 2 op fm voices in your editor? If so, I got this from the guy who built the Patchbase editor. Hopefully it can be of some help.

" On Page 116 in that PDF you’ll see the descriptions of the different bytes in a TG33 patch dump. If you look under Element B (the first FM element of a patch), the “CONNECT” bits are the algorithm select (shown in Patch Base as FM or Mix). All of those different labeled areas represent the different FM parameters. Below I’m pasting some (lightly edited for intelligibilty) code from the Patch Base editor that should give a better idea of what those different bytes are. The part on the left with “[[” is basically the name of the parameter, and then the byte number, the bits within that byte, and ranges are given.

Hopefully you can make sense of the pseudo-code below, but I’m happy to answer any questions on it. I’m not interested in hoarding any of this undocumented stuff; it just takes time to make it publicly presentable so it’s hard for me to get around to it 🙂

[[.detune]] = (byte: 0x5c, bits: 0…3, maxVal: 15)
[[.scale]] = (byte: 0x5c, bits: 4…5, maxVal: 3)

[[.algo]] = (byte: 0x48, bit: 4, options: [“FM”,“Mix”])

[[.wave, .type]] = (byte: 0x5a, bits: 4…6, options: opWaveOptions)
[[.ratio]] = (byte: 0x5a, bits: 0…3, maxVal: 15)
[[.fixed]] = (byte: 0x59, bit: 0)
[[.amp, .mod]] = (byte: 0x45, bit: 5)
[[.pitch, .mod]] = (byte: 0x46, bit: 6)

[[.mod, .detune]] = (byte: 0x4c, bits: 0…3, maxVal: 15)
[[.mod, .scale]] = (byte: 0x4c, bits: 4…5, maxVal: 3)
[[.mod, .wave, .type]] = (byte: 0x4a, bits: 4…6, options: opWaveOptions)
[[.mod, .ratio]] = (byte: 0x4a, bits: 0…3, maxVal: 15)
[[.mod, .fixed]] = (byte: 0x49, bit: 0)
[[.mod, .amp, .mod]] = (byte: 0x45, bit: 4)
[[.mod, .pitch, .mod]] = (byte: 0x46, bit: 5)

[[.mod, .env, .level, .scale]] = (byte: 0x4e, bits: 4…6, options: levelScalingOptions)
[[.mod, .env, .rate, .scale]] = (byte: 0x4e, bits: 0…3, maxVal: 7, displayOffset: 1)
[[.mod, .env, .delay]] = (byte: 0x4f, maxVal: 1)
[[.mod, .env, .attack, .rate]] = (byte: 0x50, bits: 0…5, options: options99for63)
[[.mod, .env, .decay, .i(0), .rate]] = (byte: 0x52, bits: 0…5, options: options99for63)
[[.mod, .env, .decay, .i(1), .rate]] = (byte: 0x53, bits: 0…5, options: options99for63)
[[.mod, .env, .release, .rate]] = (byte: 0x54, bits: 0…5, options: options99for63)
[[.mod, .env, .innit, .level]] = (byte: 0x55, options: inverseOptions99)
[[.mod, .env, .attack, .level]] = (byte: 0x56, options: inverseOptions99)
[[.mod, .env, .decay, .i(0), .level]] = (byte: 0x57, options: inverseOptions99)
[[.mod, .env, .decay, .i(1), .level]] = (byte: 0x58, options: inverseOptions99)"

TG33 manual edit.pdf (310.4 KB)

1 Like

Thanks all for the assistance so far.

I have the patch request working, and am receiving patches and have begun to match up parameters that are already in the part-finished preset.

Obviously this will take some time. I currently have some oddities where certain controls send from E1 to the TG33 just fine, and they are matched up in the patch dump, but for some reason don’t update on the E1 even though everything appears to work perfectly in one direction.

I shall persist!

RE: The 2OP voices, I won’t get to that til after the basics are working properly.

1 Like