shooking / ZoomPedalFun

A collection of tips and tricks for Zoom B1On, B1XFour and G1XFour pedals.
Creative Commons Zero v1.0 Universal
60 stars 2 forks source link

Remote control of GCE-3/G5n Rhythm/Drum Machine #19

Open mungewell opened 2 years ago

mungewell commented 2 years ago

I tried again with the GCE-3 and failed (again). I noticed some strangeness and want to confirm I'm doing stuff correctly.

Firstly the scripts and the bins do not match here.... https://github.com/shooking/ZoomPedalFun/blob/2752d1248454d3f03fe13c6a549d7d3ff3d6b675/G5n/RhythmOn.sh https://github.com/shooking/ZoomPedalFun/blob/2752d1248454d3f03fe13c6a549d7d3ff3d6b675/G5n/rhythmnOnOff.bin

python.exe" -m hexdump rhythmnOnOff.bin
00000000: F0 52 00 6E 64 03 01 04  00 01 00 00 00 00 F7     .R.nd..........

Seems to be a bug with "0A" vs "04".

Using the SysEx I can grab/decode the "Screen Output" and change the Volume, but not whether effect is on (always off), pattern, or BPM (is always zero).

Additionally I don't see "Rhythm_100.zd2" installed on the pedal; not as file, not in ZT2 and not in ZSF.... although Rhymth DOES work in GuitarLab.

