In the last article, we added some basic tonal effects: distortion/overdrive and EQ/filtering. This time, we will expand our virtual effects rack to include both a phase shifter and a full-featured modulating digital delay. As we add these effects, you will begin to see why a DIY effects system can trump any commercial product.
Adding a phase shifter
In the new version of the patch, the first module I’ve added is a phase shifter. It’s a full-featured implementation, featuring a variable number of phase shift stages and a frequency spread to provide a more complicated sound. Since this is obviously a well-considered piece of work, I surely had to steal from someplace, right? Of course! Luckily, I have access to some of the old Pluggo source patches, and I’ve always liked this particular phase shifter’s sound. So I opened up the patch and copied the whole thing! By placing it in a subpatcher (phasor_handler), I keep it out of my hair at the top level. The only thing that I added to the patch is some scaling of the inputs to help keep the control ranges sensible.
At this point, it might be useful to open up the patch and open the phasor_handler subpatcher. One of the interesting aspects of this patch is the use of the phaseshift~ object to provide the effect. Normally, a phase shift is almost imperceptible, but when the frequency is moving a classic phase shift sound is created. Stacking a few of these on top of each other (with the serial application of the onestage subpatcher) allows us to vary the depth of the effect by adding (or subtracting) phase shifting stages.
The modulating delay
The next module is a digital delay, complete with modulation, feedback (with filtering), and stereo enhancement. This is also the place where we go from mono processing to stereo, allowing each output to have a different (but related) delay time. The key to this is the “RHS Factor” which determines the right side’s delay time relative to the left side. Modest difference (like .98) will provide subtle depth while more radical settings (like .5 or 1.5) will give rhythmic ping-pong echoes. If we switch to the Patching Mode and open the delay_handler subpatcher, we see that most of the work is being done by a pair of tapin~/tapout~ objects and some scaling functions. Creating the modulation — which allows this module to perform flanging, chorusing and vibrato effects — is accomplished by varying the delay time. We use a cycle~ object to drive the change — but note that the delay time is consistently maintained as a signal routing rather than an event routing. This causes the delay time to change without interruption, giving us smooth delay time transitions that can be used to our advantage.
Dealing with the details
As you can see in the patching view, we’ve continued our patching patterns by creating a master patch for each effect module with controls maintained at the top-level patch. If you switch to the Presentation Mode, you will see that we’ve also maintained another pattern: using knobs (the dial object) for controls that are best set by ear and number boxes for controls that may need precise settings. For most people, a screen full of number boxes is confusing and intimidating — and this becomes worse when you are using a patch onstage. By limiting the use of number boxes to those controls that will specifically need them you can reduce the amount of stress experienced when working with a patch.
Since the phase shifter and delay modules take up one half “rack space” in Presentation Mode, we also want to put another level meter at the end of that segment of the rack. However, since we now have split the sound into stereo, we need to use two meters instead. This gives us a quick visual to make sure that neither the phase shifter nor the delay unit settings are causing output distortion.
At this point, we’ve created a credible guitar processor with the most common effects in place. In our next article, we will dive into less familiar territory by taking on looping and reverb. See you then!