01/03/2015

Klystrack Tutorial 9 - Command Column

A big part of tracking is the command column. Every time you're trying to achieve something more than triggering a note, there's a fair chance you'll need to use the command column to do it. In fact, it's such an important part of tracking, that I should've written about it before. But there's so many commands to write about, the lazy part of me (read: all of me) didn't really want to sit down and do it. But in my last tutorial, fantastic moron that I am, I painted myself in a corner by promising I would write about commands next. Ugh. So here goes... sit down, get comfy, cause this one is going to be long. Also note that I will be attacking these commands in alphabetical order, so they are not going to be well categorized in terms of what they actually do. 

a note about duplicate commands
A fair number of commands in Klystrack can be applied in more than one way. For example changing the volume of an instrument can be done in a few place: the volumn column (no really...), the command column, the instrument's program, etc. There is no single best way to go about it and in most cases it doesn't matter where/how you apply a command as the result will be the same. Sometimes however, you'll come across a situation where you need/want to apply more than one command simultaneously. In those cases, the general rule of thumb is: if it can be done somewhere other than the command column, then do it there and keep the command column free. For example: you want to change the volume, apply legato, and slide the pitch up at the same time. The only way to do all that on the same row is to apply the volume command in the volume column, use the control bits to apply legato, and put your pitch up effect in the command column.

how are commands applied to a sound
Commands are applied once per ticks so they will act differently depending on the song's speed. If you compose a song at speed 6 with three metric tons of pitch bend commands (1xx/2xx) and then you decide to change the speed to 4, you will need to adjust your pitch bends if you want them to bend by the exact same amount. Some commands remain unaffected by this because it doesn't matter how many times they are applied. The volume (Cxx) for example. Whether you apply it once or three thousand times, it won't make a difference. It'll set the volume at whatever value you put and that's the end of it. 

Pitch Bend (1xx / 2xx)
Two of the most common and useful commands at your disposal. You'll often see them referred to as "portamento" but that is not technically correct, albeit close enough. The 1xx command will bend the pitch up by the value indicated by xx. The 2xx is basically the same thing, but bending the pitch down. It is generally recommended to avoid using the pitch bend command in order to reach a specific pitch. It's not that its impossible to achieve, it's just that it takes a fair bit of fiddling around with values to get the precise pitch you're looking for, and furthermore...there's another command that's made to do just that. Legal values range from 00 to FF. 

Portamento (3xx)
This is actually the real portamento, but remember that this is tracking we're talking about, where everything has the wrong name and doesn't make sense, so you'll often see this referred to as slide. This command will make the pitch slide between the previous note, and the new one, whether its sliding up or down in pitch. Let's say you have a C note playing, and you want to bend up to a G. You will need to use the 3xx command on your G note. This will make the C note gradually slide up to the G. How fast it will slide is indicated by the value in xx. You only need to put the command once for the effect to apply, but if you're looking to get creative, you can put more than one 3xx command back to back with different sliding speeds.

Vibrato (4xy)
This is a fairly straightforward command. For every row where you have a 4xy command, your sound will have vibrato applied to it. If you use 400, you will basically be using the instrument's vibrato settings. It's the same thing as setting the vibrato Control Bit on. But if you'd like to have more control over the vibrato, know that x is the speed of the vibrato, and y is the depth. Legal values are from 0 to F for each parameter.

Pulse Width Modification (7xx / 8xx / 9xx)
You will use this command in the instrument's Program way more than you'll use it directly in a pattern, but it's still available in both places. 7xx will move the Pulse's width down (away from a pure square wave). 8xx will move the Pulse's width up (towards a pure square wave) and 9xx will let you set it to any specific value indicated by xx.

Fade Volume (Axy)
This command, quite obviously, fades the volume of an instrument either up or down. The x parameter is the Fade In value, and the y parameter is the Fade Out value. Obviously they are not meant to be used simultaneously, although nothing is stopping you from doing something as pointless as fading a sound in and out by the same amount. Values range from 0 to F for both parameters.

