mungewell / zoom-zt2

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

Effect installed but not available for use - Recti Org on B1XFour #59

Open mungewell opened 1 year ago

mungewell commented 1 year ago

Following on from a report on Reddit, I have confirmed that the " Recti ORG" effect (RCTORG1U.ZD2) can be installed to the pedal. but is not available for use... https://www.reddit.com/r/zoommultistomp/comments/11cp6jf/missing_effect_no_found/

I don't have a B1XFour, but confirmed with GCE-3 configured as such. Which unfortunately makes it a little harder to control via the command line.

A patch with (just) this effect installed: B1XFour_Recti.ztpc.gz

RECTI RECTI2

mungewell commented 1 year ago
$ python3 decode_effect.py -c RCTORG1U.ZD2.code RCTORG1U.ZD2
$ /usr/bin/arm-linux-gnueabi-objdump -T RCTORG1U.ZD2.code

RCTORG1U.ZD2.code:     file format elf32-little

DYNAMIC SYMBOL TABLE:
00006540 l    DF .text  00000000 .hidden __c6xabi_divd
00006ae0 l    DF .text  00000000 .hidden __c6xabi_divf
80000bd8 l    DO .const 00000000 .hidden $C$T0
00006de4 l    DF .text  00000000 .hidden TBL_TO_VAL_double
00006e84 l    DF .text  00000000 .hidden TBL_TO_VAL
80000c20 l    DO .const 00000005 .hidden _picFsw_9
80000c18 l    DO .const 00000005 .hidden _picFsw_8
80000c10 l    DO .const 00000005 .hidden _picFsw_7
80000c08 l    DO .const 00000005 .hidden _picFsw_6
80000c00 l    DO .const 00000005 .hidden _picFsw_5
80000be0 l    DO .const 00000006 .hidden _picFsw_4
80000bf8 l    DO .const 00000005 .hidden _picFsw_3
80000bf0 l    DO .const 00000005 .hidden _picFsw_2
80000be8 l    DO .const 00000005 .hidden _picFsw_1
80000ba8 l    DO .const 00000014 .hidden RECTORNG_OVS_COE_an
80000b90 l    DO .const 00000018 .hidden RECTORNG_OVS_COE_bn
80000288 l    DO .const 00000000 .hidden $C$T161
80000000 l    DO .const 00000288 .hidden _Fx_AMP_RECTORNG_Coe
800008a8 l    DO .const 00000038 .hidden RECTORNG_Mode_clip_3_tbl
80000ab8 l    DO .const 00000028 .hidden RECTORNG_Mode_POST_HPF2_tbl
80000630 l    DO .const 00000078 .hidden RECTORNG_Mode_Adjust_Post_tbl
80000b00 l    DO .const 00000018 .hidden RECTORNG_Mode_DistPost_0_tbl
80000b78 l    DO .const 00000018 .hidden RECTORNG_Mode_OVS_TONE_1_0_tbl
80000a90 l    DO .const 00000028 .hidden RECTORNG_Mode_AddFilter_tbl
80000b60 l    DO .const 00000018 .hidden RECTORNG_Mode_OVS_TONE_0_4_tbl
80000b48 l    DO .const 00000018 .hidden RECTORNG_Mode_OVS_TONE_0_3_tbl
80000b30 l    DO .const 00000018 .hidden RECTORNG_Mode_OVS_TONE_0_2_tbl
80000b18 l    DO .const 00000018 .hidden RECTORNG_Mode_DistPre_0_tbl
80000bd0 l    DO .const 00000008 .hidden RECTORNG_Mode_clip_3_gain_tbl
80000a60 l    DO .const 0000002c .hidden RECTORNG__MODERN__PRSNC_Gain_tbl
80000a30 l    DO .const 0000002c .hidden RECTORNG_Presence_Gain_tbl
80000760 l    DO .const 00000058 .hidden RECTORNG_master_tbl
80000708 l    DO .const 00000058 .hidden RECTORNG_bass_tbl
800007b8 l    DO .const 00000058 .hidden RECTORNG_middle_tbl
80000810 l    DO .const 00000058 .hidden RECTORNG_treble_tbl
800008e0 l    DO .const 0000002c .hidden RECTORNG_Gain_DWN_ATT_tbl
80000a00 l    DO .const 0000002c .hidden RECTORNG_Gain_clip_1_gain_tbl
800009d0 l    DO .const 0000002c .hidden RECTORNG_Gain_OVS_TONE_0_1_Gain_tbl
800009a0 l    DO .const 0000002c .hidden RECTORNG_Gain_OVS_TONE_0_1_Freq_tbl
80000970 l    DO .const 0000002c .hidden RECTORNG_Gain_OVS_TONE_0_0_Trim_tbl
80000940 l    DO .const 0000002c .hidden RECTORNG_Gain_OVS_TONE_0_0_Gain_tbl
80000910 l    DO .const 0000002c .hidden RECTORNG_Gain_OVS_TONE_0_0_Freq_tbl
80000ae0 l    DO .const 0000001b .hidden _PrmPic_P_SOLO
80000868 l    DO .const 0000003a .hidden _PrmPic_Treble
80000c28 l    DO .fardata   0000006c .hidden _FswPrmPic
800006a8 l    DO .const 0000005c .hidden picTotalDisplay_RECTORNG
00006f20 l    DF .text  00000000 .hidden GetString_offset1
00005e30 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_ToneStack_3_edit
00005ab4 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_Gain_edit
00005fd8 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_Presence_edit
00006f36 l    DF .text  00000000 .hidden GetString_Mode
00006110 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_mode_edit
00000000 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG
00006480 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_init
000059e0 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_onf
00005928 l    DF .text  00000000 .hidden Fx_AMP_RECTORNG_output_edit
80000500 l    DO .const 00000130 .hidden effectTypeImageInfo
80000298 l    DO .const 00000268 .hidden RECTORNG
80000bc0 l    DO .const 0000000e .hidden disp_prm_Mode
00000000 l    D  .bss   00000000 .hidden __TI_STATIC_BASE
ffffffff l    D  *ABS*  00000000 .hidden __TI_pprof_out_hndl
ffffffff l    D  *ABS*  00000000 .hidden __TI_prof_data_size
ffffffff l    D  *ABS*  00000000 .hidden __TI_prof_data_start
00006f94 g    DF .text  00000000 .protected Dll_RECTORNG

