You are on page 1of 5

ECE334 Discrete Signals and Systems

Final Exam Project - FIR Equalizer Design by the Windowing Method


Dr. Ratliff, Fall 2017
Due Wednesday, December 13th, 2017 at 12:20PM

Name:

1 Problem Description:
In this final exam project we are going to design and construct a digital 5-channel equalizer for
processing audio files. Equalizers are used for adjusting the gain of an audio signal in different frequency
bands.

2 Project Definition:
The equalizer design will have 5 FIR bandpass filters in parallel, each multiplied by a gain constant
(i.e., the band weight). The overall equalizer system can be drawn in block diagram form as follows:

So, unlike the cascaded notch filter project, here we have a parallel group of bandpass filters. In this
case, notice that the equivalent system impulse response h[n] can simply be written as a weighted sum
of the individual filters, i.e.,

h[n] = a1 h1 [n] + a2 h2 [n] + a3 h3 [n] + a4 h4 [n] + a5 h5 [n].

We are going to design our FIR bandpass filters using the windowing method. To begin, we start with
an ideal frequency response for a bandpass filter with lower and upper cutoff frequencies, ωl and ωu ,
respectively. Thus, for a bandpass filter,
!
1, if − ωu ≤ n ≤ −ωl , ωl ≤ n ≤ ωu
|H(ejω )| =
0, otherwise.

1
We next apply the inverse DTFT to compute the impulse response:
" π
1
hi [n] = H(ejω )e−jω dω
2π −π
" −ωl " ωu
1 1
= e−jωn dω + e−jωn dω
2π −ωu 2π ωl
1 # jωu n $
= e − ejωl n + e−jωl n − e−jωu n
2πjn
1
= [sin(ωu n) − sin(ωl n)]
πn
ωu ωl
= sinc(ωu n) − sinc(ωl n).
π π
Clearly, our impulse response exists from (−∞, ∞) and we thus must window and shift hi [n] to make
it a causal FIR filter for implementation. For each filter stage we thus have

hk [n] = hi [n + (M − 1)/2]w[n + (M − 1)/2],

where k ∈ (1, 5) and w[n] is the windowing function of length M , where M is odd. Once these
filters are combined to produce the overall impulse response h[n], we can process our audio file via
convolution, i.e.,
y[n] = x[n] ∗ h[n].

3 Design Tasks:
We will assume the input audio files are sampled at a rate of 44.1kHz, which is the rate used on audio
CDs. With our sampling rate fs = 44.1kHz (T = 1/44100 seconds), the effective continuous frequency
responses of the five filters should have a combined bandwidth ranging from 0 to 22.5kHz. I suggest
you divide the combined bandwidth up into five equal bands on a logarithmic scale. The reason for
such a selection is due to the logarithmic way in which humans perceive frequency.

I have provided a MATLAB function, bpw, that implements a causal FIR bandpass filter using the
windowing method (you can find this function on the class website under the Final Exam folder). To
use it, all you need to specify are the lower and upper digital cutoff frequencies (in radians per sample),
the length of the filter M , and the type of windowing function to apply (i.e., I’ve done the hard part).
For additional help with the function open the .m file and read the help section at the beginning of
the file.

Your task is to design and create the 5 bandpass filters, which simply involves determining the cutoff
frequency for each filter and choosing a window type. For each filter use a length of M = 501. Also,
note that h1 [n] and h5 [n] will be lowpass and highpass filters, respectively. This is easily accounted
for by setting ωl = 0 for h1 [n] and ωu = π for h5 [n]. Once you have created each filter in MATLAB,
you simply need to multiply each filter by its respective gain factor (which are tuning parameters)
and sum the scaled impulse responses together. Then, apply the filter via convolution, i.e., using the
MATLAB command conv(x, h). Once processed, the reconstruction process is to be done using the
sound() command in MATLAB so that you can listen to the results of applying your filter.

To design your equalizer perform the following design tasks:


1. Determine the upper and lower analog cutoff frequencies for each bandpass filter in radians
per second. I suggest using a logarithmic scale and dividing the frequency axis into five nearly

2
equal segments from the range of 22.5Hz to 22.05kHz; however, you can choose a different scheme
if you desire. Once you determine these analog frequencies, map each one to their corresponding
digital frequency in radians per sample.

2. For h3 [n] use a rectangular filter. Also, generate h3 [n] using a Blackman filter. For the other
four filters select a window of your choosing (other than rectangular). Then, create the five filters
in MATLAB using the bpw function. Create the five gain factors as configurable parameters.
Now, multiply each impulse response by its respective filter gain and sum them all together to
obtain the total impulse response.

3. Now, read in an audio file using the audioread command (there are several music clips on the
class website that have been sampled at 44.1kHz). Convolve the audio file with the total impulse
response. Listen to the result using the sound command. Now, tune the gain parameters until
you find a set of values that you like.

4 Exam Questions:
1. Fill in the table below with your designed analog cutoff frequencies in radians per second:

Filter ωl (radians/second) ωh (radians/second)


h1 [n]
h2 [n]
h3 [n]
h4 [n]
h5 [n]

2. Fill in the table below with the digital cutoff frequencies in radians per sample corresponding to
the analog cutoff frequencies specified above.

Filter ωl (radians/sample) ωh (radians/sample)


h1 [n]
h2 [n]
h3 [n]
h4 [n]
h5 [n]

3. Plot the middle bandpass filter impulse response, h3 [n], using both the rectangular and Blackman
windows. Use the stem command and plot them on two separate subplots. Include this plot as
Figure 1. What differences do you see when comparing the impulse responses? Explain.

3
4. Next, plot the magnitude of the frequency response |H3 (ejω )| for the middle bandpass filter
using the rectangular and Blackman windows on the same plot. Use N = 4096 points in the
fft. I would also suggest you zoom your plot to best see the details of the filters using the axis
command, e.g., axis([−.5 .5 0 1.2]) or whatever range best displays your filters. Include this
plot as Figure 2. Compare the plots. What differences do you observe between the two filters?
How do they each compare to an ideal bandpass filter? Explain.

5. Specify the filter gain factors you selected for your equalizer. Also provide the values in dB (i.e.,
âk = 20 log10 (ak ) dB).

Filter Gain (V/V) Gain (dB)


h1 [n]
h2 [n]
h3 [n]
h4 [n]
h5 [n]

6. Using these gain values, plot the magnitude frequency response for each individual filter, i.e.,
|Hk (ejω )| for k = 1, 2, . . . , 5 (again use N = 4096 points in the fft). You should plot all five
filter responses
% ω & on the same plot. Plot these as a function of hertz rather than digital frequency
(f = fs 2π ) and use a logarithmic scale for the x-axis. To do this, instead of using the plot
command, use the semilogx command. Include this plot as Figure 3. What do you notice
about the individual filters? Does each filter passband appear to be nearly the same width on a
logarithmic scale per our design guidelines? Explain.

4
7. Now, repeat the previous step for the total system magnitude frequency response |H(ejω )| and
include this result as Figure 4. Discuss the plot as compared with the individual frequency
responses.

8. Plot 2000 samples of the input and output audio sequence, x[n] and y[n], on the same plot.
Include this plot as Figure 5. Explain any differences that you observe.

9. Plot the frequency spectrum of the input and output audio signals, X(ejω ) and Y (ejω ), on two
separate subplots again using a logarithmic scale for the x-axis. In this case, do not specify N
for the fft so that it will set N equal to the length of the sequence. Include these plots as Figure
6. Based upon your chosen band gains, does the output signal indicate that these gains have
been properly applied? Explain.