Closed shooking closed 1 year ago
Hi shooking,
For my project I only need to read the effect types. I do not set them. All that I found out is in the pdf’s I have provided. The values in my table are just values that made sense in some way. It is the result of reverse engineering. I stopped when I reached my goal, which is reading every effect type successfully.
Kind regards, Catrinus
Op 22 sep. 2021 om 19:52 heeft shooking @.***> het volgende geschreven:
Hallo @sixeight7
Firstly great stuff you have done here and round the internet. I am posting my stuff, based also on Mungewell's zoom-zt, on my site https://github.com/shooking/ZoomPedalFun Currently my ZDL research is under the B1ON/DerivedData/DecodeFirmware
Recently I got a G5 - your G3 work really helped there AND that at least makes it easy to set and FX at a slot. But I didnt see how to inject ZDL, so I got an MS-70 CDR (hence why I am lurking in your code). The midi seems to be "hidden" on this (mostly).
As you know Mungewell pretty much has the newer "n" series nailed. I have extended this to the GCE-3. The older series share some similarity but with restricted sysex.
ZDL Format
So far I am working on extracting as much info from a firmware to get the ZDLs. And from the ZDLs to get info into JSON for use in basic GUIs for my Pi touchscreen.
MS-70CDR has some concept of the FLST_SEQ.ZDT. But unlike the Zoom B1XFour say it doesnt encode the Zoom Type in it. However, I did find it gives us the FX Group and I also discovered how to get the FXID. Ordinarily I would then inject these into a modern Zoom pedal via
probeString="F0 52 00 6E 64 03 00 ${hexSlot} ${OnOff} ${hexFXValueLow} ${hexFXValueHigh} 00 ${hexGroupVal} 00 F7" As you already know the CDR is 61 rather than 6E and uses 31 as its command. Alas I do not seem able to work out the Group extension.
That is
probeString="F0 52 00 65 31 ${hexFX} 01 ${hexFXValueLow} ${hexFXValueHigh} F7" on a B1On sets the 1st two bytes of an FX ID to 2xhexFXValueLow + 1, hexFXValueHigh But no idea how to set the group.
I noticed you have ID concept as
const PROGMEM ZMS70_FX_type_struct ZMS70_FX_types[] = { // Table with the name and colour for every effect of the Zoom MS70-CDR {0, 0, "---", FX_TYPE_OFF}, // 01 {12, 195, "CoronaCho", FX_MODULATE_TYPE}, // 02 {12, 224, "Chorus", FX_MODULATE_TYPE}, // 03 {12, 33, "VintageCE", FX_MODULATE_TYPE}, // 04 {12, 227, "ANA 234Cho", FX_MODULATE_TYPE}, // 05 {12, 3, "CE-Cho5", FX_MODULATE_TYPE}, // 06 {12, 35, "Clone Chorus", FX_MODULATE_TYPE}, // 07 {12, 161, "Super Cho", FX_MODULATE_TYPE}, // 08 {12, 163, "Mirage Chorus", FX_MODULATE_TYPE}, // 09 {12, 65, "Stereo Cho", FX_MODULATE_TYPE}, // 10 {12, 4, "Corona Tri", FX_MODULATE_TYPE}, // 11 {12, 97, "Ensemble", FX_MODULATE_TYPE}, // 12 {12, 131, "Silky Chorus", FX_MODULATE_TYPE}, // 13 ... I will be updating my git soon - I should have read Barsik's notes on the file format more closely. You only get 4090 bytes max in a block and have to account for the 6 format bytes. Anyhow when I extract the FX from the 2.1 firmware and compare with the FLST I make Corona Cho as follows:
F:\Interests\Guitars\MS70-CDR\pants>more CoronaCho.json { "fxname": "CoronaCho", "fxid": "0x1e0", "gid": "0x6", "version": "1.00", "Parameters": [ { "name": "SPEED", "mmax": 100, "mdefault": 50, "pedal": false }, { "name": "DEPTH", "mmax": 100, "mdefault": 50, "pedal": false }, { "name": "FxLVL", "mmax": 100, "mdefault": 65, "pedal": false }, { "name": "TONE", "mmax": 100, "mdefault": 75, "pedal": false }, { "name": "DRY", "mmax": 1, "mdefault": 1, "pedal": true } ] } So I figure the group is 6 and ID 0x1e0. Why|?
<<<00 02 00 00 00 00 00 00 00 00>>>00 06 00 00 00 00 00 00 00 00CRN_CHO.ZDL00 00CHORUS.ZDL00 0000VTGCE.ZDL00 0000 00ANA234CH.ZDL0CE_CHO5.ZDL00 00... The number inside <<>> is the previous folder id. The number after is the current. So for sure these FX are 6.
To confirm IF you start a ZDL with 00 00 00 00 then offset 0x40 onwards gives the type (FXID/GID) combo
$ hexdump -C CoronaCho.ZDL 00000000 00 00 00 00 53 49 5a 45 08 00 00 00 38 00 00 00 |....SIZE....8...| 00000010 82 49 00 00 49 4e 46 4f 30 00 00 00 5a 4f 4f 4d |.I..INFO0...ZOOM| 00000020 20 45 46 46 45 43 54 20 44 4c 4c 20 53 59 53 54 | EFFECT DLL SYST| 00000030 45 4d 20 56 45 52 20 31 2e 30 30 00 06 00 00 00 |EM VER 1.00.....| 00000040 e0 01 00 06 31 2e 30 30 00 00 00 00 7f 45 4c 46 |....1.00.....ELF| Ideally I would love to work out the sysex, like on a B1XFour, to set the FXID/GID but on B1ON and MS-70 CDR.
I was interested in whether your IDs can be injected via sysex or if this is your own numbering.
From what I can see from the firmware direct
0035d246: 0000 3c3c 3c00 0000 0000 0000 0000 003e 3e3e 0001 0000 0000 0000 ..<<<0>>>1 0035d260: 0000 434f 4d50 2e5a 444c 0000 0000 0052 4143 4b43 4f4d 502e 5a44 ..COMP.ZDL.....RACKCOMP.ZD 0035d27a: 4c00 4d5f 434f 4d50 2e5a 444c 0000 004f 5054 434f 4d50 2e5a 444c L.M_COMP.ZDL...OPTCOMP.ZDL 0035d294: 0000 3136 305f 434f 4d50 2e5a 444c 004c 494d 4954 4552 2e5a 444c ..160_COMP.ZDL.LIMITER.ZDL 0035d2ae: 0000 534c 5741 544b 2e5a 444c 0000 005a 4e52 2e5a 444c 0000 0000 ..SLWATK.ZDL...ZNR.ZDL.... 0035d2c8: 0000 4e4f 4953 4547 5445 2e5a 444c 0044 4952 5459 4754 452e 5a44 ..NOISEGTE.ZDL.DIRTYGTE.ZD 0035d2e2: 4c00 4f52 414e 4745 4c4d 2e5a 444c 0047 5241 5943 4f4d 502e 5a44 L.ORANGELM.ZDL.GRAYCOMP.ZD 0035d2fc: 4c00 4455 414c 5f43 4d50 2e5a 444c 003c 3c3c 0001 0000 0000 0000 L.DUAL_CMP.ZDL.<<<1 0035d316: 0000 3e3e 3e00 0200 0000 0000 0000 004c 494e 4553 454c 2e5a 444c >>>2 LINESEL.ZDL 0035d330: 0000 4745 512e 5a44 4c00 0000 0000 0042 5f47 4551 2e5a 444c 0000 ..GEQ.ZDL......B_GEQ.ZDL.. 0035d34a: 0000 5045 512e 5a44 4c00 0000 0000 0042 5f50 4551 2e5a 444c 0000 ..PEQ.ZDL......B_PEQ.ZDL.. 0035d364: 0000 5350 4c49 5454 4552 2e5a 444c 0042 4f54 544f 4d5f 422e 5a44 ..SPLITTER.ZDL.BOTTOM_B.ZD 0035d37e: 4c00 4558 4349 5445 522e 5a44 4c00 0043 4f4d 4246 4c54 522e 5a44 L.EXCITER.ZDL..COMBFLTR.ZD 0035d398: 4c00 4155 544f 5741 482e 5a44 4c00 0042 5f41 5457 4148 2e5a 444c L.AUTOWAH.ZDL..B_ATWAH.ZDL 0035d3b2: 0000 5245 534f 4e53 2e5a 444c 0000 0043 5259 2e5a 444c 0000 0000 ..RESONS.ZDL...CRY.ZDL.... 0035d3cc: 0000 534c 4f57 464c 5452 2e5a 444c 005a 5f54 524f 4e2e 5a44 4c00 ..SLOWFLTR.ZDL.Z_TRON.ZDL. 0035d3e6: 0000 4d5f 4649 4c54 4552 2e5a 444c 0041 5f46 494c 5445 522e 5a44 ..M_FILTER.ZDL.A_FILTER.ZD 0035d400: 4c00 425f 4352 592e 5a44 4c00 0000 0053 5445 502e 5a44 4c00 0000 L.B_CRY.ZDL....STEP.ZDL... 0035d41a: 0000 5345 5146 4c54 522e 5a44 4c00 0052 4e44 4d46 4c54 522e 5a44 ..SEQFLTR.ZDL..RNDMFLTR.ZD 0035d434: 4c00 4643 5943 4c45 2e5a 444c 0000 0053 545f 475f 4745 512e 5a44 L.FCYCLE.ZDL...ST_G_GEQ.ZD 0035d44e: 4c00 5354 5f42 5f47 4551 2e5a 444c 003c 3c3c 0002 0000 0000 0000 L.ST_B_GEQ.ZDL.<<<2 0035d468: 0000 3e3e 3e00 0600 0000 0000 0000 0054 5245 4d4f 4c4f 2e5a 444c ..>>>6 TREMOLO.ZDL 0035d482: 0000 4455 4f54 5245 4d2e 5a44 4c00 0053 4c49 4345 522e 5a44 4c00 ..DUOTREM.ZDL..SLICER.ZDL. 0035d49c: 0000 5048 4153 4552 2e5a 444c 0000 0044 554f 5048 4153 452e 5a44 ..PHASER.ZDL...DUOPHASE.ZD 0035d4b6: 4c00 5752 5050 4841 5345 2e5a 444c 0054 4845 5649 4245 2e5a 444c L.WRPPHASE.ZDL.THEVIBE.ZDL 0035d4d0: 0000 4348 4f52 5553 2e5a 444c 0000 0042 5f43 484f 5255 532e 5a44 ..CHORUS.ZDL...B_CHORUS.ZD 0035d4ea: 4c00 4445 5455 4e45 2e5a 444c 0000 0042 5f44 4554 554e 452e 5a44 L.DETUNE.ZDL...B_DETUNE.ZD 0035d504: 4c00 5654 4743 452e 5a44 4c00 0000 0053 5443 484f 2e5a 444c 0000 L.VTGCE.ZDL....STCHO.ZDL.. 0035d51e: 0000 454e 5345 4d42 4c45 2e5a 444c 0042 5f45 4e53 4d42 4c2e 5a44 ..ENSEMBLE.ZDL.B_ENSMBL.ZD 0035d538: 4c00 5355 5045 5243 484f 2e5a 444c 0056 494e 464c 4e47 522e 5a44 L.SUPERCHO.ZDL.VINFLNGR.ZD 0035d552: 4c00 464c 414e 4745 522e 5a44 4c00 0042 5f46 4c4e 4752 2e5a 444c L.FLANGER.ZDL..B_FLNGR.ZDL 0035d56c: 0000 4459 4e46 4c4e 4752 2e5a 444c 0056 4942 5241 544f 2e5a 444c ..DYNFLNGR.ZDL.VIBRATO.ZDL 0035d586: 0000 4f43 5441 5645 2e5a 444c 0000 0042 5f4f 4354 4156 452e 5a44 ..OCTAVE.ZDL...B_OCTAVE.ZD 0035d5a0: 4c00 5054 4348 5348 4654 2e5a 444c 004d 4e50 4954 2e5a 444c 0000 L.PTCHSHFT.ZDL.MNPIT.ZDL.. 0035d5ba: 0000 425f 5049 5443 482e 5a44 4c00 0048 5053 2e5a 444c 0000 0000 ..B_PITCH.ZDL..HPS.ZDL.... 0035d5d4: 0000 4245 4e44 4348 4f2e 5a44 4c00 004d 4a52 4f4c 4c45 2e5a 444c ..BENDCHO.ZDL..MJROLLE.ZDL 0035d5ee: 0000 5249 4e47 4d4f 442e 5a44 4c00 0043 455f 4348 4f35 2e5a 444c ..RINGMOD.ZDL..CE_CHO5.ZDL 0035d608: 0000 434c 4f4e 4543 484f 2e5a 444c 0053 544f 4e45 5048 412e 5a44 ..CLONECHO.ZDL.STONEPHA.ZD 0035d622: 4c00 4246 5f46 4c47 5f32 2e5a 444c 0053 494c 4b59 4348 4f2e 5a44 L.BF_FLG_2.ZDL.SILKYCHO.ZD 0035d63c: 4c00 4d49 5241 4745 4348 2e5a 444c 0043 524e 5f43 484f 2e5a 444c L.MIRAGECH.ZDL.CRN_CHO.ZDL 0035d656: 0000 414e 4132 3334 4348 2e5a 444c 0043 524e 5f54 5249 2e5a 444c ..ANA234CH.ZDL.CRN_TRI.ZDL 0035d670: 0000 3c3c 3c00 0600 0000 0000 0000 003e 3e3e 0007 0000 0000 0000 ..<<< 6 >>>7 0035d68a: 0000 4249 5443 5255 5348 2e5a 444c 0042 4f4d 4245 522e 5a44 4c00 ..BITCRUSH.ZDL.BOMBER.ZDL. 0035d6a4: 0000 4d4f 4e4f 5359 4e2e 5a44 4c00 005a 5f4f 5247 414e 2e5a 444c ..MONOSYN.ZDL..Z_ORGAN.ZDL 0035d6be: 0000 4155 544f 5041 4e2e 5a44 4c00 0052 5443 4c4f 5345 542e 5a44 ..AUTOPAN.ZDL..RTCLOSET.ZD 0035d6d8: 4c00 3c3c 3c00 0700 0000 0000 0000 003e 3e3e 0008 0000 0000 0000 L.<<< 7>>>8 0035d6f2: 0000 4445 4c41 592e 5a44 4c00 0000 0054 4150 4545 4348 4f2e 5a44 ..DELAY.ZDL....TAPEECHO.ZD 0035d70c: 4c00 4d4f 4444 4c59 2e5a 444c 0000 004d 4f44 444c 5932 2e5a 444c L.MODDLY.ZDL...MODDLY2.ZDL 0035d726: 0000 414e 4c47 444c 592e 5a44 4c00 0052 5652 5344 4c59 2e5a 444c ..ANLGDLY.ZDL..RVRSDLY.ZDL 0035d740: 0000 4d4c 5454 5044 4c59 2e5a 444c 0044 594e 4144 4c59 2e5a 444c ..MLTTPDLY.ZDL.DYNADLY.ZDL 0035d75a: 0000 464c 5452 444c 592e 5a44 4c00 0050 4954 4348 444c 592e 5a44 ..FLTRDLY.ZDL..PITCHDLY.ZD 0035d774: 4c00 5354 4445 4c41 592e 5a44 4c00 0050 4841 5345 444c 592e 5a44 L.STDELAY.ZDL..PHASEDLY.ZD 0035d78e: 4c00 5447 484c 4444 4c59 2e5a 444c 0053 544f 4d50 444c 592e 5a44 L.TGHLDDLY.ZDL.STOMPDLY.ZD 0035d7a8: 4c00 5441 5045 4543 4833 2e5a 444c 0044 5541 4c44 4947 442e 5a44 L.TAPEECH3.ZDL.DUALDIGD.ZD 0035d7c2: 4c00 4352 424e 444c 592e 5a44 4c00 0044 5256 5f45 4348 4f2e 5a44 L.CRBNDLY.ZDL..DRV_ECHO.ZD 0035d7dc: 4c00 534c 4150 424b 442e 5a44 4c00 0053 4d53 5f44 4c59 2e5a 444c L.SLAPBKD.ZDL..SMS_DLY.ZDL 0035d7f6: 0000 4c4f 4649 444c 592e 5a44 4c00 0053 4c57 4154 4b44 4c2e 5a44 ..LOFIDLY.ZDL..SLWATKDL.ZD 0035d810: 4c00 5452 454d 444c 592e 5a44 4c00 0046 4c54 4552 5050 442e 5a44 L.TREMDLY.ZDL..FLTERPPD.ZD 0035d82a: 4c00 4150 414e 444c 592e 5a44 4c00 0049 4345 444c 592e 5a44 4c00 L.APANDLY.ZDL..ICEDLY.ZDL. 0035d844: 0000 3c3c 3c00 0800 0000 0000 0000 003e 3e3e 0009 0000 0000 0000 ..<<<. 8>>>9 0035d85e: 0000 4844 4841 4c4c 2e5a 444c 0000 0048 445f 5245 562e 5a44 4c00 ..HDHALL.ZDL...HD_REV.ZDL. 0035d878: 0000 4841 4c4c 2e5a 444c 0000 0000 0052 4f4f 4d2e 5a44 4c00 0000 ..HALL.ZDL.....ROOM.ZDL... 0035d892: 0000 544c 4452 4f4f 4d2e 5a44 4c00 0053 5052 494e 472e 5a44 4c00 ..TLDROOM.ZDL..SPRING.ZDL. 0035d8ac: 0000 4152 454e 412e 5a44 4c00 0000 0045 4152 4c59 5245 462e 5a44 ..ARENA.ZDL....EARLYREF.ZD 0035d8c6: 4c00 4149 522e 5a44 4c00 0000 0000 0050 4c41 5445 2e5a 444c 0000 L.AIR.ZDL......PLATE.ZDL.. 0035d8e0: 0000 4d4f 4452 4556 2e5a 444c 0000 0053 4c41 5042 4143 4b2e 5a44 ..MODREV.ZDL...SLAPBACK.ZD 0035d8fa: 4c00 5350 5249 4e47 3633 2e5a 444c 0043 4841 4d42 4552 2e5a 444c L.SPRING63.ZDL.CHAMBER.ZDL 0035d914: 0000 4c4f 4649 5f52 4556 2e5a 444c 0043 4855 5243 482e 5a44 4c00 ..LOFI_REV.ZDL.CHURCH.ZDL. 0035d92e: 0000 4341 5645 2e5a 444c 0000 0000 0041 4d42 4945 4e43 452e 5a44 ..CAVE.ZDL.....AMBIENCE.ZD 0035d948: 4c00 4741 5445 5f52 4556 2e5a 444c 0052 5653 5f52 4556 2e5a 444c L.GATE_REV.ZDL.RVS_REV.ZDL 0035d962: 0000 4543 484f 2e5a 444c 0000 0000 0054 5245 4d5f 5245 562e 5a44 ..ECHO.ZDL.....TREM_REV.ZD 0035d97c: 4c00 486f 6c79 464c 5242 2e5a 444c 0044 594e 4152 4556 2e5a 444c L.HolyFLRB.ZDL.DYNAREV.ZDL 0035d996: 0000 5348 494d 4d45 522e 5a44 4c00 0050 4152 5449 434c 452e 5a44 ..SHIMMER.ZDL..PARTICLE.ZD 0035d9b0: 4c00 5350 435f 484f 4c45 2e5a 444c 004d 4e47 4c44 5f53 502e 5a44 L.SPC_HOLE.ZDL.MNGLD_SP.ZD 0035d9ca: 4c00 4455 414c 5f52 4556 2e5a 444c 003c 3c3c 0009 0000 0000 0000 L.DUAL_REV.ZDL.<<<9.. and those groups correlated with B1XFour / ZD2 group IDs plus can be derived directly from the ZDL.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.
Hallo @sixeight7
Firstly great stuff you have done here and round the internet. I am posting my stuff, based also on Mungewell's zoom-zt, on my site https://github.com/shooking/ZoomPedalFun Currently my ZDL research is under the B1ON/DerivedData/DecodeFirmware
Recently I got a G5 - your G3 work really helped there AND that at least makes it easy to set and FX at a slot. But I didnt see how to inject ZDL, so I got an MS-70 CDR (hence why I am lurking in your code). The midi seems to be "hidden" on this (mostly).
As you know Mungewell pretty much has the newer "n" series nailed. I have extended this to the GCE-3. The older series share some similarity but with restricted sysex.
ZDL Format
So far I am working on extracting as much info from a firmware to get the ZDLs. And from the ZDLs to get info into JSON for use in basic GUIs for my Pi touchscreen.
MS-70CDR has some concept of the FLST_SEQ.ZDT. But unlike the Zoom B1XFour say it doesnt encode the Zoom Type in it. However, I did find it gives us the FX Group and I also discovered how to get the FXID. Ordinarily I would then inject these into a modern Zoom pedal via
As you already know the CDR is 61 rather than 6E and uses 31 as its command. Alas I do not seem able to work out the Group extension.
That is
on a B1On sets the 1st two bytes of an FX ID to 2xhexFXValueLow + 1, hexFXValueHigh But no idea how to set the group.
I noticed you have ID concept as
I will be updating my git soon - I should have read Barsik's notes on the file format more closely. You only get 4090 bytes max in a block and have to account for the 6 format bytes. Anyhow when I extract the FX from the 2.1 firmware and compare with the FLST I make Corona Cho as follows:
So I figure the group is 6 and ID 0x1e0. Why|?
The number inside <<>> is the previous folder id.
The number after is the current. So for sure these FX are 6.
To confirm IF you start a ZDL with 00 00 00 00 then offset 0x40 onwards gives the type (FXID/GID) combo
Ideally I would love to work out the sysex, like on a B1XFour, to set the FXID/GID but on B1ON and MS-70 CDR.
I was interested in whether your IDs can be injected via sysex or if this is your own numbering.
From what I can see from the firmware direct
and those groups correlated with B1XFour / ZD2 group IDs plus can be derived directly from the ZDL.