There doesn't appear to be a "NEEDED" library dependency (as in #37). So what else could prevent the effect from functioning?

$ /usr/bin/arm-linux-gnueabi-readelf -a RCTORG1U.ZD2.code > RCTORG1U.ZD2.code.txt
readelf: Warning: Virtual address 0xbbd8 not located in any PT_LOAD segment.

RCTORG1U.ZD2.code.txt

nomadbyte commented 1 year ago

I'd ask the user if the installed effect can be used on-device, that is not from the GL? The official editors filter the lists by model, which, well, makes sense.

I thought it was the general understanding that the side-loaded effects attach user to the device's UI for patch management, which is not too bad, IMO. A little price to pay for not acquiring the additional devices. Otherwise, ZOOM's offering is very much comprehensive.

mungewell commented 1 year ago

I believe that they user is seeing a failure on his pedal. Using my GCE-3 and some 'script-foo' it does appear that it is NOT working on my pedal...

$ amidi -p hw:1,0,0 -S 'b0 20 04 c0 07'

$ python3 zoomzt2.py -c temp.ztpc

$ python3 decode_preset.py -s temp.ztpc
Name: Recti     
Patch Volume: 100
Effect 1: 0x04000071
   Enabled: True
   Param 1: 0
   Param 2: 52
   Param 3: 65
   Param 4: 67
   Param 5: 62
   Param 6: 70
   Param 7: 62
   Param 8: 2
Effect 2: 0x00000000
[snip]

$ amidi -p hw:1,0,0 -S 'F0 52 00 6e 64 02 00 06 00 F7' -r temp.bin -t 2
1183 bytes read

$ python3 decode_screens.py temp.bin
---
Effect:  (Off) <--- note effect NOT listed.
 : 
 : 
 : 
 : 
---
Effect: Bypass (Off)
 : 
 : 
 : 
 : 
---
[snip]
nomadbyte commented 1 year ago

Does it work on your GCE-3 in G1/G1X FOUR or A1/A1X FOUR mode? Not in GL, but using the pedal's physical UI.

RCTORG1U.ZD2 v1.0 is defined for H8 and R20, apart from G1/G1X FOUR. That means, it's reasonable to expect it to work on B1/B1X FOUR as well, as the H8 set mostly is a combination of G/B/A1 FOUR lists.

mungewell commented 1 year ago

GCE-3 pretending to be G1XFour works...

$ python3 zoomzt2.py -P 48 58_Recti_G1XFour.ztpc 
$ amidi -p hw:2,0,0 -S 'b0 20 04 c0 07'
$ python3 zoomzt2.py -c test.ztpc
$ python3 decode_preset.py -s test.ztpc| head
Name: Recti     
Patch Volume: 100
Effect 1: 0x04000071
   Enabled: True
   Param 1: 0
   Param 2: 52
   Param 3: 65
   Param 4: 67
   Param 5: 62
   Param 6: 70
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 02 00 06 00 F7' -r temp.bin -t 2

1183 bytes read
$ python3 decode_screens.py temp.bin | head  
---
Effect: Recti ORG (On)
Mode : VNTG
Bass : 52
MID : 65
Treble : 67
PRSNC : 62
Gain : 70
VOL : 62
---

As noted on Reddit post, there are actually 3 versions of this effect

$ grep -i rect zoom_fx_AllZDL7/master.txt 
0x04000070 : Recti ORG (v1.20, 29.12%), 0x59547f3ad6185a3313e2216d101762bd
0x04000071 : Recti ORG (v1.00, 29.12%), 0xe8186d7b69875e5b518b7cf5d3f16037
0x04000072 : Recti ORG (v1.00, 25.72%), 0xfb1d36bb494e08bab5f2e786cdf940e8
mungewell commented 1 year ago

GCE-3 as A1XFour does not work...

$ python3 decode_preset.py -t 512 -p 760 -o recti_a1XFour.ztpc 58_Recti_G1XFour.ztpc
$ python3 zoomzt2.py -P 48 recti_a1XFour.ztpc    
$ amidi -p hw:2,0,0 -S 'b0 20 04 c0 07'
$ python3 zoomzt2.py -c test.ztpc
$ python3 decode_preset.py -s test.ztpc| head
Name: Recti     
Patch Volume: 100
Effect 1: 0x04000071
   Enabled: True
   Param 1: 0
   Param 2: 52
   Param 3: 65
   Param 4: 67
   Param 5: 62
   Param 6: 70
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 02 00 06 00 F7' -r temp.bin -t 2

