OpenMPT cheat sheet
Reference
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.
Techniques
Filter programming on the SID › Impulse Tracker / OpenMPT (resonant filter) #
The PC-tracker equivalent of the SID filter table is a column of Zxx macros (source: s-openmpt-manual-zxx-macros): by default Z00–Z7F set the cutoff (00 lowest … 7F highest; the top is about 5 kHz, or 10 kHz with Extended Filter Range) and Z80–Z8F the resonance; the underlying messages are F0F000xx cutoff, F0F001xx resonance, F0F00200 lowpass and F0F00210 highpass (mutually exclusive), so a fixed macro can switch filter type. Instruments carry default cutoff, resonance and (MPTM) filter mode; cutoff at maximum with resonance at minimum turns the filter off; the pitch envelope can act as a filter envelope (S7D/S7E force one or the other in MPTM); S9C makes filters stay until switched off (Impulse Tracker behaviour), S9D resets them on every note; MPTM adds cutoff and resonance swing per instrument; the filter never touches plugins (sources: s-openmpt-manual-instruments, s-openmpt-manual-effect-reference). On OPL instruments the cutoff macro scales the modulator — "effectively … a lowpass filter" (opl-fm-instruments; source: s-openmpt-manual-samples). The Amiga's only filter is the LED low-pass toggled by E0x — "connects filter (turns power LED on)" — which OpenMPT calls "muffled" and emulates only with the Amiga resampler (sources: s-protracker-23d-help, s-openmpt-manual-effect-reference).
MIDI output from trackers (Impulse Tracker macros) › OpenMPT #
The macro configuration dialog defines the sixteen parametered and 128 fixed macros; Zxx/\xx in XM, IT and MPTM execute them, and external MIDI messages go to the first plugin in the channel's chain (source: s-openmpt-manual-zxx-macros).
Multisampling and drum-kit instruments › OpenMPT #
The Sample Map lists pattern note → heard note + sample; "for drum sets, simply map all notes to C-5" instead of retuning each sample; XM lacks the note column and allows only 16 samples per instrument; Transpose Samples / Reset Map trades the map for retuned samples so IT portamento between samples behaves (source: s-openmpt-manual-instruments). For chopping one long recording into a map rather than recording separate keys, the sample editor has cue points (MPTM o0x) and slice at cues or grid (source: s-openmpt-manual-samples) — the tidy version of the offset-based approach on sample-offset.
Octave bass › Impulse Tracker / OpenMPT #
Jxy is an arpeggio over three notes — "the note playing, a note x halftones above, and a note y halftones above", an effect the manual itself compares to "old C-64 chords". So there is no single command for a strict 0 12 alternation: JCC gives 0 12 12 and J0C gives 0 0 12. For an exact 8th-note octave, type the two rows (source: s-it-manual). See effect-command-crosswalk for the same effect's number in MOD/XM (0xy).
OPL / AdLib FM instruments in trackers › OpenMPT (S3M / MPTM) #
Create the instrument from the sample tab's New-sample dropdown or Resize; the OPL editor exposes per operator: attack, decay, sustain level, release rate, Sustain Sound (hold the sustain until note-off), volume, tremolo (1 dB), envelope key scaling, key-scale level (1.5/3/6 dB per octave), frequency multiplier 0.5–15, vibrato (7 cents), and one of 8 waveforms — sine, half sine, absolute sine, pulse sine (the four the OPL2 and therefore S3M allow), plus even-period sines, square and derived square on OPL3/MPTM; a feedback amount; additive or FM mode. Pattern volume commands scale the carrier in FM mode (both operators in additive mode); filter cutoff — the instrument's filter settings, a filter envelope, or the Zxx macro F0F000xx — scales the modulator instead. Panning is left / centre / right only; Oxx, SAx, S9x and surround do nothing on OPL notes; in S3M tone portamento is not available for OPL notes (sources: s-openmpt-manual-samples, s-openmpt-manual-effect-reference, s-openmpt-manual-zxx-macros).
Sidechain pump › Impulse Tracker / OpenMPT #
Three levers, in increasing order of tidiness (source: s-it-manual):
Dxyvolume slides typed per row, the crude version (volume-slides).Mxxchannel volume (0–40h) withNxychannel volume slide — one command per channel per beat, no per-note volumes to edit, and it survives copy-paste of the notes. This is the closest thing a tracker has to a sidechain bus: putM20on the beat row andN0xafter it on every channel that should duck. S3M players only supportM/Nas an extension, so a song that needs them should stay.it.Vxxglobal volume withWxyglobal volume slide ducks everything including the kick, so it is a mastering lever rather than a pump — and IT'sVxxaffects notes already playing, unlike ST3's.
Or bake it into the instrument: a volume envelope that starts low and rises, retriggered every beat, pumps without a single command in the pattern (instrument-envelopes; source: s-037-lab). Keep the global volume high while doing any of this — at V05–V08 a volume-column fade jumps instead of sliding (source: s-it-hints).