A little help with sysex formatting ?
Hi there, I'm having a hard time trying to send sysex messages to my Yamaha reface DX. A little example as a starting point would be so helpful.
According to this document, how would you, let's say, change the Global Transpose ?
Thank you for the help !
I love Yamaha's sysex documentation, it's just so good. To change a single parameter using sysex, this document states that you need to send:
0xF0 0x43 0x10* 0x7F 0x1C 0x03
followed by the addresses of the parameter. In the case of Master Transpose, that's
0x00 0x00 0x07
then the data. In the case of Master Transpose, it's a single byte 0x34-0x4C, which represents -12 to +12 semitones. So 0x40 (64) is no transposition.
and terminating in
0xF7
To transpose up a 5th:
0xF0 0x43 0x10 0x7F 0x1C 0x03 0x00 0x00 0x07 0x47 0xF7
Changing a more complex parameter like Master Tune will require a little more work, but not much. That parameter (address 0x00 0x00 0x02) takes 4 bytes which altogether appear to represent a 16-bit value. You'll need to experiment a bit to see how it's encoded, according to the docs, it looks like only 4 bits per byte are used, representing value bits 15-12, 11-8, 7-4 and 3-0 respectively.
Yamaha synths typically send sysex when you change parameters on the instrument so you can look at what you're receiving in Max when making changes and then see what happens if you send it back... Good luck.
* the lower 4 bits of this number represent the sysex id of your instrument. Typically that's 0, but some people change it, and your instrument won't receive the message unless it matches.
Thanks A LOT. That's so helpful.
May I ask where it is stated that the sysex messages have to start with 0xF0 0x43 0x10* 0x7F 0x1C 0x03
?
Thanks again !
Sorry if this is trivial, but why doesn't it work ?
Making some progress.
There were mistakes in your quotes.
You quoted from the Reface CS section ! So the Model ID is 05H instead of 03H.
Also, i don't know where the 0x47 in your final message example came from.
Also,
I don't understand how to convert the address to a decimal value.
To keep the global transpose exemple, the address is
High : 30
Mid : 00
Low : 0C
(Then the value, converted to decimal, would be between 40 and 88 unless I'm wrong).
Okay, I went through you example again, knowing that it would be for a Reface CS. I think I fully understood it.
So I made this patch to control global transpose on a Reface DX. But nothing happens. This drives me mad.
OK, sorry about that, I assumed it was one synth per document and didn't even look past the first set of listings. For the Reface DX, a parameter change is:
0xF0 0x43 0x10 0x7F 0x1C 0x05 addrbyte1 addrbyte2 addrbyte3 databyte1 ... 0x7F
Master Transpose is still 0x00 0x00 0x07
with 0x40
as the center value (range is given as 0x34
- 0x4C
). 0x47
means +7 semitones.
Final message for transpose up a perfect 5th:
0xF0 0x43 0x10 0x7F 0x1C 0x05 0x00 0x00 0x07 0x47 0x7F
Which I think is what you got. If the instrument isn't responding, check that your sysex id isn't set to something other than 1 (assuming it goes from 1-16 on the interface, 0 if it goes from 0-15).
I've got it finally working. Now I think I've grasped how this whole thing works !
You've been so kind, thank a lot.
Sure, I've been hacking Yamaha sysex pretty extensively the past couple of months. Happy to help others working with this stuff, too.

Looks nice, almost like what I'm trying to do for the Reface DX... Is it downloadable ?
I could save me a lot of time !
Not yet... still ironing out some stuff. I'll let you know when it's ready. It probably won't help too much, though, since the Reface DX is a 4-op synth with a different sysex implementation than the original 6-op DX series.
I'm mostly interested in how the graphical display of enveloppes is handled.
Ahhh my secret sauce. It's a JSUI (as is the keyboard scaling indicator), I can send over the code after I've had a chance to clean it up a bit.
I see. Very curious to have a look to it !
Wow!
I'm trying to send sysex messages to the reface dx but don't know how to do it yet...
Let's say i want to change the LFO speed, given the manual i guess numbers 30 00 12 (1) 00-7F are important:

But i don't know how to translate or use this in your code example:

Could you point me please in the right direction????
Thanks!
I just found this on my computer. No idea if it's my most accomplished version, but it should help you.
Thank you so much!
It really helped me move forwards!
Happy to help. Feel free to use and share.
Thank you!
I'm published another topic with a problem I'm having related to this in case you can help:
https://cycling74.com/forums/linking-cc-messages-coming-from-a-midi-controller-to-some-parameters-in-a-m4l-device-causing-buggy-behaviour-in-hardware-synth
@jeremy: how did you do the envelopes? They look great!
Currently looking to implement GUI ENVs for my MKS80 and MKS70 m4l devices.
It's the JSUI object!
Thanks! Will try this 😊