Set Waveform (Bxx)
This nifty little command lets you change which oscillators are on or off in your instrument. Used creatively, this command can really bring an instrument to life, or create weird new textures for instruments. The xx parameter is a bitfield and can be a bit confusing to newcomers. B01 is the Noise oscillator, B02 is the Pulse oscillator, B04 is the Triangle oscillator and so on. If you want to have all three turned on, you would use B07 (01+02+04). I use this command all the time for my snare, letting me have a tonal transient, and then switch to a noise tail.

Set Volume (Cxx)
That's pretty self explanatory. This command will set the volume of your instrument to whatever value you indicate in XX. Legal values range from 00 to FF. This command acts differently whether your instrument has the Relative option turned on or off. If it's off, then this command will simply set the volume at whatever value you put in. Remember that the default volume for an instrument is 80, halfway between 00 and FF. So if you want to have 50% volume, you need to check what the instrument's volume is. If it's 80, then half would be 40. If you have the Relative option set to on, then the effective range of the command is 00 to 80, with 80 representing the "full volume" of the instrument. So for example 20 would always be a quarter of the volume of your instrument, no matter what its volume parameter is set to. Very useful to have your instrument set to Relative.

Loop Pattern (Dxx)
Pointless command, a vestigial organ from olden days gone by, tracking's very own coccyx. It was mostly used to create multiple songs inside the same music file, or to keep the pattern data to a minimum to keep the file size as tiny as possible. In an age where your damn phone has 64gb of storage, this command has lost all purpose, besides perhaps to show off how technical you can get. It was included in Klystrack for questions of backwards compatibility when importing old xm/mod files.

Fine Pitch Bend (E1x / E2x)
These two commands work exactly like 1xx and 2xx, but with even more precision. You will rarely need that much precision in a pitch bend effect, at least for musical purposes. But it can definitely come in handy for special situations where a super slow bend is called for.

Retrigger (E9x)
This command basically lets you put in more notes than what the pattern can normally handle. It will retrigger the note a number of times equal to the x value. Very useful on percussions to create flam effects.

Fine Volume Fade (EAx / EBx)
Unlike the Fine Pitch Bend, this one actually comes in handy very often. The normal volume fade command (Axy) has only 16 possible values in any direction. This makes A01 and A10 a bit coarse. Sometimes you want to fade your volume slower than what a series of A01 would give. Of course you could space out your A01 commands a bit, but this will result in a 'staircase' effect. For long smooth fades, EAx (fade out) and EBx (fade in) is the only way to go.

Note Cut (ECx)
This commands cuts the sounds after a number of ticks equal to the value indicated by x. For example if your song is set to speed 4, then you have 4 ticks per row. If you want a note to be half the length of a row, you would use EC2 on it.

Note Delay (EDx)
This one delays the start of your note by the number of ticks indicated by x. This basically let's you place note "between rows." If your song is at speed 6, then it has 6 ticks per row. If you want to place a note halfway between two rows, you'd use ED3 on it. This command is super useful to 'humanize' your song. For example, if you have a C chord spread over three channels (C on 1, E on 2, and G on 3) you could add ED1 to the E note, and ED2 to the G note to simulate the looseness of an actual human playing a chord on a keyboard. It can be used to simulate guitar strumming too. Play with it, you'll see what I mean.

Set Speed (Fxy)
Unless you have a tempo change in your song, you will rarely be using this command. It would make much more sense to set the song's speed settings to whatever you need. But, if you do need to use it, you need to understand that contrary to a LOT of trackers out there, Klystrack has TWO speed settings: one for even-numbered rows, and one for odd-numbered rows. Sounds weird? It really is. The intention was to give you the ability to have "built-in" shuffle without having to do it by hand, but it really only works if you are at speed 6/6 and you have your beats set every four rows. In just about 100% of all cases, ever, you won't be using different settings. The x parameter is for even rows, and the y parameter is for odd rows. Note that if you put a value on y and leave x to 0, it will use the y value for both....one more proof that nobody in their right mind wants to have tempo changes per row.

