M8X - What is the relevance of the Soundmondo Format Version in a performance dump?
The updated Data List doc now includes the MIDI tables that were missing at release.
One of the tables (00 00 7F 00, page 217 is for Soundmondo major/minor/bugfix version numbers. This was one of the undocumented SysEx records for Modx. FYI - the other undocumented record was for Morph which is now present.
How is the Soundmondo version relevant to M8X and a performance?
At first I thought that maybe the Soundmondo version is synonymous with the dump format. If so that info could be used to identify the different dump formats for different instrument versions.
Except the Soundmondo version in the dump for 'All 9 Bars !' on M8X is 010000. And I took the dump from my M8X and Soundmondo wasn't involved at all.
So what is the purpose/use of this version info?
It's not particularly useful now given everything is the same version. Even in the future, there's not going to be a strong pull to use this record for anything.
Speculating, I would guess this is just a signature that says the data conforms to some version of the data list. And that there may be plans in the future (MIDI 2.0, or what have you) to change/reorder the parameters significantly enough that they would need the data dump to express some versioning information.
The label indicates Soundmondo is involved here - so it may be a way for Soundmondo to take keyboards with the "old" firmware (today's firmware) and properly translate the dumps to a universal "Montage M" format internally to Soundmondo. Then when someone downloads a Soundmondo patch for M - Soundmondo can query this and if the version is 01 00 00 then the result would be the same as uploaded with the 01 00 00 (early keyboards). Or, if down the line firmware revs up this number, then Soundmondo can take a look and translate the old 01 00 00 data to the newer version's format.
So I think this is a two way street - Soundmondo can learn from your keyboard what it's running (firmware wise) and then the keyboard itself can compare dumps you try to load in (since the data dumps will have this value) and properly translate if needed.
Just guessing what they'd have this for. Not necessarily factual.
For reference this is what Yamaha support sent me when I ask about dump records that weren't documented and I was trying to figure out where they fit into the hierarchy of things for the Java code I was writing
F043007F1C000807007F00 : Soundmondo Format Version
F043007F1C000807307000 : Smart Morph Data (File Dump)*The format of this file is nonpublic.
F043007F1C000807307100 : Smart Morph PNG Data (File Dump)
The first line above (ends 7F00) doesn't have the actual version info at the end. This is the soundmondo line for the Modx dump of NeoMorphFM
F0 43 00 7F 1C 00 08 07 00 7F 00 01 00 00 00 79 F7
I'm guessing the 01 00 00 00 is the version info since 79 is the checksum.
The morph data is now documented as address 06 00 10 00 (page 225)
While the PNG data is address 06 00 11 00 (page 225)
Page 213 shows the morph data size as 3004 and the PNG data size as 3000
Since the latest data list doc ONLY uses the new 4 byte addressing I'm assuming that any loads of things from prior instruments gets converted from 3 to 4 byte addresses and mapped to the proper place.
Meaning that loading an old perf and them dumping it will result in a dump file that uses the new format. That is, you couldn't dump an old perf from the M8X and load it into an older instrument directly.
Looking at soundmondo itself, I see that it does keep track of both the connected instrument's soundmondo version as well as the bulk data's soundmondo version. So far the only check I see is that these are not null - but there may be some use for these in the future.
Also, I didn't trace through everything (diminishing returns) - so I may have missed something that's currently used.
For this data "F0 43 00 7F 1C 00 08 07 00 7F 00 01 00 00 00 79 F7" the 01 00 00 translates to a soundmondo version of 1.00
If the data was 03 04 05 then this would be a version of 3.45
Soundmondo version is calculated by 1st value + (2nd value/10) + (3rd value/100)
... which also suggests that the effective range of the 2nd and 3rd values are 0-9.