Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sysex for MS-50G+ patch #70

Closed
thammer opened this issue May 7, 2024 · 91 comments
Closed

Sysex for MS-50G+ patch #70

thammer opened this issue May 7, 2024 · 91 comments

Comments

@thammer
Copy link
Contributor

thammer commented May 7, 2024

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
Copy link

shooking commented May 7, 2024

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
Copy link

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
Copy link

nomadbyte commented May 7, 2024

@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
Copy link
Contributor Author

thammer commented May 7, 2024

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
Copy link
Owner

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
Copy link
Owner

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
Copy link
Contributor Author

thammer commented May 7, 2024

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
Copy link

shooking commented May 7, 2024

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

@nomadbyte
Copy link

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

Which command did you send?

@thammer
Copy link
Contributor Author

thammer commented May 7, 2024

...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
Copy link
Owner

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
Copy link
Owner

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
Copy link

...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
Copy link
Contributor Author

thammer commented May 8, 2024

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:

  • I sent a certain sysex command to the MS-50G+ just as an experiment. I have not seen that command referenced in any of the readme files for the zoon-related github repositories I have looked through, so it was just an unlucky experiment from my side.
  • The screen on the S-50G+ displayed something along the lines of "Ready to receive firmware. Please restart the pedal".
  • I did not restart the pedal, but tried sending a few sysex commands to the pedal to see if it would snap out of it. If I remember correctly, I did get replies from the pedal (it likes to send me a "F0 52 00 6E 00 00 F7" message back whenever I send it something it recognizes but doesn't have another reply for), but it would still just display the same message.
  • Eventually, I disconnected the USB cable from my laptop, leaving the pedal without power.
  • I connected the pedal to a regular 9V power adaptor. The screen is black, with a slowly blinking red LED.
  • I connected the pedal to the "Handy Guitar Lab for MS-50G+" app from zoom. The app went into a little dance trying to connect to the pedal and then showing the "Let's connect" screen and then trying to connect, etc. It never managed to connect to the pedal. The pedal has a black screen and a slowly blinking red LED.
  • I connected the pedal to the computer. It still has a black screen and a slowly blinking red LED. It shows up as a MIDI device in Device Manager and in MIDI-OX.
  • If I send a MIDI identity request sysex message to the pedal (F0 7E 7F 06 01 F7), it replies as expected (F0 7E 00 06 02 52 6E 00 23 00 31 2E 31 30 F7)
  • If I send a "PC mode on" message (F0 52 00 6E 52 F7) to the pedal, it replies with "F0 52 00 6E 00 00 F7". I tried a few other regular commands, but got no reply. The screen is just black with a slowly blinking red LED.

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
Copy link

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
Copy link
Contributor Author

thammer commented May 8, 2024

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

@thammer
Copy link
Contributor Author

thammer commented May 8, 2024

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

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

  • If you send sysex F0 52 00 6E 01 F7 to the MS-50G+, it enters firmware update mode. The screen says "Ready for firmware update! Please restart."
  • After restart, the pedal screen is black and the red LED is blinking slowly. I assume it's waiting for the firmware sysex over MIDI.
  • Connect the pedal to your computer. It should show up as a MIDI device. Send sysex F0 52 00 6E 04 F7 to the pedal, and the display will light up and display "Complete!".
  • Restart the pedal and it's back in normal mode.

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

@nomadbyte
Copy link

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
Copy link

@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
Copy link
Contributor Author

thammer commented May 8, 2024

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

@nomadbyte
Copy link

I mean the PC OS

@thammer
Copy link
Contributor Author

thammer commented May 8, 2024

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
Copy link
Contributor Author

thammer commented May 8, 2024

I mean the PC OS

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

@thammer
Copy link
Contributor Author

thammer commented May 8, 2024

@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
Copy link

...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
Copy link

nomadbyte commented May 8, 2024

...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
Copy link
Contributor Author

thammer commented May 8, 2024

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
Copy link

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
Copy link
Owner

mungewell commented May 8, 2024

@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
Copy link
Owner

mungewell commented May 8, 2024

@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)...

@nomadbyte
Copy link

nomadbyte commented May 10, 2024

...The current patch was cleared after sending the first sysex command.

@thammer Thanks for describing the test in detail. I wonder if all that "Received" SysEx output was from the first command or you also used the buttons/controls on the pedal after the first SysEx?

...Received: F0 52 00 6E 64 20 01 5F 00 55 00 00 00 00 F7
....
...Received: F0 52 00 6E 64 20 01 5F 1B 20 00 00 00 00 F7

