Chorus
By Scott Lehman
Part of the series of articles Effects Explained
Recovered from archive.org
Introduction
Just as a chorus is a group of singers, the chorus effect can make a single instrument sound like there are actually several instruments being played. It adds some thickness to the sound, and is often described as 'lush' or 'rich'. Sound Set 1 is example of the chorus effect in action.
Sound Set 1: A chord progression dry, followed by a chorused version.
How it Works
The algorithm behind the chorus effect isn't a spectacular or amazing trick - it's actually fairly simple. What happens when two people play instruments in unison? Well they are not always playing in precise synchronization, so there is some delay between the sounds they produce. In addition, the pitch of the two instruments can deviate somewhat, despite careful tuning. These are the functions that your chorus effect is reproducing.
This slight delay can be easily implemented with a delay line. Creating the detuning effect may not seem very simple at first, but it can be achieved by transforming the simple delay line into a variable length delay line. The 'variable length' part just means that the delay time changes over time, though it's effect on the pitch may not be very clear at first.
To understand how the pitch is changed, picture the delay as a recording device. It is storing an exact copy of the input signal as is arrives, much like a cassette recorder, and it then outputs that a little later, at the same rate. To increase the amount delay, you want a longer segment of the signal to be stored in the delay before it is played back. To do this, you want to read out of the delay line at a slower rate than it's being written (the recording rate is unchanged, so more of the signal is being stored). Reading back at a slower rate is just like dragging your fingers on the wheel of the cassette, which we know lowers the pitch. Similarly, to reduce the delay time, we can just read back faster, analogous to speeding up a playing cassette, which increases the pitch - the 'munchkin effect.'
So now, by mixing this delayed and pitch modulated copy of the input together with the original, we have the chorus effect. A diagram for our chorus effect is given in Figure 1.
Figure 1: Diagram of the chorus effects. The delay changes with time.
This structure may look very familiar to you - it's basically our other friend the flanger. The chorus differs in only a couple of ways. One difference is the amount of delay that is used. The delay times in a chorus are larger than in a flanger, usually somewhere between 20 ms. and 30 ms. (the flanger's delay usually ranges from 1 ms. to 10 ms.) This longer delay doesn't produce the characteristic sweeping sound of the flanger. The chorus also differs from the flanger in that there is generally no feedback used.
The only remaining point to discuss is the manner in which the delay time actually changes. In general, some periodic waveform, such as a sine wave, is used. This waveform changes slowly (say than 3 Hz and below.) and is referred to as a LFO (Low Frequency Oscillator). You can control the chorus sound by changing the waveform's frequency, its amplitude, and its shape. We make a simple change to our diagram of the chorus to denote this LFO dependence as in Figure 2.
Figure 2: The flow diagram for the chorus effect including its LFO dependence.
Other variations on the chorus effect are also possible. For example, rather than using an LFO, you could use a randomly changing delay time, which might model musicians playing in unison a little better. Also, when playing in unison, there will be some loudness differences between the players, so we could also vary the amplitude of delayed signal. This amplitude parameter could then be controlled by another LFO.
Common Parameters
Delay
The delay parameter simply controls the amount of delay used. More specifically, it actually controls the minimum delay time that is used. As the delay becomes very small, the chorus will act as a flanger. Typical delay times range between 20 and 30 ms.
Sweep Depth/Width
The sweep depth controls how much the total delay time changes over time. It is usually expressed in milliseconds, and the sum of the sweep depth and delay parameters is the maximum delay used in processing the signal. Alternatively, you can think of the sweep depth as the amplitude of the LFO. The relationship between the delay and sweep depth parameters is depicted in Figure 3.
Figure 3: The delay used in the chorus is the sum of the delay and sweep depth parameters, where the latter changes over time.
The sweep depth also increases the pitch modulation introduced by the time-varying delay line. This happens because you have to read even faster and slower to cover the total change in time. Large sweep depths will create a 'warble.' Sound Set 2 demonstrates this effect.
Sound Set 2: A sustained note first processed with a chorus with a 3 ms. sweep depth, followed by the same note using a 6 ms. sweep depth.
LFO Waveform
The LFO waveform shows how the delay changes over time. When the waveform reaches a maximum, then the delay is at its largest value. When the waveform (and total delay time) is increasing, the pitch becomes lower. Some commonly used LFO waveforms are shown in Figure 4.
Figure 4: Three commonly used LFO waveforms.
The amount of pitch modulation introduced by the chorus is related to how quickly the LFO waveform changes - the steepest portions on the waveform produce a large amount of pitch modulation, while the relatively flat portions have very little or no effect on the pitch. We can use this view to understand how the sweep depth varies the pitch. If you increase the sweep depth, you are effectively stretching the waveform vertically, which makes it steeper, and thus, the pitch is altered more.
Sound Set 3 presents the sounds these LFO waveforms create. The sine is a very smooth function, and is always changing so the pitch is constantly changing as well. The triangle on the other hand only produces two pitches because the slope only takes on two different values, and the change between the pitches is sudden. The log waveform is smooth over it's cycle, but there is a jump at the end of each cycle. Since the slope at the beginning and end of the waveform are different, there is an abrupt change in the pitch as well. The sweep depth has been made very large in this example to stress the LFO shape's effect. This is generally not how the chorus is applied.
Sound Set 3: A sustained note processed with a chorus using three different LFO waveforms - a sinewave, triangle, and a logarithm curve.
Speed/Rate
The speed control is pretty straightforward. This parameter refers to the rate at which the LFO waveform repeats itself, and it also is a factor in the pitch modulation. Using the view from above, increasing the rate is equivalent to compressing the LFO waveform in time, which makes it steeper, resulting in more pitch modulation.
Number of Voices
Up to this point, we have only covered what is referred to as a single voice chorus, meaning that there is only one copy of the input. But there's no reason why you can't have multiple copies of the sound, modeling a situation with more than just two instruments are being played. Some chorus units allow you to do just this, and may even allow you to choose how many voices to use.
Typically a multi-voice chorus uses a single LFO waveform for all the voices, but each voice has a different phase. This means that at any point in time, each voice is at a different point along the waveform, so they have different delay times. If all the voices were in phase, it would have the same effect as a single voice chorus with an increased level. Of course, it's possible to build a chorus such that each voice use it's own LFO shape, and even rate.
Figure 5: A dual-voice chorus diagram.
Implementation
Analog
The short delay times that are needed make tape based delays rather impractical, so electronic circuitry is used instead. Sample-and-hold or the 'bucket-brigade' type circuits are used. These are devices that will hold a voltage (provided by the input signal) for a small amount of time. Multiple stages of these circuits can then be chained together in series to produce the desired delay time.
Digital
Delays are easy to implement in the digital domain as circular buffers. Basically, you just take a chunk of memory, and sequentially read and write values each sample period, incrementing to the next memory location for each sample. However a time-varying delay line takes a little more work. The changing delay time will require delay times that are not integer multiples of the sampling period (and the input signal is being sampled at multiples of this sampling period). So it's often the case that we want to estimate the signal's value between two of the values that we have stores. With the values of those two neighbors, we can take a guess as to what the desired value is, and this process in called interpolation. One such method, linear interpolation, is implemented by connecting the two known values by a straight line, and then looking at the value of that line at some point that corresponds to the desired delay time. Linear interpolation is a very simple solution, but it can introduce noise, so other methods of interpolation may be used.
Other Notes
Stereo Chorus
A stereo chorus is generally constructed by running two monophonic chorus run in quadrature phase. This simply means that the LFO in each monophonic flanger differ in phase by ninety degrees (or one-quarter of a wavelength). This technique creates a 'wider' sound because the sound arriving at each of your ears is different. Sound Set 4 presents a mono source file processed first by a monophonic chorus, and then a stereo chorus. (If you are having trouble hearing any difference, make sure your computer is generating a stereo output, and use a pair of headphones.)
Note that in a multi-voice chorus (where each voice is monophonic), you can effectively create a stereo chorus simply by panning the voices away from the center of the mix.
Sound Set 4 (Stereo): The opening chord sequence processed with a stereo chorus.
Son of Flanger
As mentioned above, the chorus is essentially the same algorithm as a flanger, but the flanger is characterized by its smaller delay lengths (from about 1 ms. to 10 ms.) and a feedback path that routes the delayline output back into the input.
References
-
Introduction to Signal Processing Orfanidis, Sophocles. New Jersy, Prentice Hall. 1996. (ISBN 0132091720)
-
Thorderson, Randy "Friday's Tip - The Truth Behind Chorus," Email message to DigiTech GSP-2101 Mailing List, 17 November 1995.
© Scott Lehman and licensed to Harmony Central, LLC. All rights reserved. Harmony Central encourages linking from other sites to Harmony Central content.




