Is there a way, through a sysex, to know if a given part is actually in use? Name-wise, I noticed they keep the name of whatever was in there even if it was deleted afterwards.
There probably is. My approach to figuring this out would be to:
1) Start with "Init Normal (AWM2)"
2) Place some 1-Part into Part 2. Could be anything. Like maybe "CFX Stage"
3) Read SysEx (including common, Part 1 and Part 2)
4) Delete Part 2
5) Read SysEx of Part 2 - compare with the undeleted Part 2 to see what's changed. Zero-in on these and see if you can identify something useful for determining Part usage.
6) ... if that doesn't do it, take a look at the common and Part 1 areas comparing against the undeleted 1st read (step 3) for those respective areas and see if you can find something that changed that can be used.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Yes - p.237 Data List - 'Part Switch'
Name-wise, I noticed they keep the name of whatever was in there even if it was deleted afterwards.
Actually they keep the ENTIRE PART that was in there last. All that happens when you delete a part is the 'Part Switch' gets set to 0 (OFF). The contents of the part are still there and will get saved when you save the performance.
1. Load the 'Rd 2 Gallery' performance
2. Send 'F0 43 30 7F 1C 0D 15 00 01 00 F7' - note the '30' - in '15' the '5' is part 6 (0 based)
3. Receive 'F0 43 10 7F 1C 0D 15 00 01 00 00 F7' - note the last '00' means OFF - part is NOT active
CAUTION - if you SEND the SysEx in #3 above the '10' acts as a 'parameter change' command (p.213 Data List) and the last '00' will turn part 6 OFF if it was on.
So you can turn on ANY of the 16 parts even if they aren't being used. Of course any part you turn on will have whatever garbage it had when it was deleted, assuming it was ever populated.
To check part 5
4. Send 'F0 43 30 7F 1C 0D 14 00 01 00 F7 - in '14' the '4' is part 5 (0 based)
5. Receive 'F0 43 10 7F 1C 0D 14 00 01 00 01 F7' - note the last '01' means ON - part IS active
Hope that helps.
1) Start with "Init Normal (AWM2)"
2) Place some 1-Part into Part 2. Could be anything. Like maybe "CFX Stage"
3) Read SysEx (including common, Part 1 and Part 2)
4) Delete Part 2
Accessing part switch works perfectly well, much thanks. Been able to create a table of performances with which parts are used (and whether they're mono or poly) to use with midi generation software, very cool.
Congrats on "Been able to create a table of performances"!
Sounds like you might be a programmer. If so you might consider expanding on what you are doing:
1. Use SysEx to extract each performance and save it in SysEx format
2. Write a simple utility to do your checking offline rather than having to connect to the instrument
3. The utitility can help you find/save more detailed info about various features you may be interested in knowing about
4. Which effects, if any, are used? Which controls have been assigned? Are Arpeggios beings used - if so, which ones? Are motion sequences being used? And so on
That offline info can be valuable when you want to use a specific performance as a base to build your own customized version. You will still need to throughly examine the performance on the instrument itself to find any hidden 'gotchas' until your utility covers all the areas you need.