Back in the spring of 1999, I was taking a yearlong computer music course at the University of Washington. I wasn’t a matriculated student at the time. I talked my way into the course, as I was obsessed with getting the sounds in my head out into the world.
One of my obsessions at the time was creating a digital emulation of the Bode Frequency Shifter. A frequency shifter is basically one half of a ring modulator. While a ring modulator takes an input signal and a modulation signal, and produces the sum and difference frequencies, a frequency shifter will produce just the sum frequencies, or just the difference frequencies. It turns out that separating the frequencies is actually fairly complicated, and involves some fancy filtering, as well as working with complex numbers. I hadn’t dealt with complex numbers since high school, so I rolled up my sleves and set to work.
After a lot of dead ends and swearing, I created a high quality Hilbert network, which is the heart of the Bode frequency shifter. My Hilbert network had all of the nice artifacts of the original analog phase differencing network, which allowed me to get the barberpole phasing sounds I always wanted to hear. I implemented the Hilbert filter in Csound, which was very powerful for the time, but seems amazingly primitive to me today. My code would take several minutes to render, but when I heard the results, I was a happy man.
A lot of experimentation followed. I put the frequency shifter in feedback loops, using delay lines and other processing blocks, to get Risset endless glissandos out of any source material. I used the frequency shifter to FM input signals, and fed the output back to the modulation inputs, for some weird phase locked loop tricks (I need to track that work down again). Finally, I tried out my newly acquired C skills, and implemented the Hilbert network as a Csound unit generator.
This spring marks 10 years that I have been working with frequency shifting. I have implemented versions of the frequency shifter for a lot of platforms, from Reaktor and Supercollider to the original Xbox audio DSP. After all these years, I have finally created a version of my frequency shifter code in VST form (with AU code to follow). You can get it here. I have added some new tricks: the frequency shifter is in series with an analog echo emulation. Turn up the feedback, and you can get screeching endless glissandos, barberpole flanging, or soft echos that rotate around and through your skull. It’s a work in progress, but it sounds pretty nice right now.