Okay — soooo much learned in the last 24 hours. First-off, I was looking at (what is apparently) the WRONG section of the MIDI Imp. Manual for the Roland RD-700nx. That example that I provided (and based this initial troubleshoot upon) was some
other Reverb parameter control... and those SysEx strings didn't really do
anything to the Roland keyboard. I reached out to Roland support for help, and they got back to me within a few hours. They didn't fully solve the problem, but they pointed me in the right direction.
They suggested that the strings I was looking for were in a different part of the manual / that I needed to reference things via their more-complex address map portion of the MIDI Imp. Guide, and they also suggested that further learning could be one on a few other web-pages. The 3rd of which was this one —
2writers.com | MIDI SysEx Tutorial. Though the site looks like it's
not been modified since the last 1990's, the info was pretty much EXACTLY what I needed to better-help my brain decipher the addresses. Peter, you've been super-helpful... but I fear that I gave you bad info upon which you were trying to help me.... so the above suggestions didn't really work...and now I see why— it wasn't your fault at all... just me providing wrong info (which certainly isn't helped by the fact that Roland manuals tend to be very convoluted.)
Also, the support guide insisted (and so does the web-site guide that they linked me to) that ALL Roland device messages are gonna start with:
F0 41 10
And for anything I'm sending to a RD-700nx, I need to add the Model ID:
00 00 50
So, when you combine those, I'm gonna do any sending to that device (which means I'll aslo slap a "12" in there to indicate 'sending' with a starting phrase of:
F0 41 10 00 00 50 12 ...
So, beyond me having the initial command string wrong, a lot of the answer for this seems to boil down to "where in the synth's architecture" is the parameter living (what's it's sysex address?) and that's really wacky, in Roland's world... For example:
The reverb I'm trying to control / the EQ I'm trying to control... they live in the "Live Set" architecture of this keyboard. So, I had to look at the address map to find the "starting address" (almost like a "country code" in the when dialing a phone#) for that part of the keyboard. And then I need the "offset" address... which basically just tells me "what more specific part of this architecture am I talking to?" — this is more like the "Area Code" part of a phone#. So I have to start my phone call with "country code + area code" ...
... So in the above, I found that "reverb" is actually a parameter that's part of the 'Live Set' system in this keyboard... so I had to start the next part of my string with: 10 00 ... and I had to make sure to overlap the "offset" that specifies Reverb parameters. Which means the next phrase needed to be:
10 00 60 ?? ... and those question marks would be replaced once I found the specific byte for the exact "reverb parameter" that I wanted to control. ... Looking elsewhere in the Address Map, I found:
So... this part of the address needs to be:
10 00 60 00.
This means, my SysEx string for controlling "Reverb Type" needs to be:
F0 41 10 00 00 50 12 10 00 60 00 VAL SUM F7
HOORAY! That much I've now figured out... and I'm successfully able to change Reverb Type on the Roland RD-700nx
I started dabbling with a few other controls, to make sure I was really understanding this SysEx code and the address map. So, I've even gotten the onboard Roland EQ to do the following, using the strings I've compiled from the info in the MIDI Implementation Address Map:
EQ ON/OFF — Working fine
EQ Low-Freq Type (shelf/peak) — Working Fine
EQ Low-Gain — Working fine.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
But now I have a few more details that I'm struggling with — and the linked page (2writers.com) seems to be trying to demystify this for the readers... but I'm still not quite getting it.
I can get the Reverb Type to change... but when I pick
any reverb type... the Roland sets all parameters
of that reverb to zeros. So... I can manually go touch the actual keyboard / pick a piano... / dial up a really web Cathedral Reverb / Turn the amount knob all the way up till the piano is drowning in reverb ... But when I go to Logic's Environment Fader and change the reverb type to "room" or "Plate" or even choose "cathedral" again... It sets the 'Reverb Time' / 'Pre-Delay' / 'Reverb Level' / all other reverb parameters to "0", and the reverb dries up instantly. So... I Found this section of the Address map for other Reverb parameters... but because they're marked with a #, I've learned that you cannot send SysEx Values directly to those addresses... and from the 2Writers.com instructions, it seems to confirm that you must stack up more values to offset the command from an eligible address... and if you offset them properly, it will control these additional parameters. So now I'm lost again.
From the 2writers site:
If you look at the Implementation Manual — I see the following:
So, since "reverb parameter 1" lives at an offset address of # _ _ _ _ 00 03, It would appear that this address is "two positions" later than the last viable address that I'm permitted to send data to: (The reverb level lives at "_ _ _ _ 00 01") so Does that mean that I can never send ONLY a message to "reverb param 1", without ALSO sending something to "Reverb Level"? That seems really challenging... and I'm again stumped.
Also — despite the string that I noted as working above: F0 41 10 00 00 50 12
10 00 60 00 SUM F7 working from Logic's text-fader to control the "reverb type", the seemingly perfect accompanying string that's identical except for the last two parts of the address: F0 41 10 00 00 50 12
10 00 60 01 SUM F7 does not successfully change the Reverb Level, no matter which reverb type I choose. It locks to 0 in the Roland keyboard and changing the fader has no impact on the "level" value. I can watch the reverb type change on the Roland screen as I toggle the Logic Text fader, but the level is un-changed by the other fader that I've designated for level.
So here's a huge screen-shot with probably waaaay too many annotations:
To the above "
works great /
Doesn't work" notations —
Here's what I'm using to successfully change the Reverb Type:
And this Different String (with only 1 byte changed) seems to completely fail to control the "reverb level":
So here's where I'm at:
1. I've learned a lot in the last 24 hours
2. I have proven that my Roland is listening to the SysEx (Per, what I think was, Peter's previous suggestion... the keyboard is always listening and probably cannot be set to ignore sysEx)
3. I am successfully able to Control many of the parameters of the Roland RD-700nx with accuracy.
EQ settings all seem to work perfectly (it's just tedious so I haven't finished setting them all up
Reverb Type is definitely selectable
Here's what I still have yet to fully solve/understand:
A) When a parameter in the Roland MIDI Implementation Guide is listed with a # in its 'Offset Address' in the Address Map, Can I control that with a single string of SysEx, or do I have to do something more complex?
B) If I'm successfully able to control a parameter like "reverb type", and I've entered my string exactly as I found it in the Address Map, why does the very next listed parameter NOT respond to the respective command, using the next command string.