How to Create (Better) SysEx Strings
WARNING: ADVANCED STUFF!! |
FAQ: |
PROBLEM: |
The same applies to Importing old Mixer
Maps, where each SysEx String is imported as a separate standalone one.
I was helping out another forum member (Hi,
Vic!) in
merging a Roland JV-1080 XML with the Patch Name Scripts, and I found that
the stock panel, has each SysEx defined as a single separate item, which
is like 500 SysEx strings!! |
The goal is to define 1 or 2 SysEx string, with substitutable values where it can be defined in the Parameter box. Below it's an example / procedure of how this could be done. |
2006/02 |
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
First you need to know what SysEx String
you're trying to define or send. |
|||||||||
For this EXAMPLE, we'll be creating a
generic SysEx string for the Roland JV-1080. |
|||||||||
For Performance Common, F0 41 10 6A 12 00
00 00
Fn XX CS F7
|
where
|
||||||||
For Performance Edit, F0 41 10 6A 12 01
00 1P
Fn XX CS F7
|
where
|
||||||||
For Patch Edit, F0 41 10 6A 12 02
0P nn
Fn XX CS F7
|
where
|
||||||||
As you can see... F0 41 10 6A 12 aa bb cc Fn XX CS F7 where |
|||||||||
This is generally very similar for most devices, the "fixed values" at the front usually specify the manufacturer's ID, the device ID and SysEx editing function commands. |
|||||||||
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
Creating the SysEx - The "Create SysEx" Box |
|
You can't actually define the SysEx without doing it in a Parameter pane. |
|
|
So If you don't have any Parameters defined yet, then Click the Add Parameter button. This will then bring up the Parameter pane |
|
Enter a name for the Parameter you're
creating.
Then Click the mighty ''Create SysEx'' button!! A new window will pop up. This is the Create SysEx string window. |
|
|
Specify a name for this SysEx. Usually I name it as, for example, "Roland JV-1080 SysEx1" |
|
We need to first specify the LENGTH of the SysEx string. |
|
For this example, the Roland JV-1080 string is When you've set this, you'll notice the Value LIST on
the bottom left has Value1, Value2, ..., Value 10. |
|
SPECIAL CASE: This is for
most Roland synths only. The Midi Device Manager SysEx is quite smart, and has included this Checksum calculation. On the right, you need to select Roland Checksum in the Checksum drop down list. NOTE: |
|
Now, we need to specify those "FIXED VALUES" in the
SysEx String. |
|
|
Highlight the Value, then click on "Remove Value" Then you'll see, this Value is no longer available in the Value List. By doing this, you have successfully removed this Value's "definable" property. |
Once you have removed a Value in the Value List, you can then ENTER a fixed value for this at the top white boxes. You can either click on the HEX column or the DEC or even the Binary Column to enter either a HEX number, a decimal or a binary value. |
|
In this example, the 1st value we need it to be fixed at
41H. You'll see that this number STAYS THERE and not return
to 00. |
|
|
Repeat the process, until you have removed
all the Values that need to be "Fixed Values" In this Example, we need the 1st 4 values to be fix, so we remove up to (and including) Value 4. |
|
You can see from this screen cap: 41 10 6A 12 are now entered as the FIX Values. |
The rest is quite simple now. But for convenient sake, we can rename them to something more meaningful or easier. |
|
|
Highlight on each value. Double-click on it. Now you can enter a name. |
|
You can even type in some names that helps
you remember what to put later on.
In this example, the PART value is 1P, which can be 10 to 1F, so in decimals, it's 15+1 to 15+16, so I just put (15+P#) as a reminder for myself! |
The last value in this case is our 'x' value, so I'll just rename this to x. | |
For this example, everything is done and you can hit OK to leave the SysEx definition window. |
|
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
Once you hit OK the SysEx window will close and you're back to the Add Parameter pane (Or just the Parameter pane if you 're doing this within an already defined Parameter). You can see here, that the SysEx string appears as the selected Transmission, with its easy to remember name. Underneath you can still see the current transmission string. AND the most important: By entering appropriate numbers or formulae in the formula item, you can change the SysEx to the exact functions you're trying to send. NOTE: |
|
In this example, I'd like to define my parameter to be,
say, the JV-1080 Performance Edit, Part Mix/Eff Send. This is :
So in this case, |
|
Now as for that PART value...
There are a few ways / tips to do this. You can either enter a fix value, in this case 16 or 17, ..., 31 - you'll see the HEX above will display 10 to 1F. Or you can use a formula, (15+1) or (15+2) ... (15+16) since 1 to 16 are the part numbers. (see below) |
|
Or you can enter (15+Part) and then define "Part" as a variable in the sub-node.
But if you just want this for Part 1, then just enter 16 here, which in HEX is 10, which is the correct number for this part. |
|
And for the Function FN,
Fn = 0B for Mix/Eff Level 0B is HEX You can check on the HEX string above, it changes to 0B. |
|
Last of all, make sure that the X value, is 'x', which is what Cubase sends with the Slider/Fader/Switch.
NOTE: |
|
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
OTHER TIPS | |
So that's it. |
|
We've now created a ''Generic'' definable/customizable SysEx string
for the Roland JV-1080. |
|
TIPS: QUICK CREATING MULTIPLE PARAMETERS |
|
Having a SysEx string like this also helps to speed up creation of multiple parameters, say you have 16 parts so you need 16 paramters with just the Part value different. | |
Using the same JV-1080 example... |
|
I want to create 16 Paramters for each PART LEVEL, i.e., I want 1 parameter for Part 1 Level, 1 for Part 2 Level, etc, up to Part 16 Level.
For the JV-1080 the SysEx for changing Part Level is again: |
|
|
So for this example, you enter: For the PART VALUE: Enter (15+P) NOTE: It'll say Error in the PART result, but this is because the Multiple P is not being fed to the calculations yet. Then all you need to do is is check By checking this the Variable Name and
Range becomes available. Then hit OK. |
AND VOILA.
You get 16 Parameters created, All with values set for A=1, B=0, fn=6. And in the PART formula, you'll see it says (15+1) for the Part Level 1 parameter, (15+2) in the next, and on the last one it's (15+16). This really makes creating multiple parameters a lot easier, and YOU CAN'T DO THIS if the SysEx string is fixed with no extra values and hence not configurable. |
|
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
While helping out creating these configurable SysEx
strings, there was one SysEx string that needed a double Value. |
|
For example, this is the SysEx for selecting a Patch # for the Roland JV-1080: | |
F0 41 10 6A 12 01 00 1P Fn XX YY CS F7 |
P=Part# Fn = 04H XX YY = Patch Number (0-255) or in Binary it's 0000 xxxx 0000 yyyy CS = Roland Checksum |
You see that XX YY are 2 values, so this string is has 13 Values instead of 12. | |
In this case, when the values cross over from 127 to 128... |
Patch #127 = 07H 0FH Patch #128 = 08H 00H |
So if this is in 1-199 decimal terms, it's like XX is the 100th's, and YY is the 00-99 |
|
So for this we need to create a new SysEx since it has another value, plus we need to deal with the double value, since Cubase only have ONE x value... |
|
|
|
Refer to Creating SysEx above, in this string, we need Length = 13, and Roland Checksum selected. Then Delete the Value 1 to Value 4 and enter the FIX Values at the white boxes, also rename Values 5 to Value 8. |
|
|
|
Now we're left with the last 2 values. These are our XX YY
Values. |
|
Next, we need to remove Value 9. To do this, again, highlight Value 9, and hit the Remove Value button. |
|
Now, to give a better idea of what we're doing, if you look
at the white boxes, under Value 9 and 10, you'll see in the lowest row, it
says 0/7 for Value 10. |
|
|
|
Click on Number of Bytes and increase this, to say
14. |
|
|
|
Also, take notice of the DECIMAL ROW under Value 9 and Value 10, they're now 0xxx xxxx and 0xxx xxxx. Looks familiar? Kind of, since we want 0000 XXXX and 0000 YYYY. |
|
You see, this is for 7 Bits per Byte. (so u get the 0/7
under Value 10).
But we want 0000 XXXX and 0000 YYYY, it's 4 and not 7. |
|
|
|
Now you can check in the Decimal row under Column Value 9 and Value 10, they have changed to 0000 XXXX |
|
The Byte Position selection lets you select which is the 0/4 and which is the 1/4. You can change these in the black boxes, so that if you want the increment to go from 9 to 10 then u put 9 at position 0 and 10 at position 1. But in this example for the JV-1080, the next large number is Value 9, so our Byte Position 0 is at Value 10. You can always check which is which, at the last row in the white box above, in this case, notice where the 0/4 ad 1/4 are placed according to the Positions set. |
|
|
Well, that's it, just hit OK, and what do we have... |
|
|
You can see we have here a new
SysEx, again, you can specify the values for A, B, PART and fn here.
Notice that the range for the 'x' value is now 0-255!! Now just enter 127 and then 128 here to double check and see if the HEX strings displayed are correct or not. |
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE
Final NOTES |
So that's it. |
I hope the info above can help anyone create their proper SysEx strings. |
Last of all I should mention 2 important notes: |
1. There is no way to delete or edit a defined SysEx
string. |
2. You can 'bulk' delete all
unnecessary SysEx strings, well, in some way... Basically if you delete your Midi Device.bin file located in the Cubase Application Data folder, %APPDATA%/Steinberg/Cubase SX 3/ - where %APPDATA% is usually C:/Documents & Settings/<user>/Application data/ When you delete the Midi Device.bin file, Cubase will lose all these references to any Panels loaded or imported. And it will re-create a new fresh Midi Device.bin. the next time it starts (and re-saved on next quit). |
So... if u have tons of SysEx
strings you now replaced with the 1 string method above and want to get
rid of those unnecessary strings, this is what u do. - Export the new XML, with only references to the new SysEx string(s). - quit Cubase. - Delete Midi Device.bin - Start Cubase, then in Midi Device Manager, re Import the XML you've saved just now. Now, you'll see the SysEx available are just those referenced by the XML, all previous unused SysEx strings are gone. |
Q U I C K J U M P |
|
Top
| Introduction |
Preparation |
Create SysEx |
Config Values |
|
BACK TO DEVICE PANEL HELP PAGE | BACK TO DEVICE PANEL MAIN PAGE