Often maligned and ignored, the Z command in LSDJ has several uses that seem to be mostly overlooked. So, here, we'll explore some of the fun uses I've found for the Z command and maybe we can change it's image a little bit. Follow along with our lsdsng file, downloadable here:
The current LSDJ manual (4.8) describes the Z command thusly:
So to clarify that a little bit, Z will repeat the last command in the phase or table with a range of different values. For example:
During the first 1/8th note, we have no vibrato effect whatsoever. However, on each subsequent 1/8th note, we have a Z03 command. Each time that it is triggered, it will change the vibrato of our note to one of four values. It could be, V00 again or V01, V02, or V03. Not the most effective use of the V command, but it is very easy to hear it in action here. These additions to the original value are not cumulative, however. Otherwise, our desired range of values could continue to rise up indefinitely. So to clarify, a Z command won't randomize another Z command.
One of the places where a random numerical value doesn't immediately make a lot of sense, is the W command, where the normal hex display is replaced with a graphic, but rest assured, it works just fine.
00 is 12.5%
01 is 25%
02 is 50%
03 is 75%
So an initial W12.5% command, followed up by a Z01 could add nothing, leaving it at W12.5% or increasing it to W25%.
In this example, each new 1/8th note has a possibility of being any of the available pulse widths. Try this at different speeds or in a table for fun effects.
The O command is another one that feels a bit awkward to use due to it's non-numerical display. Each of the four possible values for O (both channels on, left only, right only, and neither channel) follow a particular order the loops. It is: both on, both off, left only, right only, both on, both off, etc., etc.
So if you are looking to use successive Z commands, but want to avoid certain values, it becomes imperative you choose the correct initial value for O and the appropriate value for your Z commands.
In the first example here, we have an initial OL_ command followed by successive Z01 inputs creating the possibility of either an all left channel or all right channel state.
In our next example, we've an instrument with a short table. Panning set to all on, then a Z01, followed by an H command referencing back to the Z01 command infinitely. We stated before that the next state of O, after OLR is O__, so the effect we get here is a rapid on and off effect. This sort of instrument can be especially fun in combination with in phrase effects like P or S. Like always, you can adjust this random beeping rhythm speed with a G command in the table. Just make sure to kill an instrument like this if it fades out to silence; randomly changing panning on silence can be an obnoxious blast of clicking, depending on your chosen platform.
One of my absolute favorite uses for Z is to use it to modulate the tempo of a song to give it an easily achieved rubato, human feeling with a simple, short table like this one:
Here, we've got a T command set to slightly lower than our original tempo of 100, followed up two rows later, but a Z command that can add enough value to T59 to exceed the original tempo by a bit more than the amount that we've reduced it in the first row. Finally, an H command to jump to an empty row infinitely, so as not to retrigger the Z or T commands. This should create a wavering tempo effect for a delicate, fragile, imperfect feeling. Experiment around with the values and table arrangement to find something that suits the feeling you're looking for.
Here, over in the ever popular wav channel, without the Z command, we're forced to manually choose which shape we want, or move in a linear fashion through them back and/or forth, but with a little table work and our new friend Z, we can create some really interesting instruments.
So, we've a fun little 1/16th note bassline in our phrase with an instrument with wildly different start and end values. The instrument is set to manual, so each trigger of our instrument after the first one, will give us a random frame of our instrument. Unfortunately, due to the additive nature of the F command without using our manual layout for this effect, each randomized iteration of the F command moves us ever further through all frames 00-FF. Without filling them all up with something, we quickly run into the default saw wave until we wrap back around to 00 again. Doable, but perhaps not worth it.
With the C command, Z values do not work independently of each other. To clarify, running a Z10 after a C37 will not randomly choose between C37 a C47. It will choose between C37, C38, C39 … C45, C46, all the way up to C47. This reduces it's functionality somewhat, but that doesn't stop us from creating an obnoxious flurry of notes with a steady pedal note of our choice as evidenced in this example:
Here's another personal favorite of mine, randomized S commands in the 1st pulse channel, creating a wacky, distinctive sound difficult to find anywhere else.
In our last example, we'll use a randomized K command in a table to created a humanized muting effect by mixing up the length of each note a little bit. Very groovy without resorting to G commands.
So that about wraps it up for just a few of the fun ideas for making effective use of the under appreciated Z command. If you disliked it or misunderstood it before, I hope this has changed your mind about what can be done with it and piqued your interest in exploring it more. I'm sure there are tons of other fun things to do with it that I've not shared here!