Impulse Tracker cheat sheet

From Impulse Tracker · print · built 2026-08-31

Reference

Limits and formats#

99 samples, 99 instruments, 200 patterns of 32–200 rows, 256 orders, 64 channels plus up to 256 virtual channels; samples 8/16-bit to ~4 MB with forward, ping-pong and sustain loops. Loads MOD, 669, MTM, S3M, XM, IT; saves IT and S3M (with restrictions — see it-format); imports WAV, S3I, IFF, ITS, RAW, GUS PAT, Kurzweil KRZ and samples/instruments out of other modules. A GUS plays 32 channels, an AWE32 30; software mixing on a SB16 does all 64 (source: s-it-manual).

Screens and keys#

keyscreen
F1help (also context help for the pattern editor, sample/instrument lists, info page)
F2pattern editor (F2 again: pattern config — rows, base octave, skip value, highlights)
F3 / F4sample list / instrument list (Ctrl-F3 / Ctrl-F4: sample / instrument library)
F5 / F8play / stop; F6 play pattern, Ctrl-F6 from the current row, F7 from the Ctrl-F7 mark
F9 / F10load / save (Delete removes files)
F11order list, initial channel pan (Space mutes, S surround) and — F11 again — channel volumes
F12song variables: tempo, speed, global/mix volume, separation, Old Effects, Control: Samples / Instruments, mono/stereo, Amiga/Linear slides
F5+info pagePgUp/PgDn views, Insert/Delete windows, s solo, q toggle, Alt-R swap L/R; columns Frequency, Position, Smp, FVl, CV, SV, VE, Fde, Pn, PE, NNA, Tot (virtual channels)

Pattern editor#

