# 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 ⬤. Loop commands for instrument/FM op program support nested loops, max nestedness level is 4. Commands with memory work as described only in pattern. In instrument / FM op program they work only in their respective step as it was before. _`xx`, `yy`, `zz` = parameter to command_ | **Command** | **Description** | |:------------|:----------------| | `00xx` | set arpeggio note (final played note = played note + arpeggio note + vibrato + finetune (set pitch detune command) etc.). Used as `00xy` in pattern when multiosc is enabled to set notes for full chord: 1st note is the actual note in pattern, 2nd note is 1st + x, 3rd note is 1st + y. | | `23xx` 🔴 | set arpeggio note (final played note = played note + arpeggio note + vibrato + finetune (set pitch detune command) etc.) but unlike `00xx` it goes `xx` semitones down. Added mostly because arpeggio macros in trackers like FamiTracker allow for negative pitch shifts. | | `74xx` 🔴 | set 1st external arpeggio note. If multiosc is enabled sets 2nd chord note from pattern (1st chord note is the actual note in pattern). 2nd note = 1st note + xx. | | `75xx` 🔴 | set 2nd external arpeggio note. If multiosc is enabled sets 3rd chord note from pattern. 3rd note = 1st note + xx. | | `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. | | `93xx` 🔴 | set pitch detune. `9300` means -1 semitone, `93ff` means +254/256th of semitone. The effect still works no matter what you do afterwards (e.g. portamento, arpeggio etc.), and new note trigger does not reset it. `9380` sets 0 detune so it can be used to switch off whatever detune you set up earlier. | | `40xx` | set absolute arpeggio note (final played note = absolute arpeggio note + vibrato etc.) | | `01xx` | portamento up (note fraction: `0101` means 4/256th of semitone up each tick). In klystrack-plus effect has memory: you start it by typing `01xx` and it will continue until it hits `0100`. | | `02xx` | portamento down (note fraction: `0201` means 4/256th of semitone down each tick). In klystrack-plus effect has memory: you start it by typing `02xx` and it will continue until it hits `0200`. | | `03xx` | slide to note with speed xx (note fraction: `xx`/256th of semitone each tick) | | `96xy` 🔴 | slide `y` semitones up with speed `x` (note fraction: `x`/4th of semitone each tick) | | `97xy` 🔴 | slide `y` semitones down with speed `x` (note fraction: `x`/4th of semitone each tick) | | `98xy` 🔴 | Transpose note `y` semitones after `x` ticks. MSB of the parameter tells the direction: if it is 0 transpose up, if it is 1 transpose down. So `988F` immediately transposes 15 semitones down, and `987F` transposes 15 semitones up after 7 ticks. A 1 to 1 copy of FamiTracker `Txy` command. | | `2fxx` 🔴 | fast slide to note with speed xx (note fraction: `xx`/16th of semitone each tick; hence it's 16 times faster than `03xx`) | | `04xy` | vibrato with speed of x and depth of y (in klystrack-plus if x and y are 0 return to instrument parameters) | | `05xx` | portamento up (frequency: it works with direct frequency values rather than note fractions, so e.g. `0520` will slide up faster on low frequencies (notes) and slower on high ones). The "period" way (1 / frequency, so the higher the note the faster it works) is how old Amiga trackers actually execute portamento/slide commands. | | `06xx` | portamento down (frequency: it works with direct frequency values rather than note fractions, so e.g. `0620` will slide down faster on low frequencies (notes) and slower on high ones) | | `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) | | `99xy` 🔴 | Panbrello with speed of x and depth of y (00 = off). Panbrello is like vibrato/tremolo but for position in stereo field, so your channel sound wanders back and forth between left and right. Depth means how "far" left and right it goes. Command obeys channel panning and caps at hard left/hard right positions if you set max depth and pan the channel left/right with default panning (channel header) | | `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) | | `2ebx` 🔴 | set vibrato shape | | `2ecx` 🔴 | set tremolo shape | | `2edx` 🔴 | set PWM shape | | `2eex` 🔴 | set panbrello shape | | `2efx` 🔴 | set FM modulator vibrato shape | | `34fx` 🔴 | set FM modulator tremolo shape | | `9axx` 🔴 | set vibrato speed | | `9dxx` 🔴 | set tremolo speed | | `9fxx` 🔴 | set PWM speed | | `78xx` 🔴 | set panbrello speed | | `7exx` 🔴 | set FM modulator vibrato speed | | `e1xx` 🔴 | set FM modulator tremolo speed | | `9cxx` 🔴 | set vibrato depth | | `9exx` 🔴 | set tremolo depth | | `77xx` 🔴 | set PWM depth | | `79xx` 🔴 | set panbrello depth | | `7fxx` 🔴 | set FM modulator vibrato depth | | `e2xx` 🔴 | set FM modulator tremolo depth | | `07xx` | pulse width down. In klystrack-plus effect has memory: you start it by typing `07xx` and it will continue until it hits `0700`. | | `08xx` | pulse width up. In klystrack-plus effect has memory: you start it by typing `08xx` and it will continue until it hits `0800`. | | `09xx` | set pulse width | | `0axy` | Fade volume up by x, down by y. In klystrack-plus effect has memory: you start it by typing `0Axy` and it will continue until it hits `0A00`. | | `4axy` 🔴 | Fade FM modulator volume up by x, down by y | | `0bxx` | set waveform. xx is a hex number, 7 lower bits of which are controlling different waves: `SINE WAVE LFSR S T P N`, where `SINE` is sine wave, `WAVE` is wavetable entry (wavetable/sample), `LFSR` is POKEY LFSR (sometimes called "distortion"), `S` is sawtooth wave, `T` is triangle wave, `P` is pulse wave, `N` is noise. So to enable only noise you use `0b01`, to disable all waves you use `0b00`, for sine only you use `0b40`, for sine + triangle + pulse you use `0b46` etc. | | `0e5x` 🔴 | set noise mode (1 = 1-bit, 2 = metal, 4 = fixed pitch, 6 = 2 + 4 = metal + fixed pitch etc.) | | `0cxx` | set volume (obeys `RELATIVE` flags in instrument/FM op editor) | | `76xx` 🔴 | set absolute volume (does not obey `RELATIVE` flags in instrument/FM op editor). Use with caution when ruling FM ops from main instrument program, because even the ops that are silent will be enabled! To avoid this, disable all waveforms for FM ops which you want to be silent in any case. | | `94xx` 🔴 | set program volume (from instrument program; relative to current 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 | | `2e6x` 🔴 | Works like `e6x` in FastTracker II: `2e30` marks loop begin, `2e3x` where `x` != 0 marks loop end (the loop begin and loop end must be in the same pattern). The song will loop over this interval `x` times (loop means revert to `2e30` `x` times so if end is marked `2e31` the interval between commands is played twice). This only works correctly if patterns on all channels start from the same position (or earlier) as the pattern you do the loop in and end after loop end: if some pattern starts (or ends) on the position that is inside the loop, it will not be played correctly. | | `2e3x` 🔴 | fine portamento up by x (note fraction: `2e31` means 4/256th of semitone up). Runs only at 1st tick of program/pattern step. | | `2e4x` 🔴 | fine portamento down by x (note fraction: `2e41` means 4/256th of semitone down). Runs only at 1st tick of program/pattern step. | | `0e1x` | extra fine portamento up by x (note fraction: `0e11` means 1/256th of semitone up). Runs only at 1st tick of program/pattern step. | | `0e2x` | extra fine portamento down by x (note fraction: `0e21` means 1/256th of semitone down). Runs only at 1st tick of program/pattern step. | | `2e7x` 🔴 | glissando control (similar to Protracker `E3x`). `0` disables glissando and `1`-`F` enable it. Glissando can be set per FM op in their macros or for the whole instrument from pattern (or from instrument program if ops use it). | | `0e9x` | retrigger note every x tick | | `e9xx` 🔴 | retrigger note every xx tick (extended tick range) | | `2e0x` 🔴 | Oscillators phase reset on tick x (pulse/tri/noise (not in fixed noise pitch mode)/saw/sine) | | `2e1x` 🔴 | Noise phase reset on tick x (in fixed noise pitch mode) | | `2e2x` 🔴 | Wavetable phase reset on tick x | | `43dx` 🔴 | FM modulator phase reset on tick x | | `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) | | `ecxx` 🔴 | set volume to zero on tick xx (note cut, extended tick range) | | `0edx` | start playing current note on tick x (note delay) | | `edxx` 🔴 | start playing current note on tick xx (note delay, extended tick range) | | `0eex` 🔴 | set oscillators' mix mode (default is bitwise AND, to get e.g. pulse+tri wave as in Fearofdark songs select SUM etc.) | | `0e0x` 🔴 | set sine wave phase shift (in (pi / 8) * x increment). Works only with built-in sine wave (does not work with sample / wavetable) | | `0fxy` | set play speeds to x and y. if x is 0, set both to y. In instrument program works as `0fxx` where `xx` is program period (how many ticks it takes the program to advance to the next step). If both x and y are 0 or only y is 0, does not change anything. With any param disables groove. | | `41xx` 🔴 | set play speed 1 to xx. If xx is zero, does not change speed. With any param disables groove. | | `42xx` 🔴 | set play speed 2 to xx. If xx is zero, does not change speed. With any param disables groove. | | `90xx` 🔴 | set groove. Sets groove only if groove is not empty and if its number is valid (xx < 64) | | `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. In klystrack-plus effect has memory: you start it by typing `17xx` and it will continue until it hits `1700`. | | `18xx` | set stereo panning to xx, 0 = left, 64 (0x40) = center, 128 (0x80) = right (0 = left, 128 (0x80) = center, 255 (0xff) = right in klystrack-plus) | | `19xx` | slide panning to right by xx. In klystrack-plus effect has memory: you start it by typing `19xx` and it will continue until it hits `1900`. | | `2e9x` 🔴 | fine panning slide to left | | `2eax` 🔴 | fine panning slide to right | | `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. | | `2e5x` 🔴 | toggle filter (`2e50` disables filter, `2e51`-`2e5f` enables filter). Mostly added for `.fzt` modules correct import. | | `34ex` 🔴 | toggle phase reset timer (`34e0` disables timer, `34e1`-`34ef` enables timer on tick `x`). | | `e30x` 🔴 | toggle ring modulaton (`34e0` disables ring modulaton, `34e1`-`34ef` enables ring modulaton on tick `x`). | | `e31x` 🔴 | toggle hard sync (`34e0` disables hard sync, `34e1`-`34ef` enables hard sync on tick `x`). | | `e32x` 🔴 | toggle FX bus (`34e0` disables FX bus for current channel, `34e1`-`34ef` enables FX bus on tick `x`). | | `21xx` | filter cutoff up. In klystrack-plus effect has memory: you start it by typing `21xx` and it will continue until it hits `2100`. | | `22xx` | filter cutoff down. In klystrack-plus effect has memory: you start it by typing `22xx` and it will continue until it hits `2200`. | | `29xx` | set cutoff | | `2axx` | set resonance | | `91xx` 🔴 | resonance up | | `92xx` 🔴 | resonance down | | `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 (`2d00`) or (only in klystrack-plus) jump `xx` steps beyond the end of the pattern. Analog of `Dxx` Protracker command but works even if you jump through several patterns located after the one you place the command in (works in global song coordinates) | | `95xx` 🔴 | jump to sequence position `xx` (similar to Protracker `Bxx` command). Works for `xx` pattern on all channels so be careful, since if your patterns aren't aligned on fixed grid the song will play each channel asynchronously (so applicable only to "traditional" fixed grid pattern placement) | | `14xx` 🔴 | set attack rate. 0-3F sets attack rate of current channel. 40-7F sets (xx - 0x40) attack rate for channels which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `15xx` 🔴 | set decay rate. 0-3F sets decay rate of current channel. 40-7F sets (xx - 0x40) decay rate for channels which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `20xx` 🔴 | set sustain level. 0-1F sets sustain level of current channel. 20-3F sets (xx - 0x20) sustain level for channels which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `26xx` 🔴 | (works only in FM operator program) Set sustain rate. Sets sustain rate of current FM operator. | | `16xx` 🔴 | set release rate. 0-3F sets release rate of current channel. 40-7F sets (xx - 0x40) release rate for channels which have the same instrument as on current channel for current channel and all channels that are to the left from 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 | | `348x` 🔴 | fade 4-op FM master volume up by x | | `349x` 🔴 | fade 4-op FM master volume down by x | | `341x` 🔴 | set 4-op FM operator detune (works only from operator's program). 0 = -7 detune, F and E = +7 detune | | `342x` 🔴 | set 4-op FM operator coarse detune (works only from operator's program). OPM DT2, 0-3. | | `347x` 🔴 | set 4-op FM operator SSG-EG mode (works only from operator's program). 0-F (0-7 disables SSG-EG, 8-F enables SSG-EG and sets mode: e.g. if you want to set mode 0 and enable SSG-EG you write 8, to set mode 3 and enable you write B etc.) | | `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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `a8xx` 🔴 | set 4-op FM operator 1 sustain rate. 0-3F sets sustain rate of current channel's operator. 40-7F sets (xx - 0x40) sustain rate for channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `b8xx` 🔴 | set 4-op FM operator 2 sustain rate. 0-3F sets sustain rate of current channel's operator. 40-7F sets (xx - 0x40) sustain rate for channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `c8xx` 🔴 | set 4-op FM operator 3 sustain rate. 0-3F sets sustain rate of current channel's operator. 40-7F sets (xx - 0x40) sustain rate for channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from current channel | | `d8xx` 🔴 | set 4-op FM operator 4 sustain rate. 0-3F sets sustain rate of current channel's operator. 40-7F sets (xx - 0x40) sustain rate for channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 channels' operators which have the same instrument as on current channel for current channel and all channels that are to the left from 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 = -7 detune, F and E = +7 detune) | | `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-F) | | `b42x` 🔴 | set 4-op FM operator 2 feedback | | `c42x` 🔴 | set 4-op FM operator 3 feedback | | `d42x` 🔴 | set 4-op FM operator 4 feedback | | `a43x` 🔴 | set 4-op FM operator 1 SSG-EG mode. 0-F (0-7 disables SSG-EG, 8-F enables SSG-EG and sets mode: e.g. if you want to set mode 0 and enable SSG-EG you write 8, to set mode 3 and enable you write B etc.) | | `b43x` 🔴 | set 4-op FM operator 2 SSG-EG mode | | `c43x` 🔴 | set 4-op FM operator 3 SSG-EG mode | | `d43x` 🔴 | set 4-op FM operator 4 SSG-EG mode | | `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) | | `2e8x` 🔴 | toggle buzz: enable buzz on tick `x` (`2e81`-`2e8F`); disable buzz (`2e80`) | | `3bxx` | set global wavetable sample | | `9bxx` 🔴 | set local sample (if present) | | `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. | | `e0xx` 🔴 | 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), `e040` means that sample playback stops at 75% point, `e080` means only first half is played etc. | | `44xx` 🔴 | Wave start point up. Has memory: you start slide with `44xx` and end it with `4400`. | | `45xx` 🔴 | Wave start point down. Has memory: you start slide with `45xx` and end it with `4500`. | | `0e6x` 🔴 | Wave start point up (fine). All these "fine" commands give you 65535 discrete steps for the offset or end point. | | `0e7x` 🔴 | Wave start point down (fine) | | `46xx` 🔴 | Wave end point up (further from end). Has memory: you start slide with `46xx` and end it with `4600`. | | `47xx` 🔴 | Wave end point down (closer to end). Has memory: you start slide with `47xx` and end it with `4700`. | | `0e8x` 🔴 | Wave end point up (fine) | | `0efx` 🔴 | Wave end point down (fine) | | `4bxx` 🔴 | Same as `5xxx` but for FM modulator. | | `70xx` 🔴 | Same as `e0xx` but for FM modulator. | | `4exx` 🔴 | FM wave start point up. Has memory: you start slide with `4exx` and end it with `4e00`. | | `4fxx` 🔴 | FM wave start point down. Has memory: you start slide with `4fxx` and end it with `4f00`. | | `343x` 🔴 | FM wave start point up (fine) | | `344x` 🔴 | FM wave start point down (fine) | | `71xx` 🔴 | FM wave end point up. Has memory: you start slide with `71xx` and end it with `7100`. | | `72xx` 🔴 | FM wave end point down. Has memory: you start slide with `72xx` and end it with `7200`. | | `345x` 🔴 | FM wave end point up (fine) | | `346x` 🔴 | FM wave end point down (fine) | | `6xxx` | set fine cutoff frequency (0-fff) | | `7dxx` | restart instrument program | | `8xxx` 🔴 | set fine pulse width (0-fff) | | `7cxx` | trigger release | | `7300` 🔴 | trigger instrument program release (if `fb00` is present in instrument program) | | `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) | | `f0xx` 🔴 | set CSM timer note | | `f3xx` 🔴 | set CSM timer finetune (`xx / 256` semitones up from note) | | `f1xx` 🔴 | CSM timer portamento up | | `f2xx` 🔴 | CSM timer portamento down | | `f4xx` 🔴 | set phase reset timer note | | `f7xx` 🔴 | set phase reset timer finetune (`xx / 256` semitones up from note) | | `f5xx` 🔴 | phase reset timer portamento up | | `f6xx` 🔴 | phase reset timer portamento down | | `fb00` 🔴⬤ | sets the point where instrument (or FM operator) program jumps when release is triggered. In pattern does nothing. | | `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`). In klystrack-plus does not have memory, unlike `0Axy` command. | | `Ux` | Fade volume up (same as command `0ax0`). In klystrack-plus does not have memory, unlike `0Axy` command. | | `Rx` | Fade panning right. In klystrack-plus does not have memory, unlike `19xx` command. | | `Lx` | Fade panning left. In klystrack-plus does not have memory, unlike `17xx` command. | | `Px` | Set panning (around 7-8 is center, F is right, 0 is left) | | `sx` 🔴 | Fine fade volume down | | `wx` 🔴 | Fine fade volume up (`x` is `1` to `f`, if you enter `x` as `0` the command becomes just the volume `80`) |