1183 bytes read
$ python3 decode_screens.py temp.bin | head
---
Effect:  (Off)
 : 
 : 
 : 
 : 
---
Effect: Bypass (Off)
 : 
 : 
mungewell commented 1 year ago

I also checked GUARDZDL....

$ strings GUARDZDL.ZT2 | grep ORG
RCT_ORG.ZD2
ORG_120.ZD2

$ python3 zoomzt2.py -s -R FLST_SEQ.ZT2 | grep ORG
    RCTORG1U.ZD2 (ver= 1.00 ), group= 4 , id= 0x4000071 , installed= 1
mungewell commented 1 year ago

Maybe one of these only exists in the G1(X)Four FW...

$ grep FUNC RCTORG1U.ZD2.code.all | grep -v LOCAL
   227: 00006d60     0 FUNC    GLOBAL HIDDEN     4 TBL_TO_VAL_int
   228: 00006de4     0 FUNC    GLOBAL HIDDEN     4 TBL_TO_VAL_double
   229: 00006e84     0 FUNC    GLOBAL HIDDEN     4 TBL_TO_VAL
   231: 00006f94     0 FUNC    GLOBAL PROTECTED    4 Dll_RECTORNG
   233: 00006f90     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_dummy_edi
   235: 00005ab4     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_Gain_edit
   239: 00005928     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_output_ed
   242: 00006480     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_init
   243: 000034e0     0 FUNC    GLOBAL HIDDEN     4 RECTORNG_EQ_Calc_OVS
   246: 00006450     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_Level_edi
   250: 00005a34     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_Adjust_Pr
   255: 00005fd8     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_Presence_
   256: 00005e30     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_ToneStack
   261: 000059e0     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_onf
   263: 00006110     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG_mode_edit
   271: 00000000     0 FUNC    GLOBAL HIDDEN     4 Fx_AMP_RECTORNG
   272: 00007040     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_call_stub
   273: 00007040     0 FUNC    GLOBAL HIDDEN     4 __call_stub
   274: 00006540     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_divd
   278: 00006ae0     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_divf
   279: 00006fc0     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_frcmpyd_div
   280: 00007000     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_llshru
   283: 000070a0     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_push_rts
   284: 00007080     0 FUNC    GLOBAL HIDDEN     4 __pop_rts
   285: 00007080     0 FUNC    GLOBAL HIDDEN     4 __c6xabi_pop_rts
   286: 000070a0     0 FUNC    GLOBAL HIDDEN     4 __push_rts
    64: 00006f94     0 FUNC    GLOBAL PROTECTED    4 Dll_RECTORNG
nomadbyte commented 1 year ago

Maybe it's about G_OUT_EQ.BDL, though I thought B1(X) FOUR has both this one and B_OUT_EQ.BDL?

nomadbyte commented 1 year ago

How about the MACH301U.ZD2, it's another AMP from G1 FOUR?

mungewell commented 1 year ago

So here's a summary of the official AMP effects for the "Four" pedals.

$ grep -e "^0x04" master.txt | cut -d "," -f 3 | sort > picklist.txt

$grep -f picklist.txt G1\ FOUR/unzipped/list_sorted.txt 
0x04000011 : MS 800 (v1.00, 31.99%), 0x82664cd7b11d72f9565cfeae097d4f15, ./G1 FOUR/unzipped/MS800_1U.ZD2
0x04000019 : MS 1959 (v1.00, 31.50%), 0x597f7d0f4ca000402b52a3c1fcc65806, ./G1 FOUR/unzipped/MS19591U.ZD2
0x0400001b : MS 45os (v1.00, 31.50%), 0xe06bba97b1dbadfa0642a38b5e0be457, ./G1 FOUR/unzipped/MS45OS1U.ZD2
0x04000021 : FD TWNR (v1.00, 31.00%), 0x0cc17aa01611c2d3e82ffa5f434c5720, ./G1 FOUR/unzipped/FD_TWR1U.ZD2
0x04000028 : FD B-MAN (v1.10, 29.94%), 0x9e4ffc80c113ada4a630201035f70bd6, ./G1 FOUR/unzipped/FDBMAN1U.ZD2
0x0400002c : FD DLXR (v1.10, 31.00%), 0x5e32e24c9d540969bac4cbeef199e50a, ./G1 FOUR/unzipped/FDDLXR1U.ZD2
0x0400002d : FD MASTER (v1.00, 29.12%), 0xbffa0b16ed0a22a94ac62974e66aa434, ./G1 FOUR/unzipped/FDMSTR1U.ZD2
0x04000031 : UK 30A (v1.00, 37.57%), 0x069fd6d8b9f7b1a4ccdde64933d449b3, ./G1 FOUR/unzipped/UK30A_1U.ZD2
0x04000041 : BG MK1 (v1.00, 35.76%), 0x0b1638adca69f9a14a4d8a9e8e6452a0, ./G1 FOUR/unzipped/BGMK1_1U.ZD2
0x04000043 : BG MK3 (v1.00, 35.93%), 0x357721f986e94d8fda9675529efed73e, ./G1 FOUR/unzipped/BGMK3_1U.ZD2
0x04000051 : XtasyBlue (v1.00, 35.27%), 0xe0a478ef77b59a5c7d759ab5b15fe424, ./G1 FOUR/unzipped/XTSBLU1U.ZD2
0x04000061 : HW 100 (v1.00, 28.46%), 0xea83815ec36d43a21f1a7a7130fc9b6b, ./G1 FOUR/unzipped/HW100_1U.ZD2
0x04000071 : Recti ORG (v1.00, 29.12%), 0xe8186d7b69875e5b518b7cf5d3f16037, ./G1 FOUR/unzipped/RCTORG1U.ZD2
0x04000081 : ORG120 (v1.00, 33.63%), 0x001f065772a9b3972c2a5501dd698318, ./G1 FOUR/unzipped/ORG1201U.ZD2
0x04000091 : DZ DRV (v1.00, 27.72%), 0x73f4fe475cdc06a83bfe41820555bb26, ./G1 FOUR/unzipped/DZ_DRV1U.ZD2
0x040000a1 : MATCH30 (v1.00, 34.86%), 0x1557365fe45e0153cdf59e4144474bdc, ./G1 FOUR/unzipped/MACH301U.ZD2

