OpenMPT
"A third-generation tracker" for Windows (runs in Wine on macOS and Linux): the open-source continuation of olivier-lapicque's ModPlug Tracker, which grew out of his mid-1990s ModPlugin browser plugin and went open source in 2004. It edits and writes MOD, S3M, XM, IT and its own MPTM, imports some fifty more formats, hosts VST/DirectX plugins and MIDI, exports WAV/FLAC/MP3, and emulates the playback quirks of protracker, fasttracker-2, scream-tracker-3 and impulse-tracker on request (sources: s-openmpt-manual-about-openmpt, s-openmpt-manual-module-formats, s-openmpt-manual-compatible-playback). Its clipboard text format (header ModPlug Tracker IT, 11-character cells, middle C = C-5, === note off) is shared with schism-tracker and duet (sources: s-037-lab, s-duet-readme); OpenMPT.org also hosts the traxweekly archive (source: s-traxweekly-archive). The manual is a wiki (CC BY-SA); eight of its chapters are summarised here.
Versions#
ModPlug Tracker alpha 5 (1998-01-13, influenced by FT 2.08 and IT 2.14p3) … 1.16 (2001-11-21, ASIO); ModPlug "Wild" 2.00 (2004-02-28, VST, 255 channels); OpenMPT 1.17RC2 (2005-08-20); 1.17.02.54 (2009, Saga Musix); 1.19 (2011) per-pattern time signatures; 1.20 (2012) rewritten resonant filter, sample tuner; 1.22 (2013) IT-compressed samples, clipboard manager; 1.23 (2014) 64-bit and plugin bridge; 1.25 (2015) decimal tempos and tempo swing; 1.26 (2016) fine-grained compatibility settings, MO3; 1.27 (2017) Amiga BLEP resampler, SFZ; 1.28 (2018-12-23) AdLib instruments in S3M and MPTM (source: s-tracker-history-notes).
Which format#
mod-format (Amiga: 4 channels, PT quirks, C-4–B-6; PC: 8 channels), s3m-format (sample tuning, volume column, OPL FM instruments), xm-format (instruments with envelopes, instrument-based panning), it-format (NNAs, filters, per-note sample transposition, channel-based panning), MPTM (IT plus tunings, parameter control, sequences, tempo swing, fractional tempo, OPL3 with envelopes). Rule from the manual: MPTM for private work, IT for sharing, MOD/XM/S3M only when the target demands them; re-open and listen to a finished MOD, because the file cannot store which quirks it needs (source: s-openmpt-manual-module-formats).
Cheat sheet#
Effect letters are uppercase + hex in the effect column, lowercase + decimal in the volume column. MOD/XM letters and S3M/IT letters are different alphabets for the same jobs — see effect-command-crosswalk (source: s-openmpt-manual-effect-reference).
IT / MPTM effect column#
| cmd | effect | cmd | effect |
|---|---|---|---|
Axx | speed (ticks per row) | Qxy | retrigger every y ticks, volume change x (see table) |
Bxx | jump to order xx | Rxy | tremolo speed x depth y |
Cxx | break to row xx of the next pattern | S1x | glissando off/on ("quirky") |
Dxy | volume slide down y / up x; DFy/DxF fine; D0F every tick | S2x | MOD finetune (legacy) |
Exx/Fxx | portamento down/up; EFx/FFx fine; EEx/FEx extra fine | S3x S4x S5x | vibrato / tremolo / panbrello waveform 0 sine, 1 saw, 2 square, 3 random |
Gxx | tone portamento (linear: xx/16 semitone per tick) | S6x | extend the row by x ticks |
Hxy / Uxy | vibrato / fine vibrato (shared memory) | S70 S71 S72 | past notes: cut / off / fade |
Ixy | tremor on x off y ticks | S73–S76 | NNA of this note: cut / continue / off / fade |
Jxy | arpeggio +x, +y | S77–S7C | volume / pan / pitch envelope off, on (MPTM S7D/S7E: force pitch / filter) |
Kxy / Lxy | volume slide + vibrato / + tone portamento | S8x | coarse pan 0–F |
Mxx / Nxy | channel volume / slide | S91 | surround (other S9x: filters S9C global / S9D local, play direction S9E/S9F — MPTM) |
Oxx | sample offset × 256 (SAx adds x × 65536) | SB0 / SBx | loop start / loop x times |
Pxy | pan slide right y / left x; PFy/PxF fine | SCx / SDx | note cut / note delay after x ticks (0 = 1) |
Txx | tempo ≥ 20; T0x/T1x slide down/up per tick | SEx | repeat the row x times |
Vxx / Wxy | global volume 00–80 / slide | SFx | select parametered macro |
Xxx | pan 00–FF | Yxy | panbrello |
Zxx / \xx | MIDI macro / smoothed (\ is a hack) | MPTM: :xy | delay x ticks then cut after y; #xx extends the previous B/C/O/T/+; +xx/*xx finetune |
Retrigger x: 1–5 −1, −2, −4, −8, −16 · 6 ×⅔ · 7 ×½ · 9–D +1 … +16 · E ×1.5 · F ×2. Memory: 00 recalls the same command's last value in IT; in S3M most commands share one memory.
Volume column (decimal)#
IT/MPTM: vxx volume, pxx pan 0–64, a0x/b0x fine volume up/down, c0x/d0x slide up/down, e0x/f0x portamento down/up (×4), g0x tone portamento (g01=G01, g02=G04, g03=G08, g04=G10, g05=G20, g06=G40, g07=G60, g08=G80, g09=GFF), h0x vibrato depth, MPTM o0x cue point. XM: vxx, pxx (16 positions), axx/bxx fine, cxx/dxx slide, gxx tone portamento (= 3xx × 16), hxx vibrato depth, uxx vibrato speed only, lxx/rxx pan slide. MOD has no volume column.
Song properties and tempo#
Linear frequency slides (1/16 semitone units; off in MOD/S3M) · Fast Volume Slides (S3M 3.00) · Extended Filter Range (130 Hz–5 kHz → 10 kHz) · IT Old Effects · Compatible Gxx (own portamento memory, envelopes reset) · ProTracker 1/2 mode and Amiga Frequency Limits for MOD · mix levels (Compatible for shared IT/XM/MOD/S3M, identical to Schism's; 1.17RC3 with plugins). Tempo modes: Classic — rows per minute = tempo × 24 ÷ speed, tick = 2.5 s ÷ tempo; Alternative — tempo in ticks per second; Modern (MPTM) — tempo = real BPM, rows per minute = tempo × rows per beat, speed no longer changes the pace; Tempo Swing per beat row, globally or per pattern (source: s-openmpt-manual-song-properties).
Instruments and samples#
Instruments: sample map (drum kits: map every note to C-5), global volume, fade out (32768 ÷ value ticks), pan, pitch/pan separation, filter cutoff/resonance (max cutoff + min resonance = off), volume/pan/cutoff/resonance swing, NNA cut/continue/off/fade with duplicate checks, envelopes in ticks with loop, sustain loop, carry and release node, plugin MIDI channel and pitch-bend range (source: s-openmpt-manual-instruments). Samples: C-5 frequency (IT/S3M) or finetune (MOD 1/8, XM 1/128 semitone), loops off/on/bidi plus sustain loops, auto-vibrato (depth in 1/64 semitone, sweep, rate 256 ÷ rate ticks), draw mode and resize for chip waves, crossfade, trim, time-stretch, OPL editor for S3M/MPTM (opl-fm-instruments) (source: s-openmpt-manual-samples).
Filter and macros#
Z00–Z7F cutoff, Z80–Z8F resonance (defaults); macro messages F0F000xx cutoff, F0F001xx resonance, F0F00200 lowpass, F0F00210 highpass, F0F003xx plugin dry/wet; SFx switches the channel's parametered macro; S9C/S9D global/local filter mode (filter-programming; source: s-openmpt-manual-zxx-macros).
The clipboard text format#
The pattern-clipboard text, pinned precisely by duet's docs (source: s-duet-docs-clipboard):
- Header line: any line whose last three characters are
IT— OpenMPT writesModPlug Tracker IT(two spaces beforeIT); schism-tracker writesPasted Pattern - IT.S3MandMPTheaders read the same way;XM/MODblocks read too, but their effect letters are another alphabet. - One line per row; each channel is
|plus exactly 11 characters in four fields: NOTE(3) —C-5/C#5(sharps only;Db5reads asC#5),...empty,===off,^^^cut,~~~fade; INS(2) — decimal01–99; VOL(3) — a letter and two decimal digits (v64,p32,a/bfine volume,c/dslide,e/fportamento,gtone portamento,hvibrato); FX(3) — the effect letterA–Zand two hex digits. - Rows end in
\r\n; spaces read like dots. A field the mark did not reach is spelled as spaces (a volume-only mark copies| v40) and honoured on paste. OpenMPT and Schism are strict about the widths; duet forgives short cells, ragged rows and lowercase.
Compatible playback#
For IT and XM meant to be shared, press Set Defaults and judge by Impulse Tracker / Fasttracker 2 (or XMPlay); Fasttracker 2's routine is "very quirky", Impulse Tracker's "relatively bug-free and logical". The quirk list — FT2 arpeggios backwards, E60 loops, period wrap-around, IT's silent-loop rule for retriggered hi-hats, ST3's global effect memory, ProTracker one-shot loops and VBlank timing — is on the tool and format pages (source: s-openmpt-manual-compatible-playback).
ModPlug in the scene's sources (1998)#
The one contemporary mention of ModPlug in the traxweekly archive: in February 1998 mental-floss, who played tracked music live and found that "tracking programs don't cue well", had asked ModPlug's author (olivierl@jps.net — olivier-lapicque) for "Denon-CD player style mixing controls", cueing and mixing in a player program; the answer was that "the tracker program is a priority" (source: s-tw119-interview-mental-floss; see live-tracking). ModPlug Tracker alpha 5 had appeared on 1998-01-13 (source: s-tracker-history-notes).
Related#
impulse-tracker · schism-tracker · fasttracker-2 · scream-tracker-3 · protracker · it-format · xm-format · s3m-format · mod-format · effect-command-crosswalk · tracker · duet · 037-lab · traxweekly · olivier-lapicque · live-tracking
Sources#
s-openmpt-manual-about-openmpt · s-openmpt-manual-module-formats · s-openmpt-manual-effect-reference · s-openmpt-manual-compatible-playback · s-openmpt-manual-zxx-macros · s-openmpt-manual-instruments · s-openmpt-manual-samples · s-openmpt-manual-song-properties · s-tracker-history-notes · s-schism-tracker-wiki · s-037-lab · s-traxweekly-archive · s-duet-readme · s-tw119-interview-mental-floss · s-duet-docs-clipboard