Sections

2024-04-21

Jižní smojka a Drážní prokrastináda


Zevrubným dataminingem tohoho blogu, mého Facebooku a českého katastru nejspíš není pro Mossad, CIA, BIS a podobné tajné služby tak složité zjistit, kde bydlím, v případě, že by něco bylo prohlášeno za politicky příliš nepohodlný obsah. Je to u nechvalně proslulé Jižní Spojky, fungl nového nádraží po optimalizaci benešovské železniční tratě, a nikdy nedodělané Drážní promenády, která měla být vybudována na větvi železnice zrušené v rámci optimalizace.

Nyní se po 20 letech od dokončení jižní části Pražského okruhu konečně rozbíhá stavba východní části, kvůli jejíž absenci je od Kačerova do Štěrbohol Jižní spojka věčně zacpaná kamiony a podobně nesmyslně velkými vozidly, která uvnitř města nemají kde zaparkovat, a vlastně ani co dělat, protože průmyslově-revoluční ulice s něčím jako kamion fakt nepočítaly. Nicméně co mi je oboje platné, když vrchol oficiální neurodivergentní individuální mobility je v Cajzlostánu elektrokolo s plynem? Za hranicemi (kromě Slovenska?) navíc za plyn na elektrokole rozdávají pokuty, protože nějaké nařízení EU vykládají moc doslova, ale v kontextu intenzity motorového provozu a absence dedikované infrastruktury mi připadá sebevražedné ho dodržovat. Pryč jsou časy covidu, kdy bylo na silnicích prázdno.

Od východozápadního individuálního přemisťování na pravém břehu Vltavy tu po vyfikundování tratě 221 tak, že nebýt střídavě 10- a 20minutových intervalů S9, je lepší než metro A (při přestupu na C), měla být Vršovická drážní promenáda, honosný to lineární park s cestami pro všechny druhy tělesně náročné dopravy, od Hasy přes Bohemku, Lokomotivu, Slavii a Union po Icerink, plus mínus žabotlam v korytě Slatinského potoka do Botiče se vlévajícího. Akorát že to, co je tam, kde to mělo být, teď, je jakási zarostlá kamenitá stezka pro horská kola, v OSM poznačená jako STS 2-, s chybějícími přemostěními, takže se nedá použít vcelku. Mnohem rychlejší je použít v jejím směru ulici Vršovickou, která sice má nějaké čmáranice vypadající jako cyklopruhy, ale čmáranice nejsou infrastruktura, a Průběžnou, kde nic jako cyklopruhy pro jistotu není.

Otázka je, zda ti, kteří tvořivše dopravní předpisy považovali cyklisty bližší řidičům nežli chodcům, předpokládali excesivní proliferaci nepřístojně velkých aut, které konstrukcí náramně začínají se podobat obrněným transportérům, a jsou schopna býti prostředkem několikerých teroristických útoků takzvanými "náklaďáky míru", jejichž průkopníkem byla rodačka Hepnarová. A co víc, tyto se dnes mohou stát i nezáměrně vlivem vysoké inercie a nepozornosti. V USA výrobci využívají zákonné díry pro "lehké náklaďáky", aby jako regulérní auta prodávali velké krávy, a takové typy se začínají proliferovat i v historické Praze. Nezbývá tak než k zachování tempa a dorovnání sil na kolo namontovat motor. A jedná-li se o motor dostatečně silný, je možné namísto Vršovické využít obávanou Magistrálu a Jižní spojku, ježto jsou silnce přímo pro vozidla motorová. Část magistrály de iure motorová není, ježto jsou kolem a uprostřed ní jakési staré budovy, ale s tím si nikdo hlavu nedělá, a mimo semafory způsobenými prostoji se tam stále jezdí 120, jak ostatně žádali kontraaktivisté, a dokonce i policie je názoru "no cyclist here".

Ačkoliv cykloaktivistické strany ujaly se magistrátního resortu dopravy, kromě fešných plánků a plánů praničeho zpola zásadního se v cykloinfrastruktuře neudálo. Komunistický záměr ZáKoSu v podobě kosmetických úprav NKS se zovoucích pomalu a nejistě pokračuje. A tak zůstává stále příhodnějším na kolo všemožné motory montovati, a mnohdy jsou kola motorová s motory spalovacími levnější než ty s elektrickými.

