XM module format (.xm)

fasttracker-2's format (November 1994): the mod-format effect alphabet plus a few letters of its own, and — the point of it — instruments: volume and panning envelopes over samples, several samples per instrument, auto-vibrato, and instrument-based panning (an instrument number resets the channel's pan to the sample's default) (sources: s-openmpt-manual-module-formats, s-tracker-history-notes).

What an XM holds#

  • Up to 32 channels in FT2; initial tempo and speed; pattern length up to $100 rows (source: s-ft2-manual).
  • An instrument = volume envelope, panning envelope, auto-vibrato (waveform, depth, sweep in ticks, rate), 1–16 samples, a keyboard split, a MIDI definition; each sample carries volume, panning, finetune (a signed byte, −128…+127, in 1/128-semitone units, audible in steps of 8), a relative tone and 8- or 16-bit data with a forward or ping-pong loop. Envelopes are drawn in ticks with a sustain point and loop; a fadeout follows key-off (sources: s-ft2-manual, s-openmpt-manual-samples, s-openmpt-manual-compatible-playback).
  • Linear or Amiga frequency table per song; MOD export requires the Amiga table and no envelopes (source: s-ft2-manual).
  • No New Note Actions, no sample map note column, no channel-based panning ("every sample is forced to have a default panning") (sources: s-openmpt-manual-instruments, s-openmpt-manual-samples).

Effects#

MOD's 0F and E0EF plus Gxx/Hxy global volume, Kxx key off, Lxx envelope position, Pxy pan slide, Rxy multi-retrigger, Txy tremor, X1x/X2x extra-fine portamento, and a volume column (v, a/b, c/d, g, h, l/r, p, u); anything else OpenMPT can write into an XM (X5x+, Yxy, Zxx, EFx macro select) is "a ModPlug hack" (effect-command-crosswalk; source: s-openmpt-manual-effect-reference).

Quirks#

Fasttracker 2's playback "makes even common pattern effects … behave totally unpredictable", so players emulate it: arpeggio runs backwards, Rxy and Txy are erratic, uxx sets vibrato speed without vibrating, a tone-portamento note with nothing playing stays silent, E60 makes the next pattern start at the loop row (end the pattern with D00), period slides wrap to a very high note, instruments without a volume envelope mute instantly on key-off, the ramp-down tremolo is broken, smooth volume ramping softens drum attacks, 1xx and 2xx keep separate memories (source: s-openmpt-manual-compatible-playback).

In the scene (1995–97)#

fasttracker-2 · mod-format · it-format · s3m-format · instrument-envelopes · multisampling · openmpt · effect-command-crosswalk · compos · traxweekly

Sources#

s-ft2-manual · s-openmpt-manual-module-formats · s-openmpt-manual-effect-reference · s-openmpt-manual-compatible-playback · s-openmpt-manual-instruments · s-openmpt-manual-samples · s-tracker-history-notes · s-tw022-interview-jase · s-tw016-interview-populus · s-tw042-interview-balrog · s-tw060-interview-rage · s-tw111-interview-khyron · s-tw067-interview-u4ia · s-tw090-interview-cosmic · s-tw054-interview-scirocco · s-tw062-interview-vegas · s-tw040-interview-zalt

source file wiki/entities/xm-format.md · graph