mungewell / zoom-zt2

Python script to install/remove effects from the Zoom G1Four pedal
MIT License
50 stars 10 forks source link

Sysex for MS-50G+ patch #70

Open thammer opened 1 month ago

thammer commented 1 month ago

Hi.

This is the sysex data for a patch from the MS-50G+ pedal. The actual patch data probably starts at offset 10 or 11 in this buffer.

The sysex message is what the MS-50G+ sends out if you change a parameter and wait for 3 seconds. It was captured using this tool: https://www.waveformer.net/zoom-explorer/

It'd be great if you could run it through your scripts and see if anything interesting pops up.

Let me know if you want the data on another format.

Cheers, Thomas

Hexadecimal format:

F0 52 00 6E 45 00 00 09 00 08  00 50 06 04 50 54 43 46 4C 01  00 00 00 02 00 00 00 06 00 00  00 00 00 00 04 00 00 00 00 00  00 00 00 57 46 00 20 53 70 61
63 65 20 00 20 20 00 00 08 10  00 00 00 07 50 00 00 08 20 00  00 00 08 70 00 00 09 00 20 00  00 08 54 58 4A 02 31 54 00 00  00 03 49 57 01 5B 03 67 03 0F
03 3A 45 02 70 0E 67 17 70 79  02 35 02 3D 31 30 14 3F 4E 11  63 0C 63 0A 7A 5F 03 41 03 01  03 0A 03 3A 4A 02 4C 03 74 03  40 77 03 13 03 4E 02 49 13 3E
4B 02 35 02 3D 03 4A 55 03 62  03 65 03 42 03 6A 13 03 4F 03  54 03 45 77 03 13 03 68 02 45  02 60 37 01 42 00 00 54 58 00  45 31 44 00 00 00 43 00 75 74

74 69 6E 67 20 00 73 6F 75 6E  64 20 73 00 75 69 74 61 62 6C  65 00 20 66 6F 72 20 6C 61 00  74 65 20 31 30 27 73 00 20 41  6D 65 72 69 63 00 61 6E 20 66
75 6E 6B 00 20 77 69 74 68 20  61 00 75 74 6F 2D 77 61 68 00  2E 00 00 00 45 44 54 20 42 10  00 00 00 41 00 31 00 10 6C 08  00 07 20 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 21 00 00 0E 12 60 00 00 00  40 01 00 00 00 00 00 00 00 00  00 00 00 04 00 00 00 00 21 00  00 42 50 47 00 00 00 20 00 28
08 08 5C 74 00 00 00 00 00 00  00 00 00 00 00 00 41 00 00 10  22 00 40 00 0C 74 01 00 00 00  00 00 00 00 00 00 00 00 00 09  00 00 00 61 00 00 12 10 16 74

00 02 10 01 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  40 10 00 00 50 08 00 00 07 40  20 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 50 52
4D 32 20 00 00 00 00 00 00 00  00 02 00 00 00 00 00 00 0C 20  42 06 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 05 00 4E 41 4D 45 20 00
00 00 00 57 46 20 53 70 61 00  63 65 20 20 20 20 20 00 20 20  20 20 20 20 20 00 20 20 20 20  20 20 20 00 20 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00  00 00 00 3A 68 4B 45 0F F7

ASCII view of the same patch with non-printable characters replaced with apostrophe:

'R'nE'''''  'P''PTCFL'  ''''''''''  ''''''''''  '''WF' Spa
ce '  ''''  ''''P''' '  '''p'''' '  ''TXJ'1T''  ''IW'['g''
':E'p'g'py  '5'=10'?N'  c'c'z_'A''  ''':J'L't'  @w'''N'I'>
K'5'='JU'b  'e'B'j''O'  T'Ew'''h'E  '`7'B''TX'  E1D'''C'ut

ting 'soun  d s'uitabl  e' for la'  te 10's' A  meric'an f
unk' with   a'uto-wah'  .'''EDT B'  '''A'1''l'  '' '''''''
''''''''''  '!''''`'''  @'''''''''  ''''''''!'  'BPG''' '(
''\t''''''  ''''''A'''  "'@''t''''  ''''''''''  '''a'''''t

''''''''''  ''''''''''  @'''P''''@   '''''''''  ''''''''PR
M2 '''''''  '''''''''   B'''''''''  ''''''''''  ''''NAME '
'''WF Spa'  ce     '         '         ' '''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''

''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''

''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''''''''''  ''''''''''
''''''''''  ''''''''''  ''''''''''  ''':hKE''
shooking commented 1 month ago

You might want to try itnrheu the MS70CDR decoder?

https://github.com/shooking/ZoomPedalFun/tree/8572bf1d436a25324c77bcc3b88f4867ba20c1e6/MS70CDR

Likely.the ID might be different but very likely the sysex is very similar

nomadbyte commented 1 month ago

F0 52 00 6E 45 <bank-MSB2> <bank-LSB2> <program2> <datalen2> <data-packed7bit> <data-checksum5> F7

datalen2:[50 06]:0x50+0x06*128=848
data-checksum5:[3A 68 4B 45 0F]:0x3a+0x68*128 + 0x4b*128*128 + 0x45*128*128*128 + 0x0f*128*128*128*128=0xf8b2f43a

Apparently, the patch is based on the "027:Cosmic Sans" preset, but the effects are different.

nomadbyte commented 1 month ago

@thammer Since you're exploring the MS-50G+, could you select the preset "027" and dump out the patch parameters by using the following SysEx and post the output here?

F0 52 00 6E 64 02 00 07 00 F7
thammer commented 1 month ago

Yeah. That patch was created by me. It was the first patch I created, so it was based on the original preset 027 and instead of saving it to a new preset, I accidently wrote over the old one.

Anyway, here's the sysex output after sending "F0 52 00 6E 64 02 00 07 00 F7" to the pedal. Oddly enough, the device ID is the same for the MS-50G+ and the G1Four, "6E".

Hexadecimal:

F0 52 00 6E 64 01 00 00 00 00  31 00 00 00 00 00 00 00 00 00  00 00 01 00 4F 6E 4F 66 66 00  00 00 00 00 00 01 00 00 52 69  6E 67 4D 6F 64 00 00 00 00 01
01 00 52 69 6E 67 4D 6F 64 00  00 00 00 02 00 00 33 36 00 00  00 00 00 00 00 00 00 02 01 00  46 52 45 51 00 00 00 00 00 00  00 03 00 00 31 30 00 00 00 00
00 00 00 00 00 03 01 00 54 6F  6E 65 00 00 00 00 00 00 00 04  00 00 30 00 00 00 00 00 00 00  00 00 00 04 01 00 42 41 4C 00  00 00 00 00 00 00 00 05 00 00
39 30 00 00 00 00 00 00 00 00  00 05 01 00 56 4F 4C 00 00 00  00 00 00 00 01 00 00 00 31 00  00 00 00 00 00 00 00 00 01 00  01 00 4F 6E 4F 66 66 00 00 00

00 00 01 01 00 00 41 75 74 6F  50 61 6E 00 00 00 01 01 01 00  41 75 74 6F 50 61 6E 00 00 00  01 02 00 00 19 78 35 00 00 00  00 00 00 00 01 02 01 00 52 61
74 65 00 00 00 00 00 00 01 03  00 00 32 34 00 00 00 00 00 00  00 00 01 03 01 00 57 69 64 74  68 00 00 00 00 00 01 04 00 00  30 00 00 00 00 00 00 00 00 00
01 04 01 00 43 6C 69 70 00 00  00 00 00 00 01 05 00 00 38 30  00 00 00 00 00 00 00 00 01 05  01 00 56 4F 4C 00 00 00 00 00  00 00 02 00 00 00 31 00 00 00
00 00 00 00 00 00 02 00 01 00  4F 6E 4F 66 66 00 00 00 00 00  02 01 00 00 44 75 61 6C 44 65  6C 61 79 00 02 01 01 00 44 75  61 6C 44 65 6C 61 79 00 02 02

