Every cell has an effect: a
number from 0 to F in the low half of its third byte, and an 8-bit parameter in its
fourth. Trackers write it as three hexadecimal digits, such as C20 or
A0F. The effects below are ProTracker 2.3D’s, as the ProTracker 2 clone
reproduces them; earlier programs had fewer of them, and a few behaved differently.
Ticks
Each row lasts a number of ticks, the speed, 6 unless the song sets another. Tick 0 is when the row’s notes are played. Some effects act once, on tick 0; the others act on every tick after it, ticks 1 to speed − 1, so their strength depends on the speed. At the default tempo a tick lasts 20 ms. x and y below are the parameter’s two hexadecimal digits, xx the whole byte.
The effects
| Effect | Name | What it does |
|---|---|---|
0xy | arpeggio | On every tick, cycles between the note, the note + x semitones and the note + y semitones (tick number mod 3 gives 0, 1, 2). 000 is no effect. |
1xx | slide up | On ticks 1 onwards, takes xx from the period, raising the pitch; not below 113 (B-3). |
2xx | slide down | On ticks 1 onwards, adds xx to the period; not above 856 (C-1). |
3xx | tone portamento | Slides from the current pitch towards the row’s note by xx a tick, without restarting the sample. 300 keeps the last speed. |
4xy | vibrato | Wobbles the pitch: x is the speed, y the depth. 0 in either keeps the last value. |
5xy | tone portamento and volume slide | Goes on with the last 3xx, and slides the volume as Axy. |
6xy | vibrato and volume slide | Goes on with the last 4xy, and slides the volume as Axy. |
7xy | tremolo | Like vibrato, on the volume. |
8xx | (not used) | Does nothing in ProTracker. Many PC players use it for panning. |
9xx | sample offset | Starts the sample xx × 256 bytes in. 900 uses the last value. |
Axy | volume slide | On ticks 1 onwards, raises the volume by x, or if x is 0 lowers it by y; kept within 0 to 64. |
Bxx | position jump | After this row, goes on at position xx of the order table. |
Cxx | set volume | Sets the volume to xx, 0 to 64; above 64 is taken as 64. |
Dxy | pattern break | After this row, goes on at the next position, at row x × 10 + y (the digits are read as decimal). A row above 63 means row 0. |
Exy | extended | One of the 16 extended effects, chosen by x. |
Fxx | set speed or tempo | 01 to 1F: the speed, in ticks a row. 20 to FF: the tempo, in beats a minute. F00 stops the song. |
Extended effects
| Effect | Name | What it does |
|---|---|---|
E0x | filter | Switches the Amiga’s low-pass filter (the power LED filter): x = 0 on, 1 off. |
E1x | fine slide up | Takes x from the period once, on tick 0. |
E2x | fine slide down | Adds x to the period once. |
E3x | glissando | x = 1: tone portamento moves in whole semitone steps; 0: smoothly. |
E4x | vibrato waveform | 0 sine, 1 ramp down, 2 square (3 is also square); add 4 to keep the waveform’s position when a new note starts. |
E5x | set finetune | Uses finetune x (as in the header) for this row’s note. |
E6x | pattern loop | E60 marks the start of a loop; E6x goes back to it x times. |
E7x | tremolo waveform | As E4x, for tremolo. |
E8x | (not used) | Karplus-Strong in ProTracker 1; switched off in 2.3D’s replay routine. |
E9x | retrigger | Restarts the sample every x ticks. |
EAx | fine volume up | Raises the volume by x once. |
EBx | fine volume down | Lowers the volume by x once. |
ECx | note cut | Sets the volume to 0 on tick x. |
EDx | note delay | Plays the row’s note on tick x instead of tick 0. |
EEx | pattern delay | Holds this row for x more rows’ time. Effects go on; the notes are not played again. |
EFx | invert loop | From ProTracker 1.1: inverts the bytes of the sample’s loop one at a time, at a rate set by x; it changes the sample data as it plays. In NoiseTracker this number was funk repeat. |
ProTracker’s own behaviour
Songs were written by ear against ProTracker, so a player that wants them to sound right copies its replay routine, quirks included. From the ProTracker 2 clone’s replayer:
- A sample number without a note sets that sample’s volume at once and loads its loop. The sample already playing is not restarted; the new loop takes over when it reaches its end.
- On tick 0 with a note:
E5xsets the finetune before the note is looked up;3xxand5xyset the target of the slide without restarting the sample;EDxholds the note back. 9xxis applied twice on a row with a note, once before the note is played and once after, so the stored start moves on twice; a later retrigger then starts further in. An offset at or past the end of the sample cuts it to one word.- Vibrato moves the period by (wave × depth) / 128, and tremolo the volume by (wave × depth) / 64. The sine is a table of half a wave in 32 steps, rising from 0 to 255 and back.
- The ramp waveform of tremolo looks at the vibrato’s position, not the tremolo’s: a bug in ProTracker that players keep.
- A tempo set with
F20or above takes effect one tick late. - The fine effects (
E1x,E2x,EAx,EBx) andE6xandEExact on tick 0, and act again on each repeat of a row held byEEx. - On the ticks after the first, the period is put back to the stored one for every effect except 0 to 6 and E, so a vibrato ends as soon as a row has no vibrato.
F00stops the song. Several of the files examined for this site end that way.
Which program added which effect
A module from an older program uses only the effects it knew, and later programs
play them the same way, with one exception, EFx:
| Program | Effects |
|---|---|
| D.O.C. Soundtracker 2.0 (1988) and the Soundtrackers after it | 0, 1, 2, B, C, D, E (filter), F (speed) |
| NoiseTracker 1.0 (1989) | 3 tone portamento and 4 vibrato, with speeds up to 31 |
| ProTracker 1.0 (1990) | the E commands, and tempo with F20 and above |
| ProTracker 1.0b and 1.0c (1990) | pattern loop, glissando and finetune |
| ProTracker 1.1a (1990) | EFx becomes invert loop, replacing NoiseTracker’s funk repeat |
Songs that use F with values of 32 or more were written for ProTracker’s
tempo; in a player from before it they are speeds.
StarTrekker’s modules
Modules marked FLT4 or EXO4 come from StarTrekker, whose E
commands start its own synthesised sounds and macros rather than ProTracker’s extended
effects. As OpenMPT does, the explorer leaves the E commands out of these files and
plays an Fxx above 31 as speed 31.