This is the new patch name (char[00]:0x55='U', .., char[1B]:0x20=' ' , "USER-003 ....").

From the output you showed, only three first letters are received ("USE"), then letters are missing, and only blanks from the letter 15. Where did the letters in the middle go?

@shooking
Copy link

On the B1XFour there is what I call GetMoreData that clears buffers.

GetMoreData f0 52 00 6e 60 05 00 f7 whats in buffer seems to flush the current buffer. Useful for getting clean data

So I send a command. Get response. GetMoreData. Repeat

It cleans up the decoding on the earlier pedals at least.

BTW - great work everyone.

@thammer
Copy link
Contributor Author

thammer commented May 10, 2024

...The current patch was cleared after sending the first sysex command.

@thammer Thanks for describing the test in detail. I wonder if all that "Received" SysEx output was from the first command or you also used the buttons/controls on the pedal after the first SysEx?

...Received: F0 52 00 6E 64 20 01 5F 00 55 00 00 00 00 F7
....
...Received: F0 52 00 6E 64 20 01 5F 1B 20 00 00 00 00 F7

This is the new patch name (char[00]:0x55='U', .., char[1B]:0x20=' ' , "USER-003 ....").

From the output you showed, only three first letters are received ("USE"), then letters are missing, and only blanks from the letter 15. Where did the letters in the middle go?

If I turn off parameter edit mode by sending "F0 52 00 6E 51 F7", and then send "F0 52 00 6E 64 47 F7", I get no reply, and the pedal says "New Patch Memory Created".

If I start with an empty patch, turn on parameter edit mode by sending "F0 52 00 6E 50 F7", and then send "F0 52 00 6E 64 47 F7", I get this:

Sent: F0 52 00 6E 64 47 F7
Received: F0 52 00 6E 64 26 00 00 08 00 09 00 F7
Received: F0 52 00 6E 64 20 00 64 02 78 00 00 00 00 F7
Received: B0 00 00
Received: B0 20 08
Received: C0 09
Received: F0 52 00 6E 64 20 01 5F 00 55 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 01 53 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 02 45 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 03 52 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 14 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 15 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 16 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 17 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 18 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 19 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 1A 20 00 00 00 00 F7
Received: F0 52 00 6E 64 20 01 5F 1B 20 00 00 00 00 F7
Received: F0 52 00 6E 45 00 00 08 00 09 00 50 06 04 50 54 43 46 28 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 55 53 00 45 52 2D 30 30 37 20 00 20 00 00 00 00 54 58 00 4A 31 00 00 00 00 54 00 58 45 31 00 00 00 00 00 45 44 54 42 18 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 50 52 4D 00 32 20 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 07 4E 41 4D 45 20 00 00 00 00 55 53 45 52 00 2D 30 30 37 20 20 20 00 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 00 20 20 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6A 61 5A 75 03 F7
Received: F0 52 00 6E 00 00 F7

I repeated this command, but first filled 2 effect slots, and as I got the same set of replies as for the empty patch. I don't know why I got the extra "C0 00" messages last time I tried. I'm not able to reproduce that now.

@thammer
Copy link
Contributor Author

thammer commented May 10, 2024

We have come far :-).
One thing I still haven't figured out is how to upload a patch to the current patch memory (edit buffer) - the opposite of 64 13.

So if I for instance first send 64 13 to get the current patch data, then switch to another patch number on the pedal, or clear the current patch, I would like to know how I could send the patch data back to the pedal to update the current patch memory / edit buffer.

@shooking
Copy link

Have you hit the pedal with 50 (editor on) then captured packets with with your tool or WireShark? Sometimes that let find some more hidden sysex. I am guessing you are doing this but the pedal isn't emitting the special sauce?

@nomadbyte
Copy link

...how to upload a patch to the current patch memory (edit buffer)

Write Current Patch SysEx:28 <patch-data>; actually it's similar to the response of Get Current Patch SysEx:29.

These are "older" commands. SysEx:29 may return some garbage data at the end of the patch; it's still a valid patch, just may not be properly initialized past its end. So for getting the Current Patch/Edit Buffer use SysEx:64 13, that one includes a checksum. It may be possible to send back the received 64 12 but in my tries it did not work as expected. SysEx: 28 worked OK.

@nomadbyte
Copy link

@thammer Another query to dump settings, SysEx: F0 52 00 6e 64 18 00 00 64 00 F7, not sure if this model responds.

@thammer
Copy link
Contributor Author

thammer commented May 10, 2024

F0 52 00 6e 64 18 00 00 64 00 F7
It responded :-).

Sent: F0 52 00 6E 64 18 00 00 64 00 F7
Received: 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