"Rhythm" effect is installed (it's the only effect) in the current patch, slot-0.

shooking commented 2 years ago

Recall the rhythm and looper are not installed in the sense of extractable ZD2 on the pedal. I sent you a PM about it a while back - you confirmed they were dummy - but I checked them into python directory and use them to seed the FXID/GID.

I will check whether I was having a senior moment regarding the rhythm. I could turn it on/off. The looper alas escapes me.

shooking commented 2 years ago

Are you running the rhythm prime first?

EditorOn then prime then rhythmOnOff.

You have to pass in slot where rhythm is located. It is possible to add more than one - but that would be an illogical act!

shooking commented 2 years ago

OK the YouTube video explains how to turn rhythm on/off here:

https://youtu.be/YI09xRolcIY

mungewell commented 2 years ago

I was attempting the do "prime" and then "on", but no joy. I was changing the string to control Slot-0 as the Rhythm effect was the only thing in the patch. I'll see if I get time tonight to document my failure further.

I presume on the video you are using a real G5, not the GCE-3 pretending to be one...

I also see: G5_Rhythm

So the .bin is the reply from the pedal.

shooking commented 2 years ago

Correct, correct and correct. For sure I was using a G5n but I am pretty certain i got it working on a GCE-3 emulating a G5n too. I have to go out tomorrow but will try to make some time at the weekend to check.

My suggestion is if you have GuitarLab and Wireshark to hand you could check if you get the same sysex back and see if you see any more insights. The darned looper almost works.

shooking commented 2 years ago

BTW I am assuming you changed to the patch right? When the GCE-3 is plugged in it defaults to 1st patch. All the state is there - Zoom implies it plays the last patch only - not true.

PS did u see the ELF stuff I found on the ZDL? Maybe you were already extracting it. I still think the bitmap must be in there somewhere but it isn't in the BM format of a ZD2. But it did show me the TI compiler tool chain used and it seems Eclipse based and free from TI.

mungewell commented 2 years ago

This is what I do: rhythm_it.sh.txt

which gives output

$ bash rhythm_it.sh 
Go!
Switch to editor mode
Select preset 199

15 bytes read
00000000  f0 52 00 6e 00 00 f7 b0  00 00 b0 20 31 c0 03     |.R.n....... 1..|
0000000f
Grab screen and decode

1015 bytes read
---
Effect: Rhythm (Off)
PATTERN : 8Beats3
BPM : 0
VOL : 64
---
Effect: Bypass (Off)
 : 
 : 
 : 
Prime Rhythm

0 bytes read
Rhythm On

15 bytes read
00000000  f0 52 00 6e 64 03 01 0a  00 01 00 00 00 00 f7     |.R.nd..........|
0000000f
Rhythm Off

15 bytes read
00000000  f0 52 00 6e 64 03 01 0a  00 01 00 00 00 00 f7     |.R.nd..........|
0000000f
Done.

but no drum machine plays. Audio playing from PC (via USB) does come out of headphones...

shooking commented 2 years ago

sorry man - I rechecked today. Same sequence on a G5n turns rhythm on/off. But not on the GCE-3. Infact I notice it mutes the sound instead.

Rhythn in slot 1 of patch 1 (to make it easier to not have to change pgm)

Editor On
f0 52 00 6e 50 f7

Prime
f0 52 00 6e 64 03 00 0a 01 03 00 00 00 00 f7

Slot 1 rhythm on
f0 52 00 6e 64 03 00 0a 00 01 00 00 00 00 f7
Slot 1 rhythm off
f0 52 00 6e 64 03 00 0a 00 00 00 00 00 00 f7

It does send me a patch via Midi Ox.

F0 52 00 6E 64 03 01 0A 00 00 00 00 00 00 F7 F0 52 00 6E 45 00 00 00 00 00 00 78 05 04 50 54 43 46 34 01 00 00 00 01 00 00 00 09 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 4C 65 00 61 64 20 42 47 4E 20 00 20 10 00 00 1E 10 00 00 00 03 50 00 00 04 01 00 00 00 00 40 00 00 01 00 50 00 00 05 53 00 00 00 02 01 00 00 00 50 00 00 00 08 54 58 4A 31 34 00 00 00 00 58 74 61 73 03 79 42 6C 75 65 02 46 00 4D 6F 64 44 65 6C 61 3B 79 02 70 0E 67 02 41 7D 02 3D 03 02 03 5F 03 7A 13 03 0A 01 5B 03 68 57 03 54 03 45 03 13 03 20 68 01 42 00 00 00 54 00 58 45 31 34 00 00 00 00 54 68 69 73 20 6D 6F 00 64 65 72 6E 20 6C 65 00 61 64 20 73 6F 75 6E 00 64 20 75 73 65 73 20 00 58 74 61 73 79 42 6C 00 75 65 20 61 6E 64 20 00 4D 6F 64 44 65 6C 61 00 79 2E 00 45 44 54 42 40 58 00 00 00 21 00 00 42 7C 01 00 00 00 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 21 00 00 06 07 00 00 00 0A 3C 01 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 21 00 00 48 30 0C 50 40 0D 78 40 00 60 6C 20 08 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 01 00 00 02 00 60 10 01 07 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 20 00 0C 00 0A 00 20 00 0C 0C 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 27 00 00 04 07 70 00 40 06 50 00 06 64 60 40 54 60 00 06 06 06 06 00 60 60 40 01 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 21 00 00 50 6D 28 40 00 03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 50 52 4D 00 0C 00 00 00 00 00 00 02 00 00 00 40 00 40 50 00 19 00 50 50 52 4D 0C 00 00 00 00 00 00 00 00 02 00 00 00 00 68 48 10 00 00 00 00 00 00 00 00 00 00 00 50 50 52 4D 0C 00 00 00 00 00 00 00 00 0C 00 00 00 00 56 50 19 00 00 50 50 52 4D 0C 00 00 00 00 00 00 00 00 00 04 00 00 00 68 48 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 12 51 73 07 F7 

I will try to test this under GuitarLab - but I havent found a smart way to turn on Editor mode there.

shooking commented 2 years ago

Infact on the GCE-3 emulating a G5n the latter parameters change the guitar signal volume - how odd. Maybe there is some blend for rhythm/guitar - or maybe the GCE-3 is just different to the G5n. For sure the rhythm sounds a bit more distorted on PC using their Guitar Lab

shooking commented 2 years ago

Hola @mungewell

Great success!! I was being a ****ing idiot as normal. So I put a rhythm 1st in the chain with a ZNR ... and in the GCE-3 even in their GUI if I stopped playing the sound would go!!

Anyhow with a rhythm in slot one of patch one

f0 52 00 6e 50 f7

f0 52 00 6e 64 03 00 0a 01 00 00 00 00 00 f7 - PRIME
f0 52 00 6e 64 03 00 0a 03 01 00 00 00 00 f7 - ON/OFF toggle

GCE3_being_a_G5n.zip

I think there is some "mixed" thing going on with volumes - more as I find it.

works

and Wireshark latest version seems to be giving out the fruit

I attached the trace, a "cleanup" program but this is on my MS Dos machine - your ports might vary with wireshark.

I hope you get this working too - I will check out slot movement again later.

Sorry for being a dolt -but works for me - comes out of the analog earphones. Not trialled down the digital.

shooking commented 2 years ago

so I didnt realise the toggle nature of the sysex. It is related to the slot. But say I send this with rhythm in slot 1 and playing:

f0 52 00 6e 64 03 00 0a 05 01 00 00 00 00 f7

then the rhythm gets quieter - not silent .. most odd. Super distorted to normal ...

mungewell commented 2 years ago

On volume; param 05 is the 4th dial which, allowing for the 'dummy' 2nd parameter, is labelled as 'VOL' on the Screen output. Maybe slot 0x0A is always controlling rhythm, regardless of which slot the patch puts it in. https://github.com/mungewell/zoom-zt2#effects-settings

I'll grab the GCE-3 to take with me to test over the weekend...

mungewell commented 2 years ago

Using the new commands I can control the Drum machine

f0 52 00 6e 64 03 00 0a 01 00 00 00 00 00 f7 - PRIME f0 52 00 6e 64 03 00 0a 03 01 00 00 00 00 f7 - ON/OFF toggle

rhythm_it.sh.txt

However it is very quiet, both in headphones and recording via USB. I have the FX parameter at 100, will need to check patch volume and device volume

Effect: Rhythm (On)
PATTERN : 8Beats3
Dummy : 0
BPM : 0
VOL : 100

Also to note that the GCE-3 does not have any controls within alsamixer.

mungewell commented 2 years ago

Patch volume appears to be set to '100', whilst 'Dial 4' is '80'...

$ python3 zoomzt2.py -p 199 rhythm.zptc
$ python3 decode_preset.py -s rhythm.zptc | head
Name: Rhythm199 
Patch Volume: 100
Effect 1: 0x1E000010
   Enabled: True
   Param 1: 54
   Param 2: 0
   Param 3: 0
   Param 4: 80

Reading the screen, gives different value....

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

1015 bytes read
$ python3 decode_screens.py temp.bin | head
---
Effect: Rhythm (Off)
PATTERN : 8Beats3
BPM : 0
VOL : 100
---

And, I don't remember how to get to device volume (without being able to see 'settings/volume' on the actual device).

mungewell commented 2 years ago

And pattern '54' is supposed to be 'Swing1'

$ python3 decode_patterns.py G1_FOUR_v2.00/unzipped/.rsrc/1041/BIN/129 -T 407304 -D 457078 -p 54 
Pattern 54 : Swing1 (0x0007372E)
Bars 2 (4/4)
---
Kik2.raw     :#           #           #           #           #           #           #           #           :
SnrAmb.raw   :                                            o                       o       o       o           :
Snr2.raw     :                                            X                       X       X       X           :
             :                                                                                                :
HHF.raw      :            #                       #                       #                       #           :
Ride.raw     :#           #       $   #           #       $   #           #       $   #           #       $   :
             :                                                                                                :
KikAmb.raw   :O           O           O           O           O           O           O           O           :
Click.raw    :

Which suggests a bug in decode_preset.py. :-(

shooking commented 2 years ago

Confused - but got a lot further. So you dont need to be in EditorOn mode to start looper/rhythm. Infact, I am fairly certain I am just sending FSn on to the device! I think the prime is not necessary - or at least I can do with out.

FS commands

f0 52 6e 64 03 00 0n 00 OnOff 00 00 00 00 f7

Where n is the FS - 1.

But the pattern isnt consistent. It irks me if I get a result but cannot verify if it is right.

mungewell commented 2 years ago

Bugger, my bug appears to be with selecting/reading patches.... rythm199 rythm200

shooking commented 2 years ago

Hmmh. So maybe this level is an additional to volume? The 0a I seemed to send? I noticed I could get the sound in the cans to go from quiet to distorted.

I think we are dangerously close to reverse engineering the 2 slot loopers and rhythm. The single slot ... well I have to get the Sniffer on those next week. Gotta practice for a gig tomorrow and as ever "can we change the key?". Sure. Why not. I only spent the week learning the original.

Did u see on the other thread I don't think the prime is totally necessary. Infact I am 100% sure we are sending some variant of FS1 - 4 on / off or on on on. What I don't know with amidi is how to emulate long press.

mungewell commented 2 years ago

AFAIK volume is controlled at 3 different places:

The 'device' on the G1Four is under the settings page, and I vaguely remember some midi setting to get to it (like the auto-save I note on my front-page).

My 'senior moment' (as you put it) was looking at a patch different to the one I was actually selecting, that one had the volume turned all the way down. Especially dumb as I actually have a way of reading the current patch file...

$ python3 zoomzt2.py -c current.bin
$ python3 decode_preset.py -s current.bin | head
Name: Rhythm199 
Patch Volume: 100
Effect 1: 0x1E000010
   Enabled: True
   Param 1: 54
   Param 2: 0
   Param 3: 0
   Param 4: 80
   Param 5: 0
   Param 6: 0

I'll also note another issue, in that the pattern numbering is off. My script uses magic numbers I discovered by looking at the FW... it seems that there are a couple of unused patterns in there. PLUS, the value reported by decode_preset seems to start from 0.

Manuals start from 1: page 56 - https://zoomcorp.com/media/documents/E_G5n-V2.0.pdf page 46 - https://zoomcorp.com/media/documents/E_G1FOUR.pdf

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

1015 bytes read

$ python3 decode_screens.py temp.bin | head
---
Effect: Rhythm (Off)
PATTERN : Breaks1
BPM : 0
VOL : 80
---
mungewell commented 2 years ago

From my midi_notes.txt

Set Master Volume
$ amidi -p hw:1,0,0 -S 'f0 52 00 6e 64 03 00 0a 00 20 00 00 00 00 f7'
                                                   ^^
                                                   ++---- Volume
shooking commented 2 years ago

So you get decent volume now you turned the correct patch up? Cool. What I notice Zoom does is to keep using the ascii screen to print out a few parameters at a time. And I guess we could (or you are?) use this to get the pattern name? I was too lazy to implement that in the GUI yet.

Been playing with the MS-70 CDR - it is amazing how far Zoom midi has come. Each device almost exposes enough internals for us to hack it ...almost :-(

Excellent work on the GCE-3 btw - glad to have you aboard. I dont think I will be gigging with a GCE - my bloody Guinea pig wants it back!

mungewell commented 2 years ago

The decode_screen script does this already, and the way that my scripts work is to decompose the binary blob into a Python dictionary. I used the '--dump' to debug and print this... at its literally just print(confg). Once elements are understood, it make sense bring that code into the main code.

The GCE-3 is basically just a toy, Not looked inside, but might be a cheap board to hack on... I'd be really interested in getting a stereo input somehow.

This bug can probably be closed, do you want to write up somewhere?

shooking commented 2 years ago

If I understand the issue correctly you can now start/stop rhythm on a GCE-3 emulating a G5n, set the controls and view the output. Did I miss anything? Sure I will have a go at adding it to the wiki.