A row is note · instrument · volume/pan · effect: C-5 01 23 A02. Notes C-0B-9, middle C is C-5 (one octave up from 037-lab's C-4; source: s-037-lab); two keyboard rows give two octaves above the base octave (/ *). 1 enters note cut ^^^, ` note off === (releases sustain loops). The volume column (0–64, linear — one note at 64 is as loud as four at 10+30+20+4) toggles to pan (0 left, 64 right) with `; from 2.08 it also takes Ax/Bx fine volume up/down, Cx/Dx volume slides, Ex/Fx pitch slides, Gx portamento and Hx vibrato. To get volume and pan and an effect on one note, set the channel volume with Mxx on the row before. Only the effect column is hexadecimal (source: s-it-manual).

Effect memory: a 00 parameter repeats the last value; these groups share one memory: (D/K/L), (E/F/G), (H/U), and I J N O S T W each their own. Use it — D10, D00, D00; G03, G00; Q43, Q00 — for smaller files and faster typing, "especially important for chip songs" (sources: s-it-manual, s-tw058-the-finishing-touches).

Effects#

cmdeffectcmdeffect
Axxspeed = frames per row (default 06; ~50 frames/s)Qxyretrigger every y frames, volume change x (0 none, 1–5 −1/−2/−4/−8/−16, 6 ×⅔, 7 ×½, 9–D +1/+2/+4/+8/+16, E ×1½, F ×2)
Bxxjump to order xxRxytremolo (speed, depth)
Cxxbreak to row xx (hex) of the next patternS3x S4x S5xvibrato / tremolo / panbrello waveform: 0 sine, 1 square, 2 ramp down, 3 random
Dxyvolume slide: D0y down, Dx0 up, per frame (y × (speed−1) per row); DFx/DxF fine; D0F/DF0 every frame (S3M)S6xpattern delay x ticks
Exx / Fxxpitch slide down / up (values to DF); EFx/FFx fine, EEx/FEx extra fine (¼)S70 S71 S72past-note cut / off / fade (instrument mode)
Gxxportamento to note (may switch sample, which restarts)S73S76NNA for this note: cut / continue / note off / note fade
Hxyvibrato speed x depth y (per-tick, "two times finer" than ST3)S77 / S78volume envelope off / on
Ixytremor on x / off y framesS8xpan 0–F (obsolete, use Xxx)
Jxyarpeggio +x, +y semitones — "similar to old C-64 chords" (J47 major)S91surround
Kxy / Lxyvibrato + volume slide / portamento + volume slideSAyhigh byte for Oxx
Mxxchannel volume 0040 ("convenient for making echoes")SB0 / SBxloop point / loop x times (per channel)
Nxychannel volume slideSCxnote cut after x frames
Oxxsample offset to the xx00-th sample (SAy extends)SDxnote delay x frames
Pxypan slide (P0x right, Px0 left)SExpattern delay x rows
Txxtempo 20FF (frames/s = 0.4 × tempo; 125 → 50); T0x/T1x slideVxx / Wxyglobal volume 0080 (affects playing notes) / slide
Uxyfine vibrato (¼ depth)Xxx / Yxypan 00FF (= volume-column pan × 4) / panbrello (speed, depth; random waveform: speed = delay)

(sources: s-it-manual, s-tw106-a-little-panning, s-tw058-the-finishing-touches, s-ittech)

Editing and block keys#

Ctrl-Backspace ten-level undo · Space re-enter previous data · 4/8 play note/row · Alt-0…9 skip value (0 = jump to the next channel, for chords; Alt-N multichannel) · Alt-B/Alt-E mark, Alt-L column (×2 pattern), Alt-D by highlight · Alt-C copy, Alt-P paste, Alt-O overwrite, Alt-M mix, Alt-Z cut, Alt-Y swap, Alt-U unmark · Alt-Q/Alt-A transpose ± semitone · Alt-F/Alt-G double/halve block length · Alt-J amplify volumes 0–200 %, Alt-K slide volumes between block ends (×2 clear), Alt-X slide effect values (×2 erase), Alt-S set instrument, Alt-V/Alt-W set volumes / remove volumes without notes · Alt-I templates: copy a block, switch to Template: Overwrite, and every note you type stamps the block transposed — sequences of effects, octaves, sample pairs, stereo pairs (C-4 01 X30 | C-5 01 XC0), open fifths · Alt-T track views, Alt-H no divisions (36 channels on screen) · Alt-F10 solo (sources: s-it-manual, s-tw081-it-tip-of-the-week).

Samples#

Each sample has a default volume, a global volume (scales every use; the right way to attenuate 8-bit samples), vibrato (speed 0–64, best ~24–48; depth; rate = how fast it sets in; waveform), loop and sustain loop (looped only until note off, then the tail plays — "fingers lifting off guitar strings"; keep it < 1/20 s) and the C-5 frequency (Alt-± octave, Ctrl-± semitone). Functions: Alt-O rip from a module, Alt-A signed/unsigned, Alt-Q 8/16-bit, Alt-B/Alt-L cut before/after loop (also click removal), Alt-G reverse, Alt-E/Alt-F resize with/without interpolation (Graham: ±1 sample as a crude low-pass), Alt-M amplify (default = maximum without clipping), Alt-H centre, Alt-X/Alt-S swap. Load one channel of a stereo WAV by halving with Ctrl-F; render new samples with the WAV-writer driver (/S20) (sources: s-it-manual, s-it-hints, s-tw086-wrecking-samples-with-impulse-tracker, s-tw081-it-tip-of-the-week). See chip-samples, sample-looping.

Instruments#

Turn on Control: Instruments in F12. An instrument = a note translation table (each note → sample + note: drum kits, multisampling), a fadeout, three 25-node envelopes (volume, pan, pitch — the last can act as a filter envelope in later versions) with loops and sustain loops (instrument-envelopes), a New Note Action — cut, continue, note off, note fade (new-note-actions), duplicate check type/action, pitch-pan separation, default pan, volume swing (random volume variation) and a panning-swing field, and MIDI settings. Instruments are cheap: make several per sample for different articulations (Pulse). "Update Pattern Data" converts sample-per-drum patterns to a kit instrument. Warning: NNA fade with fadeout 0, or continue on a looped sample, can hang the machine (sources: s-it-manual, s-ittech, s-it-hints).

Song variables that change the sound#

Separation 128 for speakers side by side, 80 far apart, ~40 for headphones; Old Effects = ST3 vibrato (double depth, per non-row tick) and offset-past-end behaviour; Linear slides make F08 at speed 5 always a whole tone and keep intervals between sliding notes constant; global volume 0–80h — keep it high for headroom and smooth fades (Nacho); mixing volume for software mixers (sources: s-it-manual, s-it-hints).

Pulse on IT, in TraxWeekly (1997)#

jeffrey-lim in #98 and #100 (sources: s-tw098-impulse-tracker-investment, s-tw100-tracking-on-impulse): IT "was created because I track … not because Necros wanted a ST3 interface with more advanced features", and released "without any shareware or crippleware restrictions" out of pride — "Impulse Tracker is my work of art"; "easily over 1500 hours, probably closer to 2000" of work; no price tags or nag screens, donations of any size welcome, but the stereo ITWAV.DRV (noiseless WAV rendering for CD burning) was a US$30 extra for non-profit use and was being pirated; contemporaries he names: PolyTracker and Imago Orpheus. In May 1997 he announced that IT213 would be "the very final public release" with new features, bug fixes and drivers only afterwards — 2.14 nevertheless followed on 1997-09-02 as "the FINAL public release" with on-the-fly sample compression (source: s-tracker-history-notes); an IT213 preview fixed IT212's EMS stability problems. Asked for his own Interwave driver source, he instead defended Triton against users demanding Interwave support in FT2: make it worth their while or don't demand.

MIDI, stereo samples and sound cards#

  • MIDI output: instruments can drive a synthesizer; controllers go through macros — Z80ZFF static messages, SF0SFF parametered templates fed by Z00Z7F — the volume column is sent as velocity, and NOTE OFF leaves when the note's volume reaches zero, so NNA and fade-out settings decide the timing (midi-in-trackers; source: s-tw098-impulse-tracker-midi).
  • Stereo samples: IT loads a stereo file as two mono samples — it asks for LEFT or RIGHT — which Zinc pans hard apart and plays on two channels for true-stereo kicks and bass; "the only tracker I know of that can load stereo samples" (1997) (source: s-tw094-stereo-samples-in-impulse-tracker). The WAV driver also renders a one-pattern drum loop into an original breakbeat at the song's tempo (source: s-tw096-studio-tracking-tips).
  • Sound cards: the documentation's reason for autodetecting the SB16 first — software mixing "can support 64 channels at 45454Hz" while "the most the GUS can support is 32 channels at 19kHz" — compares CPU mixing with the GUS's hardware voices, as Random pointed out in 1996 (source: s-tw044-impulse-tracker-trivia); the manual's own figures are GUS 32 channels, AWE32 30, SB16 software mixing 64 (source: s-it-manual).

In the scene's words (1996–97)#

skaven in 1997: "All praise to Pulse. It is practically Scream Tracker 4, and lots more. It does certain things no other tracker at the moment can" (source: s-tw109-interview-skaven). catspaw was wary of the IT format at first because no player existed, and suggested to Pulse a command-line play switch — Pulse was already writing a player (source: s-tw057-interview-catspaw). A 1997 beginner chose IT for its higher order and channel limits — "it gives me a feeling of power" — while ST3 remained the entry tracker (source: s-tw105-newbie-interviews); the #trax joke prize of December 1996 was "a year's supply of IT bugfixes" (source: s-tw080-trax-mass-interview). Maz dates IT's NNAs as the scene's "revolutionary" moment of 1996; a Canberra duo signed to a dance label worked in IT on an AWE64 Gold; and Behemoth's image of live-tracking is hitting F5 and waiting (source: s-tw114-commercial-tracking-debate; see commercial-tracking).

The interviews, 1996–98. fisherman (May 1996) called IT "a new hybrid of a pear and an apple — so new to the market, it is taking everyone by surprise" (source: s-tw060-interview-fisherman). clef (April 1996), an ST3 user's upgrade path: "just like ST3 but better… It also plays better on my SB16" (source: s-tw055-interview-clef); vadimvs used "itracker" sometimes beside ST3 (source: s-tw050-interview-vadimvs). The format lagged the program: vegas (June 1996) used IT but saved as .s3m "until .IT's are supported by a couple popular players", saw no FT2 advantage "other than interface preference. 32 channels or 64, whats the difference", and had heard the claim that NNAs "reduce GUS sound quality" but could not judge it on his Pro Audio Spectrum 16 (source: s-tw062-interview-vegas; see new-note-actions); ryan-sprott (July 1996) said IT users had an advantage in Music Contest 4 because no standalone IT player existed — consistent with Catspaw's remark above that Pulse was still writing one — and wished Pulse "would stop changing the damn tracker so much, and put in mouse/ems support" (source: s-tw063-interview-ryan-sprott); liam-the-lemming (August 1996) had a musicdisk delayed because some tracks were .IT and "support for the format is... uh... sparse" (source: s-tw066-interview-liam-the-lemming; see it-format). perisoft (January 1997) chose IT for "120 channels on a fast computer, great support behind it, great advancement, and is the only tracker that can make a truely CD quality song (by diskwriting and support of huge samples)" (source: s-tw087-interview-perisoft) — his channel count is a user's figure; the manual's limits are 64 pattern channels plus up to 256 virtual channels (source: s-it-manual). mikmak (June 1997): tracked music was better than two years before — "2 words: impulse tracker"; he was using ST3 that month only for S3M replay research (source: s-tw103-interview-mikmak). mental-floss (February 1998) praised the newly added filter and wished for a basic sample editor "like in FT2" (cut the start, normalise), "more MIDI<->Tracker capabilities" and the ability to synchronise or start IT from MIDI for console mixdowns (source: s-tw119-interview-mental-floss; see midi-in-trackers, sync).

Techniques

Chip samples — tiny looped waveforms › Impulse Tracker's sample tools #

Alt-E/Alt-F resize with/without interpolation (Graham the Happy Scum: +1 then −1 sample as a crude low-pass "smoothing"), Alt-G reverse, Alt-A/Alt-Q signed and 8/16-bit conversion, Alt-B/Alt-L cut before/after the loop — Onix4MAN loops the first 50–100 bytes and pre-loop-cuts to remove start clicks; a crude noise gate is Alt-A, Alt-M at 103–104 %, Alt-A; quarter-tone scales come from loading a sample twice with one copy's rate × 1.0293 (2^(1/24)). IT can render new samples of itself: put a break in one pattern, restart with the WAV-writer driver, play, reload the WAV as a sample. One channel of a stereo WAV: Ctrl-F halves the sample keeping every second byte (cut the first and last byte first for the right channel), then double the frequency (sources: s-tw086-wrecking-samples-with-impulse-tracker, s-it-hints, s-it-manual).

Chip samples — tiny looped waveforms › One composer's digi voice, and why it stayed private (1991) #

JCH added samples to his own editor in June 1991 by the $D418 volume-click trick driven from an NMI — the same route as the 1986–88 drivers above — and sampled Korg M1 sounds with an SFX Sound Sampler cartridge. His first digi tune was "Better Late than Never" (1991-06-23) and he made only four in total, because the jch-editor was merely "hacked" for the digi voice and was "too hairy to be used by anyone else but me". It is a useful counterweight to the 1986–88 firsts: by 1991 the technique was reachable by a bedroom composer, but productising it — making it survive in an editor other people use — was still the hard part (source: s-chordian-my-computer-chronicles; multispeed).

Chord arpeggio (the 0 3 7 trick) › Impulse Tracker / Scream Tracker 3 #

Jxy cycles base, +x, +y once per tick — the IT manual calls it "an effect similar to old C-64 chords" (source: s-it-manual): the Modsquad's chip lead has a chord channel of J47 (major) and J37 (minor) at volume 64 with J00 to stop, and their rules are "chords in one channel — never two — and no percussion inside them" (source: s-tw077-chip-off-the-block). Pinion admits that for "really neato chords" Jxx is "a bit… shitty sounding" in a sample tracker — but on a looped noise sample with a long falling pitch envelope a column of Jxx makes analog-style sweeps (instrument-envelopes; source: s-tw081-it-tip-of-the-week). Trixter's reminder that "a chord isn't a thing, it's any combination of notes" applies: an arp is a chord spread in time (source: s-tw039-chord-theory-debate).

MOD and XM use 0xy for the same command: ProTracker's help calls it "used to simulate chords … noisy and grainy on most samples, but ok on monotone ones" — C-3 00047 C major, 037 C minor — and FT2 plays the note on tick 1, +x on tick 2, +y on tick 3 (sources: s-protracker-23d-help, s-ft2-manual). ST3's manual says the same in its own letters: Jxy changes the pitch "50 times per second … best to use it with clear or tight-looped (chip) instruments. Old users of the Commodore 64 remember this effect which was used to make chords" (J37 = C minor) (source: s-st3-manual). Two quirks players emulate: Fasttracker 2's arpeggio runs backwards (the second parameter's note comes first), and in ProTracker mode arpeggios that leave the Amiga range wrap around an octave (sources: s-openmpt-manual-compatible-playback, s-openmpt-manual-song-properties).

