Effect command crosswalk (MOD / XM ↔ S3M / IT)
The PC and Amiga trackers use two alphabets for the same jobs: protracker's numbers 0–F (kept by fasttracker-2's xm-format, which adds letters) and scream-tracker-3's letters A–Z (kept and extended by impulse-tracker and openmpt). Necros opened his 1995 tips column with a five-line chart — ST3 Axx/Txx = FT Fxx, Gxx = 3xx, Hxx = 4xx, Dxx = Axx, Oxx = 9xx — "since that seems to be the most popular tracker at the moment" (source: s-tw012-advanced-tracking-tips), and Greg Heo gave 4xy/3xx as the ProTracker versions of IT's Hxy/Gxx in 1997 (source: s-tw074-intro-to-musical-theory); this table does it for every command, from OpenMPT's effect reference and the four manuals (sources: s-openmpt-manual-effect-reference, s-protracker-23d-help, s-ft2-manual, s-st3-manual, s-it-manual).
Parameters are hexadecimal in the effect column everywhere; volume-column values are decimal in IT/OpenMPT. "—" = not in that format.
| job | MOD (ProTracker) | XM (FT2) | S3M (ST3) | IT / MPTM |
|---|---|---|---|---|
| arpeggio | 0xy | 0xy | Jxy | Jxy |
| pitch slide up / down | 1xx / 2xx | 1xx / 2xx | Fxx / Exx | Fxx / Exx |
| fine slide up / down | E1x / E2x | E1x / E2x | FFx / EFx | FFx / EFx |
| extra-fine slide up / down | — | X1x / X2x | FEx / EEx | FEx / EEx |
| tone portamento | 3xx | 3xx (vol col Mx) | Gxx | Gxx (vol col g0x) |
| glissando on / off | E31 / E30 | E31 / E30 | S11 / S10 | S11 / S10 |
| vibrato | 4xy | 4xy (vol col Vx, speed Sx) | Hxy; fine Uxy | Hxy; fine Uxy (vol col h0x) |
| vibrato waveform | E4x | E4x | S3x | S3x |
| tremolo / waveform | 7xy / E7x | 7xy / E7x | Rxy / S4x | Rxy / S4x |
| portamento + volume slide | 5xy | 5xy | Lxy | Lxy |
| vibrato + volume slide | 6xy | 6xy | Kxy | Kxy |
| tremor | — | Txy | Ixy | Ixy |
| volume | Cxx | Cxx (vol col 00–40) | volume column 0–64 | vol col vxx |
| volume slide | Axy | Axy (vol col +x/-x) | Dxy | Dxy (vol col c0x/d0x) |
| fine volume up / down | EAx / EBx | EAx / EBx (vol col Ux/Dx) | DxF / DFy | DxF / DFy (vol col a0x/b0x) |
| channel volume / slide | — | — | — (Mxx/Nxy are extensions) | Mxx / Nxy |
| global volume / slide | — | Gxx / Hxy | Vxx (00–40) | Vxx (00–80) / Wxy |
| panning | (8xx, E8x unused) | 8xx; vol col Px | S8x (0–F, GUS) | Xxx (00–FF), S8x; vol col pxx |
| panning slide | — | Pxy (vol col Rx/Lx) | — (Pxy extension) | Pxy |
| panbrello | — | — | — (Yxy extension) | Yxy / waveform S5x |
| surround | — | — | XA4 (extension) | S91 |
| sample offset | 9xx | 9xx | Oxx | Oxx; high byte SAx; MPTM #xx, o0x |
| retrigger | E9x | E9x; Rxy with volume | Qxy | Qxy |
| note cut / delay | ECx / EDx | ECx / EDx | SCx / SDx | SCx / SDx; MPTM :xy |
| key off | — | Kxx (and the key-off note) | key-off note (AdLib) | === note off, ^^^ note cut |
| pattern delay (rows) | EEx | EEx | SEx | SEx |
| fine pattern delay (ticks) | — | (X6x hack) | (S6x extension) | S6x |
| pattern loop | E60 / E6x | E60 / E6x | SB0 / SBx | SB0 / SBx |
| position jump | Bxx | Bxx | Bxx | Bxx |
| pattern break | Dxx (row decimal) | Dxx (row hex) | Cxx (row decimal) | Cxx (row hex) |
| speed | Fxx < 20 | Fxx < 20 | Axx | Axx |
| tempo | Fxx ≥ 20 | Fxx ≥ 20 | Txx | Txx; slide T0x / T1x |
| finetune | E5x | E5x | S2x | S2x; MPTM +xx |
| Amiga filter | E0x | (E0x unimplemented) | (S0x unimplemented) | — |
| invert loop / funk repeat | EFx | — | (SFx unimplemented) | SFx = macro select |
| envelope position | — | Lxx | — | — |
| NNA / past notes / envelopes | — | — | — | S70–S7C |
| filter / MIDI macro | — | (Zxx hack) | (Zxx extension) | Zxx |
Reading the table#
- Where MOD/XM think in periods, S3M/IT slides use the same numbers but ST3's period unit is a quarter of the Amiga's, and IT/OpenMPT optionally use linear units (1/16 semitone per unit, 1/64 extra-fine) — a
1xx/Fxxvalue does not mean the same interval across formats (pitch-slide-and-portamento). - Volume slides scale with speed in every format (per tick except the first); ST3 3.00 and IT's
D0F/DF0slide on every tick (volume-slides). - Effect memory differs: IT recalls per command with
00, S3M recalls the last parameter of almost any command, MOD/XM only for3,4,7,9and (XM) most others; XM has no volume-column memory. - Row numbers in pattern breaks are decimal in ProTracker and ST3, hexadecimal in FT2 and IT — the classic conversion mistake.
Related#
tracker · protracker · fasttracker-2 · scream-tracker-3 · impulse-tracker · openmpt · mod-format · xm-format · s3m-format · it-format
Sources#
s-openmpt-manual-effect-reference · s-protracker-23d-help · s-ft2-manual · s-st3-manual · s-it-manual · s-tw074-intro-to-musical-theory · s-tw012-advanced-tracking-tips