Zoom Patch File: Difference between revisions
No edit summary |
No edit summary |
||
Line 44: | Line 44: | ||
0x04 4 commentSize size of comment string | 0x04 4 commentSize size of comment string | ||
0x08 commentSize comment comment text in Japanese | 0x08 commentSize comment comment text in Japanese | ||
{| class="wikitable" | |||
|+Patch comments (English) | |||
!Offset!!Size | |||
(bytes)!!Field!!Purpose | |||
| | |- | ||
|0x00 4 sectionId "TXE1" ( 54, 58, 45, 31) in ASCII; these four bytes constitute the section magic number | |||
|- | |||
|0x04 4 commentSize size of comment string | |||
|- | |||
|0x08 commentSize comment comment text in English | |||
|} | |||
Effects Database (EDTB) header | |||
|- | |- | ||
! Offset !! Size !! Field !! Purpose | ! Offset !! Size !! Field !! Purpose |
Revision as of 21:35, 27 September 2021
Zoom Patch (ZPTC) file is the patch file used in Zoom Guitar Pedals. It is used mainly in N series like g5N, G3N, B3N.
It can hold maximum 9 effects, including double sized effects (amplifiers or combo effect units like reverb and delay).
It varies in size according to comments len and number of parameters but typically it's 736 bytes long. ZPTC header Offset Size
(bytes) Field Purpose 0x00 4 id "PTCF" (50, 54, 43, 46) in ASCII; these four bytes constitute the magic number. 0x04 4 patchDataSize contains the size of the patch data in bytes (rest of the patch file is 0 padded) 0x08 4 gen possible zptc header file version (at this time it's 1) 0x0c 4 efSize contains the current number of available (and usable) effects boxes (see effectIdX fields below) in current patch. this number can be increased by adding or removing new effects (up to 9 maximum effects), this number is not affected if setting the effect box to unused (or empty) on the zoom unit. 0x10 8 supportRegion for now value it's 1 - possibly something related to Zoom internals 0x18 2 reserved reserved for future use 0x1a 10 patchName contains the patch name (maximum 10 chars) 0x24 4 effectId0 contains numeric id of effect 0
Some examples are:
80 00 00 04 which maps to id 0x04000080 (ORG_120) from zoom effects store
Note: 0x4000080 is a double case spaced effect so it will consume 2 effectsId spaces.
The second effectId value will be 01 00 00 00.
40 00 00 01 which maps to id 0x1000040 (ZNR) from zoom effects store
Unfortunately ZOOM managed to screw up completely this mapping so right now there isn't a clear picture
of how mapping is done some effects are bound to 0x0number while others to 0xnumber, others have hex parts (A,B,C,D) in upper case (eg. 0x080000A0) some in lowercase (0x400001a)
In order to lookup zoom effect store id probably best course is to test all possibilities and rely on local FS existence test. 0x28 4 effectId1 contains numeric id of effect 1 0x2c 4 effectId2 contains numeric id of effect 2 ... ... ... ... [0x44] [4] [effectId8] [contains numeric id of effect 8] Patch comments (Japanese) Offset Size
(bytes) Field Purpose 0x00 4 sectionId "TXJ1" ( 54, 58, 4A, 31) in ASCII; these four bytes constitute the section magic number 0x04 4 commentSize size of comment string 0x08 commentSize comment comment text in Japanese
Offset | Size
(bytes)!!Field!!Purpose |
---|---|
0x00 4 sectionId "TXE1" ( 54, 58, 45, 31) in ASCII; these four bytes constitute the section magic number | |
0x04 4 commentSize size of comment string | |
0x08 commentSize comment comment text in English |
Effects Database (EDTB) header
|- ! Offset !! Size !! Field !! Purpose |- | 0x00 || 4 || sectionId || "EDTB" ( 45, 44 , 54, 42) in ASCII |- | 0x04 || 4 || dbSize || size of the database |- | 0x08 || 4 ||effectId || effect Id (packed) |- | 0x0c || 4 || field1 || field 1 (packed)
EID = effect ID *2
p1 = effect parameter 1
p2 = effect parameter 2
p3 = effect parameter 3
p4 = effect parameter 4
0 | 1 | 2 | 3 |
---|---|---|---|
EID byte 0 + enable parameter | EID byte 1 | EID byte 2 | EID byte 3 +p1 byte 0 |
|- |0x010 || 4 || field2 || field 2 (packed)
4 | 5 | 6 | 7 |
---|---|---|---|
p1 byte 1 | p2 byte 0 | p2 byte 1 + p3 byte 0 | p3 byte 1 |
|- | 0x014 || 4 || field3 || field 3 (packed)
8 | 9 | 10 | 11 |
---|---|---|---|
p3 + p4 | p4 | 00 | 00 |
|- |... || ... || ... || ... |}
Note: It's rather un clear at this time how parameters are indexed.
Some effects have some parameters 0-indexed others start from 1.
Also there are 'option' parameters which are actually an enum of options
(eg. on/off, slow/fast, stack/combo, gtrin/efxin)
Offset | Size | Field | Purpose |
---|---|---|---|
0x00 | 4 | sectionId | "PPRM" (50, 50, 52, 4D) in ASCII |
0x04 | 4 | sectionSize | size of the section |
0x08 | 7 | unknown | unknown data (zeroes) |
0x10 | 2 | patchVolume | ranging from 0 to 120. volume level formula is: (second byte &
0x3f) * 2 + first byte >> 6 eg: 80 79 decodes to level: 115 |
0x12 | 2 | unknown | unknown data |