@thammer
Copy link
Contributor Author

thammer commented May 10, 2024

Have you hit the pedal with 50 (editor on) then captured packets with with your tool or WireShark? Sometimes that let find some more hidden sysex. I am guessing you are doing this but the pedal isn't emitting the special sauce?

I have created a simple web app that uses the Web MIDI API, here:
https://www.waveformer.net/zoom-explorer/

I also have some code snippets that I run from a local version of that webpage that I haven't published yet, as it isn't very well structured.

So I'm basically just sending some MIDI messages to the pedal and listening to what it sends back using regular Web MIDI.

I would really like to be able to listen to the traffic between Zoom's Handy Guitar Lab for MS-50G+ (iPhone) and the pedal, but I haven't figured out a way to do that yet.

@shooking
Copy link

Not sure about the iPhone. If there is a Mac app then Wireshark can tun on that. I used it on Windows with the older pedals.

@thammer
Copy link
Contributor Author

thammer commented May 10, 2024

...how to upload a patch to the current patch memory (edit buffer)

Write Current Patch SysEx:28 <patch-data>; actually it's similar to the response of Get Current Patch SysEx:29.

These are "older" commands. SysEx:29 may return some garbage data at the end of the patch; it's still a valid patch, just may not be properly initialized past its end. So for getting the Current Patch/Edit Buffer use SysEx:64 13, that one includes a checksum. It may be possible to send back the received 64 12 but in my tries it did not work as expected. SysEx: 28 worked OK.

If I send sysex command 29, I get two short replies:

Sent: F0 52 00 6E 64 29 F7
Received: F0 52 00 6E 00 00 F7
Received: F0 52 00 6E 64 2A F7

I don't know what that means. It's way obviously too short to be a complete patch.

If I send sysex command 64 13, I get back a 985 bytes long sysex that starts with "F0 52 00 6E 64 12 01 50 06 00..."

I assume everything after (not including) the sixth byte is the patch data, ending with the 5 (7-bit) byte CRC and F7.

If I try to send that same patch data back to the pedal using sysex command 28, I get no reply, and nothing changes on the pedal.

@nomadbyte
Copy link

...Sent: F0 52 00 6E 64 29 F7

You need to send SysEx: 29 , not 64 29.

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

...Sent: F0 52 00 6E 64 29 F7

You need to send SysEx: 29 , not 64 29.

Sorry. That was a typo. If I send "F0 52 00 6E 29 F7 ", I get no reply. If I try to set the patch with "F0 52 00 6E 28 <patch goes here> F7", I get no reply, and the pedal doesn't change state. The patch data I send start with "01 50 06 00", and ends with the 5 7-bit byte CRC.

Sent: F0 52 00 6E 29 F7
<no reply>
Sent: F0 52 00 6E 64 13 F7
Received: F0 52 00 6E 64 12 01 50 06 00 50 54 43 46 34 01 00 00 00 02 00 00 00 02 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 48 6F 00 75 6E 64 20 44 6F 67 00 20 30 00 00 08 41 00 00 00 04 54 58 4A 31 40 0A 00 00 00 03 65 01 5B 55 03 76 03 47 03 52 01 3A 5B 02 70 0E 67 17 70 79 02 35 02 3D 35 30 14 3F 4E 11 63 0F 09 0A 7A 7D 02 4C 03 0D 03 62 03 3E 4E 03 13 03 0D 01 5B 75 03 0B 03 54 03 45 03 6F 13 03 68 02 45 02 37 40 01 42 00 00 54 58 45 00 31 30 00 00 00 45 61 00 72 6C 79 20 35 30 27 00 73 20 72 6F 63 6B 20 00 27 6E 27 20 72 6F 6C 00 6C 20 73 6F 75 6E 64 00 20 77 69 74 68 20 74 00 61 70 65 20 65 63 68 00 6F 2E 00 00 45 44 54 00 42 30 00 00 00 61 00 05 00 50 25 00 00 08 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 03 00 00 48 00 78 10 00 0B 34 40 16 0C 0D 00 01 00 00 00 00 00 00 00 00 00 00 00 50 52 4D 00 32 20 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 0C 02 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 20 0B 4E 41 4D 45 20 00 00 00 00 48 6F 75 6E 00 64 20 44 6F 67 20 20 00 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 00 20 20 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 5E 25 09 0A F7
<changed patch on the pedal to something else>
Sent: F0 52 00 6E 28 01 50 06 00 50 54 43 46 34 01 00 00 00 02 00 00 00 02 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 48 6F 00 75 6E 64 20 44 6F 67 00 20 30 00 00 08 41 00 00 00 04 54 58 4A 31 40 0A 00 00 00 03 65 01 5B 55 03 76 03 47 03 52 01 3A 5B 02 70 0E 67 17 70 79 02 35 02 3D 35 30 14 3F 4E 11 63 0F 09 0A 7A 7D 02 4C 03 0D 03 62 03 3E 4E 03 13 03 0D 01 5B 75 03 0B 03 54 03 45 03 6F 13 03 68 02 45 02 37 40 01 42 00 00 54 58 45 00 31 30 00 00 00 45 61 00 72 6C 79 20 35 30 27 00 73 20 72 6F 63 6B 20 00 27 6E 27 20 72 6F 6C 00 6C 20 73 6F 75 6E 64 00 20 77 69 74 68 20 74 00 61 70 65 20 65 63 68 00 6F 2E 00 00 45 44 54 00 42 30 00 00 00 61 00 05 00 50 25 00 00 08 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 03 00 00 48 00 78 10 00 0B 34 40 16 0C 0D 00 01 00 00 00 00 00 00 00 00 00 00 00 50 52 4D 00 32 20 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 0C 02 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 20 0B 4E 41 4D 45 20 00 00 00 00 48 6F 75 6E 00 64 20 44 6F 67 20 20 00 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 00 20 20 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 5E 25 09 0A F7
<no reply>