Set External Arpeggio Note (0xxx / 1xxx)
This was explained in details in my arp tutorial, so you can read all about it over there.

Semitone Pitch Bend (11xx / 12xx)
Think of the normal 1xx and 2xx pitch bend commands and you have the basic idea. These two commands however, will bend the pitch in increments of one semitone. Not the most used commands, but you will eventually come across a situation where you want to bend by a fixed number of semitones and using this will be a lot faster than fiddling with 1xx/2xx until you get the pitch right.

Panning (17xx / 18xx / 19xx)
All three of these commands are basically the exact same thing: they will let you place the sound somewhere in the stereo field. The 18xx command is the basic one, and it will let you pan the instruments from hard left (1800) to hard right (18FF) with the center being at 1880. This gives you 128 discreet positions on each side and it should cover all your panning needs. However if for some obscure reason your song needs even more precision than that, you can use the other two commands. The 17xx command will let you pan from center (1700) to hard left (17FF), while the 18xx command let's you do the same thing on the right. This effectively gives you 256 discreet positions. Why in hell would you ever need such precision is beyond me, but it's available.

Global Volume Fade (1Axy)
There is one universal truth in music: YOU NEVER FADE OUT AT THE END OF THE SONG UNLESS YOU'RE BEING IRONIC. With that said, if irony is beyond your grasp, or if you can't finish your damn songs properly, there's a command that lets you fade the entire song's volume. It works exactly like the Axy command.

Set FX Bus (1Bxx)
This is one of the great underrated and underused commands in Klystrack. This lets you send your instrument's ouput to one of the eight FX units of your choice. It's a super creative command, and when used properly it can result in great effects. For example you could use it on every other snare hit so that one out of two snare has echo, or chorus. You can use it to have different delays on different notes for the same instrument. It's pretty damn fun to play around with, so try it for yourself.

Channel Volume (1Cxx)
This one works pretty much like the standard Cxx volume command, except that it affects the entire channel instead of just one note. I've yet to see a situation where this is useful, but it's there. Anything you can do with this command, you can probably do better manually. But for the lazy composers out there, there ya go buddy.

Global Volume (1Dxx)
Another command that works like Cxx, but this time it affects the whole song's volume. This one is actually way more useful than 1Cxx, but still very situational.

Set Sample Rate (1Exx)
If your instrument is sent to a FX unit with the bit crusher effect turned on, then this command will let you change the sample rate of the crusher on the fly. This opens up a ton of possible textures for your sound and really needs to be explored and tinkered with to be understood well. Note that if any other instrument is played through the same FX unit, their sound will also be affected by the new sample rate.

Set Rate (1Fxx)
This is an extension to the Speed (Fxy) command. It will let you set the Rate parameter to whatever floats your boat. Very useful for precise tempo changes in the middle of a song.

Filter (21xx / 22xx / 29xx / 2Axx / 2Bxx / 2Cxx)
This set of command lets you change an instrument's filter parameters on the go. The 21xx and 22xx commands will sweep the filter cutoff up or down accordingly, by the value indicated in xx. If you need to set your cutoff at a precise number, you can use 29xx. The 2Axx command lets you change the filter's resonance setting while the 2Bxx one lets you change the filter type. The most confusing of all filter commands is 2Cxx, the so called combined filter. From value 00 to 7F, it's a low pass filter, with 00 being completely closed, and 7F being completely open. Starting at 80, it's a high pass filter with 80 being completely open, and FF being completely closed. Having both of these on the same command is actually pretty sweet and lets you do stuff that would otherwise require a fair bit of manual work.

Skip Pattern (2Dxx)
If you've ever worked on music that has measures of different length, then you know how trackers are shit at handling this and not make a complete visual mess of it. This basically let's you end a pattern where you want, and move on to the next one, without suddenly making your sequence unreadable. Quite useful.

