This is a part of a treatise on a system to handle music modules in CSV, or maybe pipe-separated values. It is advisable to store the effect type as a single ASCII character instead of a 2-hexit number. There is an unfinished university project of mine called ReTeMuS (Renderer/Redactor of Text Musical Sequences) that was supposed to support multiple effect letter semantics, as per song configuration, but JavaFX with its Observers just sucks. Most music module formats are binary, which is very unUNIXy. Renoise uses XML, which is not much more readable for humans. OpenMPT and Furnace clipboard is text-based, but COBOLesquely fixed-width. It's possible to make ChatGPT generate some patterns in such format, but it's very uncreative. OpenMPT developers aren't exactly keen on big new features, so ReTeMuS is sort of like Renoise for cheapskates using unmnemonic effect letters. The main reason for ReTeMuS has been to have native xenharmonic support, because 12EDO is full of copyright lawsuits. See also a Czech article about note names and accidentals for microtonal tunings.
There are 4 main families of effect letter nomenclature:
MOD -> MTM -> XM -> MT2 Protracker -> Multitracker -> FastTracker -> MadTracker
STM -> S3M -> IT -> MPTM ScreamTracker 1/2/3 -> Impulse Tracker -> Modplug Tracker
RNS -> XRNS NoiseTrekker ~> Renoise
669 ~> FAR Composer 669 -> UNIS 669 ~> Farandole Composer
Scroll way below for FM synthesis. Radium doesn't really use effect letters. There're synthesizing trackers like AHX, HivelyTracker, Klystrack, StarTrekker, Buzz, and Psycle, but they are out of scope. Art of Noise has crept in because it's Protracker compatible and OctaMED also has wavetables. SunVox has crept in because of effect column similarities to MadTracker.
The pace of tracker development was very rapid. Once people figured out software mixing on Amiga, the channel limit went to the moon, while on PC we got NNAs:
Year Chn Smp Platform Tracker
1986 3 0 C64 Soundmonitor
1987 4 15 Amiga The Ultimate Soundtracker
1989 4 31 PC:LPTDAC Scream Tracker 1
1989 8 36 Amiga Oktalyzer
1991 8 63 Amiga OctaMED
1992 8 64 PC:GUS Composer 669
1993 32 31 PC:GUS Multitracker (MTM allows 63 smp)
1994 25 99 PC:AL+GUS Scream Tracker 3 (S3M allows 32 chn & 255 smp)
1994 32 127 PC:GUS FastTracker 2 (XM allows 65534 chn & 255 ins)
1994 256 128 Amiga Symphonie Pro 1
1995 64 99 PC Impulse Tracker 1 (256 virtual ch, format 128ch 255ins)
1997 127 255 Win32 ModPlug Tracker (256 virtual ch)
1997 inf inf Win32 Jeskola Buzz
1998 254 255 Amiga DigiBooster Pro 2
2002 inf inf WinLinMac Renoise
2005 28 255 Win32 Famitracker (multichip emulation)
SAMPLE-BASED
I've decided to sort the table according to XM effects, since the
Protracker subset is generally agreeable, even though the letters G..Z or hex 10..FF
are wild west. I mostly follow OpenMPT's extensions as they backport the
IT effects, MT2's are a whole different can of worms. Some effects could be described in Italian like in classical music, but EDM, DAWs, Computers, and the Internet all use English.
Keep in mind that each implementation behaves slightly differently in certain edge cases. Some effects may be per note, others per channel, coarse slides may also update mixer on 1st tick of row too, fine slides may slide on the 2nd tick, the FT2 E60 has a bug that mandates use of D00, F00 may either stop, hang, or crash, PT2 could do wavetables with on-the-fly sample swapping and offsetting, the small volume column effect parameter mapping to the big effect column effects differs between IT and XM, speed in LFO type effects may be interpreted differently, effect memory is shared differently, Furnace has persistent effects that are stopped instead of continued with zeroes, and so on and so on. *sniff*
Pipe (|) and comma (,) are reserved for separators. IT column also disregards double quote (") for string escaping, dot (.) for denoting empty space, and equals (=) for denoting Excel formulae, because I ran out of ASCII. The upper half of the codepage is used for semigraphics tiles. We have Unicode terminals now, but entering Unicode letters and symbols with arcane compose sequences, by switching around multiple keyboard layouts, or having to hex-dial with Ctrl+Shift+U is UX from hell.
Effect column (pitch, volume, panning, tempo, fake letter):
XM IT RNS FUR FNK 8MED Description0xy Jxy Axy 00xy Lxy 00xy Arpeggio (x & y semitones from note, x=y 2 cycle)
1xx Exx 01xx Axx 01xx Portamento down (IT only 00..DF)
2xx Fxx 02xx Bxx 02xx Portamento up (IT only 00..DF)
3xx Gxx Gxx 03xx Cxx 03xx Portamento to note
3FF GFF GFF 0FFD Instant note portamento
4xy Hxy Vxy 04xx Dxy 14xy Vibrato (x speed, y depth)
04xy Vibrato (x speed, y depth*2)
Exy Vibrato "fanin" (x speed slide down, stabilize)
Fxy Vibrato "fanout" (x speed slide up, destabilize)
5xy Kxy 05xx 05xx Volume slide (see Axy/Dxy), continue portamento
6xy Lxy 06xx 06xx Volume slide (see Axy/Dxy), continue vibrato
7xy Rxy Txy 07xx Kxy 07xx Tremolo (x speed, y depth)
8xx Xxx Pxx 80xx Panning (RNS pre-mixer, ST3 00..7F)
08xy Set balance (x left, y right)
81xx Set left panning
82xx Set right panning
88xy Set rear balance (x left, y right)
89xx Set rear left panning
8Axx Set rear right panning
9xx Oxx Sxx 91xx Mxx 19xx Sample offset (times 256, RNS cue default)
9xyy Variable precission sample offset (y*2^(8*x))
Axy Dxy 0Axy 0Dxy Volume slide (x ↑, y ↓, IT no F, see DxF & DFx)
FAxy Fast volume slide (x ↑, y ↓, 4x faster than 0Axy)
O8x Volume crest (attack to max, decay to note volume)
Jxy "Fake reverb" volume decay (x ticks/step, y speed)
Bxx Bxx 0Bxx 0Bxx Jump to order no. x
Cxx vxx lxx xx xx 0Cxx Note volume (IT/RNS/FUR/FNK see volume column)
Ixy Target volume slide (vol col, x tickstep, y step)
D3xx I1x Target volume slide (vol col)
D4xx I6x Fine target volume slide (vol col, assume speed 6)
Dxx Cxx ZBxx 0Dxx 1Dxx Pattern break to row xx of next pattern (S3M BCD)
D00 C00 ZB00 0D00 0F00 Pattern break
E00 S00 1000 0FF8 Disable Amiga "LED" Filter
E01 S01 1001 0FF9 Enable Amiga "LED" Filter
E02 S02 1200 Amiga: period mod with next ch off; GUS: Pause off
E03 S03 1201 Amiga: period mod with next ch on; GUS: Pause on
E04 S04 1100 Amiga: AM with next ch off; GUS: Filter mode 0
E05 S05 1101 Amiga: AM with next ch on; GUS: Filter mode 1
E06 S06 1102 GUS: Filter mode 2 (Amiga: AM with 2nd next ch)
E07 S07 1103 GUS: Filter mode 3 (Amiga: AM with 3rd next ch)
E08 S08 AON keep wave off
E09 S09 AON keep wave on
E0A S0A AON keep envelope off
E0B S0B AON keep envelope on
E0C S0C AON wavetable freeze off
E0D S0D AON wavetable freeze on
E0E S0E AON wavetable never reset off
E0F S0F AON wavetable never reset on
E1x FFx F1xx O4x 11xx Fine portamento slide up (1/16 semitone, 192EDO)
E2x EFx F2xx O5x 12xx Fine portamento slide down (1/16 semitone, 192EDO)
E3x S1x Glissando (snap porta to note) (0 off, 1 on)
E4x S3x Vibrato waveform (0 ~, 1 N, 2 LП, 3 ░, +4 cont)
E30x Vibrato shape (0..B: ~ m w ^v И N LП ░ П_ Ц¯ ∩_ ∪¯)
E40 S30 E300 O00 sine
E303 O01 triangle
E41 S31 E306 O02 square
E42 S32 E305 O03 sawtooth
E43 S33 E307 O04 random
E5x S2x 15xx Set Amiga finetune (4bit signed, MED 8bit signed)
E6x SBx 16xx Pattern loop here x times (E60/SB0: loop start)
E7x S4x Tremolo waveform (0 ~, 1 N, 2 LП, 3 ░, +4 cont)
E70 S40 O05 sine
O06 triangle
E71 S41 O07 square
E72 S42 O08 sawtooth
E73 S43 O09 random
E8x S8x 80xx OEx Coarse Panning (0 left, F right; FUR dup x)
E9x Q8x 0Cxx ODx 1F0x Retrigger note each x ticks (no volume change)
E96 Q86 0C06 0FF1 Play note also on next row (XM/IT assume F06/A06)
E92 Q82 0C02 0FF3 Play note thrice per row (XM/IT assume F06/A06)
EAx DxF F8xx O6x 1Axx Fine volume slide up
EBx DFx F9xx O7x 1Bxx Fine volume slide down
ECx SCx CFx ECxx O1x 18xx Note cut after x ticks (volume FX in FNK)
EDx SDx Qxx EDxx O2x 1Fx0 Note delay by x ticks
ED6 SD6 Q06 ED06 0FF2 Delay note to the next row (assume F06/A06/ZK06)
EEx SEx 1Exx Pattern row prolong ("speed"*ticks, same row sum)
EFx SFx Funkrepeat / Invert loop / Select Z "MIDI" macro
F5xx Disable macro
F6xx Enable macro
Fxx Axx ZKxx 0Fxx OFx 09xx "Speed" (row ticks, XM <20, FUR no grooves odd rows)
Fxx Txx ZTxx F0xx Set tempo in BPM (XM >=20, not when VBlankSync)
F00 A00 ZT00 FFxx 0FFE Halt, hang, next song, or tick warp
Gxx Vxx Global volume (00..80)
Hxy Wxy Global volume slide (x up, y down, IT F=fine)
HFx WFx OAx Fine global volume slide down (FNK 0..7 -> 0..1C)
HxF WxF OAx Fine global volume slide up (FNK 8..F -> 0..1C)
Ixx +xx E5xx Finetune (00..80..FF, range ± 1 semitone)
Jxx *xx Smooth finetune (00..80..FF, range ± 1 semitone)
Kxx $xx FCxx Key off after x ticks (XM more like fast fade)
E7xx Macro release
Lxx &xx Exx 0Exx Envelope position (8MED "synth" program jump)
Mxx ?xx Yxx Play row with probability (Y00: random note)
Nxx %xx Jxx Route track (J00: master, JFF: parent group)
Oxx 'xx Zxx F7xx Trigger a phrase (Z7F: keymap) / restart macro
Pxy Pxy 83xy Panning slide (x left, y right)
PxF PxF 85x0 O0F - Fine panning slide right (FNK 1/256)
PFx PFx 850x O0E - Fine panning slide left (FNK 1/256)
Qxy ;xy 1Fxy Delay for x ticks and retrigger every y ticks
Rxy Qxy Rxy Retrigger note each y ticks with volume change x
Sxx -xx Xxx Stop effect device no. x (X00 panic)
O0A Stop pitch/note effects
O0B Stop volume/pan effects
O0C Stop all effects
Txy Ixy Tremor (x on ticks, y off ticks)
Uxx Uxy Fine vibrato (4x more precise than 4xy/Hxy)
Vxx Mxx Mxx Nxx Channel volume (XM/IT ..40, RNS/FNK ..FF -60~+3db)
Wxx Nxy Channel volume slide
X0x /xx E0xx O3x Set arpeggio speed (X00: HMNT mega arpeggio)
X1x FEx Extra fine portamento up (4x E1x/FFx precission)
X2x EEx Extra fine portamento down (4x E2x/EFx precission)
X3x EA0x Legato control (auto insta porta) (0 off, 1 on)
X4x E4xx Set vibrato range
X5x S5x Panbrello shape (0 ~, 1 N, 2 LП, 3 ░, +4 cont)
X6x S6x ZDxx Fine pattern row prolong (ticks, same row sum)
X7x S7x New Note Action and envelope control (hack in XM)
X70 S70 - Playing notes cut
X71 S71 0FFB - Playing notes off/release (MED except last)
X72 S72 - Playing notes fade
X73 S73 - Set NNA to cut
X74 S74 0FFA - Set NNA to continue (sustain pedal)
X75 S75 0FFB - Set NNA to off/release (pedal off)
X76 S76 - Set NNA to fade
X77 S77 - Volume envelope off
X78 S78 - Volume envelope on
X79 S79 - Panning envelope off
X7A S7A - Panning envelope on
X7B S7B - Pitch envelope off
X7C S7C - Pitch envelope on
X7D S7D - Pitch envelope acts as pitch envelope
X7E S7E - Pitch envelope acts as filter envelope
X7F S7F - (unused, Toggle envelope reset?)
X8x @xx Wxx Track pre-mixer surround width
X9x S9x Sound control (hack in XM)
X90 S90 - Surround off
X91 S91 - Surround on (invert right channel, ST3 XA4)
X92 S92 - (unused, improved 2D surround (Xxx, S8y)?)
X93 S93 - (unused, 3D surround (Xxy, S8z)?)
X94 S94 - (unused, side 2D surround (Xyy, S8x)?)
X95 S95 - (unused, polar coord surround (Xθφ S8r)?)
X96 S96 - (unused, echo off?)
X97 S97 - (unused, echo on?)
X98 S98 - Reverb off
X99 S99 - Reverb on
X9A S9A - Center surround (S91 RC, Xxx to front)
X9B S9B - Quad surround (S91 to rear, Xxx stays rear)
X9C S9C - Global (per-channel) filters
X9D S9D - Local (per-note) filters
X9E S9E B01 DF00 - Play sample forwards
X9F S9F B00 DF01 - Play sample backwards
O9x Channel echo feedback gain
OBx Channel echo delay
OCx Channel echo decay
XAx SAx 92xx Set high sample offset (times 65536)
XBx =F0 ZLxx Set lines per beat (ZL00 Stop, XB0/=F0 Disable)
XCx =00 ZG0x Toggle song groove/swing (0 off, 1 on)
XDx =xx 09xx Groove/swing pattern (IT<F0, even speed if none)
XEx T0x Tempo slide down (ritardando)
XFx T1x Tempo slide up (accelerando)
Yxy Yxy Nxy 84xx Panbrello (x speed, y depth)
Zxx Zxx 10xx MIDI macro (default 00..7F cutoff, 80..8F/FF reso)
[xx [xx Oxx F4xx "Finer" volume slide down (64x slower than Axy)
Hxy Variably fine volslide down (x ticks/step, y step)
\xx \xx Smooth Zxx MIDI Macro
]xx ]xx Ixx F3xx "Finer" volume slide up (64x slower than Axy)
Gxy Varibably fine volslide up (x ticks/step, y step)
^xx ^xx EFxx Global pitch bend (cumulative, legacy)
_xx _xx 0Axx MIDI polyphonic aftertouch (also Zxx macro)
`xy `xy Cxy 08xy Cut volume by x/15 after y ticks / Decay & hold
`Fy `Fy CFy DCyy 08Fy Mute after x ticks
{xy }xy E2xy Note slide down (x speed, y semitones)
}xy {xy E1xy Note slide up (x speed, y semitones)
~xx ~xx 13xx Set waveform / Wavetable jump / Move loop like EFx
!xx !xx Lxx Track pre-mixer volume (00 -inf, FF +3 db)
#xx #xx Parameter extension (LSB, original effect MSB)
$xx Wavetable speed / Funkrepeat (see AON)
%xx "xx Cxxx 0Fxx Set tick rate in Hz (MED 0F33 = 50 Hz)
&xx EExx 2Dxx Send external command (sync) / Run (ARexx) script
'xx FDxx Set virtual tempo numerator (tick skip/dup)
(xx (xx Dxx "Extra finer" portamento down (each tick)
)xx )xx Uxx "Extra finer" portamento up (each tick)
*xx .xx 1Cxx MIDI program change (*xx #xx #xx bankM bankL prog)
EBxx Set legacy sample mode bank (maybe for SF2)
/xx FExx Set virtual tempo denominator (tick skip/dup)
:xy :xy Note delay for x ticks and cut after y ticks
;xy AON play samples >128k (x), avoid noise <512 (y)
<xy <xy E9xy Quick legato down (y semitones, after x ticks)
=xx (Excel formulae - echos, delays, dubs, layers)
>xy >xy E8xy Quick legato up (y semitones, after x ticks)
E6xy Legacy quick legato (x < 8 up, x > 7 down)
?xy Oktalyzer arpeggio 3
@xy Oktalyzer arpeggio 4
xyy 3xyy Set custom MIDI controller x to y (IT x 0..9)
xyzz Set chain effect x's param y to z (MPT PC note)
Fxx (unused, filter?)
Hxx (unused, Hertz?)
Kxx (unused, key off?)
0Exx (unused)
14xx Set GUS filter coefficient K1 low byte
15xx high
16xx K2 low
17xx high
18xx K1 slide up
19xx down
1Axx K2 up
1Bxx down
2xxx Set GUS envelope count (000..1FF)
22xx left volume ramp (signed 8bit)
23xx right
24xx filter coefficient K1 ramp
25xx (slow)
26xx K2
27xx (slow)
3xxx Set GUS filter coefficient K1
4xxx Set GUS filter coefficient K2
5xxx Other chip specific commands
6xxx Other chip specific commands
7xxx Other chip specific commands
Axxx (unused)
Bxxx (unused)
D0xx (unused)
D1xx (unused)
D2xx (unused)
D5xx (unused)
D6xx (unused)
D7xx (unused)
D8xx (unused)
D9xx (unused)
DAxx (unused)
DBxx (unused)
DDxx (unused)
DExx (unused)
FBxx (unused)
O0D (unused, was toggle sample looping)
0FF4 (unused)
0FF5 (unused)
0FF6 (unused)
0FF7 (unused)
0FFC (unused)
13xx (unused)
17xx (unused)
1Bxx (unused)
4xyy (unused, disambiguate MIDI effects?)
Retrigger volume alteration:
0 last, 1 -1, 2 -2, 3 -4, 4 -8, 5 -16, 6 *2/3, 7 /2,
8 none, 9 +1, A +2, B +4, C +8, D +16, E *3/2, F *2
Volume column (unless noted otherwise, XM/RNS 0..F, IT 0..9):
XM IT RNS FUR Description
xx vxx lxx xx Note Volume (XM+IT 00..40, RNS 0..80)
p/↔x pxx pxx Note panning (XM 0..F, IT 00..20..40, RNS 00..40..80)
+x ax ix Volume slide up (RNS 16x more coarse than Ixx)
-x bx ox Volume slide down (RNS 16x more coarse than Oxx)
u/↑x cx hx Fine volume slide up
d/↓x dx nx Fine volume slide down
ix ex dx Portamento down (IT 4x more coarse than Exx, RNS semitones)
zx fx ux Portamento up (IT 4x more coarse than Fxx, RNS semitones)
m/♩x gx gx Portamento to note (XM 4x coarser, IT mapping, RNS semitones)
v/≈x hx vx Vibrato depth
ox ox sx Sample cue (times 2048 by default, with Oxx per256age)
l/←x lx jx Panning slide left (0..F)
r/→x rx kx Panning slide right (0..F)
sx ux fx Vibrato speed (frequency) (0..F)
b0 w0 b0 Play backwards
b1 w1 b1 Play forwards
cx kx cx Note cut after x ticks
nx mx mx MIDI Command (provide instrument no. and effect data xxyy)
n0 m0 m0 - Controller change (xx controller no., yy value)
n1 m1 m1 - Pitch bend (xx main, yy fine tune)
n2 m2 m2 - Program change (xx bank?, yy preset)
n3 m3 m3 - Channel pressure (yy amount)
qx qx qx Note delay by x ticks
gx ix rx Retrigger envelope and effects (not sample)
yx yx yx Trigger note with probability
ex nxx exx Fractional note delay to next row (XM ⅟16, IT ⅟64, RNS ⅟256)
Small to big IT effect mapping:
e0=E00, e1=E04, e2=E08, e3=E0C, e4=E10, e5=E14, e6=E18, e7=E1C, e8=E20, e9=E24
f0=F00, f1=G04, f2=F08, f3=F0C, f4=F10, f5=F14, f6=F18, f7=F1C, f8=F20, f9=F24
g0=G00, g1=G01, g2=G04, g3=G08, g4=G10, g5=G20, g6=G40, g7=G60, g8=G80, g9=GFF
Note: Renoise has a separate volume, panning and delay column. Delay column only accepts effect exx, effects ix and ox are exclusive to volume column, and jx and kx are exclusive to panning column. ReTeMuS is all-forgiving, for it doesn't care.
Note: HivelyTracker, DigiBooster 3, and AdLibTracker 2 have another full effect column instead of a volume column. Famitracker and DefleMask let you have 4 full effect columns in addition to a volume column, and Furnace even 8. Once the volume column stopped to be only for volume in FT2, it's to be expected that users will try to put an effect into the wrong column. Also someone will definitely mix hexadecimal XM/RNS volume column effects with IT decimal ones, so better define interpretation for values A..F or 41..FF for the IT ones. For example v255 or vFF would be ~4x amplification and p65 to p255 would continue running quadraphonically along the square, which would make for "8D" effect. Or gA..gF would be fine note portamento 1..6 16ths of a semitone.
Note: Some effects internally exist in libOpenMPT for backwards compatibility, but they are inaccessible from OpenMPT UI, so my letters are pure invention. These are: {xy, }xy, {xy+Rzt, }xy+Rzt, X9F+9xx, X96/X97, o0+9xx, .xx (dummy), X9E/X9F, AON Gxx (8bit Cxx), X00+0xx (HMN 7xx), Lxx (8MED Exx)
Note: Furnace recently changed the sample offset effect to allow for selecting offset byte, instead of employing parameter extensions like OpenMPT. Currently only 3 bytes are supported up to 92xx, meaning you cannot jump past sample 16777215 (6m20s of CD audio or 87s of 192 kHz hi-res master). I suspect Furnace will use 98xx and up for some sort of cue system or counting from reverse. Also work is being done to import Impulse Tracker modules, which means more effects are coming.
Note: FunkTrackerGOLD is heavily volume-centered, probably due to lack of volume envelopes. The echo is a true DSP. Was the 1st tracker for *NIX, discontinued way before Soundtracker (XM effects) and Cheesetracker (IT effects) came out, will only work with OSS (modprobe snd-pcm-oss). The code uses nested functions which aren't standard C90, and sys/stat.h defines are broken. After getting it to compile without any -Wextra warnings in -std=c90, it segfaults when trying to play, and valgrind constantly breaks on Manjaro due to missing debuginfo, so can't fix.
MadTracker 2 wide effects
In MadTracker 2, any XM effect can be specified with 00xxyy, and any IT effect can be specified with 10xxyy, xx being displayed alphanumerically for XM (Z=35=23h) and alphabetically for IT (Z=26=1Ah). Extensions beyond that range (like \xx #xx :xy &xx $xx) are not supported. The proprietary effects have very long words. There's also separate panning column supporting only Lx and Rx, and volume column supports only Ux and Dx.
Also MT2's antipiracy model of not opening modules made with old cracked versions was flawed because it punished those who had repented, and new cracked versions made sure to patch it, besides it's basically abandonware anyway. With a little bit of extra office work, all the limitations of unregistered version can be gotten around, just like with the mono-only file output driver of Impulse Tracker 2. But pirates gotta pirate, just like with The Ultimate Soundtracker. Remember where the demoscene came from, and these people can crack Denuvo. Also you can't put any DRM in a plain text format.
00xxyy - FT2 effect (xx is displayed alphanumerically as 0..9A..Z)
01xxxx - Portamento up (1/256ths of a semitone)
02xxxx - Portamento down (1/256ths of a semitone)
03xxxx - Glissando (1/256ths of a semitone per tick)
04xxyy - Vibrato (x speed, y depth)
07xxyy - Tremolo (x speed, y depth)
080xyy - Set polarity (x) and panning (yy, 01..80..FF, 00 is no change)
0800yy - no inversion
0801yy - invert left channel
0802yy - invert right channel
0803yy - invert both channels
09xxxx - Sample offset (times 256)
0Cxxxx - Volume (0000..8000..FFFF, 2x amplification)
0Fxxyz - Set tempo, rows per beat, and ticks per row
10xxyy - Impulse Tracker effect (xx is displayed alphabetically as -A..Z)
1D00xy - Tremor (x off ticks, y on ticks, inverse of 10-Ixy or 00-Txy)
20xxyy - Set cutoff (xx>0) and/or resonance (yy>0)
21xxyy - Set attack (xx-1 if xx>0) and/or decay (yy-1 if yy>0)
22xyzt - Set cutoff, resonance, attack, and/or decay (= 20x0y0 + 21z0t0)
240000 - Reverse
80xxxx - Channel volume (0000..8000..FFFF, 2x amplification)
90xxyy - Sample cue (xx) with 1/256ths to next cue (yy), if no cue then fractional sample position (xx denominator, yy numerator)
9Dxxyy - Set offset (256*xx) and note delay (yy ticks)
CCxxyy - Send MIDI CC (xx controller code, yy value)
F0xxxx - Set channel effect
F00000 - No effect
F00001 - Delay [value, depth, feedback]
F00002 - Stereo delay [value, depth, feedback, waveform, period, amplitude]
F00003 - Filter [type{LP,HP,BP,notch,2no,peak,2pk,phaser},cutoff,reso,width]
F00004 - Flanger [waveform, period, amplitude]
F00005 - Analog wah filter [cutoff, resonance, waveform, period, amplitude]
F00006 - Distortion/Compressor [level, threshold, curvature]
F00102 - mpReverb [gain, pre-delay, low-cut, time]
F00103 - mpReverb2 [{mpReverb}, width, pan, lowgain, color]
Fxyyyy - Set channel effect parameter [x] to value y (see above, 1 based)
F900xx - Mix this channel into a channel on the right (xx > this channel no.)
FF0x0y - Visual slideshow effect (karaoke?)
FF010y - Logo change (0 white bg, 1 black bg, 2 master osc, 3 tracks osc)
FF020y - Fade toggle (0 off, 1 on)
FF030y - User logo y (0 cover, 1..F slides, dimensions 256x96)
I like effect namespacing, now you only have to choose between MT2 and SuxVox letters:
xxyyzz - Renoise effect chain thing (xx is A1..C3 for RNS 1..Y, yy is 0..Z)
E2xxyy - Renoise effect (ZA..ZZ is E1..FB internally)
E60xyy - FunkTrackerGOLD effect (display x as -A..O)
E90x0y - UNIS 669 effect (display x as -A..H)
E8xxyy - Oktalyzer effect (display xx as 0..Z)
EAxxyy - Art Of Noise effect (display xx as 0..Z)
EDxxyy - OctaMED effect
EExxyy - PolyEnd Tracker effect (display xx as ASCII)
EFxyzw - Furnace effect
EF10xy - Farandole Composer effect (when emulating GUS)
SunVox effects
SunVox has similarly wide effects like MT2, but the parameter supposedly goes only to 8000h. 00xxyy and 10xxyy is conveniently free. There are also some destructive effects:
01xxxx - portamento up
02xxxx - portamento down
03xxxx - note portamento
04xxyy - vibrato with xx speed and yy depth
05xxxx - pitch bend up (1/256 semitones)
06xxxx - pitch bend down (1/256 semitones)
07xxxx - set phase or sample offset (0000..8000 beginning..end)
08xxyy - arpeggio (xx 2nd note step, yy 3rd note step) [MT2 conflict]
09xxxx - set phase or sample offset (times 256 samples)
0Axxyy - volume slide xx up or yy down
0F00yy - set speed (yy 01..1F), BPM (yy 20..FF)
0FFxyy - set time grids (x 0 or 1, yy 00..20)
11xxxx - fine slide up
12xxxx - fine slide down
130xyz - set Bypass/Solo/Mute flags (1st 16 channels)
140xyz - reset Bypass/Solo/Mute flags (1st 16 channels)
15xxyy - global pitch bend (note xx, 1/128 semitones yy) (7F..01,80..FF)
19xxxx - retrigger note after xxxx ticks
1Axxyy - fine volume slide up/down (xx up, yy down)
1C00xx - cut note after xx ticks
1D00xx - note delay yy ticks [MT2 conflict]
1Fxxxx - set BPM [different semnatics than MT2]
20xxxx - note probability [MT2 conflict]
21xxxx - note probability with random velocity [MT2 conflict]
22xxxx - set controller value to random number from 0000 to xxxx [MT2 conflict]
23xxyy - set controller value to random number between xx and yy
24xxxx - take a note from line xxxx on the same track [MT2 conflict]
25xxyy - take a random note from the range of lines xx..yy on the same track
26xxxx - take a note from track xxx on the same line
27xxyy - take a random note from the range of tracks xx..yy on the same line
28xxxx - take a note from line xxxx on track 0
29xxyy - take a random note from the range of lines xx..yy on track 0
300000 - stop playing the song
31xxxx - jump to address xxxx after row (see 32000x)
32000x - set jump address mode:
320000 - absolute address
320001 - pattern beginning + address
320002 - pattern beginning - address
320003 - next line + address
320004 - next line - address
33xxxx - slot sync for sv_sync_resume() in SunVox library
34xxyy - set (xx) or reset (yy) project options: 1 - no porta on 1st tick, 2 - no volslide on 1st tick, 4 - Round-robin track alloc algo instead of tight packing
350xyy - bind MIDI out msg x (0 PC, 1 Pr, 2 PB) to ctrl y (0 off; 80..FF ctrl0..7F)
38xxyy - delete event on track xx with a probability of yy (00..FF)
39xxyy - cyclic shift of track xx down by yy lines
3Axxyy - generate a new iteration of yy-line polyrhythm on track xx
3Bxxyy - copy track xx to the pattern yy (replacing track xx there)
3Cxxyy - copy track xx from from the pattern yy (replacing track xx here)
3Dxxyy - write random values to track yy from line xx (min, max, column in track 0)
40xxxx..5Fxxxx - delay an event for fraction of the line (40..5F 0..96.875%)
OctaMED MIDI reminder
In OctaMED, cetain effects take on different meaning with MIDI instruments (probably an implementation detail, but maybe add $4000 to avoid conflicts):
00xx - MIDI controler value (select with 05xx) [Zxx]
01xx - MIDI pitch bend up
02xx - MIDI pitch bend down
03xx - Set MIDI pitch bend [Ixx]
04xx - MIDI modulation
05xx - Select MIDI controller [EFx select macro]
0Cxx - MIDI velocity (0C40 is MIDI 7F)
0Dxx - MIDI channel pressure [Vxx]
0Exx - MIDI panning (00..3F..7F) [8xx]
See http://cd.textfiles.com/zoom2/info/guides/octamed4manual/102-114.guide and http://cd.textfiles.com/amigaformat/aformat-26-199804/-Websites-/OctaMED/amdetails.html .
Amiga history
You can sometimes see remnants of old Soundtracker pirate editions effects, before everyone agreed on Protracker ones. Taken from https://web.archive.org/web/20230316093224/http://helllabs.org/tracker-history/trackers.svg , which misses Symphonie Pro and MultiTracker.
1xy - arpeggio
2xx - portamento up (<80) or down (>80) (split by DOC ST IX, moving arp to 0)
3xx..Bxx - "modulation" (removed by DOC ST IX)
3xx - note portamento (NST 1.0, ST 2.5, MED 2.10)
4xx - vibrato (NST 1.0, ST 2.5, MED 2.10)
5xx - finetune (His Master's NoiseTracker, modern in PT, PT E5x, 8MED 15xx)
6xx - sync? (modern in PT)
7xy - mega arpeggio (His Master's NoiseTracker, modern in PT)
8xy - decay and hold (MED 3.00, modern in FT2), also sync
9xx - ticks per row (MED 3.00, grooves in DefleMask, modern in PT)
Axy - nibble volume slide (ST 2.5)
Bxx - position jump (DOC ST 2.0, MED 2.10)
Cxx - volume (TJC ST II)
Dxx - volume slide (TJC ST II, removed by DOC ST IX, modern in DOC ST 2.0)
Exx - fine volume slide (TJC ST II, removed by DOC ST IX, PT 1.0 EAx EBx)
Fxx - tick rate (ST III and DOC ST IV, FFx was reserved by OctaMED)
Oktalyzer has few somewhat intuitive effects (actually base36, format description was unaware of presentation), with bespoke arpeggios:
1xx Portamento down [E30+1xx]
2xx Portamento up [E30+2xx]
Axy Arpeggio 3: -x,0,+y [3FF @ F01 or ?xy]
Bxy Arpeggio 4: 0,+y,0,-x [3FF @ F01 or @xy]
C0y Arpeggio 5: +y,+y,0 [0yy]
Dxx Glissando down (semitones per tick = linear) [E31+1(40*x) or {1x]
F0x Set Amiga LED filter [E0x]
Hxx Glissando up (semitones per tick = linear) [E31+2(40*x) or }1x]
Lxx Chromatic walkdown (semitones per line) [3FF or {yx @ F0y]
Pxx Position jump [Bxx]
R00 Release sample [X71]
Sxx Set "speed" (ticks between advancing lines) [Fxx 01..1F]
Uxx Chromatic walkup (semitones per line) [3FF or }yx @ F0y]
Vxx Volume control (xx <= 0x40) [Cxx]
V4x Fast volume slide down (V50 counts as by 10h etc.) [A0x]
V5x Fast volume slide up [Ax0]
V6x Fine volume slide down [EAx]
V7x Fine volume slide up [EBx]
There's quite interesting Art of Noise, which has letters like FastTracker, but different, mainly for wavetable synthesis. Protracker 1 and 2 solved it by simply allowing to swap the sample on the fly and version 1.1 had the Funkrepeat effect, which moved the loop points. Later Protracker versions had Invert Loop effect in its place which trashed the sample data by randomly sign inverting samples. Other Art of Noise effects try to get around having only 1 effect column, and unlike 5xy and 6xy the parameter is not just volume (letter marked orange):
E5x - set loop point [E60]
Gxy - set volume to 4*x+y+4 vblanks (dunno what vblanks have to do with volume)
Hxy - synth control (x keep wave bool, y keep envelope bool) [E08/E09+E0A/E0B]
Ixx - wavetable speed [EFx funkrepeat or $xx]
Jxx - set arpspeed [X0x]
Kxx - set volume & continue vibrato [Cxx+400]
Lxy - fine volume slide & portamento up (volslide x, porta y) [EAx+20y]
Mxy - fine volume slide & portamento down (volslide x, porta y) [EBx+10y]
N0x - avoid noise (wave < 512 B, bool) [;0x]
O0x - play samples > 128 kB (bool) [;x0]
Pxy - fine volume slide & continue vibrato (x up, y down) [EAx+EBy+400]
Qxy - volume slide & portamento down (syndrums) (x porta, y volslide) [10x+A0y]
Rxx - set volume & continue tone portamento [Cxx+300]
Sxy - fine volume slide & continue tone portamento (x up, y down) [EAx+EBy+300]
Txx - set track-volume [Vxx]
Uxy - set wavetable mode (x freeze, y never reset) [E0C/E0D+E0E/E0F]
Vxx..Zxx - unused, unused, extenal event 1,2,3 (sync) [&xx]
DigiBooster 1.6 effects (only those different to ProTracker):
8xx - Robot ("metallic" effect, "I am Iron Man"?) [Txy]
E3x - Play sample backward, x=1 "next from front loops" (sic) [X9F]
E40 - Stop playing sample (performance reasons) [EC0]
E5x - (unused)
E7x - (unused)
E8x - High sample offset (times 0x10000) [XAx]
E9x - Retrace (retrigger?) [E9x]
EFx - (unused)
669 -> UNIS -> Farandole
Composer/UNIS 669 has only 6 or 8 effect letters and the effects take only 1 nibble as the parameter. Also the tick rate is slightly less than 32 Hz, which amounts to 78 BPM at "speed" 6 and 4 rows per beat, which is why the default "speed" was 4, so 117 BPM. Panning has only 4-bit precision, which makes panbrello impractical. Volume being 4-bit is fine, tremolo is just more like gate.
Ax - Portamento up [10x]
Bx - Portamento down [20x]
Cx - Portamento to note [30x]
Dx - Set finetune (5/8 semitones up in XMP, nonlinear FFx in OMPT) [E1x]
Ex - Persistent vibrato depth (actually more like 2-note arpeggio) [40x/0xx]
Fx - Set "speed" (F0: Super Fast Tempo™) [F0x]
G0 - Fine panning slide left [P4F]
G1 - Fine panning slide right [PF4]
Gx - (unused; Fvol, Fporta, gliss, filter, Ftempo, offset mul, patt break?)
Hx - Retrigger note with speed x [E9x]
Ix..Ox - (unused; note cut, note delay, patt delay, loop, tremolo, pan, offset?)
x - volume (separate column, 4bit)
The successor to UNIS is FunkTracker(GOLD), which has had the letters considerably rearranged and the effect width was expanded over the volume column, like MultiTracker.
Farandole Composer looks like Composer 669 with 16 channels, but has 16 completely different effect letters vaguely closer to ProTracker, and a very outlandish tempo system centered around GUS. Could be a nice complement to FUR set in GUS mode (10xy - Farandole Composer effect, FC10xy in MT2):
03 - Fulfill sample loop (cuts note due to bugs) [EC1]
04 - Old tempo mode (allow slow tempos due to underflow, process at 4 Hz)
05 - New tempo mode (default 32 Hz)
1x - Pitch offset up (4*x GUS frequency steps @ 16 channels) [E1x]
2x - Pitch offset down (4*x GUS frequency steps @ 16 channels) [E2x]
3x - Persistent note portamento (rows to complete in, but scales with tempo)
4x - Retrigger note x times in the row (subdivide, 0 is crash)
5x - Set vibrato depth (global, default 4) [X4x]
6x - Vibrato speed [4x0]
7x - Fine volume slide up [EAx]
8x - Fine volume slide down [EBx]
9x - Sustained persistent vibrato speed
ax - Persistent slide to volume (2* faster than 3x)
bx - Set panning [E8x]
cx - Retrigger once on tick x (supposed delay with timing like 4F, c0=4F)
dx - "Fine" tempo slide down (cursed) [XEx]
ex - "Fine" tempo slide up (cursed, up to 100) [XFx]
fx - Set "coarse" tempo (cursed, higher->slower, [256, (128/i)]) [F0x]
x - volume (separate column, 4bit)
This was very obscure. Thanks to AliceLR AKA Lachesis for write up and libxmp implementation, and complaining about inaccurate import: https://bugs.openmpt.org/view.php?id=1541 . Nobody seems to have really used Farandole, as when it was released in 1993, there was already Multitracker with full 32 GUS channels and familiar Protracker effect syntax and semantics, although no volume column, and on the horizon was ScreamTracker 3 with 16 digital/GUS channels and 9 AdLib channels, richer effect repertoire, and no scary evaluation period language.
There's also format specification archive at ModLand: https://ftp.modland.com/pub/documents/format_documentation/ . If you know some Finnish, this paper discusses the history of trackers: https://musiikki.journal.fi/article/view/87867/47085 .
WaveTracker
A wavetable-oriented tracker with vertical pianoroll visualization, in addition to per-channel oscilloscopes. The 6px proportional font is very small, so no Hi-DPI screens. Also only 24 channels, but maybe that will eventually increase. Effect letters resemble Famitracker a bit, but it's another tracker that had to make their own. Effect parameters that are not nibble-split are decimal, sort of like ST3's pattern break. There's a separate decimal volume column, and I guess the instrument column is also decimal. As is typical for chiptune trackers, instead of effect memory, the effects are continuous and x00 turns them off.
0xy - Arpeggio
1xx - Portamento up
2xx - Portamento down
3xx - Portamento to note (Glide)
4xy - Vibrato (speed x, depth y)
5xx - (unused)
6xx - (unused)
7xy - Tremolo (speed x, depth y)
8xx - Pan (00..50..99)
9xx - Stereo width (Right channel phase offset) [X8x]
Axx - Volume slide down [A0x]
Bxx - Position jump
C00 - Halt [F00]
Dxx - Pattern break to row x
Exx - (unused)
Fxx - Speed (ticks per row)
Gxx - Row delay for x ticks (per-channel, so more like note delay) [EDx]
Hxy - Channel Filter (cutoff x, resonance y) [Zxx]
Ixx - Wave blend (00 original wave, 99 next wave)
Jxx - Wave stretch (a bit like PWM)
Kxx - Wave Sync
Lxx - (unused)
Mxx - Wave FM (original wave carrier, next wave modulator)
Nxx - (unused)
Oxx - (unused)
Pxx - Channel pitch bend (50 center) [Ixx]
Qxy - Note bend up (speed x, y semitones) [}xy]
Rxy - Note bend down (speed x, y semitones) [{xy]
Sxx - Note cut after x ticks [ECx]
Txx - (unused)
Uxx - (unused)
Vxx - Set wave [~xx]
Wxx - Volume fade up [Ax0]
Xxx - Channel downsample factor
Yxx - Sample percentage offset {o0+Oxx}
Zxx - (unused)
PolyEnd Tracker+
A hardware tracker for DAW-less musicians. Has an FM, wavetable, and granular synth, and many keys that resemble a PC keyboard. But has only 16 tracks (channels) after an upgrade from 8, and sample RAM in the order of MB, which is too little for $799 (non-Plus was $599), which is the cost of a new PC with Renoise. Of course PolyEnd had to make their own effect alphabet, as if there wasn't already enough of them. There are 2 effect columns, commands are alphabetical, parameters have 3 digits and are decimal, some have a sign. I had to objdump the firmware and look for strings in it to get the full documentation, RTFM wasn't enough.
!xxx - Effect off
A+xx - Arpeggiator (needs MIDI Chord, +: / up, \ down, R rnd, x: speed) [X0x] {/xx}
Bxxx - Band Pass Filter Cutoff (0..100%) {Zxx}
Cxxx - Chance of a note playing (0..100%) [Mxx] {?xx}
Dxxx - Overdrive amount (0..100%) {Mxx}
Exxx - Bitcrusher (4..16 bits)
Fxxx - Portamento up in 1/16th semitone increments (0..255) [2xx] {Fxx}
Gxxx - Note portamento (glide time: 0..49 = 0s..1s, 50..100 1s..15s) [3xx] {Gxx}
Hxxx - High Pass Filter Cutoff (0..100%) {Zxx}
Ixxx - Swing (25..75%) [XDx] {=xx}
Jxxx - Portamento down in 1/16th semitone increments (0..255) [1xx] {Exx}
Kxxx - (unused, key off?)
Lxxx - Low Pass Filter Cutoff (0..100%) {Zxx}
M+xx - Micro Tune (-99..+99) {+xx}
Nxxx - (unused, pattern delay?)
Oxyz - MIDI Chord (used also with A+xx, 0 actually?, base16) [0xy] {Jxy}
P+xx - Pan (-50..+50) [8xx] {Xxx}
Qxxx - (unused, resonance?)
Rxyy - Retrigger (x: nN note↓↑, vV vol↓↑, R rnd, _ normal; y: 0..16) [Rxy] {Qxy}
Sxxx - Sample slice/cue (1..48) {ox}
Txxx - Tempo (10..400 BPM or STP for stop (excluded from random)) [Fxx >= 20] {Txx}
U+xx - Tuning (-24..+24 semitones) [<0x or >0x]
Vxxx - Volume or Velocity for MIDI (0..100% or 0..127) [Cxx] {vxx}
Wxxx - (unused, volume slide up)
Xxxx - Pattern break (seems to conflict with xxxx) [Dxx] {Cxx}
axxx - Custom MIDI CC A (0..127, needs a channel in the instrument slot (M1..M16))
bxxx - Custom MIDI CC B
cxxx - Custom MIDI CC C
dxxx - Custom MIDI CC D
exxx - Custom MIDI CC E
fxxx - Custom MIDI CC F / MIDI program change [*xx] {.xx}
gxxx - Volume LFO Rate (tremolo or tremor) [7xy] {Rxy}
hxxx - Panning LFO Rate (panbrello) {Yxy}
ixxx - Random instrument range (-48..+48)
jxxx - Filter LFO Rate ("filtrolo")
kxxx - Position LFO Rate ("wavolo") [$xx or EFx funkrepeat]
lxyy - Finetune LFO Rate (vibrato) [4xy] {Hxy}
mxxx - Micro move (note delay, 0..100%) [EDx] {SDx}
n+xx - Random note range (-100..+100)
oxxx - (unused, pattern loop?)
pxxx - Sample, wavetable, or granular position (0..100%) [9xx or ~xx] {Oxx or ~xx}
qxxx - Gate length (note cut, 0..100%) [ECx] {SCx}
rxxx - Reverse sample (<<< or >>>) {S9F}
sxxx - Delay send (0..100%, reverb in old firmware)
txxx - Reverb send (0..100%, not in old firmware)
uxxx - (unused, orderlist jump?)
v+xx - Random volume range (-100..+100)
wxxx - (unused, volume slide down?)
x+xx - Random FX value range (-255..+255)
Volume LFO rate values (LFOs are synced to tempo):
24 16 12 8 6 4 3 2 3/2 1 3/4 1/2 3/8 1/3 1/4 3/16 1/6 1/8 1/12 1/16 1/24 1/32 1/48 1/64
Panning, filter, position, and finetune LFO rate values:
128 96 64 48 32 24 16 12 8 6 4 3 2 3/2 1 3/4 1/2 3/8 1/3 1/4 3/16 1/6 1/8 1/12 1/16 1/24 1/32 1/48 1/64
Some instrument properties numeric IDs:
Tune = 5
Finetune = 3
Volume = 7
Panning = 10
Filter type = 9
Cutoff = 1
Resonance = 11
Overdrive = 12
Bit Depth = 13
Reverb Send = 14
Delay Send = 15
Volume Automation Type = 20
Volume Attack - Shape LFO = 21
Volume Decay - Speed LFO = 22
Volume Sustain = 23
Volume Release = 24
Volume Amount = 25
Panning Automation Type = 26
Panning Attack - Shape LFO = 27
Panning Decay - Speed LFO = 28
Panning Sustain = 29
Panning Release = 30
Panning Amount = 31
Cutoff Automation Type = 83
Cutoff Attack - Shape LFO = 84
Cutoff Decay - Speed LFO = 85
Cutoff Sustain = 86
Cutoff Release = 87
Cutoff Amount = 88
Wavetable Position Automation Type = 102
Wavetable Position Attack - Shape LFO = 103
Wavetable Position Decay - Speed LFO = 104
Wavetable Position Sustain = 105
Wavetable Position Release = 106
Wavetable Position Amount = 107
Granular Position Automation Type = 108
Granular Position Attack - Shape LFO = 109
Granular Position Decay - Speed LFO = 110
Granular Position Sustain = 111
Granular Position Release = 112
Granular Position Amount = 113
Finetune Automation Type = 114
Finetune Attack - Shape LFO = 115
Finetune Decay - Speed LFO = 116
Finetune Sustain = 117
Finetune Release = 118
Finetune Amount = 119
There's also a word list for the built-in name generator with 1000 adjectives and 1000 nouns, which includes the word "kurwa".
FM SYNTHESIS
Due to my procrastination, below is an FM effect list (actually phase modulation), sorted by AdlibTracker 2. MPT column is a superset of Scream Tracker 3, as Impulse Tracker supported FM only as a MIDI device, and ST3 didn't support OPL3. Famitracker column considers only VRC7, which is a cut down OPLL. BambooTracker supports only OPNA. Furnace column also considers OPZ, an expanded OPM, and ESFM, an expanded OPL3. DreamTracker for Commander X16, namely its OPM or OPP chip (differs only in test registers and timer resolution), recently got full 2 bytes for effects, but VERA PSG is omitted to reduce clutter, as has already happened with OPZ and ESFM.
L3 L3 LL NA Z M/P
AT2 MPT FAM BAM FUR DRTR Description
0xy Jxy 0xy 00xy 00xy 0Axy Arpeggio (x & y semitones from note, x=y 2 cycle)
1xx Exx 1xx 01xx 01xx 00xx Portamento down (MPT only 00..DF)
02xx Pitch sweep down (persistent)
2xx Fxx 2xx 02xx 02xx 01xx Portamento up (MPT only 00..DF)
03xx Pitch sweep up (persistent)
3xx Gxx 3xx 03xx 03xx 06xx Portamento to note (FUR/DRTR persistent)
4xy Hxy 4xy 04xy 04xy 08xy Vibrato (x speed, y depth)
5xy Kxy 05xx Volume slide (see Axy), continue the portamento
6xy Lxy 06xx Volume slide (see Axy), continue the vibrato
7xy FFx F1xx Fine portamento up
8xx EFx F2xx Fine portamento down
9xx Oxx T1xx 12xx 44xx Set modulator1/OP1 level (OPL 3F, OPM 7F)
B0xx Brightness (direct modulators TL+=xx-80h)
Axy Dxy Axy 0Axy 0Axy 04yy Volume slide (x ↑, y ↓, DRTR <40 ↓, 40..7F ↑)
EAxy Extended volslide (step=x-y, new note no reset)
FAxy Fast volume slide (4x faster than 0Axy)
05xx Volume sweep (persistent, <40 ↓, 40..7F ↑)
Bxx Bxx Bxx 0Bxx 0Bxx C3xx Jump to order no. x (can use with Dxx)
Cxx vxx x xx xx 0Dxx Note volume (MPT/FAM/BAM/FUR volume column)
Wxx T0xx Set attenuation/level of all operators
Dxx Cxx Dxx 0Dxx 0Dxx C2xx Pattern break to row xx (default next)
C4xx Jump to row x (primarily for "tables")
Exx Cxxx C7xx Set tick rate in Hz ("tempo")
Fxx Axx Fxx 0Fxx 0Fxx C1xx Set "speed" (ticks per row) (FAM xx<20)
Txx Fxx 0Fxx F0xx C6xx Set tempo in BPM (MPT xx>=20, see T0x and T1x)
FDxx Set virtual tempo numerator
FExx Set virtual tempo denominator
F00 A00 Cxx 0Cxx FFxx C000 Halt, hang, next song, or tick warp
Gxy Fine volume slide, continuing the note portamento
Hxy Fine volume slide, continuing the vibrato
Ixx T2xx 13xx 46xx OPL3 Set carrier1/OP2 level (OPL 3F, OPM 7F)
Jxy Set waveform (x carrier, y modulator)
2Axy OPL2/L3/Z Set OPx to waveform y (x=0 all)
K0x DFx F8xx Fine volume slide down
Kx0 DxF F9xx Fine volume slide up
Lxx Q0x Xxx 0Cxx Retrigger note in x ticks
Mxy Rxy 7xy 07xy 07xy 09xy Tremolo (x speed, y depth)
Nxy Ixy Tremor (x ticks on, y ticks off)
Oxy Volume slide, continuing the arpeggio
Pxy Fine volume slide, continuting the arpeggio
Qxy Qxy 0Kxy 40xx Retrigger note each y ticks with volume change x
Rxy Volume slide, continuing portamento up
Sxy Volume slide, continuing portamento down
Txy Volume slide, continuing fine portamento up
Uxy Volume slide, continuing fine portamento down
Vxy Fine volume slide, continuing portamento up
Wxy Fine volume slide, continuing portamento down
Xxy Fine volume slide, continuing fine portamento up
Yxy Fine volume slide, continuing fine portamento down
Z0x 10xx OPL3 Set global tremolo/AM depth (0=1db, 1=4.8db)
1Exx 5Cxx OPM/Z global AM LFO depth (..7F) (OPM reg $19)
Z1x 1Fxx OPL3 Set global vibrato/PM depth (0=7%, 1=14%)
1Fxx 5Cxx OPM/Z global PM LFO depth (..7F) (+$#80, reg $19)
62xx 59x_ PM Sensitivity (reg $38+chn)
63xx 59_x AM Sensitivity (reg $38+chn)
17xx 5Bxx Set LFO frequency (00 8 mHz, FF 33 Hz) (reg $18)
10xy OPN setup LFO (x off/on, y speed)
Z2x A1xx 1Axx 48_x Set OP1 (modulator) attack
Z3x D1xx 57xx 4C_x decay (OPZ 00..1F)
Z4x 511x 54x_ sustain
Z5x RR1x 521x 54_x release
Z6x A2xx 1Bxx 4A_x Set OP2 (carrier) attack
Z7x D2xx 58xx 4E_x decay (OPZ 00..1F)
Z8x 512x 56x_ sustain
Z9x RR2x 522x 56_x release
A3xx 1Cxx 49_x Set OP3 (modulator 2) attack
D3xx 59xx 4D_x decay (OPZ 00..1F)
513x 55x_ sustain
RR3x 523x 55_x release
A4xx 1Dxx 4B_x Set OP4 (carrier 2) attack
D4xx 5Axx 4F_x decay (OPZ 00..1F)
514x 57x_ sustain
RR4x 524x 57_x release
51xy Set OPx sustain to y (x=0 all operators)
RRxy 52xy Set OPx release to y (x=0 all operators)
A0xx 19xx Set attack of all operators
D0xx 56xx Set decay of all operators (OPZ 00..1F)
ZAx FB0x 110x 58x_ Set feedback strength (0..7)
58xx Pan, M1 Feedback, Algo (2-3-3 bit, OPM reg $20+ch)
ZBx 080x 08xy 0Exy Panning (AT2 1-0-2, BAM 2-3-1, FUR/DRTR 10-11-01)
S8x Coarse linear panning (0-8-F)
Xxx 80xx Linear panning (FUR/MPT 00-80-FF, ST3 00-40-7F)
ZB1 S80 81xx Left panning
ZB2 S8F 82xx Right panning
S91 88xy Rear panning (FUR 10-11-01, MPT S9B+S91+Xxx)
89xx Rear left panning
8Axx Rear right panning
ZCx SBx Pattern loop x times (ZC0: loop start, same track)
ZDx Recursive pattern loop x times (ZD0: loop start)
ZE0 Macro key off loop off
ZE1 on
E7xx Macro release
ZE2 Restarting envelope with note portamento off
ZE3 on
ZE4 &00 Restart envelope
ZE5 4OP track volume lock off
ZE6 on
ZE7 (unused)
ZE8 (unused)
ZE9 (unused)
ZEA (unused)
ZEB (unused)
ZEC (unused)
ZED (unused)
ZEE (unused)
ZEF (unused)
ZF0 $00 Lxx 0Sxx FCxx Release sustaining sound (AT2 ignore ADSR)
ZF1 Reset instrument volume
ZF2 Track volume lock on (volume is per channel)
ZF3 off (volume is per note)
ZF4 Volume peak lock on
ZF5 off
ZF6 Toggle modulator volume slides (usable with ZF7)
ZF7 Toggle carrier volume slides (usable with ZF6)
ZF8 Toggle default volume slides
ZF9 Track panning lock on (only ZBx to change)
ZFA off
ZFB End vibrato, restore frequency
ZFC End tremolo, restore volume
ZFD This vibrato fine (with 4xx, 6xx, Hxx, <xx, >xx)
ZFE This tremolo fine (with Mxx, >xx, <xx)
ZFF Don't restart macro/arp/vibr position (!xx, @xx)
#0x 61xx 58_x Set connection type (FM algorithm) (reg $20+ch)
#1x ML1x 161x 40_x Set OP1 (modulator) multiplier
#2x 541x 48x_ key scaling level (0..3)
#3x 501x 4Cx_ tremolo/AM (0 off, 1 on)
#4x 531x 4Cx_ vibrato/PM (0 off, 1 on)
#5x 5B1x KSR (0 off, 1 on) (KES)
#6x 551x env sustain (0 off, 1 on)
#7x ML2x 162x 42_x Set OP2 (carrier) multiplier
#8x 542x 4Ax_ key scaling level (0..3)
#9x 502x 4Dx_ tremolo/AM (0 off, 1 on)
#Ax 532x 4Ex_ vibrato/PM (0 off, 1 on)
#Bx 5B2x KSR (0 off, 1 on) (KES)
#Cx 552x env sustain (0 off, 1 on)
ML3x 163x 41_x Set OP3 (modulator 2) multiplier
543x 49x_ key scaling level (0..3)
503x 4Ex_ tremolo/AM (0 off, 1 on)
533x 4Dx_ vibrato/PM (0 off, 1 on)
5B3x KSR (0 off, 1 on) (KES)
553x env sustain (0 off, 1 on)
ML4x 164x 43_x Set OP4 (carrier 2) multiplier
544x 4Bx_ key scaling level (0..3)
504x 4Fx_ tremolo/AM (0 off, 1 on)
534x 4Fx_ vibrato/PM (0 off, 1 on)
5B4x KSR (0 off, 1 on) (KES)
554x env sustain (0 off, 1 on)
MLxy 16xy Set OPx multiplier (x=0 all operators)
54xy Set OPx envelope scale (KSL) (y 0..3)
50xy Set OPx tremolo/AM (x=0 all operators)
53xy OPL3 Set OPx vibrato/PM (y=0 off, y=1 on, x=0 all)
5Bxy Set OPx key envelope scale (y=0 off, y=1 on)
55xy Set OPx envelope sustain (y=0 off, y=1 on)
#Dx (unused)
#Ex (unused)
#Fx (unused)
&0x S6x Fine pattern delay (ticks)
&1x SEx Pattern delay (rows)
&2x SDx Gxx 0Gxx EDxx 10xx Note delay (ticks)
&3x SCx Sxx ESxx ECxx 0Fxx Note cut (ticks)
&4x S2x Fine tune up
&5x S2x Fine tune down
&6x Wx0 Global volume slide up
&7x W0x Global volume slide down
&8x WxF Fine global volume slide up
&9x WFx Fine global volume slide down
&Ax Extra fine global volume slide up (4 ticks)
&Bx Extra fine global volume slide down (4 ticks)
&Cx F3xx Extra fine volume slide up (AT2 4, FUR 64 ticks)
&Dx F4xx Extra fine volume slide down (AT2 4, FUR 64 ticks)
&Ex Extra fine portamento up (4 ticks, not MPT FEx)
&Fx Extra fine portamento down (4 ticks, not MPT EEx)
$xy Extra fine arpeggio
~xy Extra fine vibrato (every 4 ticks, not MPT Uxy)
^xy Extra fine tremolo
!xx Swap arpeggio table
@xx 12xx Swap vibrato table
=xx Force instrument volume
%xx Vxx Set global volume
<xx Global portamento down (fine ZFD, x-fine ZFE)
>xx Global portamento up (fine ZFD, x-fine ZFE)
EFxx Global pitch bend (80 center, cumulative, legacy)
C5xx Global transpose (semitones?)
`xx Calculate vibrato&tremolo speed table (`00 reset)
Mxx 11xx MPT Channel volume / DRTR Channel attenuation
Nxy 14xy Channel volume slide (DRTR attenuation)
Pxy 83xy Panning slide (not really useful)
S0x T4xx 15xx 47xx OP4 attenuation/level (C2) (OPL 3F, OPM 7F)
S1x Glissando control
S3x Vibrato waveform
S4x Tremolo waveform
S5x Panbrello waveform (impacts rounding off-center)
S7x NNA things (unusable, toggle hard envelope reset?)
S9x Sound control (unusable rest)
S9F 42xx PCM Reverse sample / OPL envelopes?
SAx T3xx 14xx 45xx OP3 attenuation/level (M2) (OPL 3F, OPM 7F)
SFx Select MIDI macro (OP level to control with Zxx)
T0x Tempo slide down (ritardando)
T1x Tempo slide up (accelerando)
Uxy Fine vibrato
Yxy 84xy 0Cxy Panbrello (alternate between channels)
Zxx 45xx MIDI macro (filter may control OPx level)
\xx Smooth MIDI macro
400x MIDI set channel
41xx MIDI select CC
42xx MIDI send selected CC with value x
43xx MIDI set coarse NRPN
44xx MIDI set fine NRPN
46xx MIDI set resonance
:xy Note delay (x) and cut (y)
#xx Parameter extension
+xx Pxx 0Pxx E5xx Finetune / Fine pitch (00 b, 80 L7, FF #)
*xx FPxx Smooth finetune (00 b, 80 L7, FF #)
=xx 1200 Phase reset / Reset channel
5xy 05xy (unused, volslide with ongoing portamento)
6xy 06xy (unused, volslide with ongoing vibrato)
8xx (unused, no stereo on OPLL)
9xx 09xx (unused)
Exx 0Exx (unused)
Hxx OPLL/VRC7 custom patch byte port
Ixx OPLL/VRC7 custom patch byte write
Jxx (unused)
Kxx Note frequency multiplier
Mxy Mxyy Set note volume to y after x ticks
Mx0 Mx00 DCxx Mute note after x ticks
Nxy Target volume slide (x speed, y value (4bit))
D3xx Target volume slide (vol col)
D4xx Fine target volume slide (vol col)
Oxx 0Oxx 09xx Select groove / Groove index / Groove pattern
Qxy 0Qxy E1xy Note slide up (x speed, y semitones)
Rxy 0Rxy E2xy Note slide down (x speed, y semitones)
Txy 0Txy E6xy 13cy Legacy legato (x ticks, y semitones (signed))
Uxx 0Uxx (unused)
Vxx 10xx OPLL/VRC7 patch index
Wxx ((A)D)PCM pitch
Yxx ((A)D)PCM sample offset x64
Zxx (A)DPCM delta counter
0Hxy OPNA/NB AY auto envelope (x shift, y shape)
29xy OPN AY auto envelope (x numerator, y denominator)
22xy OPN AY set envelope mode (x shape, y enable)
25xx OPN AY envelope slide up
26xx OPN AY envelope slide down
0Ixx 24xx OPN AY HW envelope period MSB
0Jxx 23xx OPN AY HW envelope period LSB
0Lxx (unused)
0Mxx (unused)
0Nxx (unused)
0V0x 200x OPN AY tone mix (bits: 0 envelope noise square)
0Vxx 1Fxx OPNA/NB Rhythm/ADPCM-A master volume (00..3F)
0Wxx 21xx OPN AY noise frequency/color (00..1F)
0Xxx 2Exx Register address bank 0 / Write to I/O port A
0Yxx 2Fxx Register address bank 1 / Write to I/O port B
0Zxx Register value set
0Exx (unused)
10xx 5D_x OPM/Z set Chn7 C2 noise freq (00..1F, OPM reg $0F)
1000 5D0_ OPM/Z Chn7 Car2 noise disable
10xx 5D8_ OPM/Z Chn7 Car2 noise enable (FUR also set freq)
170x OPN2 toggle legacy sample mode (keymap, see EBxx)
18xx OPL3/OPLL toggle drums mode (x=0 off, x=1 on)
18xx OPN toggle extended channel 3 mode (0 off, 1 on)
180x 5A_x OPM/Z LFO waveform (0 saw, 1 sq, 2 tri, 3 noi)
5Ax_ OPM CT ouput pins control (high crumb) (reg $1B)
20xy ESFM set panning of OP1 (x left, y right)
21xy 2
22xy 3
23xy 4
24xy ESFM set OPx output level register (y 0..7)
24xx OPZ set LFO2 speed
25xy ESFM set OPx modulation input level (y 0..7)
25xx OPZ set LFO2 waveform (0 saw, 1 sq, 2 tri, 3 noi)
26xy ESFM set OPx envelope decay (y 0..7)
26xx OPZ set AM2 depth (00..7F)
27xx ESFM set OP4 noise mode (0..3)
27xx OPZ set PM2 depth (00..7F)
28xy OPZ set OPx reverb (0..7, x=0 all)
29xy (unused)
2Bxy OPZ OPx envelope generator shift (0..3, x=0 all)
2Cxy OPZ set OPx fine multiplier to y
2Dxy (unused)
2Exx ESFM Toggle hard envelope reset on new notes
2Fxy ESFM set OPx fixed frequency block (y octave 0..7)
2Fxx OPZ Toggle hard envelope reset on new notes
300x OPL/M/N Toggle hard envelope reset on new notes
3xyy ESFM set OP(x>>2) fixed frequency f-num x%4 to y
3xyy OPZ OP1,2 fixed freq (x oct OP1 0..7, OP2 8..F)
4xyy OPZ OP3,4 fixed freq (x oct OP3 0..7, OP4 8..F)
4xyy ESFM set OPx detune (80 center, x=0 all)
53xy OPN/Z set OPx detune (fine) (3 center)
55xy OPN OPx SSG envelope (y<8 on, y=8 off, x=0 all)
551x 1 (M1)
552x 2 (C1)
553x 3 (M2)
554x 4 (C2)
55xy OPM/Z OPx detune 2 (0..3, x=0 all) (reg $C0+ch)
551x 50x_ OP1 (M1)
552x 52x_ 2 (C1)
553x 51x_ 3 (M2)
554x 53x_ 4 (C2)
5Bxx OPM/Z set decay 2 of all OPs (00..1F) (reg $C0+ch)
5Cxx 50_x OP1 (M1)
5Dxx 52_x 2 (C1)
5Exx 51_x 3 (M2)
5Fxx 53_x 4 (C2)
60xy OPM/N Set OPx mask to y (x=0 all)
6xxx (unused 64..6F)
7xxx (unused)
91xx 41xx PCM sample offset (x256, not applicable)
9xyy PCM variable precission offset (y*2^(8*x))
Axxx (unused)
Bxxx (unused)
Dxxx (unused D0, D1, D2, D5..DB, DD, DE)
DF00 PCM play sample forwards (invert envelopes?)
DF01 PCM play sample backwards (invert envelopes?)
E0xx 0Bxx Set arpeggio speed
E3xx Set vibrato shape (0 up&down, 1 up, 2 down)
E4xx Set vibrato range
E8xy Quick legato up
E9xy Quick legato down
EAxx 0700 Legato control / auto insta porta
EBxx Set legacy sample mode bank (OPLL user patch?)
EExx Send external command
F5xx Disable macro
F6xx 3Exx Enable macro / DRTR set table
F7xx 3Fxx Restart macro / "table"
3Dxx Set table speed
3Cxx Set table loop mode
FBxx (unused)
15xx (unused, up to 3Bxx)
43xx PCM Sample loop
44xx PCM Sample FIFO loop
5Exx Global To Operator Volume
5Fxx (unused)
6xxx (unused, up to Bxxx)
C80x Set background red component (visual)
C9xy Set background green (x) & blue (y) component
CAxx (unused, up to FFxx)
Waveforms for Jxy effect:
0 sine, 1 dromedars, 2 absolute sine, 3 pulse sine,
4 even period sine, 5 camels, 6 square, 7 saw
Parameters for 'xx effect:
Param Size Max Factor
01..EF 32 01..EF x1
F0..F3 32 FF x1..x4
F4..F7 64 FF x1..x4
F8..FB 128 FF x1..x4
FC..FF 256 FF x1..x4
Furnace macro (external envelope) IDs:
00 volume, 01 arpeggio, 02 duty/noise, 03 waveform, 04 pitch, 05..07 extra 1..3, 08 extra A (ALG), 09 extra B (FM), 0A extra C (FMS), 0B extra D (AMS), 0C panning left, 0D panning right, 0E phase reset, 0F..13 extra 4..8
20 AM, 21 AR, 22 DR, 23 MULT, 24 RR, 25 SL, 26 TL, 27 DT2, 28 RS, 29 DT, 2A D2R, 2B SSG-EG, 2C DAM, 2D DVB, 2E EGT, 2F KSL, 30 SUS, 31 VIB, 32 WS, 33 KSR
40.. OP2, 60.. OP3, 80.. OP4, A0.. unassigned
Note: In AT2 parlance, "extra fine" means executed every 4 frames (ticks), even for pitch effects. The effect parameter range is not altered.
Note: In MPT, Oxx is reused for modulator volume and Zxx usually for carrier volume, I've also reused SAx for OP3/M2 and S0x for OP4/C2 volume.
Note: Furnace's effect letters are not necessarily compatible between different FM chips. This is apparent with OPZ and ESFM.
Note: DreamTracker uses Modulator 1,2 and Carrier 1,2, which is confusing given Furnace's OP1..4 and Adlib Tracker modulator 1, carrier 1, and then on 2nd 4OP channel halves modulator 2, carrier 2. OP2 and OP3 is thus probably swapped between on OPM compared to OPL3.
Note: DreamTracker uses direct register mapping, which sometimes contain more values, not always at nibble boundaries. The position is hinted by using _x for lower bits and x_ for upper bits.
Note: Basically everywhere except OpenMPT the volume column is only for volume. AdlibTracker 2 has 2 full effect columns instead, and some effects have pair synergy.
Reality AdLib Tracker has few effects:
1xx - Slide note down (pitch bend)
2xx - Slide note up (pitch bend)
3xx - Slide to note
5xx - Volume slide while continuing note slide (01..49 down, 51..99 up)
Axx - Volume slide (01..49 down, 51..99 up)
Cxx - Set volume
Dxx - Pattern break
Fxx - Set "speed" (ticks per row)
Ixx - Ignore note transposing (only in Riffs)
Mxx - Set Multiplier (only in Riffs, Channels 2..5 and 6..9 affect OP1..4)
Rxy - Play Riff (x which, y channel, y=0 stop)
Txy - Play Riff transposed (provide a note)
Uxy - Feedback (only in Riffs, x which 0/1, y value 0..7)
Vxx - Operator Volume (only in Riffs, Channels 2..5 and 6..9 affect OP1..4)
SoundFX, not having quite many FX:
1xy - Arpeggio
2xy - Pitch bend (x down, y up)
300 - LED on (set bit 0 at address 0xbfe001)
400 - LED off (clear bit 0 at address 0xbfe001)
5xx - Fine volume slide up (add xx to current volume)
6xx - Set volume
7xx - Set step up
8xx - Set step down
EdLib (incomplete):
6000 - Cut
7xyy - Vibrato
90xx - Levels
Bxxx - SpFX sound
Cxxx - Instrument
Dxxx - Slide up
Exxx - Slide down
Surprise AdLib Tracker likely mostly follows the ProTracker nomenclature. MasterTracker (or MasterPlayer) and Composer 667 don't seem to have per-channel effect columns or they have some event editor on other screen or in another window like Symphonie Pro. Internet in the 2020s seems really quite barren compared to 2000s when I 1st found out about trackers.
There were other Famitracker extensions and modifications which added more chips or targeted different chips, but Furnace made them all obsolete by supporting all of them at the same time, even if it didn't make historical sense. Therefore these chips are approached more like modular machines in Buzz, yet they provide for nostalgic attachment and allow leveraging of existing know-how. There's still a possibility of making a cartridge with such unlikely combination of expansion sound chips, just like it was done on NES, which inspired the original Famitracker.
SID
The filters are what makes SID sound trippy, VIC-20 "squares" are close, but Atari square is Metal. Ordered according to GoatTracker Ultra, even though it has fewer effects, because it runs in SDL on other computers and supports microtonality and quad SID, and Furnace is what to transition to, with way more SIDs supported. This means there is way more grouping of effects. CT is Cybertracker, OT is Odin Tracker, SIDW is SID Wizard. Compared to OPL3, SID is quite simple.
GT CT OT SIDW FUR Description
0xx Axy 00xy Arpeggio
0Cxx E0xx Chord speed adjustment (or arpeggio, also Cx)
07xx Select chord (also 7x)
09xx Go to waveform/arpeggio table position
1xx 1xx 01xx 01xx Portamento up
E1xy Note slide up (x speed, y semitones)
FBx F1xx Fine porta up
2xx 2xx 02xx 02xx Portamento down
E2xy Note slide down (x speed, y semitones)
FAx F2xx Fine porta down
0Dxx Detune note (also Dx)
E5xx Finetune (0 flat, 80 center, FF sharp)
EFxx Global pitch bend (0 b, 80 L7, FF #)
1xx Combined portamento (<80 down, >80 up)
06xy Volslide, continuing portamento
3xx 3xx 3xx 03xx 03xx Note porta
300 3FF 03FF Note legato (insta porta, auto direction)
EA0x Legato control (auto insta porta)
EEx 1A0x Skip note hard restart (disable envelope reset)
FFx 15xx Set envelope reset time (silence before new note)
E6xy Legacy legato (x<8 up, x>7 down, x&7 time, y semitones)
E8xy Quick legato up (x time, y semitones)
E9xy Quick legato down (x time, y semitones)
4xy 4xy 4xy 08xy 04xy Vibrato (x speed, y depth) (SIDW also 8y and 9x)
05xy Volslide, continuing vibrato
16x0 Select vibrato type (0..3)
E30x Set vibrato shape (0 up&down, 1 up, 2 down)
E4xx Set vibrato range/depth
5xy E1x 7xy 05xy 20xy Attack x, decay y (also SIDW 2x)
5xy E2y 7xy 05xy 20xy Attack x, decay y (split due to CT, SIDW also 3x)
6xy E3y 8xy 06xy 21xy Sustain x, release y (also SIDW 5x)
6xy Cxx 8xy 06xy 21xy Sustain x, release y (split due to CT, SIDW also 6x)
70x E4x 90x 040x 100x Set waveform (SIDW also 4x)
8xx Set wavetable (0 stop exe)
9xx Set pulsetable
5xx Set pulse speed
6xx Set pulse limits
0Axx Adjust pulsewidth program table index (PW envelope)
2xx 0Exx 12xx Set pulsewidth (8 MSB, FUR 0..64 (100 dec))
3xxx Set full precission pulse width (0..FFF)
1Cxy Reset pulse width on new note (x) and/or now (y)
Axx Pulse width slide up
Bxx Pulse width slide down
Axx Set filtertable
0Bxx Branch to filter program table index (filter envelope)
Bxy E7x Exy 1Fxy Set Resonance(x)/FilterSwitch(y) register (incl ext in)
Fx 130x Set resonance
E0x Send channel to filter (0 no, 1 yes, or lower reg bits?)
E9x F9x Bx 140x Set filter mode bitmask (3OFF/HP/BP/LP)
Cxx Cxx 1Cxx 11xx Set cutoff MSB (SIDW persistent, FUR 0..64 (100 dec))
0Fxx Cutoff high byte shift, add to filter envelope
4xxx Set full precision cutoff (0..7FF)
1Bxy Reset cutoff on new note (x) and/or now (y)
FEx Select instrument to control the cutoff
7xx Set cutoff direction (<80 down, 80 keep, >80 up)
5xx Cutoff slide up
6xx Cutoff slide down
D0x ECx F8x Ax Global volume (SIDW small effect)
Dxx Timing mark (10..FF) (maybe for 4bit volume hack sample)
0Axy Volume slide (only global volume on SID, maybe sustain)
F3xx Finer volume slide up
F4xx Finer volume slide down
F8xx Fine volume slide up
F9xx Fine volume slide down
FAxy Fast volume slide (FA0F is basically a note cut)
D3xx Target volume slide (vol col)
D4xx Fine target volume slide (vol col)
DCxx Mute after x ticks
Exx 12xx 09xx Groove/Swing program/table index
11xy Old funktempo/swing, alternate between x and y speeds
15xx Track/Channel groove index
14xy Track/Channel old funktempo/swing
F00 Recall even row tempo (zero-based)
F01 Recall row row tempo (zero-based)
Fxx 10xx Tempo (GT 03..7F global, 83..FF local, SIDW global)
Fxx 0Fxx Set speed (ticks per row, OT <80)
Cxxx Set tick rate in Hz
F0xx Set BPM
FDxx Set virtual tempo numerator
FExx Set virtual tempo denominator
FFxx Halt
13xx Track/Channel local tempo
8xx (unused)
9xx (unused)
Dxx F7xx Multi-effect / Macro
F5xx Disable macro
F6xx Enable macro
E5x (unused)
E6x (unused)
E8x Ex TestRingSyncGate bitmask (SIDW small effect)
1Exy x: [A,D,S,R,ring,sync,3off]; max y: [F,F,F,F,1,1,1]
EAx (unused)
EBx (unused)
EDx Dxx 0Dxx Pattern break
EFx (unused)
Bxx 0Bxx Position jump to order x
FCx ECxx Note cut
FDx (unused)
17xx (unused)
18xx (unused)
19xx (unused)
1Axx (unused)
1Bxx (unused)
1Dxx Track/Channel delay for ticks
1Exx EDxx Note delay for ticks
0Cxx Retrigger
0Exx (unused)
9xyy Sample offsets (for hacks)
DF00 Play sample forwards
DF01 Play sample backwards
EBxx Set legacy sample mode bank (for hacks)
EExx Send external command (sync)
FBxx (unused)
FCxx Note release
SID Wizard note column effects:
Sync off/on, Ringmod off/on, Noteporta off/on, vibrato depth (0..F)
SID Wizard instrument column effects:
xx Select instrument (persistent)
3F Legato (instant portamento)
4x Waveform
5x Sustain
6x Release
7x Select Chord (call chord table with 7F from arp table)
SID Wizard orderlist effects (GoatTracker apparently has something like this too):
xx Pattern number (00..7F)
8x Transpose -x+16 semitones down (F..0, somehow)
90 Switch off transposing (set original key)
9x Transpose x semitones up (1..F)
Ax Set main volume
Bx..FD Set track tempo (00..5D)
FE Song/sequence end, stop playback
FF Loop to the position specified after (<$80) or go to subsong minus $80 (>=$80)
Note: GoatTracker makes heavy use of tables, most parameters are indices to them.
Note: Defmon and Soundmonitor don't really use effect letters. There's a note delay column and 2 "sound program" columns in Defmon. Soundmonitor uses toggles for transpose, portamento, and arpeggio, in a somewhat cryptic way.
I'm not familiar with AY (see OPN SSG), SAA1099, POKEY, and software used to sequence music for them, so I won't be providing any effect table here, it would have just a Furnace column. Nintendo is boycotted due to no-life lawyers, for 2A03 see leftovers in Famitracker column. TI SN76489, VIC-20, TED and TIA are too simple for a special effect list, it's mostly about spamming their registers to achieve something even remotely musically entraining. ZX Beeper and PC Speaker use CPU-intensive modulations (rapid spamming) with software mixing.
An interesting endeavor would be to compile an effect letter азбука for use with Soviet computers. However it would probably end up like Impulse Tracker, with actual letters left for \xx, #xx, :xy, +xx, *xx, $xy and &xx. When trackers were becoming a thing in 1989, the Eastern Bloc and Soviet Union were collapsing, and everybody wanted western stuff like Amigas and PCs, even if it meant that they had to learn English and Latin. And the effect letters were originally hexadecimal digits, only some developers decided to use alphabet instead. Maybe there already is a fully cyrillic music tracker.