@shooking
Copy link

BTW - I would like to link your work on ZoomPedalFun wiki so others can find it.
If you are OK with this please send the link I should add.

I can also open up ZPF wiki if you or others would like to tabulate these new strings for the device - we cab also check if it unlocks other strings on the older pedals.

Best regards
Steve

@nomadbyte
Copy link

nomadbyte commented May 11, 2024

...The patch data I send start with "01 50 06 00", and

@thammer The 7bit packed patch data starts with 04 50 54 43 46; SysEx: 28 is without checksum.

As for SysEx:29 giving you no response, you may want to send Editor Mode On SysEx:50 before it (51 is Off). Though, it's possible that MS-50G+ no longer supports the "older" SysEx.

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

...The patch data I send start with "01 50 06 00", and

@thammer The 7bit packed patch data starts with 04 50 54 43 46; SysEx: 28 is without checksum.

As for SysEx:29 giving you no response, you may want to send Editor Mode On SysEx:50 before it (51 is Off). Though, it's possible that MS-50G+ no longer supports the "older" SysEx.

I tried sending command 50 first, and then a new message with 29. This works fine with my MS-50G, but it does not work with the MS-50G+.

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

...The patch data I send start with "01 50 06 00", and

@thammer The 7bit packed patch data starts with 04 50 54 43 46; SysEx: 28 is without checksum.

That worked! :-D

This is the reply I got from the 64 13 message:

F0 52 00 6E 64 12 01 50 06 04 50 54 43 46 <rest of patch> <CRC> F7

I shaved off 64 12 01 50 06 from the start and added 28 instead.

F0 52 00 6E 28 04 50 54 43 46 <rest of patch> <CRC> F7

And that worked like a charm, both with and without the CRC.

@nomadbyte
Copy link

Great! As I mentioned earlier, SysEx:28 does not need a checksum.

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

Great! As I mentioned earlier, SysEx:28 does not need a checksum.

Noted.

Do we know what those 5 bytes I shaved off before the patch data represent?

64 12 01 50 06

The first two (64 12) represent the data type (patch data). But what about the remaining 3 bytes (01 50 06)?

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

...The current patch was cleared after sending the first sysex command.

@thammer Thanks for describing the test in detail. I wonder if all that "Received" SysEx output was from the first command or you also used the buttons/controls on the pedal after the first SysEx?

...Received: F0 52 00 6E 64 20 01 5F 00 55 00 00 00 00 F7
....
...Received: F0 52 00 6E 64 20 01 5F 1B 20 00 00 00 00 F7

This is the new patch name (char[00]:0x55='U', .., char[1B]:0x20=' ' , "USER-003 ....").

From the output you showed, only three first letters are received ("USE"), then letters are missing, and only blanks from the letter 15. Where did the letters in the middle go?