One command-memory trap when porting a part between formats: in S3M the effect memory is mostly global to the column, so a bare J00 recalls the last non-zero parameter of any command in that column, not just the last arpeggio — where MOD's 0xy has no memory at all and IT keeps per-command memory. Only vibrato and tone portamento have their own memory in S3M (source: s-openmpt-manual-effect-reference; effect-command-crosswalk).

Chord arpeggio (the 0 3 7 trick) › Who invented it, and the PWM trick #

  • SIDwave credits martin-galway: "In the process, Martin invented the chord, aka arpeggio — to play 3 or more notes in the same voice, very fast, one after another, so that it sounds like a chord. People from the UK called it the arpeggio, it was also known as wibble, or wibbles" (1984–85; source: s-recollection-brief-history-of-sid). de.wikipedia describes Soundmonitor's arpeggios the same way — "sehr oft zu hören" in C64 games (source: s-soundmonitor-lineage-wikis).
  • matt-gray: "the note or chord plex where you go very quickly between 2,3 or even 4 notes to give the impression of a full chord being played. That sound became unique almost to the SID and everyone is using it as a retro sound now … And if you put a pulse width mod on it such as a sweep, the bubbling chord took on a life of it's own" (pulse-width-modulation; source: s-rvg-matt-gray-interview).

