Hi everyone.
SinceI learned the basic instrument sysex format for the Yamaha fb 01 i've managed to do some basic set up
But the voice sysex format seems a bit more difficult with a bit of offset on parameters values etc
So my scenario now is the following:
In case i want to change the transpose parameter values on system channel 1 and instrument 1 is the message
f0 43 75 00 06 8f pp f7
correct?
I followed the attached lists and I use pp as a variable value.
Thanks in advance and i hope my questions are not annoying
The fifth byte must be 00011xxx, i.e., between 18 and 1F.
The sixth byte must be between 40 and 7F.
What you write as "pp" must be two bytes, each between 00 and 0F.
Here is the pattern from the picture in hex instead of binary:
F0 43 75 0s zz pp 0y 0x F7
s: system number
zz: instrument number + hex 18 (instrument number + decimal 24)
pp: parameter number
xy: data
I assume the system number is decimal 0 to 15 (hex 0 to F) to represent System Channel 1 to 16.
I assume the instrument number is decimal 0 to 7 to represent Instrument 1 to 8.
Notice how the data xy ends up split into two hex bytes with the order reversed: 0y 0x. (This is what the binary pattern is referring to when it says "Data Low" then "Data High".)
For System Channel 1, I assume the system number s is 0.
For Instrument 1, I assume the instrument number is 0, so adding hex 18 gets a zz value of hex 18.
For Transpose, the parameter number pp is 4F.
Plugging those values in gets the following so far:
F0 43 75 0s zz pp 0y 0x F7
F0 43 75 00 18 4F 0y 0x F7
For Transpose, the data uses two's complement encoding so it can represent negative numbers:
hex 00 to 7F represents decimal 0 to +127
hex 80 to FF represents decimal -128 to -1
In other words, for decimal numbers -1 to -128, calculate 256 - n, (where n is the absolute value of the number), then convert that to hex.
Plugging in some example data values...
A transpose data value of decimal +12 is hex 0C for xy:
F0 43 75 0s zz pp 0y 0x F7
F0 43 75 00 18 4F 0C 00 F7
A transpose data value of decimal -12 is hex F4 for xy:
F0 43 75 0s zz pp 0y 0x F7
F0 43 75 00 18 4F 04 0F F7
Thanks a million Bavi and Clemens. It seems like it was much more complicated than the initial simple messages so I have to study it a bit better to become clearer. But the explanations seem an excellent way to understand things better. It seems like this manual is pretty messy.
Maybe the era it was written and the midi crowd back then had a better understanding of sysex.
[quotePost id=20468]
zz: instrument number + hex 18 (instrument number + decimal 24)
[/quotePost]
I ‘m nearly there Bavi, on most of the background. But for a bit of deeper understanding could you please tell me how you figured that hex 18 number out of those binary fihures?
And what about the transpose hex values. Were they written someehere in any form?
Thank you
[quotePost id=20471]could you please tell me how you figured that hex 18 number out of those binary fihures?[/quotePost]
The byte with the instrument number is shown as binary
00011iii
You can consider that the same as binary
00011000
+ iii
binary 00011000 = hex 18 = decimal 24
More information about converting binary to hex: I looked for a document that explains how to convert a binary number to a hexadecimal number in a friendly way. To help reduce the complexity of typical Wikipedia articles, take a look at the simple English Wikipedia article Hexadecimal, section Conversion, sub-section Binary to hexadecimal.
[quotePost id=20471]And what about the transpose hex values. Were they written someehere in any form?[/quotePost]
The last row of the table explains the transpose data is "0 ~ 255 (2's complement)".
"Two's complement" is a system that can encode negative numbers.
When you are using a data value that fits into a byte (in other words, a value that is made up of 8 bits, or two hex digits), the two's complement system works like this:
decimal 0 to +127 is encoded as decimal 0 to 127 = hex 00 to 7F.
decimal -128 to -1 is encoded as decimal (256 - 128) to (256 - 1) = decimal 128 to 255 = hex 80 to FF.
[quotePost id=20472]
More information about converting binary to hex: I looked for a document that explains how to convert a binary number to a hexadecimal number in a friendly way. To help reduce the complexity of typical Wikipedia articles, take a look at the simple English Wikipedia article Hexadecimal, section Conversion, sub-section Binary to hexadecimal.
The last row of the table explains the transpose data is "0 ~ 255 (2's complement)".
"Two's complement" is a system that can encode negative
[/quotePost]
Very good lessons. Especially the binary one was a lesson really needed to learn. The 2’s complement, seem like something i would have never figured out.
Really appreciate your effort Bavi. Thank you so much.