TW #98 — Impulse Tracker MIDI (Airon)

author Airon / Phase^D (Tony)
date 1997-05-16
article #98 5. Impulse Tracker MIDI
created 2026-08-30 · updated 2026-08-30

Airon's guide to IT's MIDI output: what the tracker sends, which controllers matter, and how to write them as Zxx/SFx macros.

Key claims#

  • Note-off timing: with a sample instrument's NNA set to note fade and a volume fade-out around 120, IT sent MIDI NOTE OFF late (the synth's activity LED showed it); NNA note cut and fade-out 0 fixed it. The rule: NOTE OFF goes out when the note's tracker volume reaches zero, so the volume fade-out value is a legato control — larger fade = notes overlap less, zero = no legato; for legato use NNA note fade. A note cut (^^^) sends NOTE OFF instantly. Most synths let the same note retrigger without killing the previous one.
  • Velocity vs volume: IT's volume column becomes the NOTE ON velocity (how hard a key is hit — changes timbre, e.g. a brighter hard-hit piano). MIDI volume is controller 07 (level without changing character, "the distance to the listener"); he could not make IT's own volume line in MIDI Output Config behave and writes an SFx macro Bc 07 z instead.
  • Controllers (all hex; c = MIDI channel, z = 0–7F): modulation Bc 01 z (usually vibrato depth only, unlike tracker vibrato which sets speed and depth); pan Bc 0A z (0 left, 40 centre, 7F right; relative on his synth; balance is 08); bank select Bc 00 a Bc 20 b (MSB/LSB); program change Cc pp; general-purpose effects 5B (reverb) and 5D (chorus) on some synths; breath 0B, sostenuto 42 (0–3F off, 40–7F on), soft pedal 43. Each synth's MIDI implementation chart says what it accepts.
  • Macros in IT: Z80ZFF are static macros for fixed messages — bank select, hold pedal on/off, sysex, GM mode, patch/performance mode; SF0SFF select parametered macros whose data byte comes from Z00Z7F — modulation, expression, breath, volume, pan, or several at once.
  • MIDI is a 31.5 kbps serial protocol: chords, drums and controllers on the same tick are sent one after another, left-most tracker channel first, so put drums and rhythm parts in the left channels and "don't go wild" with controllers (Doom's E1M2 as a bandwidth horror story; multi-port interfaces are the pro fix, not available to a DOS program).
  • Postscript: "anyone caught with a pirated stereo WAV driver for IT is on my very personal shit list … Where's your donation?"

Practical takeaways#

For MIDI instruments: NNA note cut + fade 0 for tight timing, note fade + a small fade-out for legato; volume column = velocity; SFx + Zxx for controllers, Z80+ for fixed messages; drums in the left-most channels.

Notable quotes#

  • "MIDI is a serial protocol so don't go wild!"

Relevance#

The only hands-on MIDI-output source in the wiki; it explains the macro system that openmpt later reuses for its filter (s-openmpt-manual-zxx-macros) and shows a side effect of new-note-actions.

Pages touched#

midi-in-trackers, impulse-tracker, new-note-actions, vibrato, stereo-panning.

source file wiki/summaries/s-tw098-impulse-tracker-midi.md · graph