The MIDI Forum

  Monday, 30 April 2018
  4 Replies
  8.4K Visits
I am the owner of a YAMAHA TG-500. For control I use a Roland W-30 keyboard and built-in 16-track MIDI sequencer.

I control various TG-500 parameters through a control change command such as volume, pan, sustain, pitch bend and banks select as well as choosing performance, multi set-ups or voices.

Recently I have been interested in controlling more TG-500 parameters (such as filter sweep or resonance for example) and this is where I am facing few snags. I have read the TG-500 MIDI data format document which lists all the controllable parameters through MIDI sysex commands. But it did not work so far.

The unit is in multimode (internal set 1 for example) with delay and phase chosen as global effects.

I have chosen a piano voice patch on MIDI channel 1 and set the effects send manually at a value of 101

I want to control through MIDI the amount of effect applied to piano, for example set it to 0 (zero) at the start of the song and then somewhere in the middle of the song set it to 90. I have looked at the MIDI chart and the syntax looks like this (Page 4 of the MIDI chart attached here):

(1) MIDI Parameter Change table ( Multi )

$F0 $43 $1n $29 $00 sub_group p_msb p_lsb v_msb v_lsb,$F7

Note) n ; Device Number
s ; parameter sub_group number
p; parameter number
v; parameter value

So the syntax should look something like:

F0 43 $1n 29 00 sub-group p_msb p_lsb v_msb v_lsb F7

Looking at the chart (page 5), s = 1 (instrument 1 piano)
P = 7 (instrument effect send) and
Value = 0 (no effect)

I inserted : F0 43 11 29 00 01 07 00 F7 and sent the command but nothing happened.

I then changed it to F0 43 11 29 00 01 07 00 00 00 F7 again nothing happened.

I read somewhere that 7F was for all receive so I changed the MIDI receive channel to all and inserted F0 43 7F …….. and tried both versions but again nothing happened.

I must be doing something wrong. Can anyone assist me?

By the way if I want to change the instrument memory bank through sysex (parameter 1 of chart on page 5) how is this done? It looks like there are 3 parameters that must be written (inst memory bank, inst memory and off/on for ind1..4)

Thanks in advance.
4 years ago
I've downloaded the TG-500 midi doc, and I'm trying to make some sense of it.

The system is nothing like that for my MU90r.

So far, it looks to me as if the sysex system only operates on certain 'blocks' of data, which can be sent and received. If this is so, then you will need to determine the block that contains the data you wish to change, then get (Dump Request) that complete block, store the data in memory, change the specific bytes that you wish to modify (as per the tables provided), then send back (Dump) the complete block.

Is that what you were trying?

I've seen nothing (so far) that suggests you can send just certain parameters.

Does that seem reasonable given what you've read in the manual?

I'll keep looking at this.

I did find a posting on another forum that gave a number of complete commands regarding certain blocks. I found this easily using google, and I think 'Yamaha TG-500 sysex'.

4 years ago
Geoff thanks for your reply.

I am at a loss how to control parameters through sysex as suggested in the manual. I know that this can be done as there are some editor/librarian software that interfaces directly with the TG-500 and control it in real time....

My initial thought is that I am writing wrongly the sysex command interpreted from the manual. Yamaha does not provide any example as such. I hope that people from Yamaha read this and help or maybe a MIDI programmer knows the solution. I tried to find Yamaha support links but so far with no success.
2 years ago
I inserted : F0 43 11 29 00 01 07 00 F7 and sent the command but nothing happened.

I then changed it to F0 43 11 29 00 01 07 00 00 00 F7 again nothing happened.

The param no. and value are two bytes each (msb, lsb), so that should be: F0 43 1n 29 00 01 00 07 00 vv F7 (n = device no., vv = send level). Obviously, the device number must match, and the device must be in multi mode.

As for setting the instrument bank: those three settings are one parameter (number 0) as far as the sysex parameter change protocol is concerned. So you can only set those three together. It should look like this (parameter bytes in binary):

F0 43 1n 29 00 01 00 00 0000000x 0xxxyyzz F7 (zz = bank, yy = memory, xxxx = indiv. out on/off)

If you only want to change one without affecting the others, it becomes a bit more complicated:

  • request multi mode bulk dump (unfortunately, there seems to be no method of reading individual parameters - if someone knows of one, please let me know!)
  • get the 2 bytes for param 0 from the bulk data (index 94 and 95, +32 from the start of the message)
  • change the bits you are interested in and send the 2 bytes back to the device in a parameter change sysex message

EDIT: I just had another look at the image you posted and the bulk numbers look totally different from mine as well as the version found online (https://de.yamaha.com/files/download/other_assets/5/317115/TG500E2.pdf) (70,71 in yours instead of 94,95 in the versions I have seen so far). You may have a different revision of the hardware (or the wrong manual), so this information may not be 100% applicable.
Try 10 for the device number byte.
  • Page :
  • 1
There are no replies made for this post yet.
Be one of the first to reply to this post!