00 00 19 2E 00 00 00 00 00 00  00 00 02 02 01 00 54 69 6D 65  41 00 00 00 00 00 02 03 00 00  18 2E 00 00 00 00 00 00 00 00  02 03 01 00 54 69 6D 65 42 00
00 00 00 00 02 04 00 00 42 50  4D 20 53 59 4E 43 00 00 02 04  01 00 4D 6F 64 65 00 00 00 00  00 00 02 05 00 00 35 36 00 00  00 00 00 00 00 00 02 05 01 00
42 41 4C 00 00 00 00 00 00 00  02 06 00 00 33 32 00 00 00 00  00 00 00 00 02 06 01 00 52 45  50 20 41 00 00 00 00 00 02 07  00 00 33 34 00 00 00 00 00 00
00 00 02 07 01 00 52 45 50 20  42 00 00 00 00 00 02 08 00 00  32 33 00 00 00 00 00 00 00 00  02 08 01 00 44 6C 79 4D 78 00  00 00 00 00 02 09 00 00 53 54

2D 31 30 00 00 00 00 00 02 09  01 00 44 65 70 74 68 00 00 00  00 00 03 00 00 00 30 00 00 00  00 00 00 00 00 00 03 00 01 00  4F 6E 4F 66 66 00 00 00 00 00
03 01 00 00 31 31 37 36 20 4C  4D 54 00 00 03 01 01 00 31 31  37 36 20 4C 4D 54 00 00 03 02  00 00 33 35 00 00 00 00 00 00  00 00 03 02 01 00 49 6E 70 75
74 00 00 00 00 00 03 03 00 00  34 3A 31 00 00 00 00 00 00 00  03 03 01 00 52 61 74 69 6F 00  00 00 00 00 03 04 00 00 32 30  00 00 00 00 00 00 00 00 03 04
01 00 52 45 4C 00 00 00 00 00  00 00 03 05 00 00 31 36 00 00  00 00 00 00 00 00 03 05 01 00  4F 75 74 70 75 74 00 00 00 00  04 00 00 00 31 00 00 00 00 00

00 00 00 00 04 00 01 00 4F 6E  4F 66 66 00 00 00 00 00 04 01  00 00 42 72 67 68 74 48 61 6C  6C 00 04 01 01 00 42 72 67 68  74 48 61 6C 6C 00 04 02 00 00
39 31 00 00 00 00 00 00 00 00  04 02 01 00 50 72 65 20 44 4C  59 00 00 00 04 03 00 00 33 30  00 00 00 00 00 00 00 00 04 03  01 00 44 65 63 61 79 00 00 00
00 00 04 04 00 00 31 30 00 00  00 00 00 00 00 00 04 04 01 00  54 6F 6E 65 00 00 00 00 00 00  04 05 00 00 37 31 00 00 00 00  00 00 00 00 04 05 01 00 4D 69
78 00 00 00 00 00 00 00 05 00  00 00 30 00 00 00 00 00 00 00  00 00 05 00 01 00 4F 6E 4F 66  66 00 00 00 00 00 05 01 00 00  41 6E 61 6C 6F 67 44 6C 79 00

05 01 01 00 41 6E 61 6C 6F 67  44 6C 79 00 05 02 00 00 39 34  30 00 00 00 00 00 00 00 05 02  01 00 54 69 6D 65 00 00 00 00  00 00 05 03 00 00 4C 4F 4E 47
00 00 00 00 00 00 05 03 01 00  4D 6F 64 65 00 00 00 00 00 00  05 04 00 00 32 38 00 00 00 00  00 00 00 00 05 04 01 00 52 65  70 65 61 74 00 00 00 00 05 05
00 00 34 30 00 00 00 00 00 00  00 00 05 05 01 00 4D 69 78 00  00 00 00 00 00 00 F7

Printable ASCII (and apostrophes where not printable):

'R'nd'''''  1'''''''''  ''''OnOff'  ''''''''Ri  ngMod'''''
''RingMod'  ''''''36''  ''''''''''  FREQ''''''  ''''10''''
''''''''To  ne''''''''  ''0'''''''  ''''''BAL'  ''''''''''
90''''''''  ''''VOL'''  ''''''''1'  ''''''''''  ''OnOff'''

''''''Auto  Pan'''''''  AutoPan'''  '''''x5'''  ''''''''Ra
te''''''''  ''24''''''  ''''''Widt  h'''''''''  0'''''''''
''''Clip''  ''''''''80  ''''''''''  ''VOL'''''  ''''''1'''
''''''''''  OnOff'''''  ''''DualDe  lay'''''Du  alDelay'''

'''.''''''  ''''''Time  A'''''''''  '.''''''''  ''''TimeB'
''''''''BP  M SYNC''''  ''Mode''''  ''''''56''  ''''''''''
BAL'''''''  ''''32''''  ''''''''RE  P A'''''''  ''34''''''
''''''REP   B'''''''''  23''''''''  ''''DlyMx'  ''''''''ST

-10'''''''  ''Depth'''  ''''''0'''  ''''''''''  OnOff'''''
''''1176 L  MT''''''11  76 LMT''''  ''35''''''  ''''''Inpu
t'''''''''  4:1'''''''  ''''Ratio'  ''''''''20  ''''''''''
''REL'''''  ''''''16''  ''''''''''  Output''''  ''''1'''''

''''''''On  Off'''''''  ''BrghtHal  l'''''Brgh  tHall'''''
91''''''''  ''''Pre DL  Y'''''''30  ''''''''''  ''Decay'''
''''''10''  ''''''''''  Tone''''''  ''''71''''  ''''''''Mi
x'''''''''  ''0'''''''  ''''''OnOf  f'''''''''  AnalogDly'

