I need help with Roland SysEx programming for a controller manipulating a SynthAX LFO via MIDI-OX.
I can manipulate 2 hex bytes of data with this command "F0 41 10 00 00 3C 12 SS 1F 00 20 77 DT S1 F7"
The DT S1 values change the Pitch value just fine. Thank you Eddie for you tutorial!
However the LFO Rate used 3 hex data values. F0 41 10 00 00 3C 12 SS 1F 00 20 6E [02 DT S1] F7
The 3 data values are in brackets. I can see in my data window that the first value "02" moves from 00 to 07.
It's as if this synth parameter is logarithmic or more than 0-127 or (possibly 07 * 127 = 889?) I don't know.
How do I change this 3rd parameter of my hex data?
Thank you Eddie for you tutorial!
You're very welcome. 🙂
How do I change this 3rd parameter of my hex data?
What does the manual say those three bytes are?
This is the template I created from your tutorial.
F0 – Beginning of SysEx message
41 – Roland Manufacture ID
10 – Device ID
00 00 3C – Model ID (AX Synth)
12 - Command ID (DT1)
SS - Checksum start
1F 00 20 3F - Address
33 – Data
4F – Checksum
F7 – End of SysEx message
This MIDI Implementation from the manual about the LFO
** [Partial LFO]
+------------------------------------------------------------------------------+
| Offset | |
| Address | Description |
|-------------+----------------------------------------------------------------|
|# 00 04 | 0000 aaaa | |
| 00 05 | 0000 bbbb | |
| 00 06 | 0000 cccc | |
| 00 07 | 0000 dddd | Rate (0 - 1023) | | | | 0 - 1023 |
I does look like the value is 07H * (0-127) = 1023. But I don't know how to get a number that size into 1 hex byte.(?)
This is the command I'm using now but if I substitute 00 I only raise the LFO rate from 0% to 13%. If I change it to 01 I get from 13% to 26%.
F0 41 10 00 00 3C 12 SS 1F 00 20 6E [?? DT S1] F7
I'm stumped on how to manipulate a second variable.
Can you post a link to the User Guide? I need to see more info.
Here is the link to the midi data.
10 – Device ID
Be sure that 10h is indeed your Device ID.
00 00 3C – Model ID (AX Synth)
This is wrong, according to the manual it should be 00 00 00 52 as shown on page 4 of the link you provided.
|# 00 04 | 0000 aaaa | |
| 00 05 | 0000 bbbb | |
| 00 06 | 0000 cccc | |
| 00 07 | 0000 dddd | Rate (0 - 1023) | | | | 0 - 1023 |
The clue to this part is the first paragraph in section 3 on page 6. (This is also called "nibbled data" as described in section 4 on page 20.)
Essentially, what you have to do is convert the value you want into hexadecimal and then split the 2 bytes into four nibbles and use those values as the least significant nibble of 4 bytes of data.
For example, the decimal value 1023 is 03FF in hexadecimal. Take each digit and use it as the second nibble in four bytes like this: 00 03 0F 0F
and the decimal value 1 is 0001 in hexadecimal, when nibblized it is 00 00 00 01
Let me know if this is not clear. 🙂
Yeah!!!!!! SUCCESS!!! THANK YOU MASTER YODA!!!!! (Eddie,MIDI Jedi!)
I needed to change my data type to accommodate for 4 bytes of data ... DT1: 4bit/4bit. It was set at DT0: 7bit.
I changed my variable to DT1: 4bit/4bit and set the range from 0-7 and now I have a precise LFO slider on my controller.
NOTE: The device ID correct. Roland only has a midi implementation document for the AX-Edge but all the parameters correspond to the AX-Synth as well.
I must study this nibble hex data ...
THANK YOU SO MUCH!!
You're very welcome. Glad you got it sorted out. 🙂