mungewell / zoom-zt2

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

Physical G5n behaves differently to GCE-3 G5n #35

Closed shooking closed 2 years ago

shooking commented 2 years ago

So on this video I used your injection technology to insert A1XFOUR ZD2 into G5n emulated by GCE-3. Visually it seemed to work https://youtu.be/cU8DB8JmttI

I got myself a real G5n on version 3.00 - I haven't reinstalled it yet. I am making a new video- this time adding FX into a real G5n.

It seems I can add many of the B1XFOUR bass FX. I can add some A1XFOUR FX but I get the unknown FX in the display for the acoustic models.

I am wondering if anyhow has managed to insert A1XFOUR FX in a real G5n.

Will revisit the topic next week. I am totally happy to get the bass FX in there. Not too worried about A1XFOUR - there again it seems to work on the emulator. I will check the FXIDs as I recall the 28 v 32 but issue.

shooking commented 2 years ago

OK .. so funny story. Reboot the G5n and then you CAN see the FX!!

Excellent work.

Closing - if you get a change @mungewell could you update your main page with a CLI add FX? Is there an easier way to batch add FX - for example can the group/id etc be derived direct from the ZD2 like the GUI does?

ideally I would love to

for file in `cat addme.txt`
do
   python3 zoom-zt2.py ... -I $file ...
done
mungewell commented 2 years ago

@shooking There is already an 'install' which pushes a binary FX file to the pedal, however it does not alter the FLST_SEQ file. You could manually drive the two operations from the CLI. https://github.com/mungewell/zoom-zt2/blob/master/zoomzt2.py#L644

I guess what you're asking for is an all-in-one operation, to upload and enable the effect. Let me think if there's a way to do that which fits with the existing control schema.

shooking commented 2 years ago

So I was hoping an interface similar to the GUI. You see on my github I have pulled out all the ZD2s using your program to gra FLST then iterate around to pull the ZD2.

From one example with -I I could see -add and other options - essentially it seems the CLI requires gid/ID etc .

All things that are in the ZD2. I thought this is what the GUI is doing. I mean not even sure what would happen if one took a GID 5 (amp) and tried to insert it into Dynamics say.

I was so pleased when the physical G5n just needed a reboot to recognise the injected AG_MODELs. I now have the G5n "as is" with all the B1XFour FX I want. I will try to write an iterator to convert, via sysex, state of my B1XFour patches to replicate on G5n.

Simply to say I really appreciate your awesome work.

shooking commented 2 years ago

OK so I got it now

Seems we DO have to take into account full 32bit nature of the FX. Recall we had a conversation about 28 v 32 bit? So if we take 12 String as an example

12String using 32bit values returns

pi@raspberrypi:~/Software/ZoomG5n $ more ../ZoomPedalFun/python/mypedal/MDL_12ST.ZD2.json 
{
      "FX": {
            "name": "12Strings",
            "description": "Body characteristics of a Guild 12-string guitar, w
hich features the unique wide sound of doubled strings.",
            "version": "1.00",
            "fxid": 400,
            "gid": 162,
            "group": 20,
            "groupname": "AG MODEL",
            "numParams": 4,
            "numSlots": 1,
            "filename": "MDL_12ST.ZD2.BMP"
      },
      "Parameters": [
            {
                  "name": "Gain",
                  "explanation": "Adjusts the gain.",
                  "blackback": false,
                  "pedal": false,
                  "mmax": 48,
                  "mdefault": 24
            },
            {
                  "name": "Bass",
                  "explanation": "Adjusts volume of low frequencies.",
                  "blackback": false,
                  "pedal": false,
                  "mmax": 100,
                  "mdefault": 50
            },
            {
                  "name": "MID",
                  "explanation": "Adjusts volume of middle frequencies.",
                  "blackback": false,
                  "pedal": false,
                  "mmax": 100,
                  "mdefault": 50
            },
            {
                  "name": "Treble",
                  "explanation": "Adjusts volume of high frequencies.",
                  "blackback": false,
                  "pedal": false,
                  "mmax": 100,
                  "mdefault": 50
            }
      ]
}

using only 28 bits we get 34 and this is not right.

400, 162 seems to be the correct integers for MDL 12 String. Updating my code - if you get a change to consider this in the zoom-zt2 that would be cool - as would a default patch size and switch to set it for say G5n/G3n - different to the B1XFour.

probeString="F0 52 00 6E 64 03 00 ${hexSlot} ${OnOff} ${hexFXValueLow} ${hexFXV
alueHigh} 00 ${hexGPValueLow} ${hexGPValueHigh} F7"

So it seems these later FX use higher hits too for GID.

Would be great if you could check this and consider for including in zoom-zt2/gui. Also would be cool if the patch size could be overridden from command line for G5n/GCE-3

shooking commented 2 years ago

And discovered by checking my C++ that: Rhythm is GID 240 Looper is GID 248 A1X4 MDLs are 162 these all new a top bit set.

In your decode you have unknown for 1 bit just before the 28 bits for ID. Could this unknown bit indeed be the necessary top bit for later FX?

shooking commented 2 years ago

Closing as we know more bits were required for the ID.