Note: Words and double-words are stored Intel-style. Offset: (decimal) Contents: ------- --------- 0-7 ASCII text: 'GF1PATCH' 8-10 ASCII text: '100' (pre 2.01 disks) '110' (2.01 disks) 11 byte '00' 12-20 ASCII text 'ID#000002' 21 byte '00' 22 ASCII text: copyright text 82 byte ;I call this Voices, always set to 1 83 word ;I call this Channels, always set to 14 decimal (0E hex) 85 word ;number of of samples, or waves 87 word ;master volume, usually set to 127 decimal (7F hex) 89 dword ;unknown, not used with pre 2.01 patches, value is close ;to the total length of the patch file. May be used for ;memory management purposes. 131 ASCII text: name of patch. ;first letter is missing in pre 2.01 patches ;apparently not used in 2.01 patches 147 dword ;unknown, related to value at 89 ;set equal to 1 in pre 2.01 patches 151 byte ;unknown, but is always 1 194 dword ;another value related to values at 89 and 147 ;not used in pre 2.01 patches 198 word ;number of samples, or waves 239 Sample block, or wave block ;there is a sample block for every sample in a patch ;the following offsets are into the sample block 0-5 ASCII text: sample name ;this is usually 'NoName' 6 byte '00' 7 byte ;I call this the mode byte, use is unknown 8 dword ;length of sample in bytes 12 dword ;loop start in bytes offset from beginning of sample 16 dword ;loop end in bytes offset from beginning of sample 20 word ;sampling frequency 22 dword ;high frequency multiplied by 1000 26 dword ;low frequency multiplied by 1000 30 dword ;base frequency multiplied by 1000 34 byte ;detune, usually equal to zero 35 byte ;octave, usually equal to 2 36 byte ;balance, usually 7, meaning center of stereo field 37-48 12 bytes ;envelope data, format unknown ;I have observed the following: ;first byte: higher = slower attack ;second byte: higher = longer attack ;fourth byte: level of release ;seventh byte: lower=slower attack ;eighth byte: lower = longer delay until attack ;ninth byte: level of release ;tenth byte: length of release 49 byte ;tremolo sweep 50 byte ;tremolo rate 51 byte ;termolo depth 52 byte ;vibrato sweep 53 byte ;vibrato rate 54 byte ;vibrato depth 55 byte ;flags 7 6 5 4 3 2 1 0 ;I have observed the following: ;7 6: envelope scaling (I think) ;5: 1=melodic, 0=percussion ;4: 1=read sample backwards, 0=read sample forwards ;2: 1=sample is looped, 0=sample plays through once ;0: 1=sample is 16-bit, 0=sample is 8-bit 56 byte ;unknown, not used in pre 2.01 patches, usually '3C' hex 59 byte ;unknown, not used in pre 2.01 patches, usually '04' 96 Sample ;sample data is stored unsigned ;16-bit samples are stored Intel style with the ;least significant byte stored first. ;If there is more than one sample in the patch, the next ;sample block starts right after the end of the ;previous sample.