Yes. This is strange.
I tried sending the same two commands using the MIDI-OX software, just to see if there was a problem with my code, but I got a similar reply in MIDI-OX.

 TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT               
 0002B50F  MOX  2     F0  Buffer:     7 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 47 F7
 00005355   1  --     F0  Buffer:    13 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 26 00 00 09 00 05 00 F7
 00005366   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 00 64 02 78 00 00 00 00 F7
 0000562A   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 00 55 00 00 00 00 F7
 0000562A   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 01 53 00 00 00 00 F7
 0000562A   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 02 45 00 00 00 00 F7
 0000562A   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 03 52 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 15 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 16 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 17 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 18 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 19 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 1A 20 00 00 00 00 F7
 0000562C   1  --     F0  Buffer:    15 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 20 01 5F 1B 20 00 00 00 00 F7
 00005631   1  --     F0  Buffer:   989 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 45 00 00 09 00 05 00 50 06 04 50 54 43 46
 SYSX: 28 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 04 00
 SYSX: 00 00 00 00 00 00 00 55 53 00 45 52 2D 30 31 31 20 00
 SYSX: 20 00 00 00 00 54 58 00 4A 31 00 00 00 00 54 00 58 45
 SYSX: 31 00 00 00 00 00 45 44 54 42 18 00 00 00 00 01 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 50 52 4D 00 32 20 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 40 00 0C 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 07 4E 41
 SYSX: 4D 45 20 00 00 00 00 55 53 45 52 00 2D 30 31 31 20 20
 SYSX: 20 00 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 00
 SYSX: 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 1C 4A 54 30 03 F7
 00005637   1  --     F0  Buffer:     7 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 00 00 F7
 00047F8C  MOX  2     F0  Buffer:     7 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 42 F7
 00021D95   1  --     F0  Buffer:   101 Bytes   System Exclusive      
 SYSX: F0 52 00 6E 64 43 01 01 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 SYSX: 00 00 00 00 00 00 00 00 00 00 F7

@thammer
Copy link
Contributor Author

thammer commented May 11, 2024

BTW - I would like to link your work on ZoomPedalFun wiki so others can find it. If you are OK with this please send the link I should add.

I can also open up ZPF wiki if you or others would like to tabulate these new strings for the device - we cab also check if it unlocks other strings on the older pedals.

Best regards Steve

Hi Steve.
That's kind of you.
You could link to https://github.com/thammer/zoom-explorer/ and https://www.waveformer.net/zoom-explorer/.
If you give me access to the ZPF wiki, I can add some of the commands I know works with the MS-50G+.

@nomadbyte
Copy link

...But what about the remaining 3 bytes (01 50 06)?

In SysEx: 64 12, 50 06 is length of the unpacked data, that is the patch (0x50 + 0x06*128 = 848 bytes)

@nomadbyte
Copy link

@thammer How did you get the SysEx: 64 26 response? You mentioned it on your repo's README. I wonder what was the SysEx request or action?

@thammer
Copy link
Contributor Author

thammer commented May 13, 2024

@thammer How did you get the SysEx: 64 26 response? You mentioned it on your repo's README. I wonder what was the SysEx request or action?

I first send the parameter edit enable command F0 52 00 6E 50 F7. Then, whenever I change to a different patch on the pedal using the arrow up or down buttons, the pedal will send a burst of MIDI messages. This is what happens when I change to patch number 42 using the arrow buttons:

1 Received: F0 52 00 6E 64 26 00 00 04 00 01 00 F7
2 Received: F0 52 00 6E 64 20 00 64 02 29 01 00 00 00 F7
3 Received: B0 00 00
4 Received: B0 20 04
5 Received: C0 01

Message number 1 is F0 52 00 6E 64 26 00 00 <bank> 00 <program> 00 F7.
Message number 2 is tempo (169 BPM), F0 52 00 6E 64 20 00 64 02 <LSB> <MSB> 00 00 00 F7
Message number 4-5 is program and bank change, isn't it? I haven't looked too closely at it.
I'm not sure why the pedal sends message number 3?

@thammer
Copy link
Contributor Author

thammer commented May 13, 2024

@mungewell What are your thoughts on having zoomzt2.py support the MS Plus pedals?
If you're interested, I have a few small local changes that I could clean up and submit a PR for.

@nomadbyte
Copy link

nomadbyte commented May 13, 2024

...I'm not sure why the pedal sends message number 3?

Bank number is 2 7-bit bytes, and consists of MSB (most significant bits, as set with MIDI:B0 00) and LSB (least significant bits, MIDI: B0 20) .

I guess, MS-50G+ now supports the program change with a SysEx: 64 26. Not sure if it actually responds/reacts to this SysEx too.

@mungewell
Copy link
Owner

What are your thoughts on having zoomzt2.py support the MS Plus pedals?

@thammer I am all for it, from comments so far this might be as easy as adding some changes so that the different Midi identification is recognized. Please continue discussions on this topic under #71.

@mungewell
Copy link
Owner

Closing, this should all be working now with latest release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants