Impulse Tracker ITTECH.TXT — technical reference (summary)
The byte-level description of the it-format used by every IT player since (libopenmpt, Schism, duet): header, instrument, sample and pattern layouts, the volume and slide formulas, the channel-allocation procedure and partial effect pseudo-code. Only the musically relevant semantics are summarised here; the layouts themselves stay in raw/.
Key claims#
- Header
IMPM: song name, order/instrument/sample/pattern counts, created-with/compatible-with versions (0yxx= y.xx), flags (stereo, vol-0 optimisations, instrument mode, linear slides, old effects, linkGto sample change, MIDI pitch controller, embedded MIDI config), global volume, mix volume, initial speed and tempo, stereo separation, pitch-wheel depth, song message (up to 8000 chars in 1.04+), 64 initial channel pans (0–64, 100 = surround, +128 = disabled) and volumes. - Instrument: NNA (cut/continue/off/fade), DCT (off/note/sample/instrument), DCA (cut/off/fade), fadeout (0–128, count 1024; the old format 0–64/512), pitch-pan separation −32…+32 and centre note, global volume, default pan, random volume variation (%), random panning variation ("not implemented yet"), initial filter cutoff/resonance, MIDI channel/program/bank, the note-sample table (120 entries), and three 25-node envelopes (volume, panning, pitch) with on/loop/sustain-loop flags — the pitch envelope's bit 7 makes it a filter envelope instead.
- Sample: flags for 16-bit, stereo, compressed, loop, sustain loop, ping-pong; default/global volume, pan, C5 speed, loop and sustain points, vibrato speed/depth/rate and waveform (sine, ramp down, square, random).
- Patterns are packed with per-channel masks (note, instrument, volume/pan, command); orders
254= skip,255= end. - Volume: sample mode FV = Vol × SV × CV × GV / 2¹⁸; instrument mode multiplies in instrument volume, envelope value and the note-fade component (FV … / 2⁴¹). Linear slides: frequency × 2^(slide/768) —
Exx= −4×xx,EEx= −xx (so 768 units per octave, 64 per semitone); sample vibrato always uses linear slides. Panning: instrument pan overrides channel pan, then + (note − PPC) × PPS / 8. Pitch envelopes are in half-semitone units, interpolated 64×. - Vibrato in IT is "two times finer than in any other tracker and is updated EVERY tick";
Hxyspeed = 4x, depth = 4y (doubled with Old Effects),Uxydepth = y;Yxyuses a table four times larger (so four times slower);Cis hex;E/F/Gshare memory;Oxxaddresses the xx00-th sample, not byte. - Channel allocation in instrument mode: a playing host channel is flagged background and its NNA triggered; the note takes the first free virtual channel, else the quietest background channel, else it is dropped ("by far the simplest implementation of congestion resolution — IT 2.03 and above have a greatly enhanced method").
- Effect pseudo-code for A, B, C, D, H, I, N, U, W ("sorry this is incomplete").
Pages touched#
it-format, impulse-tracker, new-note-actions, instrument-envelopes, randomization-and-probability, pitch-slide-and-portamento, vibrato, stereo-panning, sample-offset.