Can anyone tell me how to request the PART TYPE (AWM2, FM-X, AN-X, Drum etc.) via SysEx parameter request from Montage M?
I've scoured the MIDI Data Table in the documentation for the appropriate address bytes, but the solution is evading me.
Perhaps the part type has to be inferred from other data..?
The 'Part Type isn't exposed directly in the data list but would make for a good IdeaScale suggestion.
See the table at the top right of p.217 of the data list doc. That table shows you can use address 1 and 2 to determine the part type of records in a part dump. Since a part can only be of one type there will only be records for that type.
1. records with address 1 = '4p' will be AN-X parts
2. records with address 1 = '3p' will be FM-X parts
3. records with address 1 = '2p' and address 2 = '10' will be drum parts
4. records with address 1 = '2p' and address 2 != '10 (i.e. 00, 01, 02, 03, 04) will be AWM2 parts
You can dump a part of interest from the current performance using: f0 43 20 7f 1c 0d 04 04 01 nn f7 - replace 'nn' with the part number 0-F.
Or you can dump any desired performance and then examine each parts records.
I use a Java utility I wrote that dumps all of the performances and creates Java classes for each of the hierarchical 'tables' represented in a bulk export. The constructor of the 'PerformancePart' class determines the part type, populates a partType variable and a getPartType method that returns it.
Very helpful, thank you!
@toby So I created a performance with INIT parts using each of the various engines (P0 AWM, P1 Drum, P2 FM-X, P3 AN-X) then sent the bulk dump request as you described [f0 43 20 7f 1c 0d 04 04 01 (00-03) f7] and compared the low nibble of the first address byte with my outgoing third address byte from each of the returned messages for matches, then looked at the high nibble from matches - but I couldn't identify a pattern, and some of the parts returned no matching address bytes at all.
Either, I am doing something wrong and I have messed up my comparison logic (although I don't think so) or this approach won't work because it's returning the edit buffer, and INIT parts have no edits... although that seems unlikely to be the case.
Do you have any further insights?
The bulk address you used doesn't look right. Bear with me - you are an advanced user but, just like you do in your videos, I'm trying to explain this in enough detail that someone new to the synth or SysEx has enough info to try to follow this. Much of the below will already be obvious to you but some of it is very surprising, and unexpected, to new users.
sent the bulk dump request as you described [f0 43 20 7f 1c 0d 04 04 01 (00-03) f7]
That doesn't match what I thought I described. If that '(00-03)' represents the ONE BYTE immediately before the final 'f7' that suggest to me that you sent 4 of those commands using 00 in one, 01 in the next, then 02, then 03.
This is what I posted:
You can dump a part of interest from the current performance using: f0 43 20 7f 1c 0d 04 04 01 nn f7 - replace 'nn' with the part number 0-F.
See the 'PERFORMANCE PART -> Bulk Header' address shown at the top right on p.219 of the data list.
So the address '04 04 01 nn' literally means 'send me all the data records for part nn of the current performance'.
First load the performance of interest into the edit buffer. Then issue the full command I posted using the '04 04 01 nn' format. for part 1 use '00' for 'nn', for part 13 use '0d' for 'nn'.
Then examine the address 1 and 2 of those part records.
A bulk dump (of "everything" ) is going to return lots of addresses. You wouldn't look at the first return but scan through until you find an fmx or anx or drum or awm2 only address (on the Part dumps) and record the part number embedded in that address. Then you can label that Part and move on to the next.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Sorry my message notation wasn’t clear - my (00-03) part meant a single byte, 0x00, 0x01 etc., inserted into the message array in place of nn.
As expected, this returned 100+ responses, which I checked programmatically for the low nibble on the first address byte matching the nn sent part number, but as I mentioned, from my performance with parts using each of the engine type, the results were inconclusive and some parts didn’t respond with anything matching.
Please post the actual steps you are taking similar to this example:
1. load p1 - this is an Init Drum as you described
2. request part 1 (there is only one part) - f0 43 20 7f 1c 0d 04 04 01 00 f7
3. 127 records returned - this is record 99 (records 99 - 171 are all drum key records)
F0 43 00 7F 1C 00 45 0D 20 10 00 00 00 01 00 00 00 00 00 01 00 00 28 1C 00 40 00 00 00 40 00 5A 00 00 00 01 00 00 00 7F 00 40 00 00 00 60 00 50 00 7F 00 40 00 40 00 40 07 7F 00 40 00 00 00 00 00 00 00 00 00 36 00 40 01 67 00 40 10 F7
'F0 43 00 7F 1C 00 45 0D 20 10' - the '20 10' is address 1 and 2
Table at top right of p.217 shows 'DRUM PART KEY' uses addressing '2p 10 kk 00'
So this is a drum part because it has '20 10' records.
1. load p2 - this is an Init Normal (FM-X) as you described
2. request part 1 (there is only one part) - f0 43 20 7f 1c 0d 04 04 01 00 f7
3. 118 records returned - this is record 101 (records 101 - 117 are all '30' fm-x records)
F0 43 00 7F 1C 00 57 0D 30 00 00 00 00 00 00 40 00 40 00 00 00 00 00 0E 00 40 00 00 00 60 00 3C 00 32 00 32 00 32 00 32 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 44 00 00 00 01 00 3C 01 00 01 00 01 00 01 00 01 00 01 00 01 00 39 F7
'F0 43 00 7F 1C 00 57 0D 30' - the '30 00 00' is address 1, 2 and 3
Table at top right of p.217 shows 'FM-X PART' uses addressing '3p 00 00 00'
So this a 'Common' record for an FM-X part. There is also a '30 00 01 00' record which is a filter record. Then there are 8 controller box records with addresses like '30 01 0o' for the 8 operators - the '0o' uses the letter 'o' for the op number.
And there are 8 operator records with addresses like '30 02 0o' for the 8 operators as shown in the table.
1. load p3 - this is an Init Normal (AN-X) as you described
2. request part 1 (there is only one part) - f0 43 20 7f 1c 0d 04 04 01 00 f7
3. 112 records returned - this is record 100 (records 100 - 111 are all '40' an-x records)
F0 43 00 7F 1C 00 73 0D 40 00 00 00 00 00 00 40 00 40 00 00 00 00 00 0E 00 00 00 00 00 00 00 01 00 00 00 40 00 64 00 00 01 20 00 00 00 73 02 00 00 02 01 50 00 00 00 00 00 00 00 00 00 40 00 00 00 00 02 00 00 00 01 20 00 00 01 20 02 00 00 02 01 50 00 00 00 00 00 00 00 00 03 2F 02 00 01 00 00 00 00 00 00 00 01 20 03 7F 00 73 02 00 00 02 01 50 00 00 00 00 00 00 00 00 1E F7
'F0 43 00 7F 1C 00 73 0D 40' - the '40 00 00' is address 1, 2 and 3
Table at top right of p.217 shows 'AN-X PART' uses addressing '4p 00 00 00'
So this a 'Common' record for an AN-X part. There are also three '40 01' controller box records - one for each oscillator. And three '40 02' oscillator records, two '40 03' filter controller box switch records for the two filters, two '40 04' filter records and one '04 05' wave folder record.
The only 'quirk' is that drum part have both AWM2 records and DRUM records but AWM2 parts only have AWM2 records.
1. Create a performance with one AWM2, one DRUM, one FM-X and one AN-x part
request part 4
f0 43 20 7f 1c 0d 04 04 01 03 f7
record 97 is
F0 43 00 7F 1C 00 73 0D 43 00 00 00 00 00 00 40 00 40 00 00 00 00 00 0E 00 00 00 00 00 00 00 01 00 00 00 40 00 64 00 00 01 20 00 00 00 73 02 00 00 02 01 50 00 00 00 00 00 00 00 00 00 40 00 00 00 00 02 00 00 00 01 20 00 00 01 20 02 00 00 02 01 50 00 00 00 00 00 00 00 00 03 2F 02 00 01 00 00 00 00 00 00 00 01 20 03 7F 00 73 02 00 00 02 01 50 00 00 00 00 00 00 00 00 1B F7
The '43 00' is an AN-X record type
request part 3
record 97 is
F0 43 00 7F 1C 00 57 0D 32 00 00 00 00 00 00 40 00 40 00 00 00 00 00 0E 00 40 00 00 00 60 00 3C 00 32 00 32 00 32 00 32 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 44 00 00 00 01 00 3C 01 00 01 00 01 00 01 00 01 00 01 00 01 00 37 F7
The '32 00' is an FM-X record type
request part 2
record 96 is
F0 43 00 7F 1C 00 45 0D 21 10 00 00 00 01 00 00 00 00 00 01 00 00 28 1C 00 40 00 00 00 40 00 5A 00 00 00 01 00 00 00 7F 00 40 00 00 00 60 00 50 00 7F 00 40 00 40 00 40 07 7F 00 40 00 00 00 00 00 00 00 00 00 36 00 40 01 67 00 40 0F F7
The '21 10' is a DRUM key record type
request part 1
record 96 is
F0 43 00 7F 1C 00 30 0D 20 00 00 00 01 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 2A F7
The '20 00' is an element record
There are also '20 01', '20 02', '20 03' and '20 04' records but NO '20 10' drum records so this is an AWM2 part
Everything I try works as I described on an M8X with latest 2.10.1 OS update. If you are still having trouble post the actual commands you are using.
Thanks for the detailed steps, Toby. I’m away from my studio until Monday but when I’m back I will try again and post complete logs of the sent and received messages if I don’t have any joy. I’m sure I’m just messing up something basic in the headers or something similar…
Didn't understand this 'the low nibble ... matching the nn sent part number'. When you request a part you only get that one part - so why would you check any low nibble?
You would only need to check for part numbers if you dumped an entire performance with multiple parts. Then you would need to make sure you know the part number for all of the records you are checking. You will still find all the records you need in there but it is messier.
If you have been looking through an entire performance my suggestion would be to just do the simple examples I have posted to make sure you can replicate them.
which I checked programmatically
Well that is essentially what our Java app does. Exports a performance and then separates the records based on which Data List table they belong to. Then it creates a Java class for each record instance.
You can upload any Performance you are having problems decoding to Soundmondo and then anyone can take a look. I don't have a Montage M but I can download the public Montage M Soundmondo Performances to look at the Sysex. Below is the Sysex or "AN__FM_Bass" which only has AN-X and FM-X Parts. I take the complete bulk dump and show only the Byte Count (BC:) with total count in parenthesis and then the top address in brackets. I'm only looking for 4 different "key" top addresses. One top address for "Normal" (AWM2 non-drum) Parts, one for Drum Parts, one for FM-X Parts and one for AN-X Parts. When I find a matching top address, I print out the Part # (lower nibble of the high address byte plus 1) and then show the label for this block to identify AWM2, Drum, FM-X, or AN-X. Below those key blocks are bolded.
MMONTAGEM-00110056-AN__FM_Bass.syx
::::::::::::::
BC: 00 05 ( 5) TopAddr: [04,04,00,00]
BC: 00 0B ( 11) TopAddr: [00,00,7F,00]
BC: 00 19 ( 25) TopAddr: [06,00,00,00]
BC: 00 22 ( 34) TopAddr: [06,00,01,00]
BC: 00 59 ( 89) TopAddr: [06,00,02,00]
BC: 00 59 ( 89) TopAddr: [06,00,03,00]
BC: 00 39 ( 57) TopAddr: [06,00,04,00]
BC: 00 39 ( 57) TopAddr: [06,00,05,00]
BC: 00 13 ( 19) TopAddr: [06,00,06,00]
BC: 00 39 ( 57) TopAddr: [06,00,07,00]
BC: 00 39 ( 57) TopAddr: [06,00,08,00]
BC: 00 49 ( 73) TopAddr: [06,00,09,00]
BC: 00 27 ( 39) TopAddr: [06,00,0A,00]
BC: 00 39 ( 57) TopAddr: [06,00,0B,00]
BC: 00 11 ( 17) TopAddr: [06,00,0C,00]
BC: 00 5F ( 95) TopAddr: [06,00,0D,00]
BC: 00 2F ( 47) TopAddr: [06,00,0E,00]
BC: 00 13 ( 19) TopAddr: [06,00,0F,00]
BC: 00 19 ( 25) TopAddr: [06,00,12,00]
BC: 00 6B (107) TopAddr: [06,01,00,00]
BC: 00 6B (107) TopAddr: [06,01,01,00]
BC: 00 6B (107) TopAddr: [06,01,02,00]
BC: 00 6B (107) TopAddr: [06,01,03,00]
BC: 00 6B (107) TopAddr: [06,01,04,00]
BC: 00 6B (107) TopAddr: [06,01,05,00]
BC: 00 6B (107) TopAddr: [06,01,06,00]
BC: 00 6B (107) TopAddr: [06,01,07,00]
BC: 00 17 ( 23) TopAddr: [06,02,00,00]
BC: 00 17 ( 23) TopAddr: [06,02,01,00]
BC: 00 17 ( 23) TopAddr: [06,02,02,00]
BC: 00 17 ( 23) TopAddr: [06,02,03,00]
BC: 00 17 ( 23) TopAddr: [06,02,04,00]
BC: 00 17 ( 23) TopAddr: [06,02,05,00]
BC: 00 17 ( 23) TopAddr: [06,02,06,00]
BC: 00 17 ( 23) TopAddr: [06,02,07,00]
BC: 00 31 ( 49) TopAddr: [06,03,00,00]
BC: 00 31 ( 49) TopAddr: [06,03,01,00]
BC: 00 31 ( 49) TopAddr: [06,03,02,00]
BC: 00 31 ( 49) TopAddr: [06,03,03,00]
BC: 00 31 ( 49) TopAddr: [06,03,04,00]
BC: 00 31 ( 49) TopAddr: [06,03,05,00]
BC: 00 31 ( 49) TopAddr: [06,03,06,00]
BC: 00 31 ( 49) TopAddr: [06,03,07,00]
BC: 00 15 ( 21) TopAddr: [06,04,00,00]
BC: 00 15 ( 21) TopAddr: [06,04,01,00]
BC: 00 15 ( 21) TopAddr: [06,04,02,00]
BC: 00 15 ( 21) TopAddr: [06,04,03,00]
BC: 00 15 ( 21) TopAddr: [06,04,04,00]
BC: 00 15 ( 21) TopAddr: [06,04,05,00]
BC: 00 15 ( 21) TopAddr: [06,04,06,00]
BC: 00 15 ( 21) TopAddr: [06,04,07,00]
BC: 00 17 ( 23) TopAddr: [06,05,00,00]
BC: 00 17 ( 23) TopAddr: [06,05,01,00]
BC: 00 17 ( 23) TopAddr: [06,05,02,00]
BC: 00 17 ( 23) TopAddr: [06,05,03,00]
BC: 00 17 ( 23) TopAddr: [06,05,04,00]
BC: 00 17 ( 23) TopAddr: [06,05,05,00]
BC: 00 17 ( 23) TopAddr: [06,05,06,00]
BC: 00 17 ( 23) TopAddr: [06,05,07,00]
BC: 00 17 ( 23) TopAddr: [06,05,08,00]
BC: 00 17 ( 23) TopAddr: [06,05,09,00]
BC: 00 17 ( 23) TopAddr: [06,05,0A,00]
BC: 00 17 ( 23) TopAddr: [06,05,0B,00]
BC: 00 17 ( 23) TopAddr: [06,05,0C,00]
BC: 00 17 ( 23) TopAddr: [06,05,0D,00]
BC: 00 17 ( 23) TopAddr: [06,05,0E,00]
BC: 00 17 ( 23) TopAddr: [06,05,0F,00]
BC: 00 17 ( 23) TopAddr: [06,05,10,00]
BC: 00 17 ( 23) TopAddr: [06,05,11,00]
BC: 00 17 ( 23) TopAddr: [06,05,12,00]
BC: 00 17 ( 23) TopAddr: [06,05,13,00]
BC: 00 17 ( 23) TopAddr: [06,05,14,00]
BC: 00 17 ( 23) TopAddr: [06,05,15,00]
BC: 00 17 ( 23) TopAddr: [06,05,16,00]
BC: 00 17 ( 23) TopAddr: [06,05,17,00]
BC: 00 17 ( 23) TopAddr: [06,05,18,00]
BC: 00 17 ( 23) TopAddr: [06,05,19,00]
BC: 00 17 ( 23) TopAddr: [06,05,1A,00]
BC: 00 17 ( 23) TopAddr: [06,05,1B,00]
BC: 00 17 ( 23) TopAddr: [06,05,1C,00]
BC: 00 17 ( 23) TopAddr: [06,05,1D,00]
BC: 00 17 ( 23) TopAddr: [06,05,1E,00]
BC: 00 17 ( 23) TopAddr: [06,05,1F,00]
BC: 00 09 ( 9) TopAddr: [06,06,00,00]
BC: 00 09 ( 9) TopAddr: [06,06,10,00]
BC: 00 09 ( 9) TopAddr: [06,06,20,00]
BC: 00 09 ( 9) TopAddr: [06,06,30,00]
BC: 00 19 ( 25) TopAddr: [06,07,00,00]
BC: 00 19 ( 25) TopAddr: [06,07,10,00]
BC: 00 19 ( 25) TopAddr: [06,07,20,00]
BC: 00 19 ( 25) TopAddr: [06,07,30,00]
BC: 00 6B (107) TopAddr: [06,08,00,00]
BC: 00 6B (107) TopAddr: [06,08,01,00]
BC: 00 6B (107) TopAddr: [06,08,02,00]
BC: 00 6B (107) TopAddr: [06,08,03,00]
BC: 00 6B (107) TopAddr: [06,08,04,00]
BC: 00 6B (107) TopAddr: [06,08,05,00]
BC: 00 6B (107) TopAddr: [06,08,06,00]
BC: 00 6B (107) TopAddr: [06,08,07,00]
BC: 00 6B (107) TopAddr: [06,08,10,00]
BC: 00 6B (107) TopAddr: [06,08,11,00]
BC: 00 6B (107) TopAddr: [06,08,12,00]
BC: 00 6B (107) TopAddr: [06,08,13,00]
BC: 00 6B (107) TopAddr: [06,08,14,00]
BC: 00 6B (107) TopAddr: [06,08,15,00]
BC: 00 6B (107) TopAddr: [06,08,16,00]
BC: 00 6B (107) TopAddr: [06,08,17,00]
BC: 00 6B (107) TopAddr: [06,08,20,00]
BC: 00 6B (107) TopAddr: [06,08,21,00]
BC: 00 6B (107) TopAddr: [06,08,22,00]
BC: 00 6B (107) TopAddr: [06,08,23,00]
BC: 00 6B (107) TopAddr: [06,08,24,00]
BC: 00 6B (107) TopAddr: [06,08,25,00]
BC: 00 6B (107) TopAddr: [06,08,26,00]
BC: 00 6B (107) TopAddr: [06,08,27,00]
BC: 00 6B (107) TopAddr: [06,08,30,00]
BC: 00 6B (107) TopAddr: [06,08,31,00]
BC: 00 6B (107) TopAddr: [06,08,32,00]
BC: 00 6B (107) TopAddr: [06,08,33,00]
BC: 00 6B (107) TopAddr: [06,08,34,00]
BC: 00 6B (107) TopAddr: [06,08,35,00]
BC: 00 6B (107) TopAddr: [06,08,36,00]
BC: 00 6B (107) TopAddr: [06,08,37,00]
BC: 00 0D ( 13) TopAddr: [06,09,00,00]
BC: 00 19 ( 25) TopAddr: [10,00,00,00]
BC: 00 56 ( 86) TopAddr: [10,00,01,00]
BC: 00 63 ( 99) TopAddr: [10,00,02,00]
BC: 00 43 ( 67) TopAddr: [10,00,03,00]
BC: 00 39 ( 57) TopAddr: [10,00,04,00]
BC: 00 39 ( 57) TopAddr: [10,00,05,00]
BC: 00 59 ( 89) TopAddr: [10,00,06,00]
BC: 00 49 ( 73) TopAddr: [10,00,07,00]
BC: 00 1F ( 31) TopAddr: [10,00,08,00]
BC: 00 45 ( 69) TopAddr: [10,00,09,00]
BC: 00 45 ( 69) TopAddr: [10,03,00,00]
BC: 00 45 ( 69) TopAddr: [10,03,01,00]
BC: 00 45 ( 69) TopAddr: [10,03,02,00]
BC: 00 45 ( 69) TopAddr: [10,03,03,00]
BC: 00 45 ( 69) TopAddr: [10,03,04,00]
BC: 00 45 ( 69) TopAddr: [10,03,05,00]
BC: 00 45 ( 69) TopAddr: [10,03,06,00]
BC: 00 45 ( 69) TopAddr: [10,03,07,00]
BC: 00 15 ( 21) TopAddr: [10,04,00,00]
BC: 00 15 ( 21) TopAddr: [10,04,01,00]
BC: 00 15 ( 21) TopAddr: [10,04,02,00]
BC: 00 15 ( 21) TopAddr: [10,04,03,00]
BC: 00 15 ( 21) TopAddr: [10,04,04,00]
BC: 00 15 ( 21) TopAddr: [10,04,05,00]
BC: 00 15 ( 21) TopAddr: [10,04,06,00]
BC: 00 15 ( 21) TopAddr: [10,04,07,00]
BC: 00 17 ( 23) TopAddr: [10,05,00,00]
BC: 00 17 ( 23) TopAddr: [10,05,01,00]
BC: 00 17 ( 23) TopAddr: [10,05,02,00]
BC: 00 17 ( 23) TopAddr: [10,05,03,00]
BC: 00 17 ( 23) TopAddr: [10,05,04,00]
BC: 00 17 ( 23) TopAddr: [10,05,05,00]
BC: 00 17 ( 23) TopAddr: [10,05,06,00]
BC: 00 17 ( 23) TopAddr: [10,05,07,00]
BC: 00 17 ( 23) TopAddr: [10,05,08,00]
BC: 00 17 ( 23) TopAddr: [10,05,09,00]
BC: 00 17 ( 23) TopAddr: [10,05,0A,00]
BC: 00 17 ( 23) TopAddr: [10,05,0B,00]
BC: 00 17 ( 23) TopAddr: [10,05,0C,00]
BC: 00 17 ( 23) TopAddr: [10,05,0D,00]
BC: 00 17 ( 23) TopAddr: [10,05,0E,00]
BC: 00 17 ( 23) TopAddr: [10,05,0F,00]
BC: 00 17 ( 23) TopAddr: [10,05,10,00]
BC: 00 17 ( 23) TopAddr: [10,05,11,00]
BC: 00 17 ( 23) TopAddr: [10,05,12,00]
BC: 00 17 ( 23) TopAddr: [10,05,13,00]
BC: 00 17 ( 23) TopAddr: [10,05,14,00]
BC: 00 17 ( 23) TopAddr: [10,05,15,00]
BC: 00 17 ( 23) TopAddr: [10,05,16,00]
BC: 00 17 ( 23) TopAddr: [10,05,17,00]
BC: 00 17 ( 23) TopAddr: [10,05,18,00]
BC: 00 17 ( 23) TopAddr: [10,05,19,00]
BC: 00 17 ( 23) TopAddr: [10,05,1A,00]
BC: 00 17 ( 23) TopAddr: [10,05,1B,00]
BC: 00 17 ( 23) TopAddr: [10,05,1C,00]
BC: 00 17 ( 23) TopAddr: [10,05,1D,00]
BC: 00 17 ( 23) TopAddr: [10,05,1E,00]
BC: 00 17 ( 23) TopAddr: [10,05,1F,00]
BC: 00 09 ( 9) TopAddr: [10,06,00,00]
BC: 00 09 ( 9) TopAddr: [10,06,10,00]
BC: 00 09 ( 9) TopAddr: [10,06,20,00]
BC: 00 09 ( 9) TopAddr: [10,06,30,00]
BC: 00 19 ( 25) TopAddr: [10,07,00,00]
BC: 00 19 ( 25) TopAddr: [10,07,10,00]
BC: 00 19 ( 25) TopAddr: [10,07,20,00]
BC: 00 19 ( 25) TopAddr: [10,07,30,00]
BC: 00 6B (107) TopAddr: [10,08,00,00]
BC: 00 6B (107) TopAddr: [10,08,01,00]
BC: 00 6B (107) TopAddr: [10,08,02,00]
BC: 00 6B (107) TopAddr: [10,08,03,00]
BC: 00 6B (107) TopAddr: [10,08,04,00]
BC: 00 6B (107) TopAddr: [10,08,05,00]
BC: 00 6B (107) TopAddr: [10,08,06,00]
BC: 00 6B (107) TopAddr: [10,08,07,00]
BC: 00 6B (107) TopAddr: [10,08,10,00]
BC: 00 6B (107) TopAddr: [10,08,11,00]
BC: 00 6B (107) TopAddr: [10,08,12,00]
BC: 00 6B (107) TopAddr: [10,08,13,00]
BC: 00 6B (107) TopAddr: [10,08,14,00]
BC: 00 6B (107) TopAddr: [10,08,15,00]
BC: 00 6B (107) TopAddr: [10,08,16,00]
BC: 00 6B (107) TopAddr: [10,08,17,00]
BC: 00 6B (107) TopAddr: [10,08,20,00]
BC: 00 6B (107) TopAddr: [10,08,21,00]
BC: 00 6B (107) TopAddr: [10,08,22,00]
BC: 00 6B (107) TopAddr: [10,08,23,00]
BC: 00 6B (107) TopAddr: [10,08,24,00]
BC: 00 6B (107) TopAddr: [10,08,25,00]
BC: 00 6B (107) TopAddr: [10,08,26,00]
BC: 00 6B (107) TopAddr: [10,08,27,00]
BC: 00 6B (107) TopAddr: [10,08,30,00]
BC: 00 6B (107) TopAddr: [10,08,31,00]
BC: 00 6B (107) TopAddr: [10,08,32,00]
BC: 00 6B (107) TopAddr: [10,08,33,00]
BC: 00 6B (107) TopAddr: [10,08,34,00]
BC: 00 6B (107) TopAddr: [10,08,35,00]
BC: 00 6B (107) TopAddr: [10,08,36,00]
BC: 00 6B (107) TopAddr: [10,08,37,00]
BC: 00 19 ( 25) TopAddr: [11,00,00,00]
BC: 00 56 ( 86) TopAddr: [11,00,01,00]
BC: 00 63 ( 99) TopAddr: [11,00,02,00]
BC: 00 43 ( 67) TopAddr: [11,00,03,00]
BC: 00 39 ( 57) TopAddr: [11,00,04,00]
BC: 00 39 ( 57) TopAddr: [11,00,05,00]
BC: 00 59 ( 89) TopAddr: [11,00,06,00]
BC: 00 49 ( 73) TopAddr: [11,00,07,00]
BC: 00 1F ( 31) TopAddr: [11,00,08,00]
BC: 00 45 ( 69) TopAddr: [11,00,09,00]
BC: 00 45 ( 69) TopAddr: [11,03,00,00]
BC: 00 45 ( 69) TopAddr: [11,03,01,00]
BC: 00 45 ( 69) TopAddr: [11,03,02,00]
BC: 00 45 ( 69) TopAddr: [11,03,03,00]
BC: 00 45 ( 69) TopAddr: [11,03,04,00]
BC: 00 45 ( 69) TopAddr: [11,03,05,00]
BC: 00 45 ( 69) TopAddr: [11,03,06,00]
BC: 00 45 ( 69) TopAddr: [11,03,07,00]
BC: 00 15 ( 21) TopAddr: [11,04,00,00]
BC: 00 15 ( 21) TopAddr: [11,04,01,00]
BC: 00 15 ( 21) TopAddr: [11,04,02,00]
BC: 00 15 ( 21) TopAddr: [11,04,03,00]
BC: 00 15 ( 21) TopAddr: [11,04,04,00]
BC: 00 15 ( 21) TopAddr: [11,04,05,00]
BC: 00 15 ( 21) TopAddr: [11,04,06,00]
BC: 00 15 ( 21) TopAddr: [11,04,07,00]
BC: 00 17 ( 23) TopAddr: [11,05,00,00]
BC: 00 17 ( 23) TopAddr: [11,05,01,00]
BC: 00 17 ( 23) TopAddr: [11,05,02,00]
BC: 00 17 ( 23) TopAddr: [11,05,03,00]
BC: 00 17 ( 23) TopAddr: [11,05,04,00]
BC: 00 17 ( 23) TopAddr: [11,05,05,00]
BC: 00 17 ( 23) TopAddr: [11,05,06,00]
BC: 00 17 ( 23) TopAddr: [11,05,07,00]
BC: 00 17 ( 23) TopAddr: [11,05,08,00]
BC: 00 17 ( 23) TopAddr: [11,05,09,00]
BC: 00 17 ( 23) TopAddr: [11,05,0A,00]
BC: 00 17 ( 23) TopAddr: [11,05,0B,00]
BC: 00 17 ( 23) TopAddr: [11,05,0C,00]
BC: 00 17 ( 23) TopAddr: [11,05,0D,00]
BC: 00 17 ( 23) TopAddr: [11,05,0E,00]
BC: 00 17 ( 23) TopAddr: [11,05,0F,00]
BC: 00 17 ( 23) TopAddr: [11,05,10,00]
BC: 00 17 ( 23) TopAddr: [11,05,11,00]
BC: 00 17 ( 23) TopAddr: [11,05,12,00]
BC: 00 17 ( 23) TopAddr: [11,05,13,00]
BC: 00 17 ( 23) TopAddr: [11,05,14,00]
BC: 00 17 ( 23) TopAddr: [11,05,15,00]
BC: 00 17 ( 23) TopAddr: [11,05,16,00]
BC: 00 17 ( 23) TopAddr: [11,05,17,00]
BC: 00 17 ( 23) TopAddr: [11,05,18,00]
BC: 00 17 ( 23) TopAddr: [11,05,19,00]
BC: 00 17 ( 23) TopAddr: [11,05,1A,00]
BC: 00 17 ( 23) TopAddr: [11,05,1B,00]
BC: 00 17 ( 23) TopAddr: [11,05,1C,00]
BC: 00 17 ( 23) TopAddr: [11,05,1D,00]
BC: 00 17 ( 23) TopAddr: [11,05,1E,00]
BC: 00 17 ( 23) TopAddr: [11,05,1F,00]
BC: 00 09 ( 9) TopAddr: [11,06,00,00]
BC: 00 09 ( 9) TopAddr: [11,06,10,00]
BC: 00 09 ( 9) TopAddr: [11,06,20,00]
BC: 00 09 ( 9) TopAddr: [11,06,30,00]
BC: 00 19 ( 25) TopAddr: [11,07,00,00]
BC: 00 19 ( 25) TopAddr: [11,07,10,00]
BC: 00 19 ( 25) TopAddr: [11,07,20,00]
BC: 00 19 ( 25) TopAddr: [11,07,30,00]
BC: 00 6B (107) TopAddr: [11,08,00,00]
BC: 00 6B (107) TopAddr: [11,08,01,00]
BC: 00 6B (107) TopAddr: [11,08,02,00]
BC: 00 6B (107) TopAddr: [11,08,03,00]
BC: 00 6B (107) TopAddr: [11,08,04,00]
BC: 00 6B (107) TopAddr: [11,08,05,00]
BC: 00 6B (107) TopAddr: [11,08,06,00]
BC: 00 6B (107) TopAddr: [11,08,07,00]
BC: 00 6B (107) TopAddr: [11,08,10,00]
BC: 00 6B (107) TopAddr: [11,08,11,00]
BC: 00 6B (107) TopAddr: [11,08,12,00]
BC: 00 6B (107) TopAddr: [11,08,13,00]
BC: 00 6B (107) TopAddr: [11,08,14,00]
BC: 00 6B (107) TopAddr: [11,08,15,00]
BC: 00 6B (107) TopAddr: [11,08,16,00]
BC: 00 6B (107) TopAddr: [11,08,17,00]
BC: 00 6B (107) TopAddr: [11,08,20,00]
BC: 00 6B (107) TopAddr: [11,08,21,00]
BC: 00 6B (107) TopAddr: [11,08,22,00]
BC: 00 6B (107) TopAddr: [11,08,23,00]
BC: 00 6B (107) TopAddr: [11,08,24,00]
BC: 00 6B (107) TopAddr: [11,08,25,00]
BC: 00 6B (107) TopAddr: [11,08,26,00]
BC: 00 6B (107) TopAddr: [11,08,27,00]
BC: 00 6B (107) TopAddr: [11,08,30,00]
BC: 00 6B (107) TopAddr: [11,08,31,00]
BC: 00 6B (107) TopAddr: [11,08,32,00]
BC: 00 6B (107) TopAddr: [11,08,33,00]
BC: 00 6B (107) TopAddr: [11,08,34,00]
BC: 00 6B (107) TopAddr: [11,08,35,00]
BC: 00 6B (107) TopAddr: [11,08,36,00]
BC: 00 6B (107) TopAddr: [11,08,37,00]
BC: 00 73 (115) TopAddr: [40,00,00,00]
[PART 01] AN-X PART COMMON
BC: 00 29 ( 41) TopAddr: [40,01,00,00]
BC: 00 29 ( 41) TopAddr: [40,01,01,00]
BC: 00 29 ( 41) TopAddr: [40,01,02,00]
BC: 00 4D ( 77) TopAddr: [40,02,00,00]
BC: 00 4D ( 77) TopAddr: [40,02,01,00]
BC: 00 4D ( 77) TopAddr: [40,02,02,00]
BC: 00 29 ( 41) TopAddr: [40,03,00,00]
BC: 00 29 ( 41) TopAddr: [40,03,01,00]
BC: 00 1D ( 29) TopAddr: [40,04,00,00]
BC: 00 1D ( 29) TopAddr: [40,04,01,00]
BC: 00 57 ( 87) TopAddr: [31,00,00,00]
[PART 02] FM-X PART COMMON
BC: 00 4B ( 75) TopAddr: [31,00,01,00]
BC: 00 29 ( 41) TopAddr: [31,01,00,00]
BC: 00 29 ( 41) TopAddr: [31,01,01,00]
BC: 00 29 ( 41) TopAddr: [31,01,02,00]
BC: 00 29 ( 41) TopAddr: [31,01,03,00]
BC: 00 29 ( 41) TopAddr: [31,01,04,00]
BC: 00 29 ( 41) TopAddr: [31,01,05,00]
BC: 00 29 ( 41) TopAddr: [31,01,06,00]
BC: 00 29 ( 41) TopAddr: [31,01,07,00]
BC: 00 4B ( 75) TopAddr: [31,02,00,00]
BC: 00 4B ( 75) TopAddr: [31,02,01,00]
BC: 00 4B ( 75) TopAddr: [31,02,02,00]
BC: 00 4B ( 75) TopAddr: [31,02,03,00]
BC: 00 4B ( 75) TopAddr: [31,02,04,00]
BC: 00 4B ( 75) TopAddr: [31,02,05,00]
BC: 00 4B ( 75) TopAddr: [31,02,06,00]
BC: 00 4B ( 75) TopAddr: [31,02,07,00]
BC: 00 05 ( 5) TopAddr: [05,04,00,00]
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Here's my (python) logic to show the Part labels (addr1 is the address high byte and addr4 is the address low byte):
if ((addr1&0xf0==0x20) and (addr2==0x00) and (addr4==0x00)):
print ("[PART %02d] AWM2 PART ELEMENT" % ((addr1+1) & 0x0f))
if ((addr1&0xf0==0x20) and (addr2==0x10) and (addr4==0x00)):
print ("[PART %02d] DRUM PART KEY" % ((addr1+1) & 0x0f))
if ((addr1&0xf0==0x30) and (addr2==0x00) and (addr3==0x00) and (addr4==0x00)):
print ("[PART %02d] FM-X PART COMMON" % ((addr1+1) & 0x0f))
if ((addr1&0xf0==0x40) and (addr2==0x00) and (addr3==0x00) and (addr4==0x00)):
print ("[PART %02d] AN-X PART COMMON" % ((addr1+1) & 0x0f))
... addr1 (address high byte) for matching the key value I look at the upper nibble by clearing out the lower nibble (addr1&0xf0).
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R