Synth Forum

Notifications
Clear all

M8X - two new scene 'save' parameters and errors in the Data List common scene table

1 Posts
2 Users
0 Reactions
326 Views
 Toby
Posts: 518
Honorable Member
Topic starter
 

During testing it was discovered that there appear to be two new parameters that are saved into scene memory and also discovered that the actual positions of the Arpeggio and Motion Seq Memorize switches is reversed in the doc from the a dump shows.

When debugging a problem with some SysEx code we tracked the cause to incorrect information on p.234 of the ‘MONTAGE-M_DL_En_E0_web.pdf’ Data List doc in table ’06 02 0c’ that contains the performance common scene data.

The table size is shown as 18 bytes when a Bulk Dump (OS 2.01) shows it is really 20 bytes. It is possible that the table was correct for the original OS and the OS 2.00 update but was changed as part of the OS 2.01 update. I have no way of knowing.

This is one sample export record for scene 1

F0 43 00 7F 1C 00 17 0D 06 02 00 00 00 01 00 01 00 00 00 00 00 01 01 01 01 01 01 01 01 00 61 F7

06 02 00

0x00 00

0x01 00

0x02 01 - this is the Scene Motion Seq Memorize switch setting

0x03 00 - this is the Arp switch

0x04 01

0x05 00

0x06 00

0x07 00

0x08 00

0x09 00

0x0A 01 - Scene Super Knob Link Switch 1

0x0B 01

0x0C 01

0x0D 01

0x0E 01

0x0F 01

0x10 01

0x11 01 - Super Knob Link Switch 8

0x12 00 - Scene Keyboard Control Switch Memorize Switch

0x13 61 - ? What is this?

F7 – end of record

There are at least THREE mismatches between the above and the doc.

1) Notice that 0x02 and 0x03 are reversed from what the doc shows. The 0x02 is actually the Motion Seq Memorize switch but the doc shows it as the Arp Memorize switch. That is the one that caused our problem and took a while to track down.

2) Notice that the dump shows 0x0A as the position for super knob link switch 1 but the doc shows it as 0x09 – that suggests there is a new parameter somewhere earlier in the table. We haven’t been able to determine just where the new parameter is and/or whether it was inserted in-between other parameters which are now shifted to a new position.

3) There appears to be a new parameter at the end of the table at position 0x13 with a value of 0x61 (97 decimal). We have been unable to determine what this parameter represents or why it got saved to the scene. Our concern lies in the fact that the value at that position is different for the other seven scenes:

Scene 2 = 0x62

Scene 3 = 0x61

Scene 4 = 0x60

Scene 5 = 0x5F

Scene 6 = 0x5E

Scene 7 = 0x5D

Scene 8 = 0x5C

Curiously the values are sequentially decreasing. Our concern is that ‘unknown’ parameter value is being changed for each scene and we have no idea what it might be doing or how to change it.

The above test info was using an Init Normal (AWM2) performance and we were only testing the motion seq and arp switches to determine which was which.

We have emailed Tech Support to try to get an updated version of this table and will post the info if we get it.

I'm glad to know there appear to be two new parameters added to scene saves. I just wish I knew what they are so I can check them out.

 
Posted : 20/10/2024 7:45 pm
Jason
Posts: 8401
Illustrious Member
 

Read the spec for bulk dumps.  The byte you're wondering out at the end is the checksum.  There's an error in the formula given in the Montage classic docs but it wasn't difficult to figure out what was wrong.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/10/2024 2:04 am
 Toby
Posts: 518
Honorable Member
Topic starter
 

Jason's reply showed up like normal for some reason. Strange that sometimes his replies work but they never seem to work for anyone else.

Thanks for spotting the checksum thing. We got so hung up with the switches being reversed we totally missed the checksum thing since we were focused on the dump request command which doesn't have it.

I'm hoping support will tell us what that new parameter is for. We've tried everything we can think of to try get it to show up in the dump differently but haven't been successful so far. 

The curious thing is that the new parameter was inserted in the middle of the table rather than at the end so it shifted all of the super knob link switch stuff down a byte - though we hadn't been testing that or even noticed it.

That table with the new parm is the common level table so it is possible that it is a new switch that signals new tables at the part level for more scene info. Storing more stuff in scenes can only be a good thing so we would like to check it out if we can figure out what it is.

Any ideas what new switch it might be?

 
Posted : 21/10/2024 3:05 am
Jason
Posts: 8401
Illustrious Member
 

