World's largest ZX Spectrum music collection | language rus eng |
Terminology. Module (module) - a set of patterns, the order of play which is determined by the list of positions. The module includes all samples and ornaments used during playback, the number of the sheet of notes, the lines with the name of the song and the name of the author, the file header and the initial playback speed. The position list is a list of pattern numbers in the order of playback. The position list also includes the position number of the cycle. The maximum list length is 256 positions. Pattern (pattern) - a set of lines with notes, commands and parameters. The pattern string has a regular structure, described below. If you look vertically, the pattern is a collection of tracks (tracks). Pattern length - the number of lines in the pattern. A sample (sample) is the key structure of Pro Tracker 3. It is a set of parameters that fully determine the sound of a note (amplitude, noise, envelopes, and frequency) over time. Ornament (organization) - a special case of the sample, determines only the frequency of the note over time. Unlike the sample, the frequency is adjusted in semitones. In most cases used to simulate chords. Tone table, the table of notes (tone table, note table) - a list of values recorded in the tone registers of the AY-3-8910 / 12 chip (or YM2149F, hereinafter AY) for each note. This table defines the frequency of each note used in Pro Tracker 3. A total of 96 notes (C-1 to B-8). There are four tone tables (numbers from 0 to 3). The file header is a string identifying the module. Two types of header are currently known: 'ProTracker 3.x compilation of', where x is the sub-version number of Pro Tracker 3, and 'Vortex Tracker II 1.0 module:'. When loading the Vortex Tracker II, the header can determine which way to interpret the 3xxx command for this module. Loop position (loop position) - position of the list of positions to which the transition is made upon reaching the end of the list when playing. Playback speed (speed, tempo) - the number of interrupts per pattern line. On the ZX Spectrum, interrupts occur at a frequency of about 50 Hz (for different models in different ways). Pattern Figure 1 schematically shows the structure of a single line pattern. Figure 1 - Pattern line structure 00 | .... | .. | --- .... .... | --- .... .... | --- .... .... 11 2222 33 444 5555 6666 444 5555 6666 444 5555 6666 Channel A Channel B Channel C The dot denotes the digit zero (0). Vertical lines separate the column tracks. The track labeled '11' is used for simple line numbering, this track is not editable. The track '2222' determines the frequency of the envelopes, the hexadecimal value written here is written into the registers R11R12 AY (only if there is a corresponding command in the position '5555'). Track '33' defines the noise offset (hex number from 0 to 1F). This number is added to the corresponding value from the sample being played and is written to the R6 AY register. The remaining three tracks are identical to each other, they control the sound in each of the three channels A, B and C AY. Cell '444' is designed to record notes. The note has the following structure: C-1 or C # 2 123 123 1 - the Latin name of the note (in this case, TO). 2 - may contain a sharp sign (#), otherwise there is a dash (-). 3 - the number of the octave. There are eight octaves with numbers from 1 to 8. Octave 1 is a counter octave. Three dashes (---) symbolize the absence of a note in this cell, in this case the cell '444' does not affect the sound in the channel. The '444' cell may contain a channel mute command (R--). Cells '5555' have the following structure: QF1E 'Q' is the number of the sample; it is used only when there is a note or mute command in the cell '444'. There are a total of 31 samples, the numbering starts from 1. The numbering system with a base of 32 (0-9, AV) is used. A zero value (.) Means the absence of a sample, in this case, if there is a note in the '444' cell, the sample number determined previously (in this or one of the previous patterns on the position list pattern) will be used. The format allows the use of the so-called 'zero sample' (it can be designated as W), but so far this feature is not used in any of the editors. 'F' - this cell is intended to record the type of envelope. If this number is from 1 to E, then this value is written to the R13 AY register, while simultaneously the contents of the track '2222' is written to R11R12. The value of F is used to turn off the envelopes, and 0 means there is no command in this cell. The presence of a note in cell 444 is not necessary for the command to work. '1' is the number of the ornament (from 0 to F). Includes a new ornament. The zero ornament is turned on provided that the previous cell 'F' contains a non-zero value (that is, either the envelope type or the envelope deactivation). And, accordingly, ornaments from 1 to 15 are included independently of the cell envelopes (this is a new standard since version PT 3.69). The presence of a note in cell 444 is not necessary for the command to work. Please note that you can combine an ornament with an envelope, but it must be borne in mind that the ornament acts only on the frequency of the tone. 'E' - the volume of the sound in the channel. By analogy, a value from 1 to F determines the volume, and 0 - use the previously established volume. The presence of a note in cell 444 is not necessary for the command to work. Cells '6666' 11.1 NDPp 'N' is the command number, in this case 1. 0 (.) Means no command, regardless of other values of the '6666' cell. 'D' - for some commands defines the parameter 'Delay' (the period of the team). 'Pp' is a command parameter (some commands treat it as two parameters 'P' and 'p'). Special teams. Pro Tracker 3 allows you to use one of the special commands in each row of the channel track. However, the PT3 format allows you to use almost any number of commands per line, maybe someday this feature will be used in Vortex Tracker II. Team number 1. The gradual decrease in the frequency of sound in the channel. The Delay parameter defines the period (in interrupts) of frequency changes, and the 'Pp' parameter defines the amount of each change in units of the AY tone register. Team number 2. The gradual increase in the frequency of sound in the channel. It works similarly to command 1. Commands 1 and 2 are also called tone glide (gliss, glissade, glide, glissando or slide). Standard PT 3.7 allows commands 1 and 2 with Delay = 0. In this case, instead of slipping, a single change in the tone frequency by the value of 'Pp' occurs. Team number 3. Slip from the frequency of the previous note to the frequency of the note set in this line. With this command you can arrange a smooth transition from one note to another. This is the main purpose of the team, all its other features are not documented (for example, if the previous note is either missing or has already been played). If the previous note is in a different pattern, this leads to uncertainty when playing Pro Tracker compiler modules version 3.5 and older on the ZX Spectrum with a standard player, as there is an error in the module file format that can only be minimized. Players from PT 3.6 handle this situation with fewer errors, but they do not correctly play modules of older versions. In any case, when playing directly in the editors of Pro Tracker 3 of any version or Vortex Tracker II, in all players, The built-in exporter of the Vortex Tracker II, as well as the Ay_Emul command, always works correctly. Command parameters are similar to commands 1 and 2. This command is also called portamento. Musicians expect more flexible behavior of team 3. Common sense dictates that the slide should start not from the frequency of the previous note, but from the current frequency that could have been shifted by the previous commands 1,2 and 3. For example, in this situation D-5 1F.F .... --- .... 11.1 D-5 .... 31.1 in the first line the note D-5 is set, in the second line the command to lower the frequency is started, and in the third line the note D-5 is set again; setting the command 3, the musician hopes that the frequency will gradually improve, but this does not happen in Pro Tracker 3.5 and older. Regardless of the presence or absence of team 3 there, these versions of Pro Tracker 3 immediately (without any gradual transition), begins to play the D-5 note. Pro Tracker 3.6 and above handles this situation correctly, however, it cannot compile it correctly: such a portamento command is simply deleted (the corresponding error is masked in the standard player). By analogy with ASM, I would like to expect from the 3xxx team and this behavior D-5 1F.F .... --- .... 11.1 --- .... 31.1 here, first, the frequency of the D-5 note begins to decrease, and then command 31.1 gradually returns the frequency back to D-5. Unfortunately, PT 3.6 still ignores command 3 without a note, so when using portamento without a note, play the module on the ZX Spectrum only with a special ZX player integrated in VT II, or in programs using this player. Unfortunately, this behavior of the team cannot be corrected without interfering with the player’s codes, which means that even if you correct this error in the editor itself, you also need to redo the player. By Pro Tracker 3.6, Alone Coder made these corrections both to the editor and (partially) to the player. Vortex Tracker II provides two ways to interpret the command 3 - the old (Pro Tracker 3.5) and the new (Vortex Tracker II). However, some old modules with the new interpretation of the command 3 are played incorrectly (the musicians customized the sound to that which is, for example, the module of the old modules need to be played on the ZX Spectrum old players or my universal player built into the VT II exporter. At once I want to note that the old interpretation of command 3 is wrong, but this is not a bug of Pro Tracker 3 (and also Pro Tracker 2), but simply a misunderstanding of its authors about the purpose of this command. I guess those who wrote music in ASC Sound Master, and then tried Pro Tracker 3, will understand me. Slip commands of type '1 ...' immediately stop any frequency slip started earlier. Sliding is also stopped by setting a new note or by switching off the sound. All slip commands automatically cancel the action of command 6, if it was executed earlier. Team number 4. Sets the sample playback from the position specified by the 'Pp' parameter. When setting the note, the sample is played from the zero position (from the beginning). Team 4 can be forced to play the sample from any location. It should be noted that the sample is not initialized by this command, i.e. any savings will continue. Team number 5. Same as team 4, but for the ornament. Team number 6. Periodic on / off sound in the channel. The parameter 'P' determines the number of interruptions during which the sound is turned on (1..F), and the parameter 'p' - the number of interruptions during which the sound is turned off (1..F). Command 6 automatically stops the slip tone, if it was. If the parameter 'P' is zero, then the command does not make sense, although it can be used to turn off the slip (commands 1-3). If the parameter 'p' is 0, then the command will simply turn off the sound through the 'P' interrupt. Team number 9. The command to reduce the frequency of the envelopes. Parameters are the same as command 1 parameters. Team number A. The command to increase the frequency of the envelopes. The parameters are similar to the parameters of command 2. The parameter 'Pp' of commands 9 and A is set in units of the register of the envelope period AY. You can stop the sliding of the envelopes only by setting the command for switching on the envelopes in one of the channels, or explicitly specify a special command like "9 ..." (with zero parameters). Team number B. Sets the playback speed ('Pp' parameter). In principle, the speed can be any, but it must be borne in mind that the standard Spectrum player of the Pro Tracker 3 modules cannot lose faster than the speed of 3 (that is, it is recommended to use values from 3 to FF). The new ZX players from Alone Coder (Pro Tracker 3.6 and above) allow speed 2. In the Pro Tracker 3 editor itself, as well as Alco's special player, you can use speed 1. In my universal player, there was no tempo limit for ZX initially Sample The sample determines the sound of the note in time. Similar to patterns, a sample is a collection of strings with parameters. Strings are played on the interrupt frequency (about 50 Hz). In PT3, the maximum sample length is 64 lines (ticks). The sample in PT3 is always looped. In Vortex Tracker II, line numbering is done in hexadecimal format so that these numbers can be used as parameters of the Sample offset command (special command 4). Consider a single sample line. Figure 2 - The structure of the sample line 1F | tne + 000_ +00 (00) _ F_ *************** 11 234 56667 899 AA B CD EEEEEEEEEEEEEEE Column '11' is used for line numbering. Use the number in this column as a parameter of special command 4 (if necessary). Column '2' contains the tone mask. 'T' means that the tone in this line is allowed, and 't' - is prohibited. Column '3' contains a noise mask. 'N' means that noise in this line is allowed, and 'n' is prohibited. Column '4' contains an envelope mask. 'E' means that envelopes in this line are allowed, and 'e' - prohibited. Column '5' contains the sign of the deviation of the tone from the base value. Column '666' contains the deviation of the tone from the base value in hexadecimal notation. Thus, the deviation range is -FFF .. + FFF. Since the tone registers are 12-bit, Column '7' contains the sign of the accumulation of tone deviation. '^' means that accumulation is on, and '_' is off. The fields '56667' together form a single structure for managing the tone deviation. In PT3, the base tone value is set by setting a note in a pattern in one of the channels in the note table. If the accumulation in the sample is disabled, then the base value of the sample does not change, however, the base value + deviation from the '5666' field is written to the tone registers. If accumulation is enabled ('^' in column '7'), then the base value is changed to the value specified in '5666'. Changing the base value is similar to the accumulation of deviations. As an example, consider how the values of the tone registers for note C-4 are calculated (according to the plate of notes # 2, the frequency of this note is 1A2). 56667 Base Meaning Comment tonal register + 000_ 1A2 1A2 + 001_ 1A2 1A3 Base has not changed, but the frequency has become different + 000_ 1A2 1A2 Returned to what was (to the frequency of the C-4 note) + 002 ^ 1A4 1A4 Changed the frequency, simultaneously changing the base + 002 ^ 1A6 1A6 -004_ 1A6 1A2 The frequency has returned, but the base is still shifted -004 ^ 1A2 1A2 Returned the base and frequency to the initial position It is easy to notice that using the accumulation of tone (change of the base) it is possible to realize the slip of tone (gliss) using the correct looping. For example, if you loop the following line: 00 | Tne + 100 ^ +00 (00) _ F- ***************we get something like a drum (just one line of sample!). Column '8' contains the sign of the noise / envelope frequency deviation. The '99' column contains the hexadecimal deviation of the frequency of the noise / envelope from the baseline. The column 'AA' contains the absolute (unsigned) representation of the number from the column '99'. The 'B' column contains the sign of the accumulation of deviations in the frequency of the noise / envelopes (similar to the tone). The '899 AA B' fields together form a single structure for controlling the frequency deviation of the noise / envelope from the base value. If the noise mask 'N' is turned on, the frequency of the noise is adjusted, otherwise - the envelopes (even if the envelope mask is off). Control is similar to tone control. The deviation range is -10 .. + 0F. For the noise of this range is enough, but for the envelopes - not always. In the latter case, it is recommended to use 2-3 samples in different channels simultaneously (all deviations on the envelopes are summed up). When controlling noise, it is more convenient to consider the noise deviation as an absolute value. For this, the equivalent 5-bit value (00..1F) is given in parentheses (the 'AA' fields). Unfortunately, the accumulation of envelope frequency deviations in Pro Tracker 3 is made in a byte, that is, the maximum offset of the base frequency of the envelope by the sample cannot exceed -128 .. + 127. This means that it is impossible to make a full-fledged analogue of special commands 9 and A. The 'C' field contains the absolute value of the amplitude for a given sample line. The 'D' field may contain signs of increasing the volume of a sample by one ('+'), decreasing the volume by one ('-'), or a sign ('_'), which means "leave the sample's volume at the same level". The 'E' fields contain a graphical representation of the 'C' field (the number of '*' is equal to the value of the 'C' field). The value of the 'C' field minus the current volume of the sample is sent to the corresponding amplitude register AY. The current volume of the sample is relative and initially equal to +0. Commands in the 'D' column can increase or decrease the volume of the sample. A volume of -15 will eventually silence any amplitude in the 'C' column, and +15 will set the maximum amplitude regardless of the contents of the 'C' column. If you loop the next line, then after 14 interrupts the sound will disappear (something like staccato): 00 | Tne + 000_ +00 (00) _ F- *************** moreover, due to the fact that the decrease in volume starts from the first line of the sample, the first amplitude displayed on AY will be 14, not 15 (be careful). If you loop the next line, there will be a gradual increase in amplitude. For the same reason, the growth will not start from scratch, but from one: 00 | Tne + 000_ +00 (00) _ 0+ To organize a smoother attenuation, loop not one, but several lines. For example: 00 | Tne + 000_ +00 (00) _ F_ *************** 01 | Tne + 000_ +00 (00) _ F_ *************** 02 | Tne + 000_ +00 (00) _ F_ *************** 03 | Tne + 000_ +00 (00) _ F- *************** will decay four times slower than the first example. In the Vortex Tracker II, the looped part of the sample is marked with the selection color. Everything that is after the looped part of the ideology of PT3 is not a sample, so it is impossible to use a shift greater than the last tick of the sample in the team (although it is not explicitly prohibited). Be careful. Ornament. The ornament is a sequence of signed integers, each of which determines the frequency deviation of the note from the base one in semitones. Like the sample, the ornament is played at the interrupt frequency. Ornament is the only way in Pro Tracker 3 to organize a uniform (logarithmic) glide, albeit with a fairly coarse pitch (half tone). Mostly ornaments are used to imitate chords, although their main purpose corresponds to their name (musical term). A standard that you can use in Vortex Tracker II is also introduced in ProTracker 3.6x: if a note is less than C-1 after applying the ornament, it turns into C-1. That is, applying large negative deviations in the ornament (for example, -96), the note C-1 is guaranteed to be obtained, which can be used in a sample, for example, The pitch of the drum sound can be made independent of the note. The SNA + .pt3 module will help you understand the idea. Also, as in the sample, you cannot use the parameter of the special command 5 (Ornament offset) beyond the limits of the ornament body, although it does not lead to a failure. Tables of notes. Pro Tracker 3 has four tone tables. Almost all the plates are not made correctly (does not correspond to the ideal scale of 1750000 and 1773400). The label 1 (SoundTracker), traditional for the ZX Spectrum, is more or less correctly made - it is suitable for importing almost all music editors that exist on the ZX. Compared to the ideal scale for 1773400 Hz shifted almost exactly one tone down. In addition, the 24th note is false (indicated in the editor as B-2, due to a one-tone shift should sound like A-2). But, unfortunately, this is the only tablet that fits 1773400 Hz (brand Spectrum 128). The plate number 2 is almost ideal for the frequency AY 1750000 Hz, all the notes sound exactly as they appear in the editor. Unfortunately, the tables of notes of different versions of Pro Tracker 3 are quite different (especially table 2, which previously had the full right to be called ASM or PSC and was ideally suited to the frequency 1773400 Hz). Plate 1 is unique in this sense - it is the same in all versions of Pro Tracker 3. Tables 0 and 3 are not recommended. General remarks. In PT3, a not very rational method of volume control was applied: using a large plate of experimental loudness values of each of the 16 amplitudes. Firstly, musical coprocessors on different computers are connected differently, and therefore they sound differently, secondly, AY-3-8910 / 12 and YM2149F also sound differently, and thirdly, 16 levels in any case, the volume is not enough, and from these chips it is no longer to squeeze Sadly, in PT3 there is no volume level 0 (the R-- command is not always suitable for this), although in the player itself in the volume plate 16 bytes are reserved (it turns out not used) to zero volume. By the way, Alone Coder found the use of these 16 bytes;), and I also used them in my ZX player. Also, it is extremely inconvenient that all calculations in PT3 occur in units of the corresponding registers (tones and envelopes), and not in fractions of a tone. In this regard, it is impossible to organize a uniform slip, a uniform portamento, provide the same tone oscillation in a sample with any note of the range, change the plate of notes without recalculating the envelopes and parameters of slip commands, etc. For the same reason, it is a pity that notes cannot be written in the envelope track (in the PT3 format, envelopes are set simultaneously by type and period). It is extremely unpleasant that the numbers recorded in the track of the envelopes are not written directly to the registers R11R12 AY, if not in one of the channels there is no initialization command (type) of the envelope. It is also unpleasant that the type of the envelope must always be indicated when it is necessary to turn on the envelopes or to change their period, because this leads to the reinitialization of the envelope algorithm, and this is not always necessary. There are players that track the output of the same values to the R13 register and exclude reinitialization in general, but this is the other extreme, since the musician may need to reinitialize. It is sad that the portamento team is not set by the transition time to the final note, but by the speed, which affects the different alternation of patterns in which the portamento is indicated with the first note. In general, sadly, PT3 seems to be an extremely raw product, although through the efforts of third-party developers (MMCM, AlCo) he acquired a human face;) and got rid of numerous errors. Frankly, if it were not for its huge popularity, the Vortex Tracker II was not based on the PT3 format, but on the ASC, PSC or FTC (the last is the best of the above, at least in terms of format capabilities). The author of this text. All comments should be sent to Sergey Bulba at vorobey@mail.khstu.ru. 03.05.2007, SVBulba |