$ grep -f picklist.txt B1\ FOUR/unzipped/list_sorted.txt 
0x04800011 : AMPG SVT (v1.00, 21.98%), 0x8931f927d548f686f34ca7a902fa5a63, ./B1 FOUR/unzipped/SVT_1U.ZD2
0x04800021 : BMAN100 (v1.00, 32.40%), 0x7d84e4a01bd5d41f7d0f311580b29683, ./B1 FOUR/unzipped/BMN1001U.ZD2
0x04800031 : SMR400 (v1.00, 24.61%), 0x4565ebfbb26153941b05acede989cdab, ./B1 FOUR/unzipped/SWR4001U.ZD2
0x04800041 : AG 750 (v1.00, 23.30%), 0xe11fe6459541fec423b4313807bddd31, ./B1 FOUR/unzipped/AG750_1U.ZD2
0x04800051 : TE400SMX (v1.00, 18.78%), 0x23f1ce8bd02b9f8b39e592364375dd1a, ./B1 FOUR/unzipped/TE400_1U.ZD2
0x04800061 : AC 370 (v1.00, 26.74%), 0xa3f2212e60c0c8a64ce323da52269038, ./B1 FOUR/unzipped/AC370_1U.ZD2
0x04800070 : Mini MkB (v1.20, 11.56%), 0x014c1b4fcfd04a5eb139e10b1a25eb7a, ./B1 FOUR/unzipped/MINIMARK.ZD2
0x04800081 : EBH360 (v1.00, 21.82%), 0x226b7e9e60fbd604ce9e7072ee7af13c, ./B1 FOUR/unzipped/EBH3601U.ZD2
0x04800091 : FlipTop (v1.00, 17.55%), 0x12049c2024d17e66c91247e40d247e3e, ./B1 FOUR/unzipped/B15N_1U.ZD2

$ grep -f picklist.txt A1\ FOUR/unzipped/list_sorted.txt 
0x04000028 : FD B-MAN (v1.10, 29.94%), 0x9e4ffc80c113ada4a630201035f70bd6, ./A1 FOUR/unzipped/FDBMAN1U.ZD2
0x0400002c : FD DLXR (v1.10, 31.00%), 0x5e32e24c9d540969bac4cbeef199e50a, ./A1 FOUR/unzipped/FDDLXR1U.ZD2
nomadbyte commented 1 year ago

Did you try to see if MACH301U.ZD2 works ok on your GCE-3 in B1 FOUR mode?

P.S. the aggregated effects list also denotes if a given effect belongs to B/A sets.

mungewell commented 1 year ago

Why do it manually, when you can script instead.. ;-) do_it.sh.txt

$ bash do_it.sh > g1xfour.txt

g1xfour.txt

$ grep "Effect:" g1xfour.txt | uniq
Effect: MS 800 (Off)
Effect:  (Off)
Effect: FD TWNR (Off)
Effect: FD B-MAN (Off)
Effect: FD DLXR (Off)
Effect: FD MASTER (Off)
Effect: UK 30A (Off)
Effect: BG MK1 (Off)
Effect: BG MK3 (Off)
Effect: XtasyBlue (Off)
Effect: HW 100 (Off)
Effect: Recti ORG (Off)
Effect: ORG120 (Off)
Effect: DZ DRV (Off)
Effect: MATCH30 (Off)
Effect: AMPG SVT (Off)
Effect: AMPG SVT (On)
Effect: BMAN100 (Off)
Effect: SMR400 (Off)
Effect: AG 750 (Off)
Effect: TE400SMX (Off)
Effect: TE400SMX (On)
Effect: AC 370 (Off)
Effect: Mini MkB (On)
Effect: EBH360 (Off)
Effect: EBH360 (On)
Effect: FlipTop (On)

gce3_as_a1four.txt

$ grep "Effect:" gce3_as_a1four.txt | uniq
Effect:  (Off)
Effect: FD B-MAN (Off)
Effect: FD DLXR (Off)
Effect:  (Off)
mungewell commented 1 year ago

gce-3_as_b1xfour.txt

