Feedback, anti-feedback, and complexity in time-varying systems

“For my birthday I got a humidifier and a dehumidifier. I put them in the same room and let them fight it out.” – Stephen Wright

When I was researching the Eventide H910 Harmonizer, I found it curious that the box had controls for both feedback and something called “anti-feedback.” The service manual explains the anti-feedback control as follows:

Increasing clockwise rotation of the ANTI-FEEDBACK control progressively adds a small up and down frequency shift to the output signal, which serves to decrease the effect of room resonance peaks on the signal which ultimately re-arrives at the microphone.

In modern terms, I would call this a chorus effect, with a triangle wave modulator. Pretty simple. However, it is interesting to see how such a simple process can have a significant effect in a PA system – by turning on the Anti-Feedback control, you can increase the gain of a microphone being fed into the H910.

The idea of using a time-varying system, such as pitch shifting, delay modulation, or frequency shifting, to increase the maximum gain of a system before oscillation occurs, dates back many decades. In 1962, Manfred Schroeder (of digital reverb fame) published an article in the AES Journal about using frequency shifting as a method of increasing the gain of a PA system by up to 6 dB. A picture tells a thousand words, especially if it has a bunch of words attached to it:

Schroeder also discusses what happens if the gain is turned up beyond the feedback suppression limits of the frequency shifter:

For example, when using the frequency shifter, an excessive gain announces itself by a faint but easily recognizable “growl” or “chirp.” When this sound is heard, the operator decreases the gain by one or two decibels and the system continues to operate without the audience having heard any adverse effect.

This works well for gain increases up to a certain limit, but what happens when the gain is increased well beyond that point? The answer can be found in ValhallaFreqEcho. As the feedback gain is pushed beyond a certain level, the plugin will enter into a self-oscillating region, but one that has a huge amount of complexity. By controlling the shift frequency, delay, tone controls, and feedback gain, a variety of constantly evolving patterns can be produced. The overt goal of ValhallaFreqEcho is to get those chirps and growls that Schroeder described.

The Eno/Lanois “shimmer” sound works along similar principles. Pitch shifting, in and of itself, is a useful way of avoiding oscillation, as it pushes the feedback energy into regions that are above or below the original energy in frequency. However, if you turn the feedback gain up high enough, the system will start to self-oscillate, but in a highly chaotic manner. Keeping the gain just below self-oscillation will result in a sound that slowly evolves into a huge orchestral wash, that fades away into tinkling high octaves.

From a DSP developer’s perspective, delay modulation, frequency shifting, and pitch shifting all fall under the category of time-varying systems. Conventional digital signal processing theory concerns itself with linear, time-invariant (LTI) systems. Once time-variation is introduced, conventional LTI theory falls apart. There has been some research performed on what time-variation will do in otherwise linear systems, but there is no simple answer.

In some systems, time variation will make a simple system become unstable, such that its output amplitude grows out of bounds. Reverb developers call that “blowing up,” as that is the best way to describe the sound that comes out of the speakers. However, in the systems described above, time-variation serves to make a system more stable, in that it allows for the feedback gain to be increased. The onset of oscillation in such systems is something that is usually avoided in academic DSP, but in musical audio it is an area rich for exploration.

In my next post, I will look at an early digital reverb in which the entire theory of operation was based upon the increased gain obtainable through time-variation.

ValhallaFreqEcho 1.01 Beta available

I have a beta available for ValhallaFreqEchoMkI. I’m calling it 1.01, although this doesn’t fit that well with MkI. And I refuse to go back from MkI, because it reminds me of the Tonebender MkII, the Mach 5, and other cool things.

Anyway, the 1.01 Beta is intended to address issues with automation and preset recall that some people have been having. You can try out the beta versions at:

Feedback is welcomed and encouraged.

ValhallaFreqEcho and the 360 Systems Frequency Shifter

I just found an interesting link on the 360 Systems 20/20 Frequency Shifter:

360 Systems 20/20 Frequency Shifter (BODE)

It gives a nice overview of how frequency shifters were used in some classic electronic music.

Interestingly enough, the color scheme of the 360 Systems unit is very close to the ValhallaFreqEcho colors:

This is pure coincidence, as I just found this post on Matrixsynth. The 360 Systems Frequency Shifter is using Futura for its font, which I used for awhile before switching to the grotesk fonts I am currently using.

