Open maximka1812 opened 1 year ago
You mean the G2 FOUR, not the older G2. Do you have one and willing to explore?
Assume that OP means the G2-Four, so updated the title.
As I understand Zoom has only released app for iPhone/Android, and does not support these pedals via PC. I saw note that iPhone needs a special cable. I can't image that that Zoom would use older format with the fact that these pedals implement IR modeling.
Personally I considered getting one (B2-Four though), but haven't found the right excuse to spend the $250... anyone want to sponsor? LOL
I have B1 Four only.
My understanding is that G1 Four acoustic modelling is using some short IRs already. At least this is that Zooms tells.
Can be cool to find arrays containing IR data and write simple utility to replace them with user IRs, it don't require any code changes.
@maximka1812 The decode_bdl.py
script I pushed at the weekend can also be (ab)used to replace any symbol in the ZD2/BDL code segment.... so if you wanted to (say) replace an IR, in theory that would be possible. Although I recommend it's used with care....
At present it is set up to decode/encode TBLs as float32, but trivial to change to some other format.
The '--list' option will dump a list of all the symbols that exist, if one is called 'COOL_IR_TBL' that would be a suspicious target :-)
$ python3 decode_bdl.py --help
usage: decode_bdl [-h] [-o OUTPUT] [-l] FILE
positional arguments:
FILE File to process
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
output adjusted BDL to FILE
-l, --list list available symbols
I have B2 four.
I'm interested in this project because I only have Android smartphones that doesn't support zoom pedals except G1/G1X.
@Licarde: Do you have a PC (preferably with Linux on it) or such to try out MIDI connectivity? At least to see if the pedal presents itself as a MIDI port.
@Licarde Hi, I don't know how familiar you are with Midi so please excuse if I'm too simple...
Basically the Pedals are controlled via midi packets, normally a PC would send a series of SysEx packets to query/control the device settings. Midi is normally 7-bit data, SysEx is one of the exceptions where the packets starts with 0xF0 and ends 0xF7. The first 3 bytes of the packet are an 'address', the reset are vendor specific. We see that the 4th byte seems to be a 'command' with following bytes being data
We have figured out that all the pedals (we've tested so far) respond on the same 'address' and thus can be queried/controlled.
For example @nomadbyte had me run the following commands on my GCE-3, whilst it was pretended to be a number of pedals.... https://github.com/shooking/ZoomPedalFun/issues/7#issuecomment-1853222327
ie. 'cmd_44'
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 44 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
30 bytes read
00000000 f0 52 00 6e 43 16 01 78 05 16 01 03 00 02 00 00 |.R.nC..x........|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 f7 |..............|
0000001e
I don't know off the top of my head how to send SysEx midi from an Android phone, but it must be possible.... I guess the first thing is to work that out, and then have you try the same on your B2-Four pedal to see if it responds the same.
I'm a very beginner at both MIDI and Python. Please excuse.
I have Windows only. But if I'm in college, I can use Ubuntu in my lab.
$ amidi -l
Dir Device Name
IO hw:2,0,0 ZOOM B2 FOUR MIDI 1
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 55 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
96 bytes read
00000000 f0 52 00 6e 54 20 00 00 00 00 00 00 00 00 10 00 |.R.nT ..........|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 f7 |................|
00000060
Cool!
Can you dump these too? All these are info commands, no changes.
amidi -p hw:2,0,0 -S 'F0 52 00 6e 44 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S 'F0 52 00 6e 48 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 0a 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 11 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 18 00 00 64 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
Here you are.
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 44 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
30 bytes read
00000000 f0 52 00 6e 43 2c 02 40 06 2c 02 0a 00 02 00 00 |.R.nC,.@.,......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 f7 |..............|
0000001e
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 48 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
22 bytes read
00000000 f0 52 00 6e 47 02 00 00 00 00 00 00 04 00 00 00 |.R.nG...........|
00000010 00 00 00 00 06 f7
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 0a 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
62 bytes read
00000000 f0 52 00 6e 64 09 30 01 01 00 0a 00 00 01 01 32 |.R.nd.0........2|
00000010 0f 00 07 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 32 32 32 3c 01 00 00 00 00 00 00 00 |....222<........|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 01 f7 |..............|
0000003e
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 11 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
12 bytes read
00000000 f0 52 00 6e 64 10 0e 02 04 01 01 f7 |.R.nd.......|
0000000c
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 18 00 00 64 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
313 bytes read
00000000 f0 52 00 6e 64 19 01 00 00 1d 00 0a 00 00 00 00 |.R.nd...........|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000130 00 00 00 00 00 00 00 00 f7 |.........|
00000139
Thanks, lots of new details.
Here's a bash script to list the files on the pedal's internal flash:
#!/bin/bash
sig_int() {
exit 2
}
port=hw:2,0,0 # your B2 FOUR port
sysex_find_first="f0 52 00 6e 60 25 00 00 2a 2e 2a 00 f7" # *.*
sysex_find_next="f0 52 00 6e 60 26 00 00 2a 2e 2a 00 f7"
sysex_find_end="f0 52 00 6e 60 27 f7"
sysex=$sysex_find_first
while
amidi -p $port -S "$sysex" -t 1 -r temp.bin > /dev/null || exit 1
trap sig_int INT TERM EXIT
[ -s temp.bin ] && ( tail -c +16 temp.bin | head -c 12 | cut -d '' -f1 > temp1.bin )
[ -s temp1.bin ] && cat temp1.bin
sysex=$sysex_find_next
[ -s temp1.bin ]
do true ; done
amidi -p $port -S "$sysex_find_end" -t 1 -r temp.bin > /dev/null
Copy the script's text into a file, then make it executable chmod +x thefile
, then run ./thefile
It lists the file names, one per line.
$ ./b2four_list
DUMMY.WAV
INFBKUP.BIN
IR000.ZIR
IR001.ZIR
IR_INFO.BIN
B_OUT_EQ.BDL
LP-MONO.ZIC
LP-ST.ZIC
OUT_VP.ZIC
RHYTHM.ZIC
SOLID1.BDL
MINIMARK.ZD2
SOLID2.BDL
MNTONEAU.ZD2
SOLID3.BDL
SOLID1.ZIC
TUBE1.BDL
SOLID2.ZIC
TUBE2.BDL
SOLID3.ZIC
TUBE3.BDL
TUBE1.ZIC
Clap.raw
ClapAmb.raw
Click.raw
HHC.raw
HHCAmb.raw
HHF.raw
HHO.raw
HHOAmb.raw
Kik1.raw
Kik2.raw
KikAmb.raw
Ride.raw
Rim.raw
RimAmb.raw
Snr1.raw
Snr2.raw
Snr3.raw
Snr4.raw
SnrAmb.raw
Tamb.raw
TomF.raw
TomFAmb.raw
TomH.raw
TomL.raw
160_COMP.ZD2
160_COMP.ZIC
AC370_1U.ZD2
AC370_1U.ZIC
AC370_1U.ZIR
AG750_1U.ZD2
AG750_1U.ZIC
AG750_1U.ZIR
AIR5G.ZD2
AIR5G.ZIC
ANDLY_M.ZD2
ANDLY_M.ZIC
A_FILTER.ZD2
A_FILTER.ZIC
B15N_1U.ZD2
B15N_1U.ZIC
B15N_1U.ZIR
BASSWAH.ZD2
BASSWAH.ZIC
BASS_BB.ZD2
BASS_BB.ZIC
BASS_PHA.ZD2
BASS_PHA.ZIC
BA_CRY.ZD2
BA_CRY.ZIC
BA_DRV1U.ZD2
BA_DRV1U.ZIC
BA_FZSML.ZD2
BA_FZSML.ZIC
BA_GEQ1U.ZD2
BA_GEQ1U.ZIC
BA_METAL.ZD2
BA_METAL.ZIC
BA_OCTFZ.ZD2
BA_OCTFZ.ZIC
BA_PEQ.ZD2
BA_PEQ.ZIC
BA_PRE.ZD2
BA_PRE.ZIC
BA_TSDRV.ZD2
BA_TSDRV.ZIC
BBB_OD.ZD2
BBB_OD.ZIC
BLACKOPT.ZD2
BLACKOPT.ZIC
BMN1001U.ZD2
BMN1001U.ZIC
BMN1001U.ZIR
BOMBER.ZD2
BOMBER.ZIC
BPLSHFT.ZD2
BPLSHFT.ZIC
BRGTHALL.ZD2
BRGTHALL.ZIC
BRGTROOM.ZD2
BRGTROOM.ZIC
BSTDSYN.ZD2
BSTDSYN.ZIC
BSYNTLK.ZD2
BSYNTLK.ZIC
B_ATWAH.ZD2
B_ATWAH.ZIC
B_DETUNE.ZD2
B_DETUNE.ZIC
B_MOCT.ZD2
B_MOCT.ZIC
B_OCTAVE.ZD2
B_OCTAVE.ZIC
B_OD.ZD2
B_OD.ZIC
B_PDLMNP.ZD2
B_PDLMNP.ZIC
B_PDLPIT.ZD2
B_PDLPIT.ZIC
B_PITCH.ZD2
B_PITCH.ZIC
B_ST_CHO.ZD2
B_ST_CHO.ZIC
B_VFLNG.ZD2
B_VFLNG.ZIC
CLONECHO.ZD2
CLONECHO.ZIC
CRNTRI5G.ZD2
CRNTRI5G.ZIC
DARK_OD.ZD2
DARK_OD.ZIC
DCOMP.ZD2
DCOMP.ZIC
DEFRET.ZD2
DEFRET.ZIC
DELAY_M.ZD2
DELAY_M.ZIC
DI5.ZD2
DI5.ZIC
DIPLUS1U.ZD2
DIPLUS1U.ZIC
DI_OFF.ZIC
DJNTPR.ZIC
DRKPRE1U.ZD2
DRKPRE1U.ZIC
DUADLY_M.ZD2
DUADLY_M.ZIC
DUAL_CMP.ZD2
DUAL_CMP.ZIC
DJNTPR.ZD2
EBH3601U.ZIC
EBH3601U.ZIR
EGFLTR1U.ZD2
EGFLTR1U.ZIC
ENV_FLTR.ZD2
ENV_FLTR.ZIC
EPSTMP5G.ZD2
EPSTMP5G.ZIC
EXCITER.ZD2
EXCITER.ZIC
GLAMCOMP.ZD2
GLAMCOMP.ZIC
HALL5G.ZD2
HALL5G.ZIC
HDHALL5G.ZD2
HDHALL5G.ZIC
HIGH_EQ.ZD2
HIGH_EQ.ZIC
HLDDLY1U.ZD2
HLDDLY1U.ZIC
HLDDLY88.ZIC
EBH3601U.ZD2
HPS.ZIC
KKFLNG1U.ZD2
KKFLNG1U.ZIC
LINPRE.ZD2
LINPRE.ZIC
LMT1176.ZD2
LMT1176.ZIC
LOOPROLL.ZD2
LOOPROLL.ZIC
LOW_EQ.ZD2
LOW_EQ.ZIC
MB_COMP.ZD2
MB_COMP.ZIC
TUBE2.ZIC
MINIMARK.ZIC
MINIMARK.ZIR
TUBE3.ZIC
MNTONEAU.ZIC
MNTONEAU.ZIR
MODDLY_M.ZD2
MODDLY_M.ZIC
NYC_MUFF.ZD2
NYC_MUFF.ZIC
OPTCOMP.ZD2
OPTCOMP.ZIC
PDLVOL5G.ZD2
PDLVOL5G.ZIC
PDL_RESO.ZD2
PDL_RESO.ZIC
PHASER.ZD2
PHASER.ZIC
PH_DIST.ZD2
PH_DIST.ZIC
PITCHSHF.ZD2
PITCHSHF.ZIC
PLTREV5G.ZD2
PLTREV5G.ZIC
PRE73.ZD2
PRE73.ZIC
RCBST5G.ZD2
RCBST5G.ZIC
ROOM5G.ZD2
ROOM5G.ZIC
RVRSDL_M.ZD2
RVRSDL_M.ZIC
SEQFLTR.ZD2
SEQFLTR.ZIC
SLWATK.ZD2
SLWATK.ZIC
HPS.ZD2
SOLPRE.ZIC
SPLITTER.ZD2
SPLITTER.ZIC
SPLOPR.ZD2
SPLOPR.ZIC
SPRING5G.ZD2
SPRING5G.ZIC
SQUEAK5G.ZD2
SQUEAK5G.ZIC
STBGEQ1U.ZD2
STBGEQ1U.ZIC
SUNN_AU.ZD2
SUNN_AU.ZIC
SUNN_AU.ZIR
SUPERCHO.ZD2
SUPERCHO.ZIC
SVT_1U.ZD2
SVT_1U.ZIC
SVT_1U.ZIR
SWR4001U.ZD2
SWR4001U.ZIC
SWR4001U.ZIR
TAPECH_M.ZD2
TAPECH_M.ZIC
TE400_1U.ZD2
TE400_1U.ZIC
TE400_1U.ZIR
THEVIBE.ZD2
THEVIBE.ZIC
TREMOLO.ZD2
TREMOLO.ZIC
TS_BST1U.ZD2
TS_BST1U.ZIC
VOODOO_B.ZD2
VOODOO_B.ZIC
ZNR.ZD2
ZNR.ZIC
Z_SYN_1U.ZD2
Z_SYN_1U.ZIC
Z_TRON.ZD2
Z_TRON.ZIC
FLST_SEQ.ZT2
SOLPRE.ZD2
Wow! Thanks for the list, at least we now know what's in the box, so to speak.
extension | description |
---|---|
.ZIC | effect icon (Zoom ICon format) |
.BDL | built-in effect module |
.ZD2 | effect module |
.ZT2 | effect module sequence list (FLST_SEQ.ZT2 ) |
.raw | rhythm drum-kit sample (raw format) |
.ZIR | IR data (Zoom format) |
.WAV | IR sample (??? DUMMY.WAV ) |
.BIN | some binary data (??? maybe the IR db and its backup) |
Some notes:
SOLID1.BDL
and TUBE1.BDL
(1,2,3) -- that's for that DI model switch; B_OUT_EQ.BDL
is the output EQ, similar to how it was handled for B1 FOURB2 FOUR has 300 user patches, 10 patches per bank (30 banks).
Here's how to dump a selected patch and the current edit buffer. For the test, you need to select some of preset patch, say, "001: DamnTime2022" and then dump the data, so we could compare the patch/buffer size.
## Enable Editor Mode
amidi -p hw:2,0,0 -S 'F0 52 00 6e 50 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
## Show current Bank and Program (Bank-MSB, Bank-LSB, Prog)
amidi -p hw:2,0,0 -S 'F0 52 00 6e 33 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
## Dump current edit buffer
amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 13 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
## Dump selected patch (Bank-MSB:[00 00], Bank-LSB:[00 00], Prog:[00 00])
amidi -p hw:2,0,0 -S 'F0 52 00 6e 46 00 00 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
## Disable Editor Mode
amidi -p hw:2,0,0 -S 'F0 52 00 6e 51 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
If you want to select a patch directly, just pass it's Bank (MSB, LSB) and Prog MIDI codes. It's just common MIDI (not SysEx), so should work even without Editor Mode, well, it used to.
## Select the third patch in the second bank (2*10 + 3 = 23, "023"); indexes are 0-based
amidi -p hw:2,0,0 -S 'B0 00 00 00 B0 20 01 00 C0 02' -r temp.bin -t 2; hexdump -C -v temp.bin
WOW! Here I am on MST, and when I wake up it's like Santa's Elves have been super busy :-)
@Licarde Thank you so much for this testing and the information you have provided is super helpful.
It would seem that the B2-Four pedal is a very close relative of the B1-Four, and the fact that it is responding to these commands suggests that it would work OK with the Python scripts as they are. The scripts also run with Python on Windows, I used the py2exe
method to include a 'pre-built' binary in the zip under the Releases sections
https://github.com/mungewell/zoom-zt2/releases
The scripts need the Construct module, and use WX-Windows for their GUI display. You mention that your college's lab run Ubuntu, do you have scope for installing additional Python modules?
BTW what are your interests/hopes with/for this project? Are you studying programming??
- ZD2 files for B2 FOUR are likely different from what was made for older models
Although we can't (for copyright reasons) share these files, I did upload a 'master list' of all the effects that are referenced in Guitar-Lab and this includes the MD5 sums of the ZD2 file.
https://github.com/mungewell/zoom-zt2/blob/master/zoom_fx_AllZDL7/master.txt
The GUI script contains has a 'download' button on the 'files' tab, if one or two ZD2 could be manually downloaded and checksum'ed that would answer that question.
... it is responding to these commands suggests that it would work OK with the Python scripts as they are.
Well, it's still a new device. So, it'd be more prudent to keep the initial analysis in read-only mode until we figure out what's the same, what's different.
It's tempting to use the zoom-zt2 tool, yet maybe it would be better to use the amidi
to dump out data, then safely figure out the differences and chart the next stage.
@mungewell Thanks to you too!! I'm in guitar band club and my motivation is to use the B2 four for both guitar and bass.
@nomadbyte I agree that we should be careful. If the dumped data is completely different from other models, I should not use the tool.
@Licarde: So far B2 FOUR protocol appears very much similar to that of G1/B1 FOUR model family, but we still need to figure out some details, such as:
patch size and format, including the size and format of the edit buffer (dump the data mentioned in the comment above)
size and contents of the effect sequence file: FLST_SEQ.ZT2
:
for the size, dump the data:
$ amidi -p hw:2,0,0 -S 'f0 52 00 6e 60 25 00 00 46 4c 53 54 5f 53 45 51 2e 5a 54 32 00 f7' -r temp.bin -t 2; hexdump -C -v temp.bin
amidi
internal flash size, dump the data:
$ amidi -p hw:2,0,0 -S 'f0 52 00 6e 60 29 f7' -r temp.bin -t 2; hexdump -C -v temp.bin
patch edit commands;
details on the effect files; we have some head start on that already, but some questions remain.
Eventually, we may gather enough details to come up with some alternative editor for this model.
"DamnTime2022"
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 50 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
7 bytes read
00000000 f0 52 00 6e 00 00 f7 |.R.n...|
00000007
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 33 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
8 bytes read
00000000 b0 00 00 b0 20 00 c0 00 |.... ...|
00000008
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 13 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
966 bytes read
00000000 f0 52 00 6e 64 12 01 40 06 04 50 54 43 46 3c 01 |.R.nd..@..PTCF<.|
00000010 00 00 00 02 00 00 00 06 00 00 00 00 00 00 01 00 |................|
00000020 00 00 00 00 00 00 00 44 61 00 6d 6e 54 69 6d 65 |.......Da.mnTime|
00000030 32 20 30 00 00 00 02 60 00 00 00 04 20 00 00 05 |2 0....`.... ...|
00000040 00 00 00 00 00 00 00 00 00 00 10 00 00 1c 54 58 |..............TX|
00000050 4a 00 31 54 00 00 00 32 30 5f 14 4e 11 63 0f 09 |J.1T...20_.N.c..|
00000060 0a 6e 7a 03 5f 03 13 03 58 57 01 45 03 7e 03 05 |.nz._...XW.E.~..|
00000070 01 2a 5b 03 57 03 62 03 4e 75 02 4c 03 74 03 42 |.*[.W.b.Nu.L.t.B|
00000080 03 6a 13 03 4b 01 5b 03 73 57 03 62 03 4c 03 13 |.j..K.[.sW.b.L..|
00000090 03 3b 4f 02 49 13 4b 02 35 77 02 3d 03 4e 03 0a |.;O.I.K.5w.=.N..|
000000a0 01 3a 5b 03 13 03 54 03 45 77 03 13 03 68 02 45 |.:[...T.Ew...h.E|
000000b0 02 60 37 01 42 00 00 54 58 00 45 31 44 00 00 00 |.`7.B..TX.E1D...|
000000c0 43 00 6c 65 61 6e 20 73 6f 00 75 6e 64 20 73 75 |C.lean so.und su|
000000d0 69 00 74 61 62 6c 65 20 66 00 6f 72 20 66 69 6e |i.table f.or fin|
000000e0 67 00 65 72 70 69 63 6b 69 00 6e 67 20 69 6e 20 |g.erpicki.ng in |
000000f0 65 00 61 72 6c 79 20 32 30 00 27 73 20 64 61 6e |e.arly 20.'s dan|
00000100 63 00 65 20 6d 75 73 69 63 00 2e 00 00 00 45 44 |c.e music.....ED|
00000110 54 20 42 10 00 00 00 01 01 20 00 04 04 60 00 06 |T B...... ...`..|
00000120 60 00 00 06 60 60 40 01 00 00 00 00 00 00 00 00 |`...``@.........|
00000130 00 25 00 41 00 00 48 08 48 00 00 00 64 40 10 50 |.%.A..H.H...d@.P|
00000140 04 00 5d 01 00 00 00 00 00 00 00 00 00 00 41 00 |..]...........A.|
00000150 00 03 0a 09 4c 00 0c 70 00 08 07 08 50 10 09 00 |....L..p....P...|
00000160 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000180 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 |................|
00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001a0 21 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 |!...8...........|
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 50 52 4d 32 |............PRM2|
000001c0 20 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 | ...............|
000001d0 0c 20 42 06 00 00 00 00 00 00 00 00 08 00 02 00 |. B.............|
000001e0 00 02 00 00 00 00 00 50 06 00 4e 41 4d 45 10 00 |.......P..NAME..|
000001f0 00 00 00 44 61 6d 6e 54 69 00 6d 65 32 30 32 32 |...DamnTi.me2022|
00000200 20 00 20 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 |................|
00000350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003c0 69 42 14 7c 05 f7 |iB.|..|
000003c6
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 46 00 00 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
970 bytes read
00000000 f0 52 00 6e 45 00 00 00 00 00 00 40 06 04 50 54 |.R.nE......@..PT|
00000010 43 46 3c 01 00 00 00 02 00 00 00 06 00 00 00 00 |CF<.............|
00000020 00 00 01 00 00 00 00 00 00 00 00 44 61 00 6d 6e |...........Da.mn|
00000030 54 69 6d 65 32 20 30 00 00 00 02 60 00 00 00 04 |Time2 0....`....|
00000040 20 00 00 05 00 00 00 00 00 00 00 00 00 00 10 00 | ...............|
00000050 00 1c 54 58 4a 00 31 54 00 00 00 32 30 5f 14 4e |..TXJ.1T...20_.N|
00000060 11 63 0f 09 0a 6e 7a 03 5f 03 13 03 58 57 01 45 |.c...nz._...XW.E|
00000070 03 7e 03 05 01 2a 5b 03 57 03 62 03 4e 75 02 4c |.~...*[.W.b.Nu.L|
00000080 03 74 03 42 03 6a 13 03 4b 01 5b 03 73 57 03 62 |.t.B.j..K.[.sW.b|
00000090 03 4c 03 13 03 3b 4f 02 49 13 4b 02 35 77 02 3d |.L...;O.I.K.5w.=|
000000a0 03 4e 03 0a 01 3a 5b 03 13 03 54 03 45 77 03 13 |.N...:[...T.Ew..|
000000b0 03 68 02 45 02 60 37 01 42 00 00 54 58 00 45 31 |.h.E.`7.B..TX.E1|
000000c0 44 00 00 00 43 00 6c 65 61 6e 20 73 6f 00 75 6e |D...C.lean so.un|
000000d0 64 20 73 75 69 00 74 61 62 6c 65 20 66 00 6f 72 |d sui.table f.or|
000000e0 20 66 69 6e 67 00 65 72 70 69 63 6b 69 00 6e 67 | fing.erpicki.ng|
000000f0 20 69 6e 20 65 00 61 72 6c 79 20 32 30 00 27 73 | in e.arly 20.'s|
00000100 20 64 61 6e 63 00 65 20 6d 75 73 69 63 00 2e 00 | danc.e music...|
00000110 00 00 45 44 54 20 42 10 00 00 00 01 01 20 00 04 |..EDT B...... ..|
00000120 04 60 00 06 60 00 00 06 60 60 40 01 00 00 00 00 |.`..`...``@.....|
00000130 00 00 00 00 00 25 00 41 00 00 48 08 48 00 00 00 |.....%.A..H.H...|
00000140 64 40 10 50 04 00 5d 01 00 00 00 00 00 00 00 00 |d@.P..].........|
00000150 00 00 41 00 00 03 0a 09 4c 00 0c 70 00 08 07 08 |..A.....L..p....|
00000160 50 10 09 00 00 00 00 00 00 00 00 00 00 00 01 00 |P...............|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000180 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 |................|
00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001a0 00 00 00 00 21 00 00 00 38 00 00 00 00 00 00 00 |....!...8.......|
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001c0 50 52 4d 32 20 00 00 00 00 00 00 00 00 02 00 00 |PRM2 ...........|
000001d0 00 00 00 00 0c 20 42 06 00 00 00 00 00 00 00 00 |..... B.........|
000001e0 08 00 02 00 00 02 00 00 00 00 00 50 06 00 4e 41 |...........P..NA|
000001f0 4d 45 10 00 00 00 00 44 61 6d 6e 54 69 00 6d 65 |ME.....DamnTi.me|
00000200 32 30 32 32 20 00 20 00 00 00 00 00 00 00 00 00 |2022 . .........|
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 |................|
00000350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003c0 00 00 00 00 69 42 14 7c 05 f7 |....iB.|..|
000003ca
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 51 F7' -r temp.bin -t 2; hexdump -C -v temp.bin
7 bytes read
00000000 f0 52 00 6e 00 00 f7 |.R.n...|
00000007
Here it is, more differences:
NAME
section, looks like it's a "long-name"Again, looks like similar PTCF format to one used with G1/B1 FOUR (G5n platform), yet different.
Ok, done with the patch info for now. Thanks to @Licarde we're learning bit-by-bit about the multi-effect platform evolution!
Once you've the access to amidi
, let's continue to the FLST_SEQ.ZT2
info and the internal flash size.
@Licarde Again, many thanks for helping us out.
Don't forget that the midi data is 7bit, and needs to be converted to 8bit to interpret.
[edit] Moved the discussion about decoding B2-Four preset to #67
@nomadbyte I started adding ability to automatically de-pack from SysEx dumps, and noticed that my code uses different 'cmds' to read patch data.
Should these be updated??
[edit] Yes... see #68
Happy New Year! Hope it started well for all of you here.
@Licarde: Any progress with continuing the B2 FOUR exploration dumps?
@nomadbyte Happy New Year!
I am very busy this month. So I'm not able to contribute to the project. Sorry.
@Licarde : Understood, no problem. Life priorities require attention. Join back in, when you'll have a chance!
I'm currently trying to get B2 FOUR output from the following SysEx commands. All deal with patch details.
Say, select the first preset '001 - DamnTime2022' and then do:
amidi -p hw:2,0,0 -S "f0 52 00 6e 64 02 00 07 00 f7" -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S "f0 52 00 6e 64 47 f7" -r temp.bin -t 2; hexdump -C -v temp.bin
amidi -p hw:2,0,0 -S "f0 52 00 6e 64 42 f7" -r temp.bin -t 2; hexdump -C -v temp.bin
@Licarde Any chance you could try this out?
Recently, I am able to help with this project again. But I am unable to run the code because I do not have a ubuntu machine at the moment. Sorry.
Other, I tried thammer's 'sym.bios.is' and was able to save and load the patch!
@Licarde If you are on windows you can run the scripts there too.... need to install a few modules (construct, python-midi, etc). GUI also runs with WxPython. Should also work on Mac, but don't have confirmation on that...
If you want to try sending SysEx data you can use MidiOx on Windows.
I think that we are getting close to pushing a new release, as we've got confirmation that we can work with the MS+ pedals.
OK. I tried to sent the data via MidiOx.
Send
f0 52 00 6e 64 02 00 07 00 f7
Recieve
F0 52 00 6E 64 01 00 00 00 00 30 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 42 6C 61 6E 6B 00 00 00 00 00 00 01 01 00 42 6C 61 6E 6B 00 00 00 00 00 01 00 00 00 30 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 42 6C 61 6E 6B 00 00 00 00 00 01 01 01 00 42 6C 61 6E 6B 00 00 00 00 00 02 00 00 00 30 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 42 6C 61 6E 6B 00 00 00 00 00 02 01 01 00 42 6C 61 6E 6B 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 42 6C 61 6E 6B 00 00 00 00 00 03 01 01 00 42 6C 61 6E 6B 00 00 00 00 00 04 00 00 00 30 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 6C 61 6E 6B 00 00 00 00 00 04 01 01 00 42 6C 61 6E 6B 00 00 00 00 00 F7
Send
f0 52 00 6e 64 47 f7
Recieve
*New patch was created.
Send
f0 52 00 6e 64 42 f7
Recieve
F0 52 00 6E 64 43 01 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7
@Licarde thanks for getting back and joining another piece in this puzzle.
For the most part it's clear that B2 FOUR is also using the ZD2 format and somewhat modified yet similar PTCF format for the patches. Same likely goes for the SysEx File IO, so it should be possible to adapt @mungewell tool to download files off the pedal. However I would not rush with installing/removing effect files yet, until we can figure out the contents of the FLST_SEQ.ZT2
. Also, the details of the IR management are mostly unknown, so I would not try to disturb AMP effects for now.
Here's another SysEx to dump to figure out the internal flash size:
f0 52 00 6e 60 29 f7
Send
f0 52 00 6e 60 29 f7
Recieve
F0 52 00 6E 60 04 29 02 00 08 00 54 7B 6B 02 00 34 2F 58 00 00 00 00 00 00 00 F7
SysEx:<60 29> ==> F0 52 00 6E 60 04 29 02 00 08 00 54 7B 6B 02 00 34 2F 58 00 00 00 00 00 00 00 F7
DiskSize:[54 7B 6B 02 00]:5963220 bytes
DiskFree:[34 2F 58 00 00]:1447860 bytes
DiskUsage:(5963220-1447860)/5963220. *100% = 75.7%
B2 FOUR internal flash capacity: 5.7MB
Are they also ZD2? They have some new multi layered IR cabinets and stuff.