I didn't spell everything out earlier - but a few surprises in your original post centered around the address.

 

  1. "06 02 00" - I would have expected this to be "06 02 0c" if you were bulk dumping 06 02 0c.
  2. Same as above, you list the address as 3 bytes but Montage M uses 4 bytes.  This would have messed up all of your other bulk dump interpretations in the same manner.  You seem to infer that other bulk dumps you didn't have a problem with.

 

 

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/10/2024 3:06 pm
Jason
Posts: 8401
Illustrious Member
 

... and the byte count should be 18 data bytes which I calculate your supplied bulk dump is indeed 18 bytes of "real" data.  The byte count always includes the address bytes and the checksum byte so the byte count of 23 (decimal) minus 5 = 18 which matches the amount of bytes in the table for address 06 02 0c 00.

 

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/10/2024 3:18 pm
 Toby
Posts: 518
Honorable Member
Topic starter
 

06 02 00" - I would have expected this to be "06 02 0c" if you were bulk dumping 06 02 0c.
Same as above, you list the address as 3 bytes but Montage M uses 4 bytes.

The '00' in '06 02 00' does represent '0c' - the 'c' is the scene number so '00' means scene 1 (0 based) '06 02 03' would mean scene 4. 

You can't bulk dump an individual table like '06 02 0c' - only items specified as having a bulk header and bulk footer.

 
Posted : 21/10/2024 4:33 pm
Jason
Posts: 8401
Illustrious Member
 

I don't have an M to play with - so this was just an aside about the bulk dump info.   ... and now I get it -- I got confused because "c" is also a valid hex value.  The data list shows "c" is the scene number.  So it's 00 for scene 0.

 

The data contained within seems reasonable and the key here is that interpreting the address as a 3 byte value seems to have gotten you off the tracks early.  The first byte after the address you show as 3 bytes instead of being offset 0x00 is actually part of the address and the next byte is offset 0x00.  Then you'll have all of the offsets line up where your data length matches what the data list displays as the # of bytes for this block.  If you still interpret that things don't match (reversal of positions and other things you've asserted) then that's another thing but at least start out with the correct interpretation which respects the 4-byte addressing of M (which was 3-byte in Montage Classic ... so decoding is different this time around) - include these 4 bytes in the byte count and include the last byte before the sysex termination byte as the checksum and also part of the byte count.  Since there will always be one checksum byte and 4 address bytes - you would subtract 5 total from the byte count in order to arrive at how many "real" data bytes there are.  As in the things that are documented in the tables of the data list.

 

F0 43 00 7F 1C 00 17 0D 06 02 00 00 00 01 00 01 00 00 00 00 00 01 01 01 01 01 01 01 01 00 61 F7

 

F0 (Sysex initiate)

43 00 7F 1C (Yamaha ID=43, Device#=0, Group#=7F 1C)

00 17 (byte count = 17 hex, 23 decimal and 23 decimal minus 5 decimal for address and checksum equals 18 decimal total "real" data bytes)

0D (Model ID=0D)

06 02 00 00 (Address 1st=06, Address 2nd=02, Address 3rd=00 this is c=0 for scene #(c+1) #1, Address 4th=00)

00 01 00 01 00 00 00 00 00 01 01 01 01 01 01 01 01 00 ("Real" data bytes)

61 (Checksum byte)

F7 (Sysex terminate)

 

Breakdown of data bytes according to data list (using zero based decimal addresses):

 

0000: 00 (Scene 1 Arpeggio Master Switch)

0001: 01 (Scene 1 Motion Seq Master Switch)

0002: 00 (Scene 1 Arpeggio Memorize Switch)

0003: 01 (Scene 1 Motion Seq Memorize Switch)

0004: 00 (Scene 1 Super Knob Memorize Switch)

0005: 00 (Scene 1 Mixing Memorize Switch)

0006: 00 (Scene 1 AEG Memorize Switch)

0007: 00 (Scene 1 Arp/MS FX Memorize Switch)

0008: 00 (Scene 1 Super Knob Link Memorize Switch)

0009: 01 (Scene 1 Super Knob Link Switch 1)

0010: 01 (Scene 1 Super Knob Link Switch 2)

0011: 01 (Scene 1 Super Knob Link Switch 3)

0012: 01 (Scene 1 Super Knob Link Switch 4)

0013: 01 (Scene 1 Super Knob Link Switch 5)

0014: 01 (Scene 1 Super Knob Link Switch 6)

0015: 01 (Scene 1 Super Knob Link Switch 7)

0016: 01 (Scene 1 Super Knob Link Switch 8)

0017: 00 (Scene 1 Keyboard Control Switch Memorize Switch)

(18 bytes total - matches byte count when factoring +4 addr +1 CkSum)

 

 

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/10/2024 6:09 pm
Share:

© 2025 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us