ValhallaFreqEcho MkI Released: GUI. Tempo Delay. VST/AU/RTAS. Mac/Windows. Free.

I am pleased to announce the MkI release of ValhallaFreqEcho:

The plugin now features a custom GUI, as seen above. I have added the ability to sync the delay time to tempo. ValhallaFreqEcho MkI is available for Windows and Mac, in VST, AU, and RTAS formats.

ValhallaFreqEcho MkI has been under development for quite some time, and I am rather proud of the results. I invite you to download it and check it out. Keep checking this blog in the next few days for tutorials, tips and tricks, and a bunch of theoretical musings.

ValhallaFreqEcho AU updated. Less crashy!

I just posted an update of the ValhallaFreqEcho Audio Unit, that should fix some bugs people were encountering with Logic. The plugin assumes stereo-input, stereo-output, but the older version of the AU wasn’t enforcing this. I changed the code so that it can only be instantiated on stereo tracks. I will work on having it run with mono tracks in a future release.

Download the new version of the code here.

ValhallaFreqEcho updated: new controls, VST+AU

I just posted some updates to ValhallaFreqEcho, my free frequency shifter + analog echo plugin. You can download the plugin here. The new stuff:

  • New parameters: Low Cut and High Cut. These control the gain of shelving filters in the feedback path of the echo (the direct and initial echo signal are not filtered). These controls are very useful in getting different type of analog sounding echos, as well as harsher or flubbier echos, plus a variety of strange chaotic oscillations.
  • An Audio Unit version of the plugin is available, in addition to the VST plugins for Windows and OSX.

I’ll be posting some usage tips soon. I have spent a lot of time setting up runaway oscillations with the plugin, using no input (it self-oscillates like the old analog echos). Some very trance-y sounds can be coaxed out of this thing – not the dance music type of trance, but the “staring into space and drooling for awhile” type of trance.

The frequency shifter and Dr. Who

Like all semi-trendy electronic music nerds, I became obsessed with the BBC Radiophonic Workshop, Delia Derbyshire, the Putney, the Delaware, and all that good stuff back around the turn of the century. At one point, my coworker Tim Stilson fired up Cool Edit 2000 (state of the art waveform editor at the time) and looked at the Dr. Who theme in the spectrogram view. The spectrogram confirmed what we had suspected: the echos at the end of the theme were shifting upwards in pitch.

I soon found out that these shifting echos were the product of a frequency shifter with a tape echo in its feedback loop. Apparently this combination was a popular effect in Delia Derbyshire’s toolkit, and was used most notably to create the electronic scream that was played before the end credits:

The following description is from Mark Ayres’ most excellent history of the Doctor Who theme:

The sound consists of two elements, a rising bubbling sound and a descending scream effect. First of all, let’s deal with the rising bubbling sound. The process used to create this was very simple. The first couple of notes of the closing titles (as the theme melody enters) were copied onto a new piece of audio tape. This was leadered, then flipped over so that it played backwards. The output of the tape deck was then fed into a frequency shifter set for a downwards shift at a short delay, and fed back into itself. When the tape was played into the shifter, it came out the other end milliseconds later with its pitch shifted down slightly. This output was fed back to the input and so on, creating a downwards cascade of ever more distorted sound. This was copied onto a new tape, and when this piece of tape was in turn flipped over, Delia was left with a rising flood of sound starting very distorted and slowly resolving into the opening couple of notes – this was then spliced onto the beginning of the theme.

The downwards scream was created in similar fashion. The source sound is a downwards-sliding hard-edged tone produced using an audio oscillator. Again, this was fed into the pitch shifter with very short delay, a downwards shift, and heavy feedback. Aliasing distortion within the shifter added to the overall effect. The result was mixed with the rising echoes to give the sound we are all familiar with.

I have been working on recreating these sounds with my VST frequency shifter / echo plugin, with some degrees of success. The overdrive in my analog echo simulator sounds a bit soft, but the harsh edged “scream” is also dependent on having a more edgy tone being fed into it. The process would be easier if I exposed tone controls for the internal filters, so I think that will be my next step. I find myself enjoying the sounds that the plugin makes on its own, without emulating any particular existing sounds. However, the Dr. Who sounds are so archetypal, it would be good to have a tool that can make similar sounds, so I will keep working towards that.

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.