Forums > MaxMSP

any max/msp people out there using a Yamaha TX81z?

March 29, 2011 | 4:10 am

just got a cheap used TX81z. im interested in building a sysex patch in max/msp to change various parameters.
but sysex gets my head all confused and i cant seem to get it working at all.

anyone out there build a patch for the TX81z that i could have a look at?
more specifically, im trying to format the sysex correctly for use with the sxformat object to send out parameter and value changes to the TX81z.

please help!, im stuck right now…..
thanks, gd

March 29, 2011 | 5:19 am

I suspect someone made an editor librarian for this years ago in max (ie version 2) DZ would probably know.
but there is this– don’t know if it’s possible to integrate with max but I assume it would be:

March 29, 2011 | 8:37 am

It’s not as hard as you think. You just have to read the manual and do a bit of head scratching. It says what it starts and ends with and then the variable numbers in between. Each 8 bit number is represented as a 3 digital number so instead of XXXX XXXX you get 256 or the decimal representation of the 8 binary bits. If you look at the first and last numbers of the TX81z sysex requirements the rest becomes pretty easy.

I got the TX81z a few days ago and I was thinking the same myself (that sysex is hard) but I had a look and a bit of fiddle and it wrecked my head for a bit but then was pretty obvious. Just look at the first and last numbers and I think there is a sxformat object example with a typical Yamaha DX sysex so it starts to make more sense.

Not a patch I am afraid. I found I couldn’t do it in Ableton (as it filters sysex) and have not gone back yet.

March 30, 2011 | 3:40 am

ive got some of the numbers correct for the sxformat object (from the manual – but i cant decipher all of what i need), but im afraid something is not right or im missing something, because when i try to change a parameter or value, nothing happens on the TX81z. i feel like im stuck. if you have something thats working with the sxformat object, let me know what the number string is…thanks!

March 30, 2011 | 7:59 am

unfortunately it is always a bit difficutl to convert hexadecimal to something else,
because you cant write it in max.

or does anybody eventually build a converter using textfield and sprint?

one could also make a simple document using a resource editor such as
resorcerer. you´d type the desired bytes from the hardware manual into
a hex editor, save it to disk, and read it into maxmsp using [filein] … and voila,
decimal representation.

edit: or cant [capture x] dump out content?

August 2, 2011 | 2:24 pm

Um, you can write hex in Max. Just prefix a number with "0x", e.g. "0×10" in a message box is converted to "16" as soon as you’ve finished editing.

I’ve been controlling a TX81Z with SysEx for ages, just with a bunch of [pak] objects, one for each parameter.

Hint: the TX81Z manual has OP2 and OP3 reversed.

August 2, 2011 | 2:28 pm

P.S. The bit order for operator on/off is reversed too.

P.P.S. The TX81Z has a feeble MIDI buffer – it gets full pretty quick. Stick a [speedlim 50] between your GUI control and the [pak] (or whatever you’re using to mash the value into a valid sysex message) to lighten the load.

The TX sounds absolutely awesome and glitchy when you mangle these params live… loads of brilliant stepping and spazzing. It’s one of the dirtiest FM synths I’ve ever used.

August 2, 2011 | 3:17 pm


After re-reading this thread I realise this probably wasn’t all that much help to you yet. I don’t have Max on this machine, but here’s an example to get you started…

For VCED parameters:

                              [speedlim 50]
[pak 0xf0 0x43 0x10* 18 param* i 0xf7]

* 0×10 assuming your TX81Z is set to MIDI Channel 1. For MIDI Channel 2, substitute 0×11. For MIDI Channel 16, substitute 0x1f, etc. etc.

* Stick the desired parameter number from the TX81Z manual here.

For ACED parameters:

                              [speedlim 50]
[pak 0xf0 0x43 0x10* 19 param* i 0xf7]

* 0×10 assuming your TX81Z is set to MIDI Channel 1. For MIDI Channel 2, substitute 0×11. For MIDI Channel 16, substitute 0x1f, etc. etc.

* Stick the desired parameter number from the TX81Z manual here.

I would post my TX editor, but it’s got a lot more sysex trickery in there that would only serve to confuse. Plus I spent hours on it! ;)

August 2, 2011 | 3:52 pm


I’d be real grateful if you would take a moment to explain the function/meaning of the remaining hex values in this list – I’m comtemplating hacking into my DX9 synth via Max, and have no sysex skills.


August 2, 2011 | 4:11 pm

Hey Brendan! No problem:

• 0xf0 is always the first byte of a SysEx message. It means "Here comes some SysEx".

• 0×43 is Yamaha’s manufacturer ID number.

• 0x1n is the basic MIDI receive channel for your device what you want to SysEx, innit. I’m assuming you can count in hex… for MIDI ch. 1, use 0×10. For MIDI ch. 16, use 0x1f.

• After that there is a number that specifies the parameter group. (On my TX81Z a single patch has its editable parameters lumped into two categories. This just tells the TX what category it’s about to mess with.) I’m not sure if any of Yamaha’s other FM synths work this way, but the relevant manuals should provide some illumination.

• Next up is the parameter number itself (see your TX/DX manual for this).

• Then comes the parameter value.

• Finally, 0xf7 means "End of SysEx".

I highly recommend fucking up your Yamaha with SysEx. Pattr interpolation is asking a bit much – my TX chokes on all the MIDI data, but I’ve had some success by restricting the interpolation to envelopes, operator volumes, and lfo depth/speed. Some smooth morphing is possible, with care, but I find it infinitely more pleasing to just blast it with horrible quantised stepped data… crusty FM zipper noise madness!


August 2, 2011 | 4:15 pm