Do toho vměšuje se propaganda konglomerátů automobilových, snažící se kola motorová očerniti jakožto pro jezdce nebezpečné a smrtící, přehlížeje skutečnost, že jejich nové automobily nebezpečné a smrtící jsou pro ty, kdož nachází se mimo ně, právě jejichž prostředek dopravy jakožto nebezpečný očerňují. V nových automobilech nachází se všemožné elektronické asistence, které ve výsledku umenšují kontrolu řidiče nad jeho vozem, porušujíc zákon robotiky druhý Asimovův. Pro ně zajisté jsou laciné způsoby dopravy škodná, neb i pouhé smítko prachu saharského způsobí nominálně škodu nesmírnou na dílech předražených. I přesto výrobci neochotni jsou za asistence, jimiž automobily vybavují, a jež nedají se mnohdy snadno vypnout, nést zodpovědnost. Pryč jsou ty časy Škody 100, Fiatu 123p a Trabantu 601, pro něž původně byly zamýšleny dálnice městské, jsa nahrazeny náklaďáky příšernými, po anglicku Monster Trucks, a vozidly terénními, snad v reakci na stav vozovky, ke kterému svou vahou jen přispívají.

Dokud bude Jižní spojky a podobných městských dálnic více než Drážní promenády a podobných cyklodálnic, nenastane masivní přechod na ekologičtější a efektivnější formy dopravy, a dopravní infrastruktura bude dále kolabovat pod zástupy zbytečně velkých aut, v nichž sedí jen 1 člověk, ačkoliv je v nich místo pro 5. I proto zovu Jižní spojku Jižní smojkou, dle smogu vyrobeného a do mých oken vypuštěného, a Drážní promenádu Drážní prokrastinádou, neboť její realisace byla odsunuta za hranice volebního období jako sudetští Němci.

Onoho času byl kdesi v Praze namalován cyklopruh tak, že vedlejší obecný pruh měl šířku jen 1,8 metrů. Jednalo se o naprosto ideální pruh pro motorky a mopedy, které legálně užít cyklopruh nesmějí, jakkoliv by to vzhledem k tomu, že v nich jezdí jenom nebojácní cyklisti nebo elektrocyklisti, dávalo smysl. Poslední auto, které by se do toho úzkého obecného pruhu vešlo, byla Škoda Favorit, a amerizovaná rádobyterénní auta musela použít vedlejší pruh, už normálně široký. Jen více takových motopruhů, už jenom jako způsob udržování povinného odstupu 1,5 m zrcátko-řidítko. Pomohlo by i do centra, vymezeného Městským okruhem, zakázat vjezd všem vozidlům širším než 2 metry, což bylo donedávna málokteré auto, a vymáhat to možností beztrestně urazit zrcátka při vyhýbání se. Co by ale nepomohlo, je zavést všude plošné omezení na 30 km/h, které by všichni stejně ignorovali, protože hypnotizování tachometru místo dívání se na cestu určitě není bezpečná jízda. Je problém s velikostí a vahou moderních aut, ne rychlostí. Aerodynamika ji realisticky omezuje na 200 km/h, zatímco lehčí a užší motorky mají aerodynamický limit na 300 km/h jako střemhlavý let sokola. Při vyšších rychlostech už všechno palivo padá na boj s odporem vzduchu a ani motor o objemu větším než PET lahev Bránika s tím moc nezmůže, a musí se přistoupit k pohonu tryskovému či raketovému.

Motorek se nemá týkat zákaz výroby vozidel se spalovacím motorem od roku 2035. Přitom na motorkách dává elektrický pohon větší smysl než v autech, v podstatě se jedná o pořádné elektrokolo bez šlapek (ale nějakou můžete vozit za sebou ehm ehm). Zatím jsou stejně jako elektroauta elektromotorky stále moc drahé a mají moc malý dojezd na to, že nabíjení trvá několik hodin, kdežto benzín se dá dolít během několika minut, a stojí míň než typická návštěva fast foodu. Navíc středovýchodní Evropa od 90. let byla pro Západ takové vrakoviště. 5 let staré auto po leasingovce je pro nás teprve zajeté, a v registru vozidel hnije hromada motorek z 60. let, k nimž se papíry dávno ztratily. A to není nic proti Kubě, kde díky naivnímu sankcionování ze strany USA jsou vozidla z 50. let prakticky součást estetiky, a tamější socialistické výrobní kapacity pokračují ve výrobě podobně vypadajících. Prostě čím méně elektroniky, tím lépe se to dá opravit, teda pokud nemáte sudo.



2024-04-08

Music Tracker Effects Rosetta Stone

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  Description
0xy  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.