Commands - LTVA1/klystrack Wiki

Commands

When a note is playing, an instrument program or the track data can modify various parameters by using commands.

The commands are interchangeable between the track commands and the program commands (where applicable). Most of the commands loosely follow the "standards" set by the original Soundtracker and later trackers.

The commands generally follow a pattern: the first two digits tell the action and the next two are the parameter(s) for the command.

Commands that are only in klystrack-plus are marked with 🔴. Commands that can be entered only in instrument macro (klystrack) or work only in it but can still be entered in pattern (klystrack-plus) are marked with ⬤.

xx, yy, zz = parameter to command

Command Description
00xx set arpeggio note (final played note = played note + arpeggio note + vibrato etc.)
30xx 🔴 set noise note (in fixed pitch mode). The note is absolute and is not affected by vibrato/instrument base note/slide/arpeggio/etc but is affected by 1/4th frequency divider. Useful for AY-like instruments where noise pitch is independent from tone generator.
40xx set absolute arpeggio note (final played note = absolute arpeggio note + vibrato etc.)
01xx portamento up
02xx portamento down
03xx slide to note with speed xx
04xy vibrato with speed of x and depth of y (in klystrack-plus if x and y are 0 return to instrument parameters)
24xy 🔴 tremolo with speed of x and depth of y (if x and y are 0 return to instrument parameters)
25xy 🔴 PWM with speed of x and depth of y (00 = off)
27xy 🔴 FM modulator vibrato with speed of x and depth of y (if x and y are 0 return to instrument parameters)
28xy 🔴 FM modulator tremolo with speed of x and depth of y (if x and y are 0 return to instrument parameters)
07xx pulse width down
08xx pulse width up
09xx set pulse width
0axy Fade volume up by x, down by y
4axy 🔴 Fade FM modulator volume up by x, down by y
0b0x set waveform (1 = noise, 2 = pulse, 4 = triangle, 8 = saw, 9 = 1 + 8 = noise + saw etc.)
0e5x 🔴 set noise mode (1 = 1-bit, 2 = metal, 4 = fixed pitch, 6 = 2 + 4 = metal + fixed pitch etc.)
0cxx set volume
37xx 🔴 Set volume key scaling level (00 = off)
38xx 🔴 Set FM modulator volume key scaling level (00 = off)
3cxx 🔴 Set envelope key scaling level (00 = off)
3dxx 🔴 Set FM modulator envelope key scaling level (00 = off)
0dxx jump to pattern position xx (in current pattern only), makes pattern looping possible
0e1x fine portamento up by x
0e2x fine portamento down by x
0e9x retrigger note every x tick
0eax fine fade volume down by x
0ebx fine fade volume up by x
34ax 🔴 fine fade FM modulator volume down by x
34bx 🔴 fine fade FM modulator volume up by x
0ecx set volume to zero on tick x (note cut)
0edx start playing current note on tick x (note delay)
0eex 🔴 set oscillators' mix mode (default is bitwise AND, to get e.g. pulse+tri wave as in Fearofdark songs select SUM etc.)
0fxy set play speeds to x and y. if x is 0, set both to y
41xx 🔴 set play speed 1 to xx
42xx 🔴 set play speed 2 to xx
10xy set external arpeggio notes (used with 00f0 and 00f1 in the program)
11xx portamento up by one semitone
12xx portamento down by one semitone
17xx slide panning to left by xx
18xx set stereo panning to xx, 0 = left, 64 = center, 128 = right (0 = left, 128 = center, 255 = right in klystrack-plus)
19xx slide panning to right by xx
1axx fade global volume, works similar to 0axx
1cxx set channel volume, works similar to 0cxx
1dxx set global volume, works similar to 0cxx
1fxx set play rate to xx (0x00XX in klystrack-plus)
43xx 🔴 set play rate higher byte to xx (0xXX00). Note that rate is capped at 44100 so if your desired value (desired higher byte + current lower byte) is bigger it won't be set.
21xx filter cutoff up
22xx filter cutoff down
29xx set cutoff
2axx set resonance
2bxx set filter type
0e3x 🔴 set filter slope
2cxx combined set filter cutoff and type (0x00..0x7F = lowpass, 0x80..0xFF = highpass, similar to AHX command 4xx)
2dxx jump to the end of the current pattern
14xx 🔴 set attack rate. 0-3F sets attack rate of current channel. 40-7F sets (xx - 0x40) attack rate for all channels which have the same instrument as on current channel
15xx 🔴 set decay rate. 0-3F sets decay rate of current channel. 40-7F sets (xx - 0x40) decay rate for all channels which have the same instrument as on current channel
20xx 🔴 set sustain level. 0-1F sets sustain level of current channel. 20-3F sets (xx - 0x20) sustain level for all channels which have the same instrument as on current channel
16xx 🔴 set release rate. 0-3F sets release rate of current channel. 40-7F sets (xx - 0x40) release rate for all channels which have the same instrument as on current channel
33xx set FM modulator volume (level of modulation)
340x set FM feedback
35xy set FM multiplier (x divides frequency, y multiplies)
36xx set FM wave
3exx 🔴 set 4-op FM algorithm
13xx 🔴 set 4-op FM master volume
a0xx 🔴 trigger 4-op FM operator 1 release on tick xx
b0xx 🔴 trigger 4-op FM operator 2 release on tick xx
c0xx 🔴 trigger 4-op FM operator 3 release on tick xx
d0xx 🔴 trigger 4-op FM operator 4 release on tick xx
a5xx 🔴 set 4-op FM operator 1 attack rate. 0-3F sets attack rate of current channel's operator. 40-7F sets (xx - 0x40) attack rate for all channels' operator which have the same instrument as on current channel
b5xx 🔴 set 4-op FM operator 2 attack rate. 0-3F sets attack rate of current channel's operator. 40-7F sets (xx - 0x40) attack rate for all channels' operator which have the same instrument as on current channel
c5xx 🔴 set 4-op FM operator 3 attack rate. 0-3F sets attack rate of current channel's operator. 40-7F sets (xx - 0x40) attack rate for all channels' operator which have the same instrument as on current channel
d5xx 🔴 set 4-op FM operator 4 attack rate. 0-3F sets attack rate of current channel's operator. 40-7F sets (xx - 0x40) attack rate for all channels' operator which have the same instrument as on current channel
a6xx 🔴 set 4-op FM operator 1 decay rate. 0-3F sets decay rate of current channel's operator. 40-7F sets (xx - 0x40) decay rate for all channels' operators which have the same instrument as on current channel
b6xx 🔴 set 4-op FM operator 2 decay rate. 0-3F sets decay rate of current channel's operator. 40-7F sets (xx - 0x40) decay rate for all channels' operators which have the same instrument as on current channel
c6xx 🔴 set 4-op FM operator 3 decay rate. 0-3F sets decay rate of current channel's operator. 40-7F sets (xx - 0x40) decay rate for all channels' operators which have the same instrument as on current channel
d6xx 🔴 set 4-op FM operator 4 decay rate. 0-3F sets decay rate of current channel's operator. 40-7F sets (xx - 0x40) decay rate for all channels' operators which have the same instrument as on current channel
a7xx 🔴 set 4-op FM operator 1 sustain level. 0-1F sets sustain level of current channel's operator. 20-3F sets (xx - 0x20) sustain level for all channels' operators which have the same instrument as on current channel
b7xx 🔴 set 4-op FM operator 2 sustain level. 0-1F sets sustain level of current channel's operator. 20-3F sets (xx - 0x20) sustain level for all channels' operators which have the same instrument as on current channel
c7xx 🔴 set 4-op FM operator 3 sustain level. 0-1F sets sustain level of current channel's operator. 20-3F sets (xx - 0x20) sustain level for all channels' operators which have the same instrument as on current channel
d7xx 🔴 set 4-op FM operator 4 sustain level. 0-1F sets sustain level of current channel's operator. 20-3F sets (xx - 0x20) sustain level for all channels' operators which have the same instrument as on current channel
a1xx 🔴 set 4-op FM operator 1 release rate. 0-3F sets release rate of current channel' operator. 40-7F sets (xx - 0x40) release rate for all channels' operators which have the same instrument as on current channel
b1xx 🔴 set 4-op FM operator 2 release rate. 0-3F sets release rate of current channel' operator. 40-7F sets (xx - 0x40) release rate for all channels' operators which have the same instrument as on current channel
c1xx 🔴 set 4-op FM operator 3 release rate. 0-3F sets release rate of current channel' operator. 40-7F sets (xx - 0x40) release rate for all channels' operators which have the same instrument as on current channel
d1xx 🔴 set 4-op FM operator 4 release rate. 0-3F sets release rate of current channel' operator. 40-7F sets (xx - 0x40) release rate for all channels' operators which have the same instrument as on current channel
a2xy 🔴 set 4-op FM operator 1 frequency multiplier (x divides frequency, y multiplies)
b2xy 🔴 set 4-op FM operator 2 frequency multiplier (x divides frequency, y multiplies)
c2xy 🔴 set 4-op FM operator 3 frequency multiplier (x divides frequency, y multiplies)
d2xy 🔴 set 4-op FM operator 4 frequency multiplier (x divides frequency, y multiplies)
a3xx 🔴 set 4-op FM operator 1 volume
b3xx 🔴 set 4-op FM operator 2 volume
c3xx 🔴 set 4-op FM operator 3 volume
d3xx 🔴 set 4-op FM operator 4 volume
a40x 🔴 set 4-op FM operator 1 detune (0 - DT1 -3, 3 - DT1 0, 6 - DT1 +3)
b40x 🔴 set 4-op FM operator 2 detune
c40x 🔴 set 4-op FM operator 3 detune
d40x 🔴 set 4-op FM operator 4 detune
a41x 🔴 set 4-op FM operator 1 coarse detune (OPM DT2, 0-3)
b41x 🔴 set 4-op FM operator 2 coarse detune
c41x 🔴 set 4-op FM operator 3 coarse detune
d41x 🔴 set 4-op FM operator 4 coarse detune
a42x 🔴 set 4-op FM operator 1 feedback (0-7)
b42x 🔴 set 4-op FM operator 2 feedback
c42x 🔴 set 4-op FM operator 3 feedback
d42x 🔴 set 4-op FM operator 4 feedback
31xx slide buzz tuning up
32xx slide buzz tuning down
3f0x set buzz shape (0-3)
39xx set buzz finetune (0x80 = 0, 0x00 = -128, 0xff = 127)
3axx set buzz semitune (0x80 = 0, 0x00 = -128, 0xff = 127)
5xxx start wavetable sample at offset xxx (0-fff, 0-100% of sample length). In klystrack-plus, if wave is looped, this command sets starting point from which sample will loop at every its cycle, in pingpong mode it will change playback direction at this point instead of "begin" point set in wavetable window.
exxx 🔴 Set wave end point. If wave is looped, this command sets ending point up to which sample will loop at every its cycle, in pingpong mode it will change playback direction at this point instead of "end" point set in wavetable window. e000 means that sample ends where it should (e.g. if sample is 256 steps long and "end" is set at 255), e400 means that sample playback stops at 75% point, e800 means only first half is played etc.
44xx 🔴 Wave start point up
45xx 🔴 Wave start point down
46xx 🔴 Wave end point up (further from end)
47xx 🔴 Wave end point down (closer to end)
4bxx 🔴 Same as 5xxx but for FM modulator.
70xx 🔴 Same as exxx but for FM modulator.
4exx 🔴 FM wave start point up
4fxx 🔴 FM wave start point down
71xx 🔴 FM wave end point up (further from end)
72xx 🔴 FM wave end point down (closer to end)
6xxx set fine cutoff frequency (0-fff)
7dxx restart instrument program
8xxx 🔴 set fine pulse width (0-fff)
7c00 trigger release
4d00 🔴 trigger FM carrier release
4c00 🔴 trigger FM modulator release
0e4x 🔴 Set exponential settings (1 is volume, 2 is attack, 4 is decay, 8 is release, if want to set volume and attack do 8 + 1 = 9, if want to disable only decay and keep others on do 11 etc., these are bits of hex number)
34cx 🔴 Set FM modulator exponential settings (as above)
fd00 loop begin
fexx loop to previous "fd00" xx times. In fe00 case it becomes an infinite loop
ffxx go to step xx (leftmost number column in instrument macro)
fffe nop (no operation). In instrument macro is displayed as ....
ffff end program

Volume column commands

The volume column can be used to trigger some commands in addition to setting the volume.

Command Description
Dx Fade volume down (same as command 0a0x)
Ux Fade volume up (same as command 0ax0)
Rx Fade panning right
Lx Fade panning left
Px Set panning (around 7-8 is center, F is right, 0 is left)