-
Home
- Continuous time linear systems
- Lab 5
- Filtering periodic signals
Low-pass filtering with sound
Use
wavread
to load the sound castanets44m.wav. Perform low-pass filtering with the filter defined above, starting with
a = 500*2*pi
, but also try different values.
Play the original and the low-passed version of the sound. Plot their frequency content (Fourier transforms) as well.
Optional: low-pass filtering
- Create an impulse train as the input signal
x(t)
using the following MATLAB command,
>>x = repmat([zeros(1, 99) 1], 1, 5);
- Use the low-pass filter defined earlier to low-pass the impulse train. Choose a cutoff of 20.
- Plot the two signals
x(t)
and
y(t)
separately using the subplot command. These should be plotted versus the time vector. Label the axes and title each graph appropriately.
- Look at the plots. Can you explain what is happening to the spike train?
High-pass filtering
An ideal high-pass filter eliminates low frequency components entirely, as in:
A real high-pass filter typically has low but non-zero values for
at low frequencies, and a gradual (rather than an immediate) rise in magnitude as frequency increases. The simplest (and least effective) high-pass filter is given by (e.g. using an RC circuit):
This filter can be implemented in the same way as the low pass filter above.
High-pass filtering with sound
The high-pass filter can be implemented in MATLAB much the same way as the low-pass filter. Perform high-pass filtering with the filter defined above on the sound castanets44m.wav. Start with
a = 2000*2*pi
, but also try different values.
Play the original and the high-passed version of the sound. The filtered signal may be to be scaled so that both have the same range on the Y-axis. Plot their frequency responses as well.
Sound separation
Sound filtering
- Kick'n Retro 235 Inc. recorded a session of a trumpet and drum kit together for their new release. The boss doesn't like the bass drum in the background and wants it out. Unfortunately, there was a malfunction in the mixing board and instead of having two separate tracks for the drums and the trumpet, the sounds mixed together in one track. In order to get this release out on time you will have to use some filtering to eliminate the bass drum from the sound. There is not enough time to bring the drummer and trumpet player back in the studio to rerecord the track.
-
Click here to download the mixed.wav sound (
Fs
= 8000 Hz). The mixed sound is created from bassdrum.wav, hatclosed.wav, and shake.mat.
- Try to do something easy but approximate first, and then, if you have more time, see how clean you can get the sound. You may find it helpful to look at the Fourier domain representation of the sounds, but you may not use the individual sounds in your solution.
- Now try to eliminate the trumpet sound, leaving only the drums left in the sound.
- Hint: use high-pass and low-pass filtering.
- Another hint: If you want a more powerful filter, you can try using multiple a/(a+jw) terms in series. Each extra term raises the order of the filter by one and higher order filters have a faster drop-off outside of their passing region.
Bonus problem: sound filtering
- Imagine you recorded a trumpet and rainstick together, so that you have the signal,
mixedsig = shake + 10*rainstick
.
- It turns out the producer thinks the rainstick is too new-age and wants it out of the recording. Pretend you do not have the original signals shake or rainstick. Can you take the signal
mixedsig
and process it to get (approximately) only the trumpet sound (shake) out? Try to do something easy but approximate first, and then if you have more time, see how good a reproduction of shake you can get. You may find it helpful to look at Fourier domain of the sounds, but you may not use rainstick.mat or shake.mat in your solution.
Source:
OpenStax, Continuous time linear systems laboratory (ee 235). OpenStax CNX. Sep 28, 2007 Download for free at http://cnx.org/content/col10374/1.8
Google Play and the Google Play logo are trademarks of Google Inc.