Fake echo / delay › Impulse Tracker #

Pulse's own hint: copy the column and set a channel volume M20 at the top of the echo channel — "you won't have to modify the echoing channel from the original", the Dxx slides stay right. StereoMan's reverb-like version: copy the sequence one or two rows later, zero its volumes (Alt-V, Alt-W) and fade every echo note in with Dx0 slides; pan the pair apart (X22/XDD or X80 + S91) for "stunning" results (sources: s-it-manual, s-it-hints).

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).

Lead articulation (velocity, legato, late vibrato, drop-off) › Scream Tracker 3 / Impulse Tracker #

Necros's worked example (E minor run; ST3 letters, identical in IT/OpenMPT; source: s-tw012-advanced-tracking-tips):

  1. Velocity in the volume column — ramp a run up to its held peak and back: E-4 40 · G-4 40 · A-4 50 · B-4 60 · E-5 64 … G-5 60 · F#5 50 · B-4 40 · C-5 40 → 50 → 64 · A-4 50. Multiples of 10 are quick to type; the volume column, not D20, so the effect column stays free.
  2. Legato with tone portamento so the sample is not restarted: GF0 for any jump over three semitones ("practically instant"), G20/G06 for a slow slide over a small step, and a GF0 on the row after a slow slide to guarantee it lands, "since some players tend to play Gxx/3xx effects too slowly" (pitch-slide-and-portamento).
  3. Late vibrato on the held notes only: HA1 a row or two after the note, then HA2, never the main event except in hard up-tempo tunes; fade it back or fade the note (vibrato).
  4. Echo track: copy the lead column, ALT-J its volumes down to a third at most (22 from 64), shift it 2–3 rows at speed 6 (4–6 at speed 3), pan it the same distance on the other side of the lead (fake-echo, stereo-panning).
  5. Drop-off ("made infamous by Purple Motion and other siner junkies"): slide up into the top note, sustain it with vibrato, and at the very end fall away with an accelerating down-slide and falling volume:
