Changing effects on Yamaha keyboards using System Exclusive
This document tells you how to change effects on Yamaha keyboards using System Exclusive messages.
There is a lot of good documentation about System Exclusive (for example at Cakewalk). Using System Exclusive, on the other hand, is troublesome and hard; if not impossible.
In short: System Exclusive messages are messages sent to your keyboard by your computer instructing your keyboard to do something. Most of the time this "something" is something else than an instruction to play a note you hear. You should rather think of messages saying: "My dearest keyboard; would you be so kind to change the effect from "Hall 1" to "Hall 2", on which your keyboard will hopefully respond with "Yes, master".
I myself have a Yamaha PSR-730 keyboard; I don't know whether my solution works for other keyboards, but if not, this document should clear up some difficult parts anyway. It should work for Yamaha PSR-630 keyboards. I also expect it to work for other (Yamaha) keyboards supporting XG.
At the bottom of this document there is a screen capture of what Cakewalk should look like after you've done all the steps presented in this document. I also have an effects.wrk file that contains the result of the steps below. Right-click the link "effects.wrk" and choose "Save file" do download it. Open it in Cakewalk Pro Audio 6.0 and try to play it. You should here the "DELAY L,R" effect.
Step 1: Preparations
- Check out the XG Format Specifications (thanks to Paul Sheldon for the link). I have version 1.26 of the document, but a newer version appears to be available.
- Try to comprehend the "MIDI Data Format"-part of your keyboard manual and get really angry...
Connect your keyboard to your computer. Put the "IN" cable in "OUT" and the "OUT" cable in "IN". Yes, it's a marvelous world we live in...
Start Cakewalk Pro Audio 6.0. or other software with which you can send Sysx messages. In Cakewalk you can send System Exclusive message using the Sysx window or the Events window. I shall explain it using the Events window.
I will now assume you're using Cakewalk Pro Audio 6.0 for Windows.
Step 2: Adding a Sysx event to the "Event List"
- Open the "Event List" window. Do this by right-clicking on one of the tracks in the "Track" window and then choosing "Event List". The "Event List" window pops up.
- Scroll upward to the first possible event and click that first event; a red box around that event will show you that you indeed selected it.
- Hit (but not too hard) the "Insert" key. An exact copy of the original row will be made. Select the first of both identical copies.
- Change the "Meas:Beat:Tick" value to "1:1:000" (if not already that value). That is to say: "We want the event to occur at the beginning of our piece, before any other event".
- Yell: "Allright!"
- Change the "Kind" to "SysxData" (if not already that value). Do this by double clicking the "Kind" value in the this row and choosing "Sysx Data" (middle row) in the window that comes up. Click OK in that window.
Except for the message itself (for which you haven't filled in a value yet) you have now instructed Cakewalk to send a Sysx message to your keyboard before any of the other events for this song happen.
Step 3: Filling in the correct value for the Sysx message itself
Now the tricky part: what do we send to our keyboard? We are going to send the following three messages:
- XG System ON.
This instructs the keyboard to be prepared to receive so-called XG messages.
- Set "Variation Connection" to "System"
This instructs the keyboard to accept messages from the computer containing instructions to change effects. Do you get that? Normally, a keyboard does not accept you to change effects in another way that clicking buttons on your keyboard. We hereby tell the keyboard to also accept effect-changing instructions from the computer.
- Choose "this-and-that" effect
As a result of this message, the effect should be in effect. Haha.
So, how do we do that? Here we go:
- Fill in:
F0 43 10 4C 00 00 7E 00 F7
in the "Value" part of the row you just created in the "Event List" window. This is the "XG System ON" message.
- Create a new row by taking the steps 2 to 6 above. Note that this message
should come below the message you just created. To achieve this: in step 3,
don't take the first of both identical rows, but the second one, that is the
F0 43 10 4C 02 01 5A 01 F7
in the "Value" part of the row you just created in the "Event List" window. This is the "Set variation..." message.
- Again, create a row after the newly created row. By now,
you should know how.
You will now need your "XG Format Specification" book or maybe your "MIDI Data format" chapter from your manual. Whichever you choose, you should be able to find a table with a name similar to "REVERB TYPE" or "CHORUS TYPE" or "DSP (VARIATION) TYPE". These three are three different tables, by the way.
Pick an effect you would like to hear. In this example I'll choose "DELAY L,R". This is in the "VARIATION TYPE"-table. It has "Type MSB" number 06 and "Type LSB" number 00. I'll spare you the details of that. It's not interesting... (By the way, you can pick effects that are not available to you via the buttons on your keyboard, and play them anyway!)
With these two numbers in mind we will now fill the "Value" field of the third row with the value:
F0 43 10 4C 02 01 40 06 00 F7
I underlined "06" and "00" to show you that these are the values we got from the table. If you choose another effect you should change the underlined numbers with the numbers corresponding with the effect you chose.
(The values in the table are decimal numbers (i.e., only digits "0" to "9") while the underlined numbers in the Sysx messages should be hexadecimal (i.e., digits "0" to "9" and 'digits' "A" to "F"). To convert a decimal number to a hexadecimal number: start the Windows calculator, choose menu "View" and pick "Scientific", type the decimal number you wish to convert, click the white spot before the word "Hex", the number on the "screen" of the calculator is now hexadecimal)
- We're almost done. Now we will have to tell the keyboard to use the
effect on the sound. Because 'till now we'll have indeed the effect, but the
"strength" of the effect is still zero. We'll have to tell the keyboard the
set the "effect-strength" to a non-zero value.
Again, create a new row below the last one, and change "Kind" to "Control". Change the first field of "Value" to 94 (that is the number that tells the keyboard that we're about to set the effect-strength) and the second field to 127. That's the maximum strength of an effect.
Your "Event List" window should, by now, look like this:
Make sure the first four lines of your "Event List" are the same as the ones in the picture. By now it should work!