**ECE561 DIGITAL SIGNAL PROCESSING**

Graphic Equalizer Project

Dr. Russell Hardie

**1. The Problem**

This problem entails the design and implementation of a digital 5 channel equalizer for audio signals in MATLAB. The input signal can be any .wav file sampled at CD rate (44.1kHz). The reconstruction (D/C) is to be done using the soundsc() command in MATLAB. The equalizer design will have 5 linear phase FIR bandpass filters in parallel, each followed by a gain constant (the band weight). The output of the 5 filters is then summed to form the final output. Note that since these filters are in parallel, the overall impulse response is simply a weighted sum of the individual impulse responses. This, way the input signal can be filtered once by this overall system impulse response.

**2. The Filters**

The CD sampling rate is 44.1 kHz
(T=1/44100 seconds). With this in mind the effective continuous frequency
responses of your five filters should have center frequencies ranging from 0 to
22.05kHz. Choose your center frequencies
on a logarithmic scale, since this is way in which we perceive frequency. From these
center frequencies, determine the appropriate cutoff frequencies for each of
the 5 filters. Map these frequencies to the discrete frequency domain using the
effective continuous filter relationship _{} (and _{}).

Use the windowing filter design
method to approximate these ideal discrete-time frequency response filters.
Design the 5 FIRs to have length of at least *M*=301. Use both a rectangular window and any other window of your
choice (_{}.

Compute the DFT of each impulse
response (samples of the DTFT,_{}) and plot these for each of the filters for your own benefit
(not to submit). Make sure these all look reasonable. The rectangular window
should have the most ripple, but the sharpest transition band.

Once your impulse responses are in your MATLAB workspace, you are ready to use the MATLAB function I created called 'equalizer'. This function creates a graphic equalizer display and overall effective frequency response. The inputs are a 1D input array (sound data), five impulse response arrays, and the sampling frequency. This function and its necessary related files can be found at:

ftp://ftp.engr.udayton.edu/rhardie/ECE561/Equalizer/

Copy the entire Equalizer directory. You can use 'runequalizer' to see how to load a .wav file and process it with 'equalizer'. Experiment with 'equalizer' to find a setting you like. Does this seem to match your expectations?

Note the slider values range from 0 to 1. Try setting them to [1, 2/3, 1/3, 2/3, 1] and listen to the output and note the overall effective frequency response. Now, write your own script file to process the signal with the fixed settings above. Here you must manually combine the 5 impulse responses into a single one by performing a weighted average of the individual impulse responses. Then use the 'conv' command to process the signal with this overall impulse response. Use the 'soundsc' command to verify the output sounds like that produced by 'equalizer'.

**3. What to Include**

You should include the following in your report:

- A block diagram of the overall equalizer system. Indicate the desired filter cut-off frequencies for each bandpass filter.

- MATLAB generated stem plot of your middle bandpass filter impulse response properly labeled. One for a rectangular window, one for some other window function (total of 2 stem plots for this section).

- For your middle bandpass, include a single plot showing
3 curves (use a legend and different line types). One curve will be the ideal effective
magnitude frequency response, another should be the effective magnitude frequency
response of the FIR with a rectangular window, and the last being the
effective magnitude frequency response of the FIR with the alternative
window. These plots should be versus
*f*(Hertz) for a range -*f*/2 to_{s}*f*/2. To get the frequency responses, you may use the 'fft', 'fftshift', and 'abs' commands to yield samples of_{s}_{}(then label the frequency axis appropriately for your effective frequency responses). Zero pad the impulse response to 1024 to get a high resolution plot. That is, use H=abs(fftshift(fft(h,1024)));. Make sure you label the frequency axis properly. Comment on the ripple and transition bands of the two FIR filters.

- Present mathematical development detailing the
windowing method design process used for a generic bandpass filter with
lower cutoff
_{}and upper cutoff_{}. Show just the critical steps and equations for this filter design.

- Plot of the overall effective frequency response for the system with filter gains of [1, 2/3, 1/3, 2/3, 1]. Compute this with your own script file (not equalizer.m).

- Show a spectrogram of the input and output signals using the settings above.

- Put you MATLAB code in an appendix. This should include a script file for designing the filters, processing the sound file for the filter gains of [1, 2/3, 1/3, 2/3, 1], and generating all of the plots in your report.

**4. Write Up**

This may be submitted as an informal project report. Make sure to include all of the results above. All figures should have a figure number and a short caption describing it. All figures must be labeled completely and have proper legends as needed. The body of your text should be contiguous (approximately 1-2 pages). It should refer to each figure by number and explain it clearly. Capitalize the work “figure” when referring to a specific figure by number. You must also integrate the calculations and equations required above into the body of your text (in complete sentences). Enter equations using the equation editor. See the notation convention page.