$ grep "Effect:" gce-3_as_b1xfour.txt | uniq
Effect:  (Off)
Effect: AMPG SVT (Off)
Effect: AMPG SVT (On)
Effect: BMAN100 (Off)
Effect: SMR400 (Off)
Effect: SMR400 (On)
Effect: AG 750 (Off)
Effect: AG 750 (On)
Effect: TE400SMX (Off)
Effect: TE400SMX (On)
Effect: AC 370 (Off)
Effect: AC 370 (On)
Effect: Mini MkB (On)
Effect: EBH360 (Off)
Effect: EBH360 (On)
Effect: FlipTop (Off)
Effect: FlipTop (On)
mungewell commented 1 year ago

So pretty much, these seem to match the official allocation.

For the G1XFour (real hardware) there are a couple of AMPs which don't work, they don't work on either GCE-3 setting either...

Effect 1: 0x04000019
Effect:  (Off)
Effect 1: 0x0400001B
Effect:  (Off)
0x04000019 : MS 1959 (v1.00, 31.50%), 0x597f7d0f4ca000402b52a3c1fcc65806, ./G1 FOUR/unzipped/MS19591U.ZD2
0x0400001b : MS 45os (v1.00, 31.50%), 0xe06bba97b1dbadfa0642a38b5e0be457, ./G1 FOUR/unzipped/MS45OS1U.ZD2

Looks like I missed copying these to the test directory.

nomadbyte commented 1 year ago

I'm not sure what is being done here. Could you roughly explain the objective and the findings?

mungewell commented 1 year ago

Just scripted up what I did manually before... 1). Upload all the AMP effects, and dump 'FLTS_SEQ.ZT2' to confirm that they have actually installed. 2). Download current patch, and then create multiple copies with all effects forced to particular value. 3). For each of the new patches; upload to location '47', then select and read back 'current' patch to confirm. Then download the 'screen' via midi and decode.

The txt files show the full action, just summarized to confirm effects which DO display via the 'screen'.

The next question, I guess, is to see if there is a 'marker' in the ZD2 which might explain.

We can also transplant the code from one effect into another. This might help tell us whether the 'issue' is within the actual code, or the other parts of the ZD2.

nomadbyte commented 1 year ago

If I understood it correctly, some of G1 FOUR native effects did not appear to work on your GCE-3 set up as G1X FOUR. If that's the case, then this is rather unexpected. Maybe there is some issue in the way the GCE-3 set up?

... For the G1XFour (real hardware) there are a couple of AMPs which don't work, they don't work on either GCE-3 setting either...

FYI: On real G1 FOUR hw, the MS19591U.ZD2 works no problem, it's actually installed by default. Same with MS45OS1U.ZD2, which needs to be installed manually, but works too. Both of these are also defined in FLST_SEQ.ZT2 for G1X FOUR, so it's reasonable to expect they should work ok on it too. The md5 checksums match, just checked. Maybe something gets messed up in the scripts. Just for the test, you could try enabling these effects via the official editor (GL or ToneLib) with either "empty" (just with BYPASS.ZD2 entry section) or default FLST_SEQ.ZT2.

mungewell commented 1 year ago

I didn't test 'gce-3_as_g1four', I used my real G1XFour.

The mistake with MS19591U.ZD2 and MS45OS1U.ZD2 was mine, I failed to copy them to the local drive (and therefore they were not uploaded to pedal).

Fixed results: g1xfour.txt

nomadbyte commented 1 year ago

Ok. So all native AMP effects should work ok on the real G1X FOUR, but do they work ok on GCE-3 in G1X FOUR mode?

Also, it looks like in your new G1X FOUR test results the FD_TWR1U.ZD2 (0x04000021) is not being recognized either. This one is also installed by default, so should work ok. So should be all the effects "native" to the model.

As for B-AMPs, the BMN1001U.ZD2 works ok on G1 FOUR, just as SVT_1U.ZD2. Yet your test succeeds only for the SVT_1U.ZD2.

nomadbyte commented 1 year ago

... do_it.sh.txt

Looks like there's a off-by-one problem in the script. I understand that you're sending the patch file into the patch number 48. Then "refresh" it to reload into current, but select it as a different patch number (57):

amidi -p hw:2,0,0 -S 'b0 20 04 c0 07'  # this selects patch 57 (bank_msb:00, bank_lsb:04, progid:07 @bankid:5)

Instead, the command should be:

amidi -p hw:2,0,0 -S 'b0 20 03 c0 08'  ## patch 48
mungewell commented 1 year ago

Not sure if I should say "well spotted" :-)... This is actually a bug/deficiency with the ZoomZT2 code, in that different pedals have different arrangements of groups for patches. I didn't progress figuring it out.

The said, we/the script confirms that the correct patch is set by download the current ('-c') patch - showing that the change has be set.

For the 'screens' the On/Off state of the patch is unpredictable - this maybe that the parameters are left at invalid settings.

a13 commented 1 year ago

Sorry for bothering you, guys, but is there any progress on that?

I'm thinking about buying a B1x4 pedal as a temporary dual guitar/bass solution (already have g1four, but it's not available at the moment) and thinking if it will fit my needs.

nomadbyte commented 1 year ago

@a13 Слава Україні!

