OpenMPT manual — Zxx Macros
How the Zxx (and smooth \xx) commands drive openmpt's built-in resonant filter, plugin parameters and external MIDI — the PC tracker's equivalent of a SID filter table (filter-programming).
Key claims#
- Macros are MIDI messages executed by
Zxx/\xxin XM, IT and MPTM; configured in the Macro Configuration dialog; several messages can be chained (Bc0Az Bc0Bz), and 5-nibble messages must be padded when followed by another. - Parametered macros: 16 of them, one active per channel, driven by
Z00–Z7F; switched withSFx(IT) orEFx(XM). Fixed macros: 128,Z80–ZFF; by defaultZ80–Z8Fset the filter resonance andZ90–ZFFdo nothing, but each can carry any message — lowpass on, highpass on, plugin dry/wet 0 % or 100 %, several parameters at once. - Resonant filter messages:
F0 F0 00 xxcutoff (00lowest …7Fhighest; the top depends on Extended Filter Range; for OPL instruments it sets modulator intensity, "effectively … a lowpass filter"),F0 F0 01 xxresonance,F0 F0 02 00lowpass,F0 F0 02 10highpass (mutually exclusive). The default parametered macro is cutoff, the default fixed macros resonance; per-instrument filter settings exist too. Macros apply to the next sample unless the instrument overrides them; with Local Filters (S9D) the filter resets on every note; cutoff7F+ resonance00disables it. The filter affects samples only, never plugins. - Plugin dry/wet
F0 F0 03 xx; plugin parametersF0 F0 (80+n) yy(first 128 parameters) andF0 F1 …(128–383), coarse; MPTM's Parameter Control Events are finer. External messages (CCs, aftertouch, notes) go to the first plugin in the chain;\xxinterpolates only from the previousZxx/\xxon the channel.
Practical takeaways#
Z00–Z7F = filter cutoff sweep, Z80–Z8F = resonance, SFx picks which parametered macro a channel uses; a filter "table" in IT/OpenMPT is a column of Zxx values — a chip-style sweep costs one command per row.
Notable quotes#
"By default, The macros Z80 through Z8F control the resonant filter′s resonance amount and Z90 through ZFF do nothing."