This month we go beyond the basics and dive into logic operations, variable step sequencing, and modular polyphony.
Learning the basics of any technology is important, but slogging through the basics can get a bit tedious. This month I decided to take a break from writing about one basic concept at a time. Instead, we’ll look at a more complex and, I hope, more musically interesting patch. Along the way, we’ll take it apart and have a look at a couple of basic concepts.
This month’s bloated VCV Rack patch contains not just modules from the basic VCV set, but also modules from the plug-ins authored by Alikins, Aria Salvatrice, AS, Audible Instruments, Bogaudio, Count Modula, Holonic Systems, Impromptu Modular, JW Modules, ML Modules, Modular Fungi (decorative), mscHack, Nysthi, Sckitam, Submarine Free, Surge for Rack, Valley, and Vult. (The Vult modules are not free.) If you don’t have all of these plug-ins installed but you want to play with the patch, you’ll need to venture out to the VCV Rack website and grab them.
The main topics I touch on below and in the videos are logic operations, new ideas in step sequencing, randomness, and VCV’s implementation of polyphony.
The purpose of logic operations is to decide when, or whether, to do something. A typical logic circuit has two inputs and one output. Usually they’re in the form of gate signals—that is, the values will either be zero or a positive “voltage” (either +5 or +10). If you search for logic in the VCV browser, you may find quite a number of devices, depending on what plug-ins you have installed; I have about 90 modules in that category. Some of them perform simple operations, and others are surprisingly sophisticated.
The standard names for logic gates include AND, NOT, OR, XOR, NOR, NAND, and XNOR. All of these operations have little geometric symbols, and frankly I always forget which is which. Often we talk about the inputs and outputs as true and false, or as 1 (true) and 0 (false), or as positive and zero. In a digital synth, false is likely to be zero, and true may be any other value, or an input may be true only when it’s a positive number. For logical purposes, we can say the output is 1 when it’s true, but in VCV it’s likely to be +10.
(As a side note, the Submarine (Free) modules in my VCV installation seem not to respond to +5 as a true input. They tend to want to see a +10 value as a true input, or at least something hotter than +5. The quick fix is the Const Add Mult module from Nysthi. You can use this to multiply any signal by 2.)
In plain English, an AND gate outputs a positive only if both inputs are positive; otherwise it outputs zero. An OR gate outputs a positive value if either (or both) of the inputs are positive, and it only outputs zero when both inputs are zero. A NOT gate only takes a single input: if the input is positive, the output is zero, and vice versa. An XOR (exclusive-or) gate outputs a positive value if one input or the other is positive, but outputs zero if both inputs are positive or both are zero. And so on.
Without getting too deep into the thicket, we can construct a logic table to show what this all means.
Some Common Logic Operations
|input A||input B||AND||NAND||OR||NOR||XOR||XNOR|
This may seem very abstract, but it has some real musical uses. To take a simple example, let’s suppose we send two slow square wave clock signals (essentially, gate signals) to the inputs of an AND logic gate. One clock is pulsing in a steady sixteenth-note rhythm, while the other is set to whole notes. By whole notes, I mean that the signal has a high value for two beats and then zero for the next two beats, over and over—a half note on, then a half note off, and so on.
In this scenario, the output of the AND gate will be a run of eight sixteenth notes (that is, two beats) followed by two beats of rest. We have created a grouped set of gates that can be sent to a sequencer and/or an envelope generator to play a phrase. This logical structure is simple, but it may be musically useful.
Logic-based modules can do other tricks. One of my favorite devices in VCV Rack, as you’ll see in the videos, is the Audible Instruments Bernoulli Gate. You won’t find this module in the Logic section of the browser menu; instead, use the Random selection or look in the Audible Instruments set. The Bernoulli Gate accepts a gate input and randomly sends it to one or the other of its two outputs. A knob controls the relative probability that output A or output B will be chosen. This is a very useful way of turning a regularly pulsing sixteenth-note clock signal into an endless stream of unpredictable but funky rhythms. You could also use it for other chores, such as choosing which of two phrases will play.
The point of using logic processes is to create an automated patch that sounds, if only vaguely, as if it might have been played by human beings. Instead of having everything in a patch jamming along constantly, different elements can cut in and out, change tone color, or whatever. Some people like playing their modular patches in real time using hardware control devices, but I tend to like setting up something that will play on its own without human intervention, so I can sit back and listen. The trick is to weigh the various probabilities carefully, fiddling with the parameters until you achieve a balance of predictability and unpredictability that feels right to you.
BTW, if you want to stretch your legs with logic operations, the Submarine DO modules are quite slick.
Step sequencers rose into public awareness in the early 1970s through recordings by Tangerine Dream and other synth-heavy artists. The simple, repetitive sound of this technology was mesmerizing at first, but quickly grew tiresome (at least in my personal opinion). You can do that kind of simple sequencing in VCV Rack if you want to, but I feel it’s more fun to use modules that play around with the concept. The best use of step sequencers, it seems to me, is to combine repetition with some sort of orderly change.
My VCV installation has more than 170 step sequencers. As you might imagine, there’s some redundancy in the offerings, but also quite a few innovations—far too many for us to explore them all here. (Maybe I’ll get into some others in a future column. Twist my arm.) Sequencers often have CV inputs that let you change the start or end step while the music plays, thereby producing phrases that vary in length. You may be able to skip (or not skip) selected steps, jump to a selected step on receipt of a trigger signal, choose steps at random, set some steps to last longer than others, or send a gate output from some steps but not others to vary the rhythm.
Some sequencers, such as the MarkovSeq used in this month’s patch (see Figure 2), let you send an external signal to one or more steps. If the external signal varies in a different way than the main sequence, perhaps with more, fewer, or with faster steps, you can replace a few selected notes in a repeating sequence pattern with other notes that may be different each time, depending on how the external signal changes. The possibilities are vast.
The other sequencer in this month’s patch is Darius, from Aria Salvatrice (see Figure 3). Darius is an eight-step branching sequencer. It always starts with the same note on the first step, but there are two possible second steps. Naturally, there’s a probability knob for controlling the likelihood that the sequence will branch up or down when moving from one step to the next. There are three possible choices for step three, four for step four, and so on. Each step has its own setting for the note CV that will be output, and also its own probability knob and trigger output.
The result tends to be a phrase that always sounds somewhat similar to itself, but that can change rather than repeating. A good way to use Darius, I found, is to use VCV’s Randomize command. This is much easier than setting 72 knobs by hand. The random values will include some extremely high or low pitches; to tame them, I like using the SOU Utils module from Nysthi. This has a pair of octave folders, with which you can easily limit the pitch CV to a maximum of one or two octaves.
MarkovSeq generates somewhat repetitive but not completely locked-down sequence patterns in an entirely different way. For each step, you can set both the pitch that will be output (obviously) and also a probability of which step the sequence will go to next. The branching patterns in Darius always go from left to right, but the branching in MarkovSeq can be more complex—for example, a couple of three-note loops with some probability of jumping from one loop to the other.
Some step sequencers produce outputs that are already quantized to equal-tempered pitch steps. Neither Darius nor MarkovSeq does this, so this month’s patch uses three Quantum modules from ML. I like this quantizer because it can transmit a trigger or gate only when the output pitch is changing. The gate or trigger should be patched to one or more envelope generators. If a couple of your sequence steps happen to have the same pitch, Quantum will turn those two notes into a single longer note. This is another way of making the music sound less robotic.
The third sequencer used in this month’s patch is NoteSeq from JW. This is a 32-step chord sequencer with up to 16 note/gate pairs, available both monophonically and polyphonically. It can be randomized and controlled in some interesting ways, but in this patch, I’m using it strictly for an occasional background chord.
In a hardware or VST synth, polyphony (the number of voices that will play simultaneously) is usually a set-it-and-forget-it parameter. One setting governs the whole instrument. VCV Rack has two ways of doing polyphony. You can do it the old-fashioned way, with a bunch of independent monophonic voices all being mixed at the audio output. Or you can have multiple voices (independent sound channels) operating within a single signal path, all at once. This option is not always set-it-and-forget it. Some modules simply respond to a polyphonic input signal by switching to poly operation and allocating the number of voice channels on which they’re receiving data, but other modules will expect you to set the number of voices you want, a setting that will be found in the right-click menu.
VCV provides merge and split modules to handle this situation. The merge module accepts up to 16 monophonic signals and assigns them to the voice channels within a polyphonic cable. The split module does the opposite: it takes a poly cable as the input and splits the signal into as many mono signals as are required, each mono signal at its own output jack.
The Bogaudio Mono module also takes a poly input, but instead of splitting this signal to separate jacks, it simply mixes them (without adjustments in the volume level) into a single mono signal. I used this module in this month’s patch to merge a three-channel polyphonic audio signal to mono before sending it to the Surge Chorus effect. If the Mono module weren’t used, the Chorus module would “see” only the audio on channel 1.
Some of the third-party modules in VCV are capable of poly operation, and some aren’t. Understanding how this system works—and when it isn’t working for you, why it isn’t working—is part of becoming a VCV expert.
Coming Up Next
Maybe I should do another column like this next month, with a somewhat complex and musically interesting patch. Or maybe I should get back to basics. If you have any thoughts about what you’d prefer, please send them to me c/o Synth and Software.