rownote / vol / cmdwhat happens
0B-4 01 50approach note
1C-5 01 64 G05the big note, sliding up into it
2GF0make sure it arrives
3HA1vibrato in
4HA2deeper
5H00continue
6HA1lessen
750 E04slow fall starts
830 E06faster, quieter
910 E10fast fall, nearly silent
A00kill

Catspaw's version of the same shape mixes volume-column values with K/H/E commands (C#6 02 33 UC3K2044 H82K0132 H7120 E0E; source: s-tw058-the-finishing-touches; see volume-slides). The cheapest cousin of the drop-off is vegas's release tip of 1996: "Dont use a ^^^ to kill a note in the lead, just drop the volume to 10, 15, or 20 and volume slide the rest away. It leaves a reverb-ish effect thats really good on flutes, piano's and violins" — no pitch fall, just a volume-column 1020 on the release row and a D0x slide to silence (source: s-tw062-interview-vegas).

Staccato and grace notes (Dan Hartrell's funk sax run, source: s-tw021-tracking-tips): D0F on a note and the row after it for "4 staccato" notes, G90 on each note of a phrase for a "wavey" pipe-or-reed sound, SD1 (note delay) to turn a note into a grace note that slips into the next, and alternating A05/A08 speeds so the run swings (shuffle-funktempo). Greg Heo's definition: a note cut SCx after x ticks is staccato, the absence of it legato (source: s-tw074-intro-to-musical-theory).

MIDI output from trackers (Impulse Tracker macros) › Impulse Tracker #

From Airon's 1997 guide (source: s-tw098-impulse-tracker-midi); all values hex, c = MIDI channel, z = the macro's data byte (007F):

jobmessagehow to write it
volume (level, controller 07)Bc 07 zan SFx parametered macro, driven by Z00Z7F; he could not make the volume line of MIDI Output Config behave
modulation (controller 01, usually vibrato depth)Bc 01 zSFx macro
pan (controller 0A; 00 left, 40 centre, 7F right)Bc 0A zSFx macro, or the pan line as Bc 0A x
bank select (00 = MSB, 20 = LSB)Bc 00 a Bc 20 bstatic macro Z80ZFF
program changeCc ppstatic macro
reverb / chorus send (some synths)Bc 5B z / Bc 5D zSFx macro
breath 0B, sostenuto 42 (00–3F off, 40–7F on), soft pedal 43, balance 08Bc nn zas above
hold pedal, GM mode, patch/performance mode, sysexsynth-specificstatic macros Z80ZFF
  • Static macros Z80ZFF hold fixed messages; parametered macros SF0SFF select one of sixteen templates whose z byte comes from Z00Z7F — the mechanism OpenMPT documents in full (source: s-openmpt-manual-zxx-macros).
  • Velocity: the volume column is sent as NOTE ON velocity (timbre, "how hard you hit"); MIDI volume (controller 07) is a separate level, "the distance to the listener".
  • Note-off timing and legato: NOTE OFF is sent when the note's tracker volume reaches zero. A sample-style instrument with NNA note fade and a fade-out around 120 therefore sends NOTE OFF late; use NNA note cut and fade-out 0 for tight playing, or NNA note fade with a small fade-out on purpose — "the greater the VOLUME FADE, the less LEGATO" (new-note-actions). ^^^ (note cut) sends NOTE OFF at once; most synths retrigger a repeated note without killing the previous one.

Multisampling and drum-kit instruments › Impulse Tracker #

The instrument's note translation table maps every note to a (note, sample) pair, so C-5 01 can play sample 1 while D-5 01 plays sample 3 at D-4. Two uses: a drum kit in one instrument (each note a different drum, one NNA/envelope/fadeout for all; "Update Pattern Data" converts old sample-per-drum patterns), and a high-quality multisampled piano — "if you don't run out of memory first. Or patience." Saving an instrument saves its samples with it (source: s-it-manual).

The kit case is where IT's NNAs pay off: with NNA continue, "put a bass drum in the very next row after [a snare] — the snare will still complete playing" from one instrument on one channel (source: s-it-manual).

New Note Actions (NNA) › Impulse Tracker #

  • Set the default NNA in the instrument (with a sensible fade-out so virtual channels are freed).
  • Override per note with S73 cut · S74 continue · S75 note off · S76 note fade — the setting applies to the note following the command. Correction from IT's author: a note left with S74 keeps ringing until an S70 past-note cut; ^^^ only affects the latest note; check the info page's Tot column to see how many virtual channels you are burning (source: s-tw081-it-tip-of-the-week).
  • Instruments cost almost nothing in file size, so keep several per sample with different NNAs and fades.
  • MIDI instruments: IT sends NOTE OFF when the note's tracker volume reaches zero, so NNA note fade with a fade-out (Airon's was 120) delays every note-off; use note cut and fade-out 0 for tight timing, or keep note fade with a small fade-out as a deliberate legato — "the greater the VOLUME FADE, the less LEGATO"; ^^^ sends NOTE OFF at once (midi-in-trackers; source: s-tw098-impulse-tracker-midi).
  • Continue is for drums and short unlooped samples; a looped sample with continue and no cut "will annoy the listener into deleting your song" and can crash the player. Zinc: use NNAs, but "don't cram your instruments into one or two channels" (source: s-tw075-it-percussion-tips).
  • The 1996 objection: kal-zakath relayed the view that NNAs "encourage inefficient tracking, and reduce GUS sound quality"; vegas did not use them but called them "definitely not useless", citing FutureAssassin's NAID '96 entry as the good example (source: s-tw062-interview-vegas). The manual supports the second half of the complaint mechanically — on a gravis-ultrasound the playback rate falls as active channels rise (source: s-it-manual) — and Pulse's own hope (below) that NNAs would not kill four-channel craft answers the first.

