Format Module Pro Tracker v3.6x The offset to the areas in the module and their length in bytes are indicated. (decimal numbers). +0 (13) "ProTracker 3." - identification string. +13 (17) "6" (or "5", "4", or even "3") is the number of the sub-version. It should be noted that for modules PTv3.4x and below is used another, "asymmetric" volume table, and in modules PTv3.3x The alternate frequency table "Pro Tracker" is used, not coinciding with the eponymous modern! +14 (16) "compilation of" (optional - any text of this length). +30 (32) module name (ASCII, lat, unused characters filled with spaces). +62 (4) "by" (optional - any 4 characters) +66 (32) author's name (ASCII, lat, unused characters are filled with spaces). +98 (1) one space (any character). (i.e. the first 99 bytes of the module form the text header) +99 (1) frequency table number: 0 = Pro Tracker, 1 = Sound Tracker, 2 = ASM or PSC, 3 = RealSound. The label occupies 192 bytes and contains period values for 96 notes, starting with C-1. Period is the reciprocal of the frequency of the note, placed in the corresponding AY registers. Low bytes are stored first (with one exception, envelope period). PT3 compiler saves the table corresponding to the module to the player's body at offset 512. It stores the volume table in that same player body at offset address 256. fseidel note: The note above about the tables locations regards the standard z80 player binary, and not the music files. There is no requirement on where the volume and period tables are located. +100 (1) tempo value. +101 (1) song end (1 = only one position in the module) - not in the player is used. +102 (1) song loop (0 = looping at the beginning). +103 (2) Psa_chn = offset from the beginning of the module to the pattern table. +105 (32 * 2) offset from the beginning of the module to the samples, starting with left sample. Two bytes per sample. Zero sample in curren versions of the editor is not used. For all unused samples offset is zero. +169 (16 * 2) offset from the beginning of the module to the ornaments, starting with zero. Two bytes per ornament. A zero ornament is a missing ornament, so the data of this ornament (see below) is rzhat 0,1,0 (you can use this ornament to your liking BUT, then in a song it will not be possible to use samples without ornament cops). For all unused ornaments, the offset is equal to 0 201 (?) List of positions (order). Contains pattern numbers (0 ... 84), multiplied by 3. The table ends with the code #ff. Pro Tracker v3.3x-v3.5x does not support more than 42 patterns. Pro Tracker v3.6x does not support more than 46 patterns. + Psa_chn (? * 6) index of patterns. Contains for each of the existing offset patterns: ++ 0 (2) to channel data block (track) A ++ 2 (2) to channel data block (track) B ++ 4 (2) before the channel data block (track) C. Data on the noise offset (separate column in the editor) comp channel b. +? (? *?) blocks of data channels, that is, tracks. The track contains the following data: ================================================= ============== # 00 - the end of the track. # 01, delay, Lsl, Hsl - Gliss (Slide) effect up or down. Delay - time in the fifties of a second, after which to note period will be added to the value of Lsl + 256 * Hsl. Bias the player accumulates in the corresponding variable and adds after the formation of the frequency of the note, i.e., first processes line of the ornament, and then later ... # 02, delay, Lmax, Hmax, Lsl, Hsl - Tone Portamento effect up or down. Delay - time in the fiftieth of a second, after of which the value of Lsl + 256 * Hsl will be added to the period of the note. Lmax + 256 * Hmax - maximum displacement (unsigned), after the accumulation of which Portamento should be stopped (in PT3.6x not used because possible misdirection). # 03, offset - sample offset. The sample starts playing not at first. # 04, offset - ornament offset. Set offset within current ornament. # 05, YEStime, NOtime - vibrate. Turn note on and off. # 08, delay, Lsl, Hsl - slide envelope effect. To period value from time to time the envelope is added Lsl + 256 * Hsl. # 09, tempo - indication of tempo (in interrupts per line). Standard player will not play with tempo < 2. NB: effect parameters (# 0x) are not immediately after the number code effect, and after the end of the line !!! If several effects are used effects on one note (in fact, this is not the case), then first Parameters of the last effect are harvested, then the last but one and so on. more ... # 10, smp * 2 - turn off the envelope, put the 0th ornament and change sample number. # 1x, Henv, Lenv, smp * 2 - change the sample number, put the 0th ornament and turn on envelope type x with a period Lenv + 256 * Henv. When you turn on the envelope, it is initialized, those. new period begins! # 20- # 3f - specify the noise offset (only happens on channel B) # 4x - indicate the ornament number x. (the envelope does not turn off) # 50- # Af - specify the pitch of the note and END the analysis of the current line channel. # B0 - turn off the Envelope. # B1, lines - do not analyze the channel during the lines of lines. (lines = 1 matches one line). Acts not only on the gap between this and the next note, but further, until indicated a different value lines! # Bx, Henv, Lenv - the same as # 1x, but without a sample. That is just include an envelope of type x-1 with the specified period. # Cv - specify the volume. (V = 0 - pause and END the line analysis.) # D0 - END the string analysis. # D1- # Ef - specify the number of the sample. #Fx, smp * 2 - specify the number of the ornament (x) and the number of the sample. (envelope goes off) ================================================= ============== +? (? * (? * 4 + 2)) - samples. ++ 0 (1) - loop ++ 1 (1) - end (1 = one-line sample) ++ 2 (? * 4) - data: +++ 0 (1) sv ud N4 N3 N2 N1 N0 Em +++ 1 (1) Nm ts ns Tm V3 V2 V1 V0 sv = 1 is a sign that the volume is sliding, ud = 1 indicates slide up, 0 indicates slide down; N4-0 is the frequency of the noise OR the offset of the envelope (depends on the presence of a noise mask): an envelope offset of 0-15 - down, 16-31 - up (N4 is interpreted as a sign); V3-0 - volume; Tn, Nm, Em - masks of tone, noise and envelope, respectively, and if the mask is set, the corresponding sound element is turned off; ts, ns = 1 - flag that the current tone or noise / envelope offset will accumulate. +++ 2 (2) offset period of the tone (positive - up, negative - down). +? (? * (? + 2)) - ornaments. ++ 0 (1) - loop ++ 1 (1) - end (1 = ornament from one line) ++ 2 (?) - data: bias in semitones (0 = no bias, positive positive displacement - up, negative - down). waiting for additions! Additions from 10.xi.02: 1. (Sergey Bulba): The ASM or PSC table is not related to the corresponding editors Modules from these editors should be imported. Rty with the Sound Tracker table. Table ASM or PSC calculated on so that at a clock frequency of AY 1.7744 MHz notes in the editor coincided with the same notes of the piano. (Table Real Sound - the same, but for 1.75 MHz.) 2. The module can also use the 0th sample, if in the track it is stored with the ornament (can be zero). Total 32 samples. 3. Checked information about Portamento, Loop and # B1. 4. Corrected information about the samples. Update as of 24.ii.03: 5. Updated to turn off the envelope. Update from 25.iii.03: 6. Standard PTv3.6x - 46 patterns. 7. When overflowing the ornament downward (more precisely, when the note number) the lowest note of C-1 is substituted. With overflow up result not defined. Update from 26.vii.03: 8. The above clarified the changes for PT3.6x. 9. The maximum size of the module that can be downloaded in torus is equal to # 3300 bytes, or # 4000 bytes for the "cjf" version. Update as of 20.iii.04: 10. PT3 + 67 has 48 patterns, but it is not guaranteed that they will be the same in all future versions. Update from 29.vi.04: 11. See about # 10 and # B1. 12. in PT3.69 you can specify the number of the ornament without affecting envelope in VTII is not yet possible. all players play this. Update from 26.viii.04: 13. on the lines of the sample, where the noise is included, the accumulated offset the envelope is ignored. Alone coder