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

hi,
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.

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:http://www.jsynthlib.org/

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.

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!

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.

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.

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.

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

• 0x43 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 0x10. 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!

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.

"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. --

Copy all of the following text. Then, in Max, select New From Clipboard.

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.

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.

<code>

-- Pasted Max Patch, click to expand. --

Copy all of the following text. Then, in Max, select New From Clipboard.

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?

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.

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?

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?

Hey thanks everyone for the interesting patches! Does anyone know if it is possible to send sysex messages in order to change parameters in "performance" mode? The problem is that when I am sending sysex the tx81z allows me to be only in "single" mode. It would be really great if you could change various parameters real time in multitimbral mode. Does anyone have any experience with this?