Digital Signal Processing with Python
In this project, I designed a lowpass filter and implemented it on an audio signal to preserve and amplify the 'bass' and mitigate the higher frequencies (the treble). The bass is essentially the lower frequencies of the audio signal and makes up for the 'base' of the overall tune
How does it work?
First we analyze the Frequency Domain of the audio signal and create our filter based off that. Which can we seen and played below.
Since we want to preserve the peaks, we want our cutoff to be at at minumum approximately 100Hz
Using MicroModeler DSP , Poles and zeros are allocated such the magnitude of each pole/zero is less than 1 (within the unit circle) to keep the system stable
Since zeros cancel out a frequency, we allocate conjugate zero pairs at the 1khz mark on the Unit Circle
Since Poles maximize frequencies, we allocate conjugate poles NEAR the zero frequency mark and not directly on the unit circle itself so the poles do not maximize just one singular frequency of zero.
The Filter's impulse response is seen below. As well as the filtered output's frequency domain and time domain plots
For simplicity 4 poles and 4 zeros were used making this is a 4th order IIR filter. The Direct form representation can be seen on the left illustrating how the samples are modified through the filter.
This is the difference equation for the first part of the direct form implementation shown above. This filter can be implemented in a single for loop and this is repeated for the second part of the diagram meaning two separate difference equations were used.
How can you communicate?