The Modsquad's drum-sampling comparison (1997): a kick-plus-snare combination sample versus playing the two with NNA continue — "almost the same" result, minus the interaction of the two waveforms, the "subharmonics and resounding frequencies" that a single recording keeps (source: s-tw087-music-theory-a-modern-approach; see instrument-design).

New Note Actions (NNA) › How IT allocates channels (from the manual and format doc) #

  • Cut stops the old note "like in all other trackers"; continue lets it play on (a snare keeps ringing under the kick placed on the very next row); note off releases it (sustain loops, envelope sustain); note fade fades it with the instrument's fadeout. S70/S71/S72 apply cut/off/fade to all notes the channel left in the background.
  • Duplicate checks: DCT (off / note / sample / instrument) with DCA (cut / off / fade) stop a repeated note from piling up — the manual's guitar example: NNA continue, DCT sample, DCA fade, one sample per string, so replaying a string fades its previous note like a finger landing on it.
  • Allocation: when a channel already plays, its note is flagged background and its NNA fires; the new note takes the first free virtual channel, else the quietest background channel, else it is dropped (IT 2.03+ chooses more cleverly). Background channels die when the sample ends, the envelope ends at 0, the fadeout is silent, or their volume is 0 — so always give fading notes a real fadeout; NNA fade with fadeout 0 or continue on looped samples "can easily hang a slow computer".
  • Pulse: "I sincerely hope that these options do not cause the death of brilliant 4 channel music … There is truly an art in making a decent sound in as few channels as possible!"

(sources: s-it-manual, s-ittech)

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).

Pitch slides and tone portamento › Impulse Tracker details #

Exx/Fxx slide down/up (values up to DF); EFx/FFx are fine slides and EEx/FEx extra-fine (a quarter of fine); Gxx may target a different sample, which then starts from its beginning; E, F and G share one effect memory. Linear slides (F12) make a value mean the same interval at any pitch — F08 at speed 5 raises a whole tone whether from C-4 or C-5 — because the frequency is multiplied by 2^(value/768): 64 units per semitone, Exx steps 4 units per frame, EEx 1 unit. With Amiga slides you must experiment per octave (sources: s-it-manual, s-ittech).

Randomization and probability (MayBe, RandomiZe) › Impulse Tracker #

