Old Motifator threads are available in the Archive.
jazz.preest
Total Posts: 263
Joined 06-06-2013 status: Enthusiast |
Hi. In researching SysEx messages, I have hit the wall on how to interpret/convert the MIDI Data Format information into SysEx messages (for instance, the MOX6 MIDI Data Format starting on Page 100 of the Data List manual). So far, I’ve (1) reviewed the MIDI Specification resources at midi.org and (2) tried various searches on the web to see if anyone has walked folks through how to convert the yamaha data format into sysex messages. I’ve no doubt I’m being dense, but… Is there a recommended book or “tutorial” or thread or ??? on “Understanding and USing the Yamaha Data Format Information"… Thanks in advance for any help...Cheers. |
Jeff Roe
Total Posts: 22
Joined 07-01-2014 status: Regular |
Can you be more specific as to what you are trying to do? |
jazz.preest
Total Posts: 263
Joined 06-06-2013 status: Enthusiast |
Hi, Jeff. I’m evaluating the feasibility of developing a simple “Pattern Editor” for the MOX/MOXF. My immediate objective is to understand if its feasible to translate, organize and store the Yamaha MOX bulk dump sysex data into patterns (pattern, section, phrase, pattern mixings and related “master data” (voices, arpeggios, effects). Pretty much a comprehensive translation of the entire bulk dump. I know that folks can do it (e.g. John Melas) and am trying to contact Yamaha as to what’s involved with getting an “SDK”, however, interpreting the MIDI Data Format in the Data List seems a basic step I can do on my own? |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
There’s really not much to “convert” - it’s more a matter of “assembly”. For SysEx messages, start with (3-6)SYSTEM EXCLUSIVE MESSAGE on page 102 of the Data List. Assuming you want to change Modes or the value of Parameters, drop down to (3-6-3-1)NATIVE PARAMETER CHANGE, MODE CHANGE. There you’ll find the basic format of the message. The first 5 bytes of the message are as listed - the only thing to know is that “n” in Device Number is usually “0"(zero). That is, unless you have more than one of a particular MIDI device, the Device Number is usually the first one, or “10”. The next bytes, High/Mid/Low address and Data, are found in the MIDI Parameter Change Tables beginning on page 106. The last byte is F0, End of Exclusive, which demarks the end of that SysEx message. If you have a specific need, we could “assemble” an example that should help with understanding.
This is one of the better resources out there:
EDIT: It seems that while I was composing the above you provided an area to concentrate on. If you would like to ask about a specific dump request, an example message could be posted. Bulk dump messages are composed similarly to what I wrote about Parameter Change ones. The addresses are in the table on page 105. |
jazz.preest
Total Posts: 263
Joined 06-06-2013 status: Enthusiast |
As always, thank you for kind offer to help, 5PinDin. I’ll work through your guidance this evening (PST), and post a follow-up. Cheers! |
jazz.preest
Total Posts: 263
Joined 06-06-2013 status: Enthusiast |
5PinDIN, assembling an example would be a wonderful help. A scenario: MOX, live performance situation using a pattern with eight sections (say IntroA, IntroB, BreakA, BreakB, BuildUpA, BuildUpB, DropA, DropB). During the 1st measure of each break section, I’d like to use a phrase on an unused track to turn off the effects for 3 parts and turn on the effects for 3 other parts. I’m at this point: Using (3-6-3-1) NATIVE PARAMETER CHANGE (p 102) and MIDI PARAMETER CHANGE TABLE (SONG/PATTERN COMMON - upper right hand table)(p 114), I think the SysEx message (without the data value) looks like…
F0 43 10 7F 14 36 00 4C dddddddd F7 (turn off Parts 1,2,3)?
If I’m reading the table correctly, I need 4 bytes of data, I need to construct 4 binary strings, then need to convert binary to hex. Can’t figure out how to correlate Data Range (HEX), with Settings and Default (HEX), the right order to construct the binary nor the hex - also, assume on=1, off-0? I think if I understand this example, I should be able to figure out most of the other sysex. (btw, won’t be able to test on MOX for a few weeks as on the road on business...)
Thank you; a definitely more digestible spec…
I was confused about what data was available in the bulk dump; thought there was a bulk dump of the entire user memory (Flash ROM), not just for the current voice-,performance-,mixing- and master-related data in user memory. Re MOX remote-controlled “simple Pattern Editor” project, doesn’t look like it’s feasible for me to do - pretty sure I will need the Yamaha .X4A data structure. |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
Yes, four data bytes are required, and indeed on=1, off=0. They’re 7-bit bytes, with the highest (most significant) bit being bit 6, and the lowest (least significant) being bit 0.
Looking at the table on page 114…
In the second/2nd byte, bit 6 is reserved (0), bit 5 controls the A/D Part (ignore the “reserved”, it’s an error), bits 4,3,2 are reserved (0), bit 1 controls Part 16, and bit 0 controls Part 15. In the third/3rd byte, bits 6 ~ 0 control Parts 14 ~ 8 respectively. In the fourth/4th byte, bits 6 ~ 0 control Parts 7 ~ 1 respectively.
The second byte is convenient to use for an example of creating the binary and converting it to hex. Let’s turn on Parts A/D,16,15 and set the reserved bits at 0:
So 0100011 would be the binary value, which in hex is 23. Note that the Data Range given for the second byte is 00~23 - 23 is the maximum possible when the three possible Parts (A/D,16,15) are selected to be on. The hex values given in the Data Range column don’t all make sense. For the first byte, the value can only be 00, so I suppose a “range” of 00 to 00 is correct. For the second byte, I’ve already shown that 00~23 is correct. However, the third and fourth bytes are indicated as having a range of 00~00, which of course is incorrect. They can certainly have a minimum hex value of 00 when all of the Parts’ bits are off (0), but the maximum value would be when the three most significant bits (6~4) were high - that would be 1110000 in binary, or 70 in hex. Of course, if either byte 3 or 4 were 70, no other bytes could be anything but 00, since only three Parts can have the Insert Effects on at one time.
Getting back to your SysEx:
F0 43 10 7F 14 36 00 4C dd dd dd dd F7 (turn on Parts 5,6,7 Insert Effects)
However, note that the message doesn’t just turn on Parts 5,6,7 - it also turns off Parts 1,2,3. Therefore, to switch between 1,2,3 or 5,6,7 being on, only the second message is needed - the first is superfluous.
Let’s say you wanted to go back - you’d turn off 5,6,7 and turn on 1,2,3 - again, with a single message…
I hope that helped, because it took much more time to write up than it would have to just compose the SysEx. ;-) |
jazz.preest
Total Posts: 263
Joined 06-06-2013 status: Enthusiast |
Thank you so much, 5PinDin, for taking the time to walk through this; it dates me but..."duuude"!
Aha. Don’t need to have 8 bits to calculate the hex value!
Thank you! OK, now the Data Range, Setting and Default columns line up for me; need to correct the data range values for bytes 3 and 4.
See that I don’t have to turn off Parts 1,2,3 effects before turning on Parts 5,6,7 effects (or vice versa) - just turn on Parts 1,2,3 effects when I need them and turn on Parts 5,6,7 effects when I need them as you can turn off all other part effects with the same SysEx Message…
It most certainly did help - thank you so much. “May the road rise up to meet you. May the wind always be at your back.” |
stoneb3
Total Posts: 851
Joined 06-05-2011 status: Guru |
Man I guess. Just what I was thinking as I read it. Although it’s likely that many will appreciate it.
|
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
You’re very welcome. You provided helpful feedback during my moX-TEXT programming, and I appreciate that. Don’t be concerned about revealing your age - I’m sure that I’m one of the older members of the forum. Â :-)
Â
I’ve found Windows built-in calculator convenient (it’s one of the accessories). If the View is changed from “Standard” to “Scientific”, you can easily do conversions between number systems. EDIT: I use Windows 2000 and XP, which have only the Standard and Scientific calculator modes. I’ve been informed by jazz.preest (thanks!) that Scientific isn’t the correct mode to do bin/hex conversions with more recent versions of Windows Calculator - it seems there’s a “Programming” mode in Win 7 and 8 that can do it.
Â
Yes, the message controls all of the Parts simultaneously - they’re commanded to be either on or off. For example, let’s say originally Parts 1,2,3 were on, and you wanted to change that to Parts 3,4,5 being on. Even though the status of Part 3 wasn’t being changed, the message would still need to have the bit representing Part 3 high (on), because the alternative would tell the Motif to turn it off.
Â
Thanks for the good wishes. |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
Thanks, Stone. It’s nice to think that more than just the original poster might benefit. |
bgrosse
Total Posts: 465
Joined 07-06-2009 status: Enthusiast |
5pinDIN, Please let me add my kudos to your contribution as well - thanks! :-) Bill G |
5pinDIN
Total Posts: 11891
Joined 09-16-2010 status: Legend |
You’re welcome - glad to do what I can. |