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

asterisk's icon

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.

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

Floating Point's icon

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/

AudioLemon's icon

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.

asterisk's icon

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!

Roman Thilenius's icon

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?

christripledot's icon

Um, you can write hex in Max. Just prefix a number with "0x", e.g. "0x10" 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.

christripledot's icon

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.

christripledot's icon

@asterisk:

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:

pseudopatch:
                              [number]
                               |
                              [speedlim 50]
                               |
[pak 0xf0 0x43 0x10* 18 param* i 0xf7]
                               |
                              [midiout]

* 0x10 assuming your TX81Z is set to MIDI Channel 1. For MIDI Channel 2, substitute 0x11. For MIDI Channel 16, substitute 0x1f, etc. etc.

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

For ACED parameters:

pseudopatch:
                              [number]
                               |
                              [speedlim 50]
                               |
[pak 0xf0 0x43 0x10* 19 param* i 0xf7]
                               |
                              [midiout]

* 0x10 assuming your TX81Z is set to MIDI Channel 1. For MIDI Channel 2, substitute 0x11. 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! ;)

brendan mccloskey's icon

@christripledot

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.

thanks
Brendan

christripledot's icon

Hey Brendan! No problem:

• 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!

HTH!

christripledot's icon

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

xh9o's icon

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

Max Patch
Copy patch and select New From Clipboard in Max.

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.

brendan mccloskey's icon

Many thanks; comprehensive and quick reply!

Time to wipe the dust off the old DX9!

Best regards
Brendan

christripledot's icon

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!

NoStatic's icon

Matt Gregory has a very nice TX81Z editor you may wish to investigate:
http://the-all.org/tx81z/programmer.html

johnpitcairn's icon

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. http://www.opuslocus.com/logic/

AudioLemon's icon
Max Patch
Copy patch and select New From Clipboard in Max.

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.

AudioLemon's icon

Hello,

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?

Rick's icon
Max Patch
Copy patch and select New From Clipboard in Max.

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

AudioLemon's icon

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?

Rick's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Delay only on the preset version

AudioLemon's icon

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.

kleine's icon

fwiw: Katsuhiro Chiba's OpFour is a patch compatible clone of the TX81z...
https://www.ableton.com/en/packs/classic-synths/

chachaching's icon

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?

Thanks!

Rick's icon

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

chachaching's icon

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?

chachaching's icon

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.

Rick's icon
Max Patch
Copy patch and select New From Clipboard in Max.

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

chachaching's icon

almost got it!

chachaching's icon

think I got it!, thank you!
`

Rick's icon
Max Patch
Copy patch and select New From Clipboard in Max.
chachaching's icon

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

chachaching's icon

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

t.a's icon

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?

ritmoloco's icon
Max Patch
Copy patch and select New From Clipboard in Max.

from an very old Ircam's patch. Probably will help you too.