Had a look a the new message format, the values seem to be send in the following way for AMP1-BASS setting:
0,00 (min) --> 00 00 00
10,0 (max) --> 7E 7F 03
2.00 --> 33 66 00
2.01 --> 74 66 00
So for that type of parameter the rule seems to be ( Target value / Param range ) * ( 256 * 256 * 4). Number is expressed on 3 bytes and written with "reverse" byte order.
For the AMP-TYPE param (77 amp models):
0 --> 00 00 00
76 --> 4C 00 00
The lower (but first in reverse order) byte just stores the value (converted in hexa).
According to
Axe-FX SysEx Messages (from GM Arts) that was not the way it used to work on the AXE-FXs (ONEs).
Yes, the old Standard/Ultra devices used to store the parameter values on *most* knobs as 0-254. This was split into two bytes, XX YY where XX was the lowest 4 bits of the value, and YY was the highest 4 bits. Pretty simple.
The new Axe-II now has more granular control over *most* knobs, with the values going from 0-65534. This requires a full 16 bits to store. The problem is that the MIDI specifications means you can only transmit values using 7 bits as the highest bit of each byte must be a zero.
To get around this, the Axe-II uses THREE bytes to transmit the values XX YY ZZ where XX is the lowest 7 bits of the data, YY is the 8th to the 14th bit of the data, and ZZ is the remaining top two bits of the data.
So, if you had the value 52421 on a knob, then this would be represented by the 16 bits: 1100110011000101
If you split this into segments of length 2/7/7 to store in ZZ/YY/XX:
11 0011001 1000101
So XX gets the last segment: 0
1000101
And YY gets the middle segment: 0
0011001
And ZZ gets the first segment: 000000
11
You will also have to back-calculate the respective knob values to the 16 bit values. For example, a knob that goes from 0 - 10, 0 would of course be 0, but 10 would be
65534. From there, you would work out that 5 is
32767 and 7 would be about
45871 etc.