FWIW, B1/B1X FOUR and G1/G1X FOUR already share quite a few effect modules by default. I'm not sure if you've tried it already yourself on your G1 FOUR, it has no trouble running B1 FOUR "specific" modules (at least as of fw v2.00). So it's reasonable to expect that B1 FOUR should be able to run G1 FOUR "specific" modules just as well. In fact, so far there has not been much feedback about it being otherwise. I guess, @shooking did some tests using these scripts with B1X FOUR, maybe he could chime in on that.

Mind that B1 FOUR on-board EQ uses somewhat different frequencies, more optimized for Bass, than G1 FOUR. Technically, this could be compensated by using a separate EQ module, though it will take up a slot.

Also, you need to realize that any side-loaded effect modules will not be visible in the GuitarLab, because it filters the modules by model. This pretty much ties the patch management to the device's controls or this and similar third-party scripts. It may be possible to use GL/ToneLib but only with "native" modules.

shooking commented 1 year ago

HI @a13 @nomadbyte - I made a video on how to change the pedals as follows https://www.youtube.com/watch?v=lmNNdbnqz8c&t=6s

I am sure @mungewell can do this all from the CLI - but I wanted to show folks how they can plan what they want from each pedal. Interestingly enough someone else was attempting to solder a pot onto the PCB - I pointed them at this thread.

I gave my G1XFour away to a youth at the church - he was interested in learning guitar and I only got the pedal to play hacking. I did noticed the BDLs but I didnt realise they made that much difference to the EQ. I guess it is like a firmware version of changing the caps in a Cry Baby :-)

For what it's worth, I use the G5n as my main pedal. Loaded all the bass FX I need and I havent noticed any lack of bass via front of house speakers - there again I got me a Hartke 410XL for £30 and driving that via a Fender Champion 110 generates a ton of bass!

If I wanted to control the pedal but from a G1Four or B1Four then I would instead add an ADC to the Pi4, read in pedal values, modify my GUI to allow choice of parameter(s) and some path (maybe I want linear up on one and exp down on another?), and send the parameter changes via midi.

I also managed to get my PCB working for Zoom remote control - basically breakout the 3.3v lines from Zoom into a 25 pin D Sub, DuPont those into a header - PCB then allows monetary guitar footswitches turn all the front panel modes (looper, rhythm, mem, settings, FX1 - 5, Tuner (sends FS1 and 2), and P1 - P4 up/down plus sends Bluetooth to a page turner (song down, page back, page forward, song up).

Controlled via an ESP32 - I can also accept signals in to control the pedal (not written yet but functionality is there). Likely I will either install a 5 pin midi and decode in the loop - send NRPNs to do the business or use midi over Bluetooth (except I want the page turner - so only if both can be supported).

Video coming out tomorrow - https://youtu.be/9oaGytZxghs

Not sure if I should say "well spotted" :-)... This is actually a bug/deficiency with the ZoomZT2 code, in that different pedals have different arrangements of groups for patches. I didn't progress figuring it out.

The said, we/the script confirms that the correct patch is set by download the current ('-c') patch - showing that the change has be set.

For the 'screens' the On/Off state of the patch is unpredictable - this maybe that the parameters are left at invalid settings.

Hi @mungewell - not sure if you mean "07" and "44" command - to determine the num patches/banks and patch size - we spoke about this a while back - I would LOVE for zoomzt2 to do what i hacked into your code

https://github.com/shooking/ZoomPedalFun/wiki/De-re-B1XFour

https://github.com/shooking/ZoomPedalFun/blob/88ab53dad0b936ca02d42a2f33d036155a03f3d1/python/zoomzt2_shooking.py#L410

I call this the Lewis (Hamilton) - 0x44 data = [0x52, 0x00, 0x6e, 0x44]

mungewell commented 1 year ago

The more complicated answer involves admitting that we didn't figure out the issue with 'RectiOrg' (and other Amp effects). I will note that the MS series have a separate DLL which are used with the Guitar amps/effects, and perhaps somehow the same exists on the newer pedals.

On the issue of frequency bands/ranges - I had a recent discussion somewhere on modifying effects, and confirmed that the frequencies are set in the ZD2 code section as a list of float32. I'll see if I can find a link to post. This raises the possibility of converting 'guitar' effects to work better with basses.

[edit - add link] https://www.reddit.com/r/zoommultistomp/comments/1193amb/comment/jal2bu1/?utm_source=reddit&utm_medium=web2x&context=3

@shooking I do remember the thing about reading patch size, and I hacked in some support for this... but the logic may not be the best.

https://github.com/mungewell/zoom-zt2/commit/8647dc4be78856e628e47269cb2a8e40201eb123

shooking commented 1 year ago

Excellent work. I haven't used my Pi this year - looks like I need to dust it off. Why is 127 the multiple and not 128 BTW? My thinking was this is 7 bit midi so 128 rather than 256. What did I miss?

nomadbyte commented 1 year ago

...I will note that the MS series have a separate DLL which are used with the Guitar amps/effects, and perhaps somehow the same exists on the newer pedals.

MS series is ZDL-based (multistomps like MS-70CDR), so it's not directly compatible with ZD2 systems as G1/B1 FOUR, G5n etc.

If you're referring to the additional DRV/BASS ZDL modules on MS-50G/60B resp., those are separate ZDL files:

CMN_DRV.ZDL (zdlfxid:0x0f000000, size: 22933)
CMN_BASS.ZDL (zdlfxid:0x0f000010, size: 14571)
mungewell commented 1 year ago