''''Analog  Dly'''''94  0'''''''''  ''Time''''  ''''''LONG
''''''''''  Mode''''''  ''''28''''  ''''''''Re  peat''''''
''40''''''  ''''''Mix'  '''''''
mungewell commented 1 month ago

So two things to report, the packet data is 7bit packed and needs to be unpacked....

$ python3 ms_plus_patch.py
length 848
00000000: 50 54 43 46 CC 01 00 00  02 00 00 00 06 00 00 00  PTCF............
00000010: 00 00 04 00 00 00 00 00  00 00 57 46 20 53 70 61  ..........WF Spa
00000020: 63 65 20 20 20 00 00 08  10 00 00 07 50 00 00 08  ce   .......P...
00000030: 20 00 00 08 70 00 00 09  20 00 00 08 54 58 4A 31   ...p... ...TXJ1
00000040: 54 00 00 00 83 49 81 5B  83 67 83 8F 83 45 82 F0  T....I.[.g...E..
00000050: 8E 67 97 70 82 B5 82 BD  31 30 94 4E 91 E3 8C E3  .g.p....10.N....
00000060: 8A FA 83 41 83 81 83 8A  83 4A 82 CC 83 74 83 40  ...A.....J...t.@
00000070: 83 93 83 4E 82 C9 93 4B  82 B5 82 BD 83 4A 83 62  ...N...K.....J.b
00000080: 83 65 83 42 83 93 83 4F  83 54 83 45 83 93 83 68  .e.B...O.T.E...h
00000090: 82 C5 82 B7 81 42 00 00  54 58 45 31 44 00 00 00  .....B..TXE1D...
000000A0: 43 75 74 74 69 6E 67 20  73 6F 75 6E 64 20 73 75  Cutting sound su
000000B0: 69 74 61 62 6C 65 20 66  6F 72 20 6C 61 74 65 20  itable for late 
000000C0: 31 30 27 73 20 41 6D 65  72 69 63 61 6E 20 66 75  10's American fu
000000D0: 6E 6B 20 77 69 74 68 20  61 75 74 6F 2D 77 61 68  nk with auto-wah
000000E0: 2E 00 00 00 45 44 54 42  90 00 00 00 41 00 00 90  ....EDTB....A...
000000F0: EC 08 00 07 A0 00 00 00  00 00 00 00 00 00 00 00  ................
00000100: 00 00 00 00 21 00 00 0E  12 60 00 00 40 01 00 00  ....!....`..@...
00000110: 00 00 00 00 00 00 00 00  00 00 00 00 A1 00 00 D0  ................
00000120: 47 00 00 00 A0 00 08 88  5C F4 00 00 00 00 00 00  G.......\.......
00000130: 00 00 00 00 41 00 00 10  22 00 40 0C 74 01 00 00  ....A...".@.t...
00000140: 00 00 00 00 00 00 00 00  00 00 00 00 E1 00 00 92  ................
00000150: 16 74 80 02 10 01 00 00  00 00 00 00 00 00 00 00  .t..............
00000160: 00 00 00 00 40 00 00 D0  08 00 00 07 A0 00 00 00  ....@...........
00000170: 00 00 00 00 00 00 00 00  00 00 00 00 50 52 4D 32  ............PRM2
00000180: 20 00 00 00 00 00 00 00  00 00 00 00 00 80 0C 42   ..............B
00000190: 86 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001A0: 00 00 00 05 4E 41 4D 45  20 00 00 00 57 46 20 53  ....NAME ...WF S
000001B0: 70 61 63 65 20 20 20 20  20 20 20 20 20 20 20 20  pace            
000001C0: 20 20 20 20 20 20 20 20  00 00 00 00 00 00 00 00          ........
000001D0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001E0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000001F0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000200: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000210: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000220: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000230: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000240: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000250: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000260: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000270: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000280: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000290: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002A0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002B0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002C0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002D0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002E0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000002F0: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000300: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000310: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000320: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000330: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000340: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
None
Checksum error 0x71f165e8

ms_plus_patch.py.txt

Unfortunately my decoder script glitches on this, but I can looks to see why later...

mungewell commented 1 month ago

Correction; --summary glitches, but --dump works OK.

$ python3 decode_preset.py -d temp.zptc 
Container: 
    p = Container: 
        l = 460
        v = 2
    length = 460
    version = 2
    fx_count = 6
    targets = Container:
...

ms_plus_patch.txt

thammer commented 1 month ago

Wow! That's very useful. I'll have a go at doing the 7-bit to 8-bit conversion in the web app.

In the mean time, I managed to accidentally send the sysex command to enter firmware update mode to the pedal, and now the pedal won't boot regularly. It's just a black screen, blinking red light, presumably waiting for firmware.

It does show up as a MIDI device when I connect it to my computer, but I'm afraid to start sending MIDI messages to it in fear of bricking it permanently.

I have tried holding down all the buttons while powering up, but it still ends up in the same state.

Have you encountered anything like this before? Any suggestions on how to tell the pedal to not wait for firmware anymore?

shooking commented 1 month ago

Ah - this is the newer 50G ... so the sysex seems to be quite different to the original and more like the G1XFour?

nomadbyte commented 1 month ago

...I managed to accidentally send the sysex command to enter firmware update mode

Which command did you send?

thammer commented 1 month ago

...I managed to accidentally send the sysex command to enter firmware update mode

Which command did you send?

I don't think we should document that in a public post, at least not until we can document how to fix it at the same time. Currently my pedal is for all practical purposes bricked. If you email me at h@mmer.no, I'll let you know the command in private.

mungewell commented 1 month ago

On the G1Four the FW upload process has a display on the screen, it seems unbelievable that the newer MS+ pedals would not have similar display. In seems that you may have discovered a factory mode, or perhaps triggered something very special... :-( The fact that it's not totally dead (ie has USB Midi) is somewhat hopeful.

I (and a user in Russia) had an issue where our pedals 'forgot' what they were (device ID 0x00). But I had a legit FW uploader EXE, and I was able to patch it to be valid for the 0x00 device. Can you confirm the response to 'SysEx Inquiry'?

I also had a glitch when uploading random ZD2's from the Voice line, but that was my 'old' pedal with a broken screen so I don't know if it had anything on it. Randomly poking around of the SPI EEPROM at boot time time recovered that - I figure I must have cause a checksum error, and had it do a global reset....

I really don't know what to suggest. :-(

mungewell commented 1 month ago

Figured out/remembered that mido automatically strips the header/footer from SysEx. The checksum works, is the same as G1Four. ms_plus_patch.py.txt

I've also pushed a change so that --summary doesn't glitch. We will need to figure out the format of the PPRM block for version 2 patches.

nomadbyte commented 1 month ago

...It's just a black screen, blinking red light, presumably waiting for firmware. It does show up as a MIDI device when I connect it to my computer

Hard to say exactly in what state the pedal is now. The fact that it does not show up as a MIDI device may mean that the boot process has not completed (or has errors).

The fw update mode usually is not persistent, that is the pedal can reboot to normal state from it; of course, before initiating the actual update. If update is underway, for sure the pedal must not be disturbed.

For MS-50G+ the fw update mode is not documented ... yet. Factory reset just restores the presets.

Did you try to power it up without attaching to USB? Does it visually complete booting? Can you access the Main menu?

thammer commented 1 month ago

Thanks for the input on getting my pedal back to normal operations. I haven't been able to get it back yet, so I'm posting some more info here in the hope that we'll be able to figure this out eventually.

Here's what happened, in detail:

So that's the current state: No matter what I do, the screen is black and the red LED is blinking slowly. It shows up as a MIDI device when connected to a computer, but otherwise does not work.

nomadbyte commented 1 month ago

Bummer this is... Just a wild idea, did you try sending audio signal through? This is to check if the pedal did complete the booting?

None of us has yet seen the fw update prompt on the MS-50G+, so it's hard to speculate. From previous models, the fw update mode is usually exclusive from normal mode (default) -- user needs to trigger it on power-on. If you triggered the "Ready to receive the firmware" by sending a SysEx from the normal mode, then this implementation is different.

A good thing is that the pedal is being responding to MIDI. We can try to query it to determine which mode it is in. It's unlikely that you could erase the firmware, since the pedal needs to receive the new one first (verify it, wipe the current module, and then apply). But something is out of order.

thammer commented 1 month ago

The pedal does not output any audio when I send audio into it. How can I query the mode?

thammer commented 1 month ago

Yay! I managed to get the pedal back to working mode again :-D.

So, what I have painfully discovered by careless experimentation is this:

I cannot guarantee that this will work for everyone and that it's a reliable method.

nomadbyte commented 1 month ago

Congrats!

As for the SysEx, the 01 command on the original MS-50G used to respond SysEx with 00 0B status in normal mode, and 00 00 status in fw update mode.

nomadbyte commented 1 month ago

@thammer Now that you're back on the roll. You may dump out the following SysEx -- all of that are info commands (banks, model info, settings, DSP details), nothing of the sorts you painfully "discovered".

F0 52 00 6e 44 00 00 00 00 F7
F0 52 00 6e 48 00 00 00 00 F7
F0 52 00 6e 55 00 00 00 00 F7

F0 52 00 6e 64 0a 00 00 00 F7
F0 52 00 6e 64 11 F7
F0 52 00 6e 64 18 00 00 64 00 F7

We'll try to compare the output to other models, like B2 FOUR and G1 FOUR. Also, which OS are you on?

thammer commented 1 month ago

The version screen displays the following: System: 1.10 Preset: 1.00 Boot: 1.00 Checksum: EE8E

nomadbyte commented 1 month ago

I mean the PC OS

thammer commented 1 month ago

Here are the 6-byte commands that the MS-50G+ responded to. I added a comment behind those I know what means.

F0 52 00 6E 01 F7 -> F0 52 00 6E 00 0B F7        # Enters firmware update mode
F0 52 00 6E 03 F7 -> F0 52 00 6E 00 01 F7
F0 52 00 6E 04 F7 -> F0 52 00 6E 00 00 F7        # Exits firmware update mode
F0 52 00 6E 05 F7 -> F0 52 00 6E 00 00 F7
F0 52 00 6E 07 F7 -> F0 52 00 6E 06 64 00 50 06 F7
F0 52 00 6E 09 F7 -> F0 52 00 6E 00 01 F7
F0 52 00 6E 12 F7 -> F0 52 00 6E 00 00 F7
F0 52 00 6E 28 F7 -> F0 52 00 6E 00 01 F7
F0 52 00 6E 33 F7 -> B0 00 00, B0 20 02, C0 06   # Set/Get current bank and program number
F0 52 00 6E 44 F7 -> F0 52 00 6E 43 64 00 50 06 64 00 0A 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 45 F7 -> F0 52 00 6E 00 01 F7
F0 52 00 6E 46 F7 -> F0 52 00 6E 00 01 F7
F0 52 00 6E 48 F7 -> F0 52 00 6E 47 02 00 00 00 00 00 00 10 00 00 00 00 00 00 00 06 F7
F0 52 00 6E 50 F7 -> F0 52 00 6E 00 00 F7        # Parameter edit enable
F0 52 00 6E 51 F7 -> F0 52 00 6E 00 00 F7        # Parameter edit disable
F0 52 00 6E 52 F7 -> F0 52 00 6E 00 00 F7        # PC mode on
F0 52 00 6E 53 F7 -> F0 52 00 6E 00 00 F7        # PC mode off
F0 52 00 6E 55 F7 -> F0 52 00 6E 54 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 F7
F0 52 00 6E 56 F7 -> F0 52 00 6E 00 0D F7
F0 52 00 6E 57 F7 -> F0 52 00 6E 00 00 F7
F0 52 00 6E 5B F7 -> F0 52 00 6E 00 00 F7        # Factory reset. WARNING: Wipes all user patches!
thammer commented 1 month ago

I mean the PC OS

Haha :-D. I'm on Windows 11 Pro 21H2.

thammer commented 1 month ago

@thammer Now that you're back on the roll. You may dump out the following SysEx -- all of that are info commands (banks, model info, settings, DSP details), nothing of the sorts you painfully "discovered".

F0 52 00 6e 44 00 00 00 00 F7
F0 52 00 6e 48 00 00 00 00 F7
F0 52 00 6e 55 00 00 00 00 F7

F0 52 00 6e 64 0a 00 00 00 F7
F0 52 00 6e 64 11 F7
F0 52 00 6e 64 18 00 00 64 00 F7

We'll try to compare the output to other models, like B2 FOUR and G1 FOUR. Also, which OS are you on?

Here are the sysex messages I sent -> what I got back from the MS-50G+:

F0 52 00 6e 44 00 00 00 00 F7 -> F0 52 00 6E 43 64 00 50 06 64 00 0A 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7
F0 52 00 6e 48 00 00 00 00 F7 -> F0 52 00 6E 47 02 00 00 00 00 00 00 10 00 00 00 00 00 00 00 06 F7 
F0 52 00 6e 55 00 00 00 00 F7 -> F0 52 00 6E 54 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 F7
F0 52 00 6e 64 0a 00 00 00 F7 -> F0 52 00 6E 64 09 78 00 00 00 0A 00 00 01 00 32 0F 00 07 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 32 32 32 64 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7
F0 52 00 6e 64 11 F7 -> F0 52 00 6E 64 10 0E 02 04 01 00 F7 
F0 52 00 6e 64 18 00 00 64 00 F7 -> F0 52 00 6E 64 19 01 00 00 09 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7 
nomadbyte commented 1 month ago

...F0 52 00 6e 64 11 F7 -> F0 52 00 6E 64 10 0E 02 04 01 00 F7

MS-50G+ has the same DSP load scaling factor: 270, just as the B2 FOUR.

nomadbyte commented 1 month ago

...I'm on Windows 11 Pro 21H2.

Do you have Python3 installed? It's easier to use it for scripting and analysis. Though you can adapt the scripts for JS, if you're more comfy with it.

We can try to list the contents of the pedal's internal filesystem.

Just a warning for your SysEx explorations, some SysEx commands may just erase/format the internal flash, so you'd loose the contents as it's not part of firmware. So, the blind indexing of SysEx is not pragmatic, at least it should be postponed until the stored files could be backed up.

thammer commented 1 month ago

On the top of my list of what I want to figure out is:

  1. How can I get the pedal to send me the current patch (what is in memory, possibly not saved to patch memory yet)?
  2. Is it possible to change the effect in a slot without sending the whole patch?

Regarding item 2, I'm pretty sure its the second parameter number that specifies this, but I haven't been able to figure out how to specify the effect.

To set a parameter for an effect in a slot, I do

F0 52 00 6E 64 20 00 <effect slot> <param number> <LSB> <MSB> 00 00 00 F7

To set the effect in slot 0 to nothing (delete effect), I do

F0 52 00 6E 64 20 00 00 01 00  00 00 00 00 F7

In other words, I set parameter number 1 to zero. I have tried sending some random numbers as LSB and MSB, but the pedal keeps telling me "? Missing effect not found". So there's some effect numbering scheme I haven't figured out (numbers XX and YY below).

F0 52 00 6E 64 20 00 00 01 XX  YY 00 00 00 F7
nomadbyte commented 1 month ago

Get Current Patch (Edit Buffer) SysEx: 64 13

With effect slots, it's trickier as some effects may be "wide" (taking 2 units/slots).

mungewell commented 1 month ago

@thammer Glad you're back, it's a big relief when you confirm you haven't destroyed your $$$ pedal ;-)

1). Current patch. Command in the command line python script.

$ python3 zoomzt2.py --help
usage: zoomzt2 [-h] [-d] [-s] [-b BUILD] [-A ADD] [-v VER] [-i ID] [-D DELETE] [-N] [-t TOGGLE] [-w] [-R] [-S]
               [-I | -U | --install-only | --uninstall-only] [-a] [-p PATCHDOWN | -P PATCHUP | -c] [--old-patch] [-M MIDISKIP]
               FILE [FILE ...]

...

ZPTC:
  Process ZPTC patch file

  -p PATCHDOWN, --patchdown PATCHDOWN
                        download specific zptc
  -P PATCHUP, --patchup PATCHUP
                        upload specific zptc
  -c, --curdown         download current zptc

2). Setting invididual parameters is possible via SysEx. https://github.com/mungewell/zoom-zt2?tab=readme-ov-file#effects-settings

EDIT - remember that SysEx is limited to 7bit values, so Effect IDs must be altered before sending....

mungewell commented 1 month ago

@thammer All the Effects have an ID, 32bits with the high 8 being the effect group.

All the ones that we know are listed: https://github.com/mungewell/zoom-zt2/blob/master/zoom_fx_AllZDL7/master.txt

There is a script which can 'decode_effect.py'...

$ python3 decode_effect.py -s ZNR.ZD2
0x01000040 : ZNR (v1.50, 4.35%), ZNR.ZD2

EDIT you can also get a list of Effects installed on your pedal if you request the FLST_SEQ.ZT2 file (the original purpose of this project)...

thammer commented 1 month ago

Get Current Patch (Edit Buffer) SysEx: 64 13

With effect slots, it's trickier as some effects may be "wide" (taking 2 units/slots).

Wonderful. That worked :-).

F0 52 00 6E 64 13 F7 -> <985 byte long buffer with the current patch>
thammer commented 1 month ago

I'm able to run the python scripts in this repo.

mungewell commented 1 month ago

BTW we also have another way (which @shooking discovered), where pedal sends a textual description of what's on the screen - rather than patch data.

$ head decode_screens.py 
#!/usr/bin/python
#
# Script decode 'screen data' from Zoom G1Four
# (c) Simon Wood, 10 Dec 2020
#
# read with:
# $ amidi -p hw:1,0,0 -S 'F0 52 00 6e 64 02 00 09 00 F7' -r temp.bin -t 2
#
nomadbyte commented 1 month ago

To list the files on the internal filesystem:

  1. First send SysEx for listing file info for All *.* files; it should return info for the First file:
SysEx: 60 25 00 00 2a 2e 2a 00
  1. Then LOOP to get info for each Next file, until it returns "File Not Found" status (7a 7f 7f 7f 0f):
    SysEx: 60 26 00 00 2a 2e 2a 00
  2. End the file list mode:
    SysEx: 60 27

Dump it out here, we'll decode the output. The output contains file name and size.

P.S. The SysEx commands above are read-only. Please, easy (read not) on trying out other '60' SysEx commands for now.

thammer commented 1 month ago

I changed midiname to "ZOOM MS Plus Series" in zoomzt2.py and was able to connect to the pedal (it changed mode to PC mode).

But I get a million CRC errors:

PS C:\source\zoom-zt2> python zoomzt2.py -R FLST_SEQ.ZT2
Checksum error 0x0
Checksum error 0x0
<repeated until I got bored and pressed CTRL-C>
thammer commented 1 month ago

BTW we also have another way (which @shooking discovered), where pedal sends a textual description of what's on the screen - rather than patch data.

$ head decode_screens.py 
#!/usr/bin/python
#
# Script decode 'screen data' from Zoom G1Four
# (c) Simon Wood, 10 Dec 2020
#
# read with:
# $ amidi -p hw:1,0,0 -S 'F0 52 00 6e 64 02 00 09 00 F7' -r temp.bin -t 2
#

That works fine on the MS-50G+ as well.

thammer commented 1 month ago

To list the files on the internal filesystem:

  1. First send SysEx for listing file info for All *.* files; it should return info for the First file:
SysEx: 60 25 00 00 2a 2e 2a 00
  1. Then LOOP to get info for each Next file, until it returns "File Not Found" status (7a 7f 7f 7f 0f):
SysEx: 60 26 00 00 2a 2e 2a 00
  1. End the file list mode:
SysEx: 60 27

Dump it out here, we'll decode the output. The output contains file name and size.

P.S. The SysEx commands above are read-only. Please, easy (read not) on trying out other '60' SysEx commands for now.

Here's what I got - 201 files. I never got that end of file message thet you mentioned. The last message I got was "F0 52 00 6E 60 03 00 00 00 00 00 F7", and then the pedal stopped replying to further Next File commands.

F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 37 48 45 56 4E 5F 4C 54 2E 5A 44 32 66 00 00 1C 2C 05 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 37 48 45 56 4E 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 37 48 45 56 4E 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 43 4F 53 49 4D 2E 5A 44 32 00 00 66 00 00 1E 4B 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 43 4F 53 49 4D 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 49 52 35 47 2E 5A 44 32 00 00 00 66 00 00 75 76 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 49 52 35 47 2E 5A 49 43 00 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 4E 41 32 33 34 43 48 2E 5A 44 32 66 00 00 31 26 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 4E 41 32 33 34 43 48 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 4E 44 4C 59 5F 4D 2E 5A 44 32 00 66 00 00 1C 08 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 4E 44 4C 59 5F 4D 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 55 54 4F 50 41 4E 2E 5A 44 32 00 66 00 00 7D 70 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 55 54 4F 50 41 4E 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 55 54 4F 57 41 48 2E 5A 44 32 00 66 00 00 22 7D 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 41 55 54 4F 57 41 48 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 31 5F 4C 54 2E 5A 44 32 66 00 00 22 65 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 31 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 31 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 33 5F 4C 54 2E 5A 44 32 66 00 00 39 65 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 33 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 4D 4B 33 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 54 48 52 54 54 4C 2E 5A 44 32 66 00 00 41 62 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 47 54 48 52 54 54 4C 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 4C 41 43 4B 4F 50 54 2E 5A 44 32 66 00 00 37 42 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 4C 41 43 4B 4F 50 54 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 4F 4D 42 45 52 2E 5A 44 32 00 00 66 00 00 38 71 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 4F 4D 42 45 52 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 50 4D 5F 4D 44 4C 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 52 47 54 48 41 4C 4C 2E 5A 44 32 66 00 00 07 0A 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 52 47 54 48 41 4C 4C 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 52 47 54 52 4F 4F 4D 2E 5A 44 32 66 00 00 05 0A 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 42 52 47 54 52 4F 4F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 4C 4F 4E 45 43 48 4F 2E 5A 44 32 66 00 00 54 78 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 4C 4F 4E 45 43 48 4F 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 4F 4D 50 2E 5A 44 32 00 00 00 00 66 00 00 4E 68 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 4F 4D 50 2E 5A 49 43 00 00 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 52 4E 54 52 49 35 47 2E 5A 44 32 66 00 00 5E 21 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 43 52 4E 54 52 49 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 45 4C 41 59 5F 4D 2E 5A 44 32 00 66 00 00 41 06 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 45 4C 41 59 5F 4D 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 45 54 55 4E 45 35 47 2E 5A 44 32 66 00 00 01 78 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 45 54 55 4E 45 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 49 53 54 31 5F 35 47 2E 5A 44 32 66 00 00 60 44 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 49 53 54 31 5F 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 49 53 54 50 4C 35 47 2E 5A 44 32 66 00 00 11 31 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 49 53 54 50 4C 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 55 41 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 21 0E 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 55 41 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 59 4E 44 52 49 56 45 2E 5A 44 32 66 00 00 36 0B 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 59 4E 44 52 49 56 45 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 5A 5F 44 52 56 4C 54 2E 5A 44 32 66 00 00 0E 54 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 5A 5F 44 52 56 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 44 5A 5F 44 52 56 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 41 52 4C 59 52 45 46 2E 5A 44 32 66 00 00 53 16 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 41 52 4C 59 52 45 46 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 47 46 4C 54 52 31 55 2E 5A 44 32 66 00 00 71 70 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 47 46 4C 54 52 31 55 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 50 53 54 4D 50 35 47 2E 5A 44 32 66 00 00 6E 06 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 45 50 53 54 4D 50 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 42 4D 41 4E 4C 54 2E 5A 44 32 66 00 00 62 68 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 42 4D 41 4E 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 42 4D 41 4E 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 44 4C 58 52 4C 54 2E 5A 44 32 66 00 00 2E 72 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 44 4C 58 52 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 44 4C 58 52 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 4D 53 54 52 4C 54 2E 5A 44 32 66 00 00 7B 5F 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 4D 53 54 52 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 4D 53 54 52 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 5F 54 57 52 4C 54 2E 5A 44 32 66 00 00 50 4D 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 5F 54 57 52 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 44 5F 54 57 52 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 4C 54 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 33 09 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 46 4C 54 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 45 4D 49 4E 4F 53 2E 5A 44 32 00 66 00 00 3E 28 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 45 4D 49 4E 4F 53 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 4F 4C 44 5F 44 52 56 2E 5A 44 32 66 00 00 29 0C 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 4F 4C 44 5F 44 52 56 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 52 41 59 43 4F 4D 50 2E 5A 44 32 66 00 00 64 11 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 52 41 59 43 4F 4D 50 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 54 47 45 51 37 35 47 2E 5A 44 32 66 00 00 11 0A 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 47 54 47 45 51 37 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 41 4C 4C 35 47 2E 5A 44 32 00 00 66 00 00 13 0C 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 41 4C 4C 35 47 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 4C 44 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 37 0C 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 4C 44 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 4F 54 53 50 49 43 45 2E 5A 44 32 66 00 00 6F 45 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 4F 54 53 50 49 43 45 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 50 53 2E 5A 44 32 00 00 00 00 00 66 00 00 75 7A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 50 53 2E 5A 49 43 00 00 00 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 57 31 30 30 5F 4C 54 2E 5A 44 32 66 00 00 7F 32 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 57 31 30 30 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 48 57 31 30 30 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4B 4B 46 4C 4E 47 31 55 2E 5A 44 32 66 00 00 55 2E 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4B 4B 46 4C 4E 47 31 55 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4B 52 4D 50 53 5F 4C 54 2E 5A 44 32 66 00 00 16 07 05 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4B 52 4D 50 53 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4B 52 4D 50 53 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 49 4E 45 53 45 4C 2E 5A 44 32 00 66 00 00 59 46 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 49 4E 45 53 45 4C 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4D 54 31 31 37 36 2E 5A 44 32 00 66 00 00 02 56 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4D 54 31 31 37 36 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4F 4F 50 52 4F 4C 4C 2E 5A 44 32 66 00 00 20 61 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4F 4F 50 52 4F 4C 4C 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4F 57 50 41 53 53 46 2E 5A 44 32 66 00 00 58 05 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4C 4F 57 50 41 53 53 46 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 41 43 48 33 30 4C 54 2E 5A 44 32 66 00 00 04 19 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 41 43 48 33 30 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 41 43 48 33 30 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 4F 44 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 59 02 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 4F 44 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 31 39 35 39 4C 54 2E 5A 44 32 66 00 00 52 7D 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 31 39 35 39 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 31 39 35 39 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 34 35 4F 53 4C 54 2E 5A 44 32 66 00 00 5E 04 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 34 35 4F 53 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 34 35 4F 53 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 38 30 30 5F 4C 54 2E 5A 44 32 66 00 00 3E 3A 03 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 38 30 30 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 53 38 30 30 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 55 44 44 59 5F 4C 54 2E 5A 44 32 66 00 00 1A 07 06 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 55 44 44 59 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4D 55 44 44 59 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4E 59 43 5F 4D 55 46 46 2E 5A 44 32 66 00 00 20 08 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4E 59 43 5F 4D 55 46 46 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4E 5F 47 41 54 45 2E 5A 44 32 00 00 66 00 00 09 3C 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4E 5F 47 41 54 45 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 43 54 41 56 45 35 47 2E 5A 44 32 66 00 00 65 5E 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 43 54 41 56 45 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 43 54 46 55 5A 5A 2E 5A 44 32 00 66 00 00 04 6D 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 43 54 46 55 5A 5A 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 52 47 31 32 30 4C 54 2E 5A 44 32 66 00 00 3D 63 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 52 47 31 32 30 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 4F 52 47 31 32 30 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 41 52 41 45 51 35 47 2E 5A 44 32 66 00 00 64 78 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 41 52 41 45 51 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 48 41 53 45 52 2E 5A 44 32 00 00 66 00 00 6B 7B 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 48 41 53 45 52 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 49 54 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 60 05 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 49 54 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4C 59 4C 49 47 48 54 2E 5A 44 32 66 00 00 25 04 06 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4C 59 4C 49 47 48 54 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4C 59 4F 43 54 2E 5A 44 32 00 00 66 00 00 52 6F 05 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4C 59 4F 43 54 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4F 4C 45 58 5F 4C 54 2E 5A 44 32 66 00 00 07 14 06 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4F 4C 45 58 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 4F 4C 45 58 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 50 5F 44 4C 59 5F 4D 2E 5A 44 32 66 00 00 0F 05 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 50 50 5F 44 4C 59 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 41 43 4B 43 4F 4D 50 2E 5A 44 32 66 00 00 24 08 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 41 43 4B 43 4F 4D 50 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 41 5A 4F 52 44 52 56 2E 5A 44 32 66 00 00 13 0F 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 41 5A 4F 52 44 52 56 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 43 42 53 54 35 47 2E 5A 44 32 00 66 00 00 64 30 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 43 42 53 54 35 47 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 43 54 4F 52 47 4C 54 2E 5A 44 32 66 00 00 4D 50 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 43 54 4F 52 47 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 43 54 4F 52 47 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 45 44 43 52 35 47 2E 5A 44 32 00 66 00 00 77 33 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 45 44 43 52 35 47 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 45 44 4C 4D 5F 4C 54 2E 5A 44 32 66 00 00 25 7B 04 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 45 44 4C 4D 5F 4C 54 2E 5A 49 43 66 00 00 0D 1A 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 45 44 4C 4D 5F 4C 54 2E 5A 49 52 66 00 00 00 60 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 49 4E 47 4D 4F 44 2E 5A 44 32 00 66 00 00 64 73 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 49 4E 47 4D 4F 44 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 4F 4F 4D 35 47 2E 5A 44 32 00 00 66 00 00 7D 0B 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 4F 4F 4D 35 47 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 56 52 53 44 4C 5F 4D 2E 5A 44 32 66 00 00 17 05 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 52 56 52 53 44 4C 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 45 51 46 4C 54 52 2E 5A 44 32 00 66 00 00 5A 19 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 45 51 46 4C 54 52 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 41 50 42 4B 44 2E 5A 44 32 00 66 00 00 5E 12 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 41 50 42 4B 44 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 49 43 45 52 2E 5A 44 32 00 00 66 00 00 31 7B 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 49 43 45 52 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 57 41 54 4B 2E 5A 44 32 00 00 66 00 00 36 51 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4C 57 41 54 4B 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4F 46 54 45 43 35 47 2E 5A 44 32 66 00 00 3D 4B 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 4F 46 54 45 43 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 50 52 49 4E 47 35 47 2E 5A 44 32 66 00 00 5D 0C 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 50 52 49 4E 47 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 51 55 45 41 4B 35 47 2E 5A 44 32 66 00 00 55 40 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 51 55 45 41 4B 35 47 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 45 50 35 47 2E 5A 44 32 00 00 66 00 00 67 73 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 45 50 35 47 2E 5A 49 43 00 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 45 52 45 4F 43 48 2E 5A 44 32 66 00 00 11 75 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 45 52 45 4F 43 48 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 4F 4E 45 50 48 41 2E 5A 44 32 66 00 00 7E 2C 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 54 4F 4E 45 50 48 41 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 55 50 45 52 43 48 4F 2E 5A 44 32 66 00 00 21 02 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 55 50 45 52 43 48 4F 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 57 45 45 54 44 52 56 2E 5A 44 32 66 00 00 1C 15 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 57 45 45 54 44 52 56 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 57 45 4C 4C 56 49 42 2E 5A 44 32 66 00 00 12 09 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 53 57 45 4C 4C 56 49 42 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 41 50 45 43 48 5F 4D 2E 5A 44 32 66 00 00 68 04 01 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 41 50 45 43 48 5F 4D 2E 5A 49 43 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 42 5F 4D 4B 31 35 2E 5A 44 32 00 66 00 00 38 49 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 42 5F 4D 4B 31 35 2E 5A 49 43 00 66 00 00 28 14 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 48 45 56 49 42 45 2E 5A 44 32 00 66 00 00 6D 6C 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 48 45 56 49 42 45 2E 5A 49 43 00 66 00 00 0E 15 00 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 04 25 00 00 17 00 00 00 00 00 54 50 45 43 33 5F 4D 2E 5A 44 32 00 66 00 00 47 44 02 00 00 00 00 00 00 00 F7
F0 52 00 6E 60 03 00 00 00 00 00 F7
mungewell commented 1 month ago

But I get a million CRC errors:

Huh, maybe a bug in the code... you could try disabling the check and just add the block regardless.. https://github.com/mungewell/zoom-zt2/blob/master/zoomzt2.py#L401

It might be that the pedal sends a longer data packet and that length is not correctly interpreted.

nomadbyte commented 1 month ago

Attached is the list of MS-50G+ files ms-50gplus-files.txt

TOTAL: 202 files, 3545637 bytes

Some details:

extension description
.ZD2 effect module
.ZIC effect icon (Zoom ICon format)
.ZIR IR data (Zoom format)
.ZT2 effect module sequence list (FLST_SEQ.ZT2)

Interestingly, there is no FLST_SEQ.ZT2 in the list.

EDIT: Added FLST_SEQ.ZT2 -- need to request explicitly by name

mungewell commented 1 month ago

Where's the ZT2?

$ cat files.txt | cut -f 1 | cut -d '.' -f 2 | sort | uniq
ZD2 
ZIC 
ZIR
nomadbyte commented 1 month ago

...Interestingly, there is no FLST_SEQ.ZT2 in the list.

@thammer Can you try to get info for it explicitly, by naming it in the File Info SysEx?

SysEx: 60 25 00 00 46 4c 53 54 5f 53 45 51 2e 5a 54 32 00

Then File Info end:

SysEx: 60 27
thammer commented 1 month ago

But I get a million CRC errors:

Huh, maybe a bug in the code... you could try disabling the check and just add the block regardless.. https://github.com/mungewell/zoom-zt2/blob/master/zoomzt2.py#L401

It might be that the pedal sends a longer data packet and that length is not correctly interpreted.

I disabled the CRC check and added some debug output. Oddly enough I had to run the script twice to make it work. The first run it will return lots of short data buffers (length 4) and never complete. But every other run it will return this:

PS C:\source\zoom-zt2> python zoomzt2.py -R output.txt -d
Downloading file
Counter:  0 length:  512
Counter:  1 length:  512
Counter:  2 length:  512
Counter:  3 length:  512
Counter:  4 length:  512
Counter:  5 length:  512
Counter:  6 length:  512
Counter:  7 length:  512
Counter:  8 length:  512
Counter:  9 length:  512
Counter:  10 length:  512
Counter:  11 length:  512
Counter:  12 length:  512
Counter:  13 length:  512
Counter:  14 length:  512
Counter:  15 length:  512
Counter:  16 length:  512
Counter:  17 length:  512
Counter:  18 length:  512
Counter:  19 length:  512
Counter:  20 length:  512
Counter:  21 length:  512
Counter:  22 length:  512
Counter:  23 length:  512
Counter:  24 length:  36
Counter:  25 length:  0
ListContainer: 
    Container:
        name = u'BLANK.ZD2' (total 9)
    ListContainer:
        Container:
            group = 1
            groupname = (enum) DYNAMICS 1
            effects = ListContainer:
                Container:
                    effect = u'COMP.ZD2' (total 8)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777232
                    group = 1
                Container:
                    effect = u'RACKCOMP.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777248
                    group = 1
                Container:
                    effect = u'GRAYCOMP.ZD2' (total 12)
                    version = u'1.20' (total 4)
                    installed = 1
                    id = 16777264
                    group = 1
                Container:
                    effect = u'BLACKOPT.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777296
                    group = 1
                Container:
                    effect = u'LMT1176.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777312
                    group = 1
                Container:
                    effect = u'ZNR.ZD2' (total 7)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777328
                    group = 1
                Container:
                    effect = u'N_GATE.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777344
                    group = 1
                Container:
                    effect = u'SLWATK.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 16777360
                    group = 1
            group_end = 1
        Container:
            group = 2
            groupname = (enum) FILTER 2
            effects = ListContainer:
                Container:
                    effect = u'AUTOWAH.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554448
                    group = 2
                Container:
                    effect = u'LOWPASSF.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554480
                    group = 2
                Container:
                    effect = u'EGFLTR1U.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554512
                    group = 2
                Container:
                    effect = u'SEQFLTR.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554544
                    group = 2
                Container:
                    effect = u'STEP5G.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554576
                    group = 2
                Container:
                    effect = u'GTGEQ75G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554608
                    group = 2
                Container:
                    effect = u'PARAEQ5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 33554640
                    group = 2
            group_end = 2
        Container:
            group = 3
            groupname = (enum) DRIVE 3
            effects = ListContainer:
                Container:
                    effect = u'EPSTMP5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331664
                    group = 3
                Container:
                    effect = u'RCBST5G.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331680
                    group = 3
                Container:
                    effect = u'TS_DRIVE.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331696
                    group = 3
                Container:
                    effect = u'GOLD_DRV.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331712
                    group = 3
                Container:
                    effect = u'SWEETDRV.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331728
                    group = 3
                Container:
                    effect = u'ZEN_DRV.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331744
                    group = 3
                Container:
                    effect = u'DYNDRIVE.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331776
                    group = 3
                Container:
                    effect = u'DISTPL5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331792
                    group = 3
                Container:
                    effect = u'DIST1_5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331808
                    group = 3
                Container:
                    effect = u'SQUEAK5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331824
                    group = 3
                Container:
                    effect = u'REDCR5G.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331840
                    group = 3
                Container:
                    effect = u'VIOLTD5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331856
                    group = 3
                Container:
                    effect = u'TB_MK15.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331872
                    group = 3
                Container:
                    effect = u'OCTFUZZ.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331888
                    group = 3
                Container:
                    effect = u'NYC_MUFF.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331904
                    group = 3
                Container:
                    effect = u'WAVSHPR.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331920
                    group = 3
                Container:
                    effect = u'RAZORDRV.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331936
                    group = 3
                Container:
                    effect = u'BGTHRTTL.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50331968
                    group = 3
                Container:
                    effect = u'ACOSIM.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 50332064
                    group = 3
            group_end = 3
        Container:
            group = 4
            groupname = (enum) AMP 4
            effects = ListContainer:
                Container:
                    effect = u'MS45OSLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108881
                    group = 4
                Container:
                    effect = u'MS1959LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108897
                    group = 4
                Container:
                    effect = u'MS800_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108913
                    group = 4
                Container:
                    effect = u'FDBMANLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108929
                    group = 4
                Container:
                    effect = u'FD_TWRLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108945
                    group = 4
                Container:
                    effect = u'FDDLXRLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108961
                    group = 4
                Container:
                    effect = u'FDMSTRLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108977
                    group = 4
                Container:
                    effect = u'UK30A_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67108993
                    group = 4
                Container:
                    effect = u'BGMK1_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109009
                    group = 4
                Container:
                    effect = u'BGMK3_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109025
                    group = 4
                Container:
                    effect = u'RCTORGLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109041
                    group = 4
                Container:
                    effect = u'XTSBL_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109057
                    group = 4
                Container:
                    effect = u'HW100_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109073
                    group = 4
                Container:
                    effect = u'ORG120LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109089
                    group = 4
                Container:
                    effect = u'DZ_DRVLT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109105
                    group = 4
                Container:
                    effect = u'MACH30LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109121
                    group = 4
                Container:
                    effect = u'KRMPS_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109137
                    group = 4
                Container:
                    effect = u'REDLM_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109153
                    group = 4
                Container: 
                    effect = u'VELVT_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109169
                    group = 4
                Container:
                    effect = u'MUDDY_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109185
                    group = 4
                Container:
                    effect = u'7HEVN_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109201
                    group = 4
                Container:
                    effect = u'POLEX_LT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 67109217
                    group = 4
            group_end = 4
        Container:
            group = 6
            groupname = (enum) MODULATION 6
            effects = ListContainer:
                Container:
                    effect = u'CLONECHO.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663328
                    group = 6
                Container:
                    effect = u'SUPERCHO.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663344
                    group = 6
                Container:
                    effect = u'CRNTRI5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663360
                    group = 6
                Container:
                    effect = u'ANA234CH.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663376
                    group = 6
                Container:
                    effect = u'STEREOCH.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663392
                    group = 6
                Container:
                    effect = u'DETUNE5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663424
                    group = 6
                Container:
                    effect = u'TREMOLO.ZD2' (total 11)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 100663440
                    group = 6
                Container:
                    effect = u'PHASER.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663456
                    group = 6
                Container:
                    effect = u'STONEPHA.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663472
                    group = 6
                Container:
                    effect = u'WRPPHASE.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663488
                    group = 6
                Container:
                    effect = u'THEVIBE.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663520
                    group = 6
                Container:
                    effect = u'VINFLNG5.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663536
                    group = 6
                Container:
                    effect = u'KKFLNG1U.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663552
                    group = 6
                Container:
                    effect = u'VIBRATO.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663568
                    group = 6
                Container:
                    effect = u'SWELLVIB.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663584
                    group = 6
                Container:
                    effect = u'OCTAVE5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663600
                    group = 6
                Container:
                    effect = u'PLYOCT.ZD2' (total 10)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 100663632
                    group = 6
                Container:
                    effect = u'HPS.ZD2' (total 7)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663648
                    group = 6
                Container:
                    effect = u'PLYLIGHT.ZD2' (total 12)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 100663665
                    group = 6
                Container:
                    effect = u'GEMINOS.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663680
                    group = 6
                Container:
                    effect = u'RINGMOD.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663696
                    group = 6
                Container:
                    effect = u'SLICER.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 100663712
                    group = 6
            group_end = 6
        Container:
            group = 7
            groupname = (enum) SFX 7
            effects = ListContainer:
                Container:
                    effect = u'AUTOPAN.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 117440528
                    group = 7
                Container:
                    effect = u'LOOPROLL.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 117440544
                    group = 7
                Container:
                    effect = u'HOTSPICE.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 117440560
                    group = 7
                Container:
                    effect = u'BOMBER.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 117440576
                    group = 7
                Container:
                    effect = u'LINESEL.ZD2' (total 11)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 117444352
                    group = 7
                Container:
                    effect = u'BPM_MDL.ZD2' (total 11)
                    version = u'1.00' (total 4)
                    installed = 1
                    id = 117444592
                    group = 7
            group_end = 7
        Container:
            group = 8
            groupname = (enum) DELAY 8
            effects = ListContainer:
                Container:
                    effect = u'DELAY_M.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217744
                    group = 8
                Container:
                    effect = u'ANDLY_M.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217760
                    group = 8
                Container:
                    effect = u'TAPECH_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217776
                    group = 8
                Container:
                    effect = u'TPEC3_M.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217792
                    group = 8
                Container:
                    effect = u'DUADLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217808
                    group = 8
                Container:
                    effect = u'SOFTEC5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217824
                    group = 8
                Container:
                    effect = u'SLAPBKD.ZD2' (total 11)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217840
                    group = 8
                Container:
                    effect = u'PP_DLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217856
                    group = 8
                Container:
                    effect = u'RVRSDL_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217872
                    group = 8
                Container:
                    effect = u'MODDLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217888
                    group = 8
                Container:
                    effect = u'FLTDLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217904
                    group = 8
                Container:
                    effect = u'PITDLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134217920
                    group = 8
                Container:
                    effect = u'HLDDLY_M.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 134218000
                    group = 8
            group_end = 8
        Container:
            group = 9
            groupname = (enum) REVERB 9
            effects = ListContainer:
                Container:
                    effect = u'ROOM5G.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150994960
                    group = 9
                Container:
                    effect = u'BRGTROOM.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150994976
                    group = 9
                Container:
                    effect = u'SPRING5G.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150994992
                    group = 9
                Container:
                    effect = u'HALL5G.ZD2' (total 10)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150995040
                    group = 9
                Container:
                    effect = u'BRGTHALL.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150995056
                    group = 9
                Container:
                    effect = u'AIR5G.ZD2' (total 9)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150995136
                    group = 9
                Container:
                    effect = u'EARLYREF.ZD2' (total 12)
                    version = u'1.10' (total 4)
                    installed = 1
                    id = 150995152
                    group = 9
            group_end = 9
PS C:\source\zoom-zt2> 
thammer commented 1 month ago

...Interestingly, there is no FLST_SEQ.ZT2 in the list.

@thammer Can you try to get info for it explicitly, by naming it in the File Info SysEx?

SysEx: 60 25 00 00 46 4c 53 54 5f 53 45 51 2e 5a 54 32 00

Then File Info end:

SysEx: 60 27

Here's what I sent -> what I received:

F0 52 00 6E 60 25 00 00 46 4c 53 54 5f 53 45 51 2e 5a 54 32 00 F7 -> F0 52 00 6E 60 04 25 00 00 17  00 00 00 00 00 46 4C 53 54 5F  53 45 51 2E 5A 54 32 00 00 00  24 60 00 00 00 00 00 00 00 00  F7
F0 52 00 6E 00 00 F7 -> F0 52 00 6E 60 03 00 00 00 00  00 F7
mungewell commented 1 month ago

But every other run it will return this:

That's pretty AWESOME! If you wanted a more readable table use --summary rather than --dump.

I don't see any installed=0 as we had on the G1Four, so perhaps Zoom has no plans for letting the user upload more - not that would make any difference to US... ;-)

thammer commented 1 month ago

@thammer All the Effects have an ID, 32bits with the high 8 being the effect group.

All the ones that we know are listed: https://github.com/mungewell/zoom-zt2/blob/master/zoom_fx_AllZDL7/master.txt

There is a script which can 'decode_effect.py'...

$ python3 decode_effect.py -s ZNR.ZD2
0x01000040 : ZNR (v1.50, 4.35%), ZNR.ZD2

EDIT you can also get a list of Effects installed on your pedal if you request the FLST_SEQ.ZT2 file (the original purpose of this project)...

I assume I should be able to take one of the effect IDs we have identified above and select it for a specific slot using this command

F0 52 00 6E 64 20 00 <effect slot> 01 <LSB> <MSB> 00 00 00 F7

But I haven't yet understood how to get from the 32 bit Effect ID to a 14 bit LSB + MSB in the message above.

thammer commented 1 month ago

I'm able to list and download files using zoomzt2-gui.py :-).

mungewell commented 1 month ago

But I haven't yet understood how to get from the 32 bit Effect ID to a 14 bit LSB + MSB in the message above.

The pedal will actually accept 5x 7-bit 'bytes', ie those extra 0x00 at the end of the packet....

I thought I had something scripted, but don't find it. Basically it would be the same as used for the CRC32 checksum upload.

            packet.append(crc & 0x7f)
            packet.append((crc >> 7) & 0x7f)
            packet.append((crc >> 14) & 0x7f)
            packet.append((crc >> 21) & 0x7f)
            packet.append((crc >> 28) & 0x0f)
mungewell commented 1 month ago

I think that a huge applause is needed for @thammer, he's confirmed what we suspected and has opened a new chapter...

I'd also like to ask what he wants to do. Originally he had started a project page of his own. I'd offer my support to that, if he feels that it is more on task with what he wants. I imagine that the general public want a PC/Apple app to control their pedals, and a smaller population what to experiment with uploading new effects.

nomadbyte commented 1 month ago

...I'm able to list and download files using zoomzt2-gui.py

@thammer Great! Can you pull and attach here the FLST_SEQ.ZT2 (it's binary)? It seems to be different from the older models.

thammer commented 1 month ago

...I'm able to list and download files using zoomzt2-gui.py

@thammer Great! Can you pull and attach here the FLST_SEQ.ZT2 (it's binary)? It seems to be different from the older models.

Here you go. FLST_SEQ.zip