Instruments have volume swing and panning swing — a random variation applied to every note. Zinc uses a small volume swing on hi-hats ("even if you've already changed your hi hat volumes to go 64-24-32-20") and panning swing for barely noticeable movement (source: s-tw075-it-percussion-tips); Pinion turns volume swing up to 100 % on a channel full of scale notes with NNA note-fade and "lets the laws of chaos do the composing" — a novelty, but a real generative tool (source: s-tw081-it-tip-of-the-week).

More IT randomness: the instrument's random volume variation is the volume swing Zinc and Pinion use, but the format doc marks random panning variation "not implemented yet" (so panning swing may not have worked in the versions of the time); S33/S43/S53 set the vibrato/tremolo/panbrello waveform to random — with random panbrello the speed digit becomes a delay in frames between new positions (Y14 fast, Y44 slower) (sources: s-ittech, s-it-manual).

In openmpt the instrument's Random Variation section has volume swing and pan swing (a random percentage of the global volume, a random pan offset) for every format with instruments, and MPTM adds cutoff swing and resonance swing on the resonant filter; the IT-compatible rule is that volume variation is a percentage of the instrument's global volume, not of the note volume (sources: s-openmpt-manual-instruments, s-openmpt-manual-compatible-playback). The random LFO waveform (S33/S43/S53 in IT, E43/E73 in MOD/XM) "is not supported by ProTracker and FastTracker" and should be avoided in those formats (source: s-openmpt-manual-effect-reference).

Retrigger and resync › Impulse Tracker / Scream Tracker 3 #

Qxy replays the sample every y frames with a volume change x per hit: 0 none · 1–5 = −1, −2, −4, −8, −16 · 6 = ×⅔ · 7 = ×½ · 8 none · 9–D = +1, +2, +4, +8, +16 · E = ×1½ · F = ×2 (source: s-it-manual). Catspaw's frame arithmetic: at speed 6, Q03 hits again exactly halfway through the row, Q02 gives three hits, Q04 a lopsided pair; avoid odd speeds (5, 7, 9) because no retrig can land on the half-row — get the feel with tempo instead. vegas's tip of 1996 is the same arithmetic from the other side: "Use EVEN speed values like 2, 4, or 6, to make your retrigs sound smoother" — Qxy intervals that divide a speed-6 row evenly (source: s-tw062-interview-vegas). Recipes: ride cymbal Q43 (32 → 24), a snare roll Q53 then Q43 on consecutive rows, and the tom "thwump" QC2 from volume 04 rising by 8 per hit (source: s-tw058-the-finishing-touches). Q00 reuses the last value (volume-slides). ST3's manual gives the same table (with 8 marked "?") and the worked examples Q72 at speed 8 = 64, 32, 16, 8 and QC2 at speed 6 = 12, 20, 28 (source: s-st3-manual). ProTracker's E9x retrigs every x ticks — "If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats!" — and FT2 keeps E9x and adds Rxy with the volume table, which OpenMPT calls "very buggy" (a volume command in the same cell skips ticks) (sources: s-protracker-23d-help, s-ft2-manual, s-openmpt-manual-compatible-playback). IT-compatible players refuse to retrigger a channel that has already stopped, so a very short hi-hat sample needs a silent loop at its end (source: s-openmpt-manual-compatible-playback).

Sample offset tricks › Impulse Tracker semantics #

Oxx starts at the xx00-th sample (so byte xx00h × 2 for 16-bit samples); SAy supplies the high digit for offsets beyond FF00; an offset past the end is ignored unless Old Effects is on, in which case the sample plays from its end; the manual's own uses are skipping a loud attack or starting speech mid-way (sources: s-it-manual, s-ittech).

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).

Song initialisation and looping › ST3 / Impulse Tracker #

Put a silent dummy pattern first in the order list:

 1 | ^^^ .. .. X3C | ^^^ .. .. X40 | ^^^ .. .. T7D | ^^^ .. .. A06 |
 2 | ... .. .. C00 | ... .. .. .00 | ... .. .. X44 | ... .. .. X40 |

^^^ cuts anything still ringing from the previous loop, Xxx sets each channel's pan (works in S3M too), T7D/A06 set tempo 125 and speed 6, C00 breaks to the real first pattern after a fraction of a second. If you fade the global volume out at the end, reset it here too (volume-slides). At the end, put C00 on the same row as the final AFF so the pause lasts one slow row and the song restarts; give the Cubic player a row or two of AFF before the break because it stops on C00 immediately.

Jumps and breaks by format (sources: s-protracker-23d-help, s-ft2-manual, s-st3-manual, s-openmpt-manual-effect-reference, s-openmpt-manual-compatible-playback): ProTracker Bxx jumps to a hex position and "also perform[s] a pattern-break" — "you can use this command instead of restart as on Noisetracker"; Dxx breaks to a decimal line; F00 stops the song. FT2 Dxx takes a hex row (D16), and its E60 loop start has a bug: the next pattern begins on the loop row unless the pattern ends with D00. ST3 Bxx is hex, Cxx decimal, SB0/SBx loops never cross patterns. IT/OpenMPT: Bxx + Cxx on one row jump into the named pattern at the named row; a Bxx right of a terminating SBx cancels the loop. Song length in MOD is "one more than the last position" and NoiseTracker's restart byte is unused by ProTracker.

