OpenMPT cheat sheet

From OpenMPT · print · built 2026-08-31

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#

cmdeffectcmdeffect
Axxspeed (ticks per row)Qxyretrigger every y ticks, volume change x (see table)
Bxxjump to order xxRxytremolo speed x depth y
Cxxbreak to row xx of the next patternS1xglissando off/on ("quirky")
Dxyvolume slide down y / up x; DFy/DxF fine; D0F every tickS2xMOD finetune (legacy)
Exx/Fxxportamento down/up; EFx/FFx fine; EEx/FEx extra fineS3x S4x S5xvibrato / tremolo / panbrello waveform 0 sine, 1 saw, 2 square, 3 random
Gxxtone portamento (linear: xx/16 semitone per tick)S6xextend the row by x ticks
Hxy / Uxyvibrato / fine vibrato (shared memory)S70 S71 S72past notes: cut / off / fade
Ixytremor on x off y ticksS73S76NNA of this note: cut / continue / off / fade
Jxyarpeggio +x, +yS77S7Cvolume / pan / pitch envelope off, on (MPTM S7D/S7E: force pitch / filter)
Kxy / Lxyvolume slide + vibrato / + tone portamentoS8xcoarse pan 0–F
Mxx / Nxychannel volume / slideS91surround (other S9x: filters S9C global / S9D local, play direction S9E/S9F — MPTM)
Oxxsample offset × 256 (SAx adds x × 65536)SB0 / SBxloop start / loop x times
Pxypan slide right y / left x; PFy/PxF fineSCx / SDxnote cut / note delay after x ticks (0 = 1)
Txxtempo ≥ 20; T0x/T1x slide down/up per tickSExrepeat the row x times
Vxx / Wxyglobal volume 00–80 / slideSFxselect parametered macro
Xxxpan 00–FFYxypanbrello
Zxx / \xxMIDI macro / smoothed (\ is a hack)MPTM: :xydelay x ticks then cut after y; #xx extends the previous B/C/O/T/+; +xx/*xx finetune

Retrigger x: 15 −1, −2, −4, −8, −16 · 6 ×⅔ · 7 ×½ · 9D +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#

Z00Z7F cutoff, Z80Z8F 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 writes ModPlug Tracker IT (two spaces before IT); schism-tracker writes Pasted Pattern - IT. S3M and MPT headers read the same way; XM/MOD blocks 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; Db5 reads as C#5), ... empty, === off, ^^^ cut, ~~~ fade; INS(2) — decimal 0199; VOL(3) — a letter and two decimal digits (v64, p32, a/b fine volume, c/d slide, e/f portamento, g tone portamento, h vibrato); FX(3) — the effect letter AZ and 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 Z00Z7F set the cutoff (00 lowest … 7F highest; the top is about 5 kHz, or 10 kHz with Extended Filter Range) and Z80Z8F 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):

  • Dxy volume slides typed per row, the crude version (volume-slides).
  • Mxx channel volume (0–40h) with Nxy channel 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: put M20 on the beat row and N0x after it on every channel that should duck. S3M players only support M/N as an extension, so a song that needs them should stay .it.
  • Vxx global volume with Wxy global volume slide ducks everything including the kick, so it is a mastering lever rather than a pump — and IT's Vxx affects 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 V05V08 a volume-column fade jumps instead of sliding (source: s-it-hints).