@nomadbyte Yep, those files... also mentioned here: https://github.com/Barsik-Barbosik/Zoom-Firmware-Editor#getting-started

Obviously we can't add a ZDL, but perhaps there is something that's linked or expected to be present that we have not accounted for.

@shooking probably a bug...

nomadbyte commented 1 year ago

Rereading the original post, the user reported:

"...the Recti Org effect doesn't actually work or show up on the B1X FOUR pedal in practise. I figured i had something to do with the fact that when installing through zt2 it appears on the effects tab but not on the files. It is meant to show up in both places..."

and your followup:

"...Then back to Windows for GL to confirm "Missing Effect Not Found" in the patch editor."

I get to think that GL issue is a red herring here. The side-loaded "non-native" effects should not be visible in GL or ToneLib, these editors filter the effects list by model. Thus, installed or not, the Recti Org effect is not defined as "native" to B1X FOUR, so it will not be visible/available from GL editor and will be reported "MISSING", if referenced in a patch.

For this reason, using GL to diagnose this issue is not a valid approach, unless you want to test your install script correctness in respect to "native" target (i.e. side-load Recti Org onto G1X FOUR real or emulated on GCE-3, or similarly, the Bass-"native" SVT_1U.ZD2 onto B1X FOUR).

Instead of the GL approach, I would suggest to try to side-load another "non-native" AMP onto B1X FOUR (real or emulated). For example, try MACH301U.ZD2, it's "native" to G1 FOUR, just as Recti Org RCTORG1U.ZD2 is. Then see if the side-loaded effect is available for use on the pedal screen, not via GL. No need to push a patch, it's possible to just select the installed effect using the buttons.

shooking commented 1 year ago

Ah GL is Zoom GuitarLab 😀 The more recent versions were more likely to show the FX regardless of model. That is from 7.x onwards.

But ToneLib doesn't. It could but like you hinted a lot of the data is hardcoded (the MS70CDR/B1On with external FX proves this).

That's why I added a GUI with a pedal probe 1st.

https://github.com/shooking/ZoomPedalFun/tree/main/python

B1xfour.py - it should work on any modern pedal. But I do need to use zoomzt2 as a module and need a couple of extra functions add to that.

The only things I couldn't handle. 1 - looper/rhythm doesn't seem to have a valid zt2. I discovered a dummy variant and hacked that into my probe 2 - for sure the ID needs to be considered 32 bit; then the A1XFour FX gets matches correctly. 3 - I should cache JSON and compare/add as new FX are discovered as a speedup.

I use my GUI with a 22 inch touchscreen on a Pi4. I don't yet feel confident to gig with it. But it sure helps to explore the FX.

Some of my videos demo where GL/TL cannot read FX but our combined code can. But like I said - sometimes Zoom fix rendering bugs. Which is very magnanimous of them!

nomadbyte commented 1 year ago

Looking for answers in the code, I stumbled upon these lines:

https://github.com/mungewell/zoom-zt2/blob/af23a0c4ed9fc5700436ff751670da395e0e9e6b/zoomzt2.py#L781-L783

It looks like there should be a not in the condition, such that if an effect's file does not exist on the pedal, then it needs to be uploaded.

This may explain that a new effect is reported as having been installed, yet its file is missing. Thus loading a patch that references such effect will show it as "MISSING", indeed the effect's ZD2 module file is simply not there.

mungewell commented 1 year ago

@nomadbyte

Well spotted, there was actually a bug with file_check() which always returned true... so upload was actually done. Fixed in both locations.

mungewell commented 1 year ago

Note this does NOT fix this specific issue, these are the only AMPs which appear to work on the GCE-3 operating as B1FourX. I am reading the SysEx of the 'screens' (not using GL) to assess. 20230328_gce3_as_b1fourx.txt

Effect: AC 370 (Off)
Effect: AG 750 (Off)
Effect: AMPG SVT (Off)
Effect: BMAN100 (Off)
Effect: EBH360 (Off)
Effect: FlipTop (Off)
Effect: Mini MkB (Off)
Effect: SMR400 (Off)
Effect: TE400SMX (Off)
nomadbyte commented 1 year ago

The AMP listed above are all Bass-AMPs, those defined for B1 FOUR (9 in total).

Could you try the opposite test and see if Bass-AMPs work on the emulated G1X FOUR? For example, install SVT_1U.ZD2, the Bass AMPG SVT into GCE-3 (in G1X FOUR mode).

shooking commented 1 year ago

@nomadbyte - you saw my video where I turned a G1XFour onto a B1XFour right? Didn't I do this all? It worked. I don't have the non X. Maybe it know you can't have a pedal so stops anything with a pedal parameter?

mungewell commented 1 year ago

@nomadbyte It appears that there are a number of effects which do NOT show when GCE-3 pretends to be G1FourX. Looking above it appears that the real hardware performs 'better'. 20230329_gce3_as_g1fourx.txt

