mySoftware [Updates]

Once you create a user profile on Motifator and update with the appropriate information, the updates shown here will be specific to you.

newProducts [YOK]

rssFeeds [Syndicate]


forumforum
 

Old Motifator threads are available in the Archive.

Viewing topic "Resources to learn how to interpret Yamaha MIDI Data Format info…"

     
Posted on: January 20, 2015 @ 04:55 PM
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.

  [ Ignore ]  

Posted on: January 20, 2015 @ 05:21 PM
Jeff Roe
Total Posts:  22
Joined  07-01-2014
status: Regular

Can you be more specific as to what you are trying to do?

  [ Ignore ]  

Posted on: January 20, 2015 @ 05:30 PM
jazz.preest
Total Posts:  263
Joined  06-06-2013
status: Enthusiast
Jeff Roe - 20 January 2015 05:21 PM

Can you be more specific as to what you are trying to do?

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?

  [ Ignore ]  

Posted on: January 20, 2015 @ 05:55 PM
5pinDIN
Avatar
Total Posts:  11891
Joined  09-16-2010
status: Legend
jazz.preest - 20 January 2015 04:55 PM

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.

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:
http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec.htm

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.

  [ Ignore ]  

Posted on: January 20, 2015 @ 06:06 PM
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!

  [ Ignore ]  

Posted on: January 21, 2015 @ 03:17 AM
jazz.preest
Total Posts:  263
Joined  06-06-2013
status: Enthusiast
5pinDIN - 20 January 2015 05:55 PM

There’s really not much to “convert” - it’s more a matter of “assembly”...If you have a specific need, we could “assemble” an example that should help with understanding.

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)?
F0 43 10 7F 14 36 00 4C dddddddd F7 (turn on Parts 5,6,7)?

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...)

This is one of the better resources out there:
http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec.htm

Thank you; a definitely more digestible spec…

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.

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.

  [ Ignore ]  

Posted on: January 21, 2015 @ 11:15 PM
5pinDIN
Avatar
Total Posts:  11891
Joined  09-16-2010
status: Legend
jazz.preest - 21 January 2015 03:17 AM

[...]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)?
F0 43 10 7F 14 36 00 4C dddddddd F7 (turn on Parts 5,6,7)?

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.

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 first/1st byte, bits 6 through 0 are “reserved” (for what, I don’t know ;-) ), so they’re set to 0(zero).

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:
bit# value
6------0 reserved
5------1 A/D
4------0 reserved
3------0 reserved
2------0 reserved
1------1 Part 16
0------1 Part 15

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 off Parts 1,2,3 Insert Effects)
1st byte = 0000000 = 00 reserved, all bits off
2nd byte = 0000000 = 00 Parts A/D,16,15 off, rest reserved
3rd byte = 0000000 = 00 Parts 14~8 off
4th byte = 0000000 = 00 Parts 7~1 off
So that would be F0 43 10 7F 14 36 00 4C 00 00 00 00 F7
OK, that wasn’t very exciting - it will get somewhat better.  :-)

F0 43 10 7F 14 36 00 4C dd dd dd dd F7 (turn on Parts 5,6,7 Insert Effects)
1st byte = 0000000 = 00 reserved, all bits off
2nd byte = 0000000 = 00 Parts A/D,16,15 off, rest reserved
3rd byte = 0000000 = 00 Parts 14~8 off
4th byte = 1110000 = 70 Parts 7~5 on, rest off
Note that the fourth byte has the three most significant bits high, and as I mentioned above, that’s 70 hex.
So that would be…
F0 43 10 7F 14 36 00 4C 00 00 00 70 F7

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…
F0 43 10 7F 14 36 00 4C 00 00 00 07 F7
Note that the fourth byte, which has the three least significant bits high, has a value of 07, which is the Default for that byte as shown in the table. That is, the default is to have Insert Effects on for Parts 1,2,3.

I hope that helped, because it took much more time to write up than it would have to just compose the SysEx.  ;-)

  [ Ignore ]  

Posted on: January 22, 2015 @ 09:58 AM
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"!

5pinDIN - 21 January 2015 11:15 PM

...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:
bit# value
6------0 reserved
5------1 A/D
4------0 reserved
3------0 reserved
2------0 reserved
1------1 Part 16
0------1 Part 15

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.

Aha.  Don’t need to have 8 bits to calculate the hex value!

...The hex values given in the Data Range column don’t all make sense...the third and fourth bytes are indicated as having a range of 00~00, which of course is incorrect...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…

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.

F0 43 10 7F 14 36 00 4C dd dd dd dd F7 (turn on Parts 5,6,7 Insert Effects)
1st byte = 0000000 = 00 reserved, all bits off
2nd byte = 0000000 = 00 Parts A/D,16,15 off, rest reserved
3rd byte = 0000000 = 00 Parts 14~8 off
4th byte = 1110000 = 70 Parts 7~5 on, rest off
Note that the fourth byte has the three most significant bits high, and as I mentioned above, that’s 70 hex.
So that would be…
F0 43 10 7F 14 36 00 4C 00 00 00 70 F7

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.

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…

I hope that helped, because it took much more time to write up than it would have to just compose the SysEx.  ;-)

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.”

  [ Ignore ]  

Posted on: January 22, 2015 @ 01:33 PM
stoneb3
Total Posts:  851
Joined  06-05-2011
status: Guru
5pinDIN - 21 January 2015 11:15 PM


I hope that helped, because it took much more time to write up than it would have to just compose the SysEx.  ;-)

Man I guess. Just what I was thinking as I read it. Although it’s likely that many will appreciate it.
Nice job 5pin.

  [ Ignore ]  

Posted on: January 22, 2015 @ 02:32 PM
5pinDIN
Avatar
Total Posts:  11891
Joined  09-16-2010
status: Legend
jazz.preest - 22 January 2015 09:58 AM

Thank you so much, 5PinDin, for taking the time to walk through this; it dates me but..."duuude"!

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.  :-)

 

jazz.preest -

Aha.  Don’t need to have 8 bits to calculate the hex value!

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.

 

jazz.preest -

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…

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.

 

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.”

Thanks for the good wishes.

  [ Ignore ]  

Posted on: January 22, 2015 @ 02:37 PM
5pinDIN
Avatar
Total Posts:  11891
Joined  09-16-2010
status: Legend
stoneb3 - 22 January 2015 01:33 PM
5pinDIN - 21 January 2015 11:15 PM


I hope that helped, because it took much more time to write up than it would have to just compose the SysEx.  ;-)

Man I guess. Just what I was thinking as I read it. Although it’s likely that many will appreciate it.
Nice job 5pin.

Thanks, Stone. It’s nice to think that more than just the original poster might benefit.

  [ Ignore ]  

Posted on: January 22, 2015 @ 03:30 PM
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

  [ Ignore ]  

Posted on: January 22, 2015 @ 05:47 PM
5pinDIN
Avatar
Total Posts:  11891
Joined  09-16-2010
status: Legend
bgrosse - 22 January 2015 03:30 PM

5pinDIN,

Please let me add my kudos to your contribution as well - thanks! :-)

Bill G

You’re welcome - glad to do what I can.

  [ Ignore ]