Song initialisation and looping › Chip trackers: the loop is in the orderlist, and it does not reset state #

On the C64 there is no song header to fall back on — the tune is code with an init entry point that runs once (init at the load address with the subtune number in A, then play every frame) and an orderlist that jumps back on itself (source: s-sid-wizard-manual; sid-player-routine). Everything the init call does not set is whatever the last pass through the song left behind. Three documented cases, and they agree:

  • goattracker: the orderlist ends with an RST endmark carrying a restart position, and its TRANSPOSE entries are "reset only at song start" — so a transpose written near the end of the list is still in force on the next lap unless the list re-states it. Two editor rules go with it: TRANSPOSE must precede REPEAT, and the entry before RST must be a pattern or the editor halts playback (source: s-goattracker-readme).
  • sid-wizard: orderlist values are $01–$7F pattern, $80–$8F/$90–$9F transpose down/up ($90 = original), $A0–$AF main volume, $B0–$EF track tempo, $FE end (the track halts) and $FF xx jump to position xx — and each track has its own list and advances independently, so each has its own loop point and they need not be the same length (sources: s-sid-wizard-manual, s-duet-research-sidwizard). Transpose, volume and tempo are orderlist entries, which is the cure: re-state them at the jump target rather than trying to undo them at the end.
  • The drivers do it the same way, bugs included. In Charles Deenen's Maniacs of Noise player $ff restarts the sequence without resetting the transpose (source: s-realdmx-deenen-test-tunes); in Johannes Bjerregaard's, $FF restarts all three voices at once, so one voice's loop point is the song's (source: s-realdmx-bjerregaard-player). The Dominator player separates the two endings outright: $FF repeats the track, $FE ends the music — and $FE triggers an automatic fade, storing $5F in FADE and decrementing $D418 every $5F frames until the tune-number flag clears (source: s-sidin14-dominator-player).

The rule that follows is the same one catspaw gives for modules, stated in registers: anything sticky — transpose, main volume, tempo, filter state — must be re-stated at the loop target, not merely avoided at the end.

Stereo panning › Impulse Tracker internals and hints #

  • Separation (F12): 128 for speakers close together, 80 far apart, about 40 for headphones — the listener's control, so compose at full width (s-tw075-it-percussion-tips agrees). Pan chain: channel pan, overridden by the instrument's default pan, offset by pitch-pan separation (higher notes drift right, lower left, around a centre note) — Pulse: "a very convenient way to achieve a nice pan", and avoid having too many samples at centre. S91 = surround (centre on hardware mixers), Pxy slides the pan, Yxy panbrello with S53 random waveform jumps to a new random position every x frames; the GUS only has 16 pan positions (sources: s-it-manual, s-ittech, s-it-hints).
  • Two-channel width (Onix4MAN): the same note on two channels panned 00/64 — either offset the second by a row, or delay it with SDx (finer, x < speed), or duplicate the instrument and give one copy a pitch envelope that dips for a tick (leaves volume and effect columns free; bad for pianos). StereoMan's flanging pair at X00/XFF ("a smooth three dimensional sound") and echo pairs at X22/XDD (source: s-it-hints).

Vibrato and delayed vibrato › Impulse Tracker details #

Hxy speed x depth y; Uxy is four times finer; S3x picks the waveform (0 sine, 1 square, 2 ramp down, 3 random); Kxy adds a volume slide; H00/U00 reuse the last vibrato of either kind. IT's vibrato is updated every tick and is "two times finer" than ST3's — with Old Effects on it reverts to ST3 depth and timing. Samples also carry their own vibrato (speed 0–64, best 24–48; depth; rate = how quickly it sets in — a built-in delayed vibrato) (sources: s-it-manual, s-ittech).

Volume slides, fades and effect memory › More from the IT manual #

D0F/DF0 slide by 15 on every frame for S3M compatibility — in openmpt that behaviour is a per-song switch rather than a command trick: Fast Volume Slides applies slides on every tick "as Scream Tracker 3.0 did", so an imported S3M keeps its original slide rates (source: s-openmpt-manual-song-properties); Alt-K slides the volume column linearly between the block's ends (twice removes all volumes), Alt-X does the same for effect values (pan, offsets, global volume), Alt-J amplifies a block's volumes 0–200 %; the global volume Vxx (0–80h) affects notes already playing, unlike ST3. Keep the global volume high: at 5–8 a volume-column fade jumps instead of sliding (Nacho) (sources: s-it-manual, s-it-hints).