Frequency Shifting, 10 years later

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.

Comments (3)

  • jngpng

    Thank you for releasing this Sean, it’s really a wonderful sounding effect!

  • david

    thanks, i look forward to trying this out. tomita used a bode, if it sounds anything like that i will be overjoyed 🙂


  • david

    just been playing with it for a while in cubase 4 on a pc… BRILLIANT!!

    its great that it limits its own volume with extreme feedback, would be great for live use.

    anything to make it sound more ‘old’ or ‘analogue’ would be fantastic, not that it doesn’t sound really good anyway!! is the audio oversampled or anything like that? i can’t really hear any audio aliasing 🙂


Leave a Reply

Your email address will not be published. Required fields are marked *