P.S. IIRC most of Yamaha’s TX/DX range were patch-compatible; i.e. they used the same patch structure. I know you can load a TX81Z patch into a DX7 and the DX will just ignore any parameters it doesn’t support. I once loaded a bunch of TX816 patches into my TX81Z without a hitch, too.

OT: maaaaahn, I want me a TX816…

August 2, 2011 | 4:30 pm

"I´ve got some of the numbers correct for the sxformat object (from the manual – but i cant decipher all of what i need), but im afraid something is not right or im missing something, because when i try to change a parameter or value, nothing happens on the TX81z."

I use Sysex for my Korg Ex8000. So it works and it even works really good.

One thing was special, as the the [sxformat] uses decimal numbers you really have to translate your Sysex hex-codes/string into decimal. If you don´t it wouldn´t get even the first message-byte (which always is f0 as chris already mentioned – respective 240 in dec, see excerpt below) and therefore nothing at all. [midiout] then translates it to hex (as all midi data is), you dont have to worry about that.

The patch excerpt shows a bit of the possibilities [sxformat] offers – including the built in [expr]-feature. It´s a great tool and the Sysex-Strings have a pretty common structure (Sysex-Start, ID, Midi, Parameter, Value, Sysex-End). Though I have a Lexicon Reflex which is way hard to program, it uses weird value formats which change between several FX-algos. Not sure how compliacted a TX/DX is in that.

– Pasted Max Patch, click to expand. –
August 2, 2011 | 4:33 pm

Many thanks; comprehensive and quick reply!

Time to wipe the dust off the old DX9!

Best regards

August 3, 2011 | 3:09 pm

Let me know how you get on, Brendan.

Oh, and asterisk: I know the thread was well stale when I dived in, but I hope you got your TX and Max playing together. They make a powerful team!

August 12, 2011 | 2:39 am

Matt Gregory has a very nice TX81Z editor you may wish to investigate:

August 12, 2011 | 6:03 am

Not Max, but FWIW, some time ago I built a Logic TX81Z environment if anyone needs that (ask) – note due to Logic’s inability to parse the incoming sysex it’s an output-only editor, but you can use it to automate the TX from Logic.

And there’s a Logic environment on my website that converts GM bank/program messages to TX patch-change messages.

July 3, 2013 | 12:06 pm

Resurrecting Zombie thread – I dug out the TX81z and started messing with the sysex. Thanks to Christripledot I found it a lot easier. I just started the patch but I thought I would post it up for others who might come across this post.


– Pasted Max Patch, click to expand. –


July 7, 2013 | 12:38 pm


I have completed my TX81z editor. I was trying to set up presets with [pattr] and [preset] but whenever I click a preset the TX81z complains MIDI Buffer Full and the patch does not load correctly. Does anybody know of a way around this?

July 7, 2013 | 6:01 pm

One way would be to stagger your preset objects data. Set each delay to a different time.


– Pasted Max Patch, click to expand. –


July 8, 2013 | 10:21 am

Hi Rick,

I was thinking about doing something like that but there are over 100 or so values so if I give each a 10ms delay the last ones would have a 1 second latency.

Is there any way to stagger/order&delay the values only when they come from the Preset/Pattrstorage?

July 10, 2013 | 1:04 am

Delay only on the preset version


– Pasted Max Patch, click to expand. –


July 14, 2013 | 2:45 pm

Thanks for that Rick – apologies for the delay in reply – it’s been freakily sunny in Ireland so the entire country is staying outdoors for as long a possible before the rain sets in again :)

Your patch looks like it will work. It looks like it’ll mean a bit of a rebuild/rethink but I’ll definitely give it a try. The TX81z is such a beautiful synth that was totally useless to me – now with this patch – the sounds and abstract sequences I’m getting out of it are unbelievable. Thanks again to everyone on the forum for helping me out.

July 15, 2013 | 12:59 am

fwiw: Katsuhiro Chiba’s OpFour is a patch compatible clone of the TX81z…

July 22, 2014 | 8:56 am

I have been building a msp patch to control my tx81z, curious to know how you calculate the channel number for aced, pced, and vced ect. I understand that 18 is vced I just don’t understand how those numbers were found?

Also when I try to control values in max msp with the sysex code usually it only changes the value for Op4. For example code 240, 76, 18, 1 $1, 247 controls op4 decay 1 rate(D1R) via a live.dial but how do I control 1-3 D1R with a live.dial in max?


July 22, 2014 | 12:30 pm

Take a look at page 71 in the TX81Z manual for the list of parameter numbers available.

July 22, 2014 | 12:33 pm

I understand that and can easily apply that to the sysex to control op4. I just cannot control anything but the 4th voice with those numbers. Like I said; code 240, 76, 18, 1 $1, 247 controls op4 decay 1 rate(D1R) but how do I figure out the code to control op1-3′s d1r?

July 22, 2014 | 12:41 pm

Ohhh:) But say my code only edits AR? so (240, 67, 16, 18, 13, 2, $1, 247) only edits AR, in fact any nymber I try ends up only editing the AR! Where O where does my code go wrong.

July 22, 2014 | 1:15 pm

I don’t have a TX81Z hooked up to test, but this should work.

– Pasted Max Patch, click to expand. –
July 26, 2014 | 1:35 pm

almost got it!

July 26, 2014 | 1:56 pm

think I got it!, thank you!

July 26, 2014 | 2:23 pm
– Pasted Max Patch, click to expand. –
July 26, 2014 | 3:25 pm

amazing, thank you. The only thing left I am having trouble understanding is how to figure out the pced and pmem channel numbers.

July 26, 2014 | 3:33 pm

I figured out 16 was pced just by trying random numbers, but just curious how would I calculate this without just choosing random numbers?

Viewing 33 posts - 1 through 33 (of 33 total)

Forums > MaxMSP