$ grep "Effect:" 20230329_gce3_as_g1fourx.txt
Effect: MS 800 (Off)
Effect: MS 800 (On)
Effect: MS 1959 (Off)
Effect: MS 1959 (On)
Effect: MS 45os (Off)
Effect: MS 45os (On)
Effect: FD TWNR (Off)
Effect: FD TWNR (On)
Effect: FD B-MAN (Off)
Effect: FD B-MAN (On)
Effect: FD DLXR (Off)
Effect: FD DLXR (On)
Effect: FD MASTER (Off)
Effect: FD MASTER (On)
Effect: UK 30A (Off)
Effect: UK 30A (On)
Effect: BG MK1 (Off)
Effect: BG MK1 (On)
Effect: BG MK3 (Off)
Effect: BG MK3 (On)
Effect: XtasyBlue (Off)
Effect: XtasyBlue (On)
Effect: HW 100 (Off)
Effect: HW 100 (On)
Effect: Recti ORG (Off)
Effect: Recti ORG (On)
Effect: ORG120 (Off)
Effect: ORG120 (On)
Effect: DZ DRV (Off)
Effect: DZ DRV (On)
Effect: MATCH30 (Off)
Effect: MATCH30 (On)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
Effect:  (Off)
nomadbyte commented 1 year ago

Thanks. In total, there should be 16 G-AMPs -- those are ok. The ones that failed are the B-AMPs (9 in total).

Well, that's what I thought -- the GCE-3 fw may be the reason for these limitations, either Bass or Guitar-wise emulation.

This leaves the test on the actual B1 FOUR hardware still open. Just as in @shooking test, the opposite -- Bass-AMPs on G1/G1X FOUR hardware -- appears to be functional.

Perhaps, someone with the actual B1 FOUR hw may want to try to install even a single G-AMP (e.g. RCTORG1U.ZD2:'Recti ORG' or MACH301U.ZD2:'MATCH30') and confirm if the effect is visible for selection directly on the B1/B1X FOUR pedal screens.

shooking commented 1 year ago

I can try this. I gave the G1XFour away but I have the B1XFour on my desk - finalising my physical remote control device.

I gig with my G5n. I loaded a range of bass FX on it but I didn't add any amps of cabs mostly because I pipe Zoom out into their mixer.

I got me a real 4 x 10 Hartke recently. It pushes air :-). So I don't really use those models.

mungewell commented 1 year ago

Is my problem (not the OP's) simply down to the GCE-3?

I note that this keeps effect files in it's drive when you switch between emulations, and that the 'MODEL.ZSP' file seems to have a list of 'ZD2' files... perhaps a list of allowable ones. MODEL.zip

shooking commented 1 year ago

I Reflashed my B1XFour - back to normal ...

This RCTORG1U.ZD2 is pure evil! I used my code to render my B1XFour - all good. Then I used zoomzt2-gui.py to load the RCTORG1U.ZD2 onto my physical B1XFour.

Trying to render using my code fails. OK - remove the FX with @mungewell's code - start again. The darned FX wont go - and it doesnt render on the physical pedal. I notice it is in the guardzdl.zt2

I firmware reset the device. It is still there! Any CLI to remove it would be appreciated so I can try again.

nomadbyte commented 1 year ago

...The darned FX wont go - and it doesnt render on the physical pedal. I notice it is in the guardzdl.zt2

@shooking Thanks for helping to repro the issue.

Do you mean you're seeing RCTORG1U.ZD2 in the GUARDZDL.ZT2 on your B1X FOUR?

Normally, GUARDZDL.ZT2 references RCT_ORG.ZD2 which is the G5n variant, it's non-compatible with B1/G1 FOUR. It has 8 params, without pager.

The 1U module variants like RCTORG1U.ZD2 are the ones compatible with single-screen units like G1 FOUR, they have the pager for the params. I understand that you were installing the 1U variant onto your B1X FOUR in this test, right?

Can you also try to install MACH301U.ZD2 into your B1X FOUR hardware (that's another G-AMP, 1U variant)?

shooking commented 1 year ago

Sure. I did this at work today. I will film it so we can be sure I am not making mistakes. I tried the 1U from my G1XFour archive. I understand that the guard doesn't mention the 1U but it seems to install FX according to Mungwell's GUI, but no files. This then stopped my program working. I will debug it to see what gives. I was a bit worried until the firmware install just worked.

nomadbyte commented 1 year ago

@shooking

Did you have a chance to test installing the MACH301U.ZD2 effect module onto your B1X FOUR hardware? I wonder if this G-AMP does appear on the pedal or if it has the same problem as the RCTORG1U.ZD2, as you mentioned earlier.

shooking commented 1 year ago

I can make time hopefully tomorrow - I am away at weekend so ping me again if I forget. A lot on at the moment.

Roseweave commented 1 year ago

I've been using the Ampeg SVT model on my G1X Four and am about to load on a lot more bass effects - would just like to thank Mungewell and everyone else for their great work on this.

3eby4b commented 4 months ago

Is this figured out yet? currently troubleshooting my pedal doing a similar thing, FX from B1X four won't show up on my hardware G1X four

nomadbyte commented 4 months ago

...FX from B1X four won't show up on my hardware G1X four

@3eby4b Yours is a different issue. What's been discussed here is the opposite: some G1 FOUR AMP effects (ZD2 files) not being operational on B1/B1X FOUR firmware. G1/G1X FOUR firmware should be able to load B1/B1X FOUR-specific effects.

You may want to take a look at this zoom-zt2 tool and review how to use it properly in order to load additional effects into your G1X FOUR. Or post a separate issue, in case you get errors or problems with the tool.