Zoom Patch File: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 8: | Line 8: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ZPTC header | |+ZPTC header | ||
!Offset!!Size(bytes)!!Field!!Purpose | !Offset!!Size<br />(bytes)!!Field!!Purpose | ||
|- | |- | ||
|0x00||4||id||"PTCF" (50, 54, 43, 46) in ASCII; these four bytes constitute the magic number. | |0x00||4||id||"PTCF" (50, 54, 43, 46) in ASCII; these four bytes constitute the magic number. | ||
Line 53: | Line 53: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Patch comments (Japanese) | |+Patch comments (Japanese) | ||
! Offset!!Size(bytes)!!Field!!Purpose | ! Offset!!Size<br />(bytes)!!Field!!Purpose | ||
|- | |- | ||
|0x00||4||sectionId||"TXJ1" ( 54, 58, 4A, 31) in ASCII; these four bytes constitute the section magic number | |0x00||4||sectionId||"TXJ1" ( 54, 58, 4A, 31) in ASCII; these four bytes constitute the section magic number | ||
Line 64: | Line 64: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Patch comments (English) | |+Patch comments (English) | ||
!Offset!!Size (bytes)!!Field!!Purpose | !Offset!!Size<br />(bytes)!!Field!!Purpose | ||
|- | |- | ||
|0x00||4||sectionId||"TXE1" ( 54, 58, 45, 31) in ASCII; these four bytes constitute the section magic number | |0x00||4||sectionId||"TXE1" ( 54, 58, 45, 31) in ASCII; these four bytes constitute the section magic number | ||
Line 73: | Line 73: | ||
|} | |} | ||
{| class="wikitable" | |||
|+Effects Database (EDTB) header | |||
|- | |- | ||
! Offset !! Size !! Field !! Purpose | ! Offset !! Size !! Field !! Purpose |
Latest revision as of 21:54, 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.
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] |
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 |
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
| ||||||||
0x010 | 4 | field2 | field 2 (packed)
| ||||||||
0x014 | 4 | field3 | field 3 (packed)
| ||||||||
... | ... | ... | ... |
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 |