Tune Buzz (31xx / 32xx / 39xx / 3Axx / 3Fxx)
If your instrument uses the Buzz option, then these commands will let you change the parameters. The first one (31xx) will let you set the Detune into the positive numbers, while the second one (32xx) lets you tune it down into the negatives. The third command (39xx) lets you set the Fine Tune parameter, while the fourth one (3Axx) lets you set the Semitone value. The last command (3Fxx) changes the shape of the Buzz.

FM Parameters (33xx / 34xx / 35xx)
If your instrument uses FM, this set of command will let you change the parameters. You can change the Modulation with 33xx, the Feedback with 34xx, and the Multiplier with 35xx. These commands are hard to describe in writing and really need to be tinkered with in order to understand how they affect the sound. Go on...tinker.

Set Wavetable Item (3Bxx)
Another great command that goes unused and generally misunderstood. When you are using the wavetable in an instrument, the default is to refer to a specific wavetable item and stick with it. If you have Wave set to 0, then the instrument will use whatever is at position 0 in the wavetable as an oscillator. With this command however, you can change which wavetable item you are playing. This is an extremely creative command, and once again, you need to play around with it to fully grasp how cool it can be.

Absolute Arpeggio Note (4xxx)
This command was once nominated for the Most Pointless Shit In The Universe award. Unfortunately it came in third place, right after Ugg boots and Nicholas Cage. Basically what it does it change the pitch of your sound to whatever absolute note value you put in xxx. Sounds weird or confusing? This is something that people do when you have a limited number of channel and you need to mix instruments together. A kick that morphs into a bass for example. You input your kick, let's say at note C4. Then when the drum part of the instrument is over and its only the tonal bass sound, you can re-pitch it to something more musical. There are better and simpler ways to pull that off with other commands like 11xx or 12xx, or by simply adding more channels.

Wavetable Offset (5xxx)
This lets you offset the start point of a sample. Most commonly used on drum loops to trigger them from specific points in the loop. Back in the old days, this is how we did filter sweeps in a tracker that had no filter option. You'd record a long ass single-note filter sweep, and you'd move the offset to simulate moving the cutoff point.

Set Cutoff Fine (6xxx)
I can't really see  many situation where you'll need that level of precision on the cutoff, but if you ever need 4096 discreet increments instead of 256, this is what you'll be using.

Trigger Release (7Cxx)
This takes your unreleased album and puts it up on Bandcamp....I think. Or maybe it can be used to trigger the Release part of an instrument's envelope. Who knows? It's pretty much the same thing as putting a Note Off command directly in the channel, except that this time you can decide to trigger the release on a specific tick. A Note Off will always trigger the envelope on the first tick, but with this command you can offet that a little. The slower your song, the more useful the command. At speeds of 2 or 3, it becomes such a small difference that you're probably better off with the Note Off command just for clarity's sake when looking at your patterns.

Restart Instrument Program (7D00)
Another very fun and creative command that is rarely used. This command restarts the instrument's Program from the first row, without having to retrigger the instrument itself.

program specific commands
These commands can only be used inside an instrument's Program. Try as you might, you simply cannot input these commands in a pattern.

Goto (FFxx)
Lets you jump directly to a specific row inside the program. For example FF00 would send you back to the first row of the program. This is basically how you create arpeggios, tremolos, or any other kind of 'looping' effect in a instrument's program.

Loop (FD00, FExx)
The first command sets the start point of your loop, while the second one acts as the end point as well as deciding how many times to run the loop. For example, a FE10 command would go back to the previous FD00 ten times before finally moving on to the rest of the program. You can have as many of these loops as you want in a program, provided there's still space to put it. You can also nest loops inside each other. Are you familiar with coding? Then this should be easy for you to manage. If you're not used to nested loops, know that a FExx command will start looking "backwards" into the program until it finds a FD00 command.

Program End (FFFF)
By default, programs will loop. This command makes it possible to stop that. Useful when you have a program that only needs to run once.



....damn that took a long time to write. I hope it's useful to at least a few people.