Professional Documents
Culture Documents
Digital Technologies
In musical terms, the output of an electric guitar is not very interesting there
is little variation in tone and the notes die away quickly. Most guitar players
use some form of effects unit to enhance the sound, either analogue or Digital
Signal Processor (DSP). This article looks at some simple ways to add
distortion to the sound of an electric guitar using both analogue and digital
technologies.
One of the best-known guitar distortion effects is fuzz, which is widely used by
rock and heavy metal guitar players. A typical fuzz circuit is shown in Schematic 1.
Schematic 1: Fuzz.
D1
D2
R2
100k
C1 U1
R1
Input
100nF
100k Output
For small input signals (less than about 0.7V), the diodes D1 and D2 will not be
turned on, and therefore have no effect. The operational amplifier U1 is connected as
an inverting amplifier, the gain of which is R2/R1 = 100k / 100k = 1. So, for input
signals less than 0.7V, the output will have the same magnitude as the input.
However, for inputs greater than 0.7V, the output will be greater than the forward
voltage of the diodes D1 and D2, so the diodes will conduct. The overall effect is that
the output is limited (clipped) between +0.7V and 0.7V.
If we were to apply a 1 kHz pure tone to the Fuzz circuit, the output would be as
shown in Figure 1.
What does fuzz actually sound like? It is the distortion you hear on a walkman /
portable CD player when the batteries are going flat or when the volume is turned up
too much. There is not enough battery voltage to allow for the full output swing of the
amplifier on loud notes, so clipping occurs
Frequency Content
To explain the difference in sound between the input and output signals in Figure 1,
let us look at their frequency content. Figure 2 shows what would be seen if the pure
tone input and fuzz output were fed into a spectrum analyser.
Compare this with the Frequency Content of Fuzz Output (bottom trace in Figure 2).
Not only is there the original input at 1 kHz, there are also additional components at 3
kHz, 5 kHz, 7 kHz, 9 kHz etc. The fuzz circuitry has distorted the input waveform
to add extra tones that were not present in the input signal
The output of the fuzz circuit does not have any component at 0 Hz (DC). This is
important. Because the analogue circuit has two diodes, D1 and D2, the output is
clipped in both negative and positive directions. The average of the output will be
zero hence no 0 Hz (DC) component. If you were to build the circuit in Schematic 1
with only one diode, then the output would have a DC component. This would not
only sound bad but would be likely to damage your loudspeakers.
Enough theory for now! What does this all actually mean in terms of sound?
It is not possible to use fuzz with an electric guitar all night long it is too raucous.
We need a more subtle approach that is more pleasing to the ear.
Valve (Tube) Amplifiers
When an amplifier with bipolar transistors or FETs is overdriven, the output will be
clipped in the same way as fuzz. However, a classic guitar amplifier such as a
Fender / Marshall with thermionic valves (tubes) behaves in a different way when
overdriven. The sort of output you would obtain from a valve (tube) amplifier is
shown in Figure 3.
The Valve (Tube) Sound Output waveform in Figure 3 has become squarer, but there
are no sharp corners. From the Frequency Content, it can be seen that there are
additional tones at 3 kHz and 5 kHz, but not higher. The high frequencies that are
annoying with fuzz are not present. This is much more pleasing to the ear.
Transfer Functions
In Figure 1 and Figure 3 we saw how Fuzz and Valve (Tube) amplifiers behave. For
both of these, we can draw the relationship between the input and the output on a
graph. This is shown in Figure 4.
The phrase transfer function simply means the mathematical relationship between
input and output of our system. The transfer function may be very simple the
output is the same as the input. Alternately, the transfer function may be a
complicated mathematical expression. In either case, the transfer function can be
drawn on a graph.
Let us look at the graph entitled Transfer Function for Fuzz in Figure 4. For inputs
less than 0.7V, the output is exactly the same as the input. So, if the input is 0.5V, the
output will be 0.5V. The relationship between input and output follows a straight line
and is said to be linear. For any input greater than 0.7V, the output will always be
limited to 0.7V.
In terms of the effect on sound, fuzz has no effect on small input signals. However,
for inputs over 0.7V, the output is always clipped to 0.7V. For these loud notes,
musical information above 0.7V will be lost. This makes all loud notes sound the
same.
Now let us look at the Transfer Function for Valve (Tube) Amplifier in Figure 4.
The graph of input / output follows a smooth curve. It is said to be non-linear
because we cannot represent it as a simple straight line. If the input is 0.5V, the output
will be 0.8V.
Again, what does this mean in terms of sound? At low levels, the output is boosted,
which makes the guitar more sensitive. At high levels, musical information is not lost
it is simply compressed (squashed). Unlike fuzz, the distortion effect works for all
input levels.
Sustain
One of the problems with a guitar is that the notes on the treble strings die away much
more quickly than those on the bass strings. The length of time a note lasts is called its
sustain. Instruments such as organs have very long sustain - as long as the key is
pressed, the note sounds. This is not true for guitars.
A useful side effect of the valve (tube) sound is that it improves the sustain of the
guitar signal.
When a string is plucked, the note from the guitar is very short lived. In Figure 5 it
can be seen that Note Played on Guitar (top trace) has a large initial value, but
dies away quickly.
Figure 5. Sustain Introduced by a Value (Tube) Amplifier
Putting the input through the curved transfer function of the valve (tube) amplifier in
Figure 4 compresses (squashes) the waveform. In Figure 5, it can be seen that the
Sustain Effect of Valve (Tube) Sound causes the notes to die away more slowly,
making the notes last longer. The only negative is that there is some distortion when
the note is first played. Interestingly, this is the same technique that is used in
telephones to compress the sound.
Overdrive
By changing the shape of the transfer function, we can add even more distortion to the
output signal. Notice how the Transfer Function for Overdrive in Figure 6 bends back
on itself. If we apply the same pure tone input, the output will be as shown in
Overdrive Output.
Figure 6. Overdrive
In the Frequency Content graph of Figure 6, the 1 kHz tone will still be there, but
there will be an even greater contribution at 3kHz. In other words, there will be more
distortion than input signal! It also tends to be unstable because more comes out than
goes in. This is the one to use with your electric guitar to hurt your ears.
One way in which to generate the valve (tube) sound is to use a series of resistors and
diodes, as shown in Schematic 2.
Schematic 2. Valve (Tube) Sound using Analogue Components
D7 D8 D9
D5 D6
D3 D4
D2
R3
R4 R5
R2
100k
C1 U1
R1
Input
100nF
100k Output
This is a similar configuration to the Fuzz circuit in Schematic 1, but with additional
feedback resistors R3, R4 and R5. Feedback resistor R3 will take effect when the
input is greater than 0.7V. Additionally, feedback resistor R4 will take effect when the
input is greater than 1.4V. When the input exceeds 2.1V, the feedback resistor R5 will
also be switched into the circuit.
So, as the input gets larger, more and more diodes will switch on and the
feedback resistors R3, R4 and R5 take effect to reduce the gain.
The major disadvantage of such as scheme is that in order to change the sound, it
means adjusting a number of resistors.
Many guitar effects units and amplifiers now use Digital Signal Processors (DSP) as
the basis for sound processing. This makes it possible to adjust the sound using
software rather than having to change analogue components.
Fuzz, valve (tube) sound and overdrive do not take a great deal of processing in C
code and can also be implemented on a microcontroller with 8-bit capability.
Fuzz in C Code
float input;
float output;
The code in Example 1 does the same as the circuit in Schematic 1. If the input is
greater than 0.7V, the output is limited to 0.7V. If the input is less than 0.7V, then the
output is limited to 0.7V. For small inputs, the output is the same as the input.
The easiest way to implement the Transfer Function for Valve (Tube) Sound in Figure
4 is to use simple mathematics. We can use an equation of the form y = ax + bx2. Here
x is the input, and y is the output. Example 2 shows how to implement the curved
transfer function in Figure 4, which is y = 2*x - 1*x2
#define a 2.000
#define b 1.000
float input;
float output;
For positive inputs, we have to use b, but for negative inputs we use +b.
To generate overdrive, as shown in Figure 6, we simply change the values of the
coefficients a and b:
Example 3. Overdrive
#define a 4.000
#define b 4.000
float input;
float output;
There are two types of DSP chips. Floating- point processors can handle numbers
with decimal points e.g. 0.8123. On the other hand, fixed-point processors can only
handle whole numbers e.g. 8123.
/*******************************************************/
/* fuzz() */
/*******************************************************/
/* Function takes an input in range 32767 to + 32767 */
/* from the ADC and limits the range */
/*******************************************************/
/*******************************************************/
/* valve_sound() */
/*******************************************************/
/* Function takes input in range 32767 to + 32767 and */
/* calculates the output from y = a*x + b*x*x where */
/* x = input from ADC and y = output */
/* Use different values of a and b to alter the effect */
/*******************************************************/
#define a 2.000
#define b 1.000
Note that in both functions fuzz() and valve_sound(), the first step is to
divide the input by 32767. This means we are only working on numbers between
1.00 and + 1.00. This is deliberate. No matter how many multiplications we use, the
result will always be less than 1.000; we do not have to worry about overload.
/*******************************************************/
/* fuzz() */
/*******************************************************/
/* Function takes input in range 32767 to + 32767 and */
/* limits the range 22937 to +22937 */
/*******************************************************/
return (output);
}
However, distortion is more difficult to implement on a fixed-point processor. We
cannot easily represent fractions. In this case we use 16383 to represent 1.000.
Several shifts are required to scale the values.
/*******************************************************/
/* valve_sound() */
/*******************************************************/
/* Function takes input in range 32767 to + 32767 and */
/* calculates the output from y = a*x + b*x*x where */
/* x = input from ADC and y = output */
/* Use different values of a and b to alter the effect */
/*******************************************************/
if ( input >= 0 )
{
/* Positive input values */
We have seen how to alter the sound of an electric guitar by distorting the shape of
the waveform in two ways. The first is to use fuzz to clip the waveform and the
second is to simulate the effect of a valve (tube) amplifier using a non-linear transfer
function.
These distortion effects add extra tones to the output that were not present in the
input. As a side effect, the sustain of the notes played is improved.
It is easy to see why digital technology, in particular Digital Signal Processor (DSP)
devices are popular for modern guitar effects units they give more flexibility than
can be achieved using analogue components, especially where we want the effects to
be adjustable.
References
www.ti.com