Designed and implemented an active band-pass filter to suppress a 2 kHz tone by ≥10 dB in an audio signal
Designed the low-pass filter, later cascaded with a high-pass filter to form the final band-pass response
Used TI Filter Design tools to explore and select: Filter type (Butterworth / Chebyshev), Cutoff frequency, Filter order
Simulated filter responses in LTspice using AC analysis and Bode plots
Accounted for real-world non-idealities, recognizing attenuation bottlenecks in cascaded filters
Used Python scripts to: analyze frequency spectra before and after filtering, evaluate suppression performance
Verified frequency-domain behavior using WaveForms spectrum analysis
Implemented and tested the final band-pass filter on a breadboard
Generated and measured audio signals using Analog Discovery 3 (AD3)
Validated performance through time-domain, frequency-domain, and auditory evaluation
Bode plot for low-pass filter
Bode plot for band-pass filter
Frequency spectrum of audio file
Bode plot of band-pass filter
This was a pair-work project that built toward a final band-pass filter capable of suppressing an unwanted 2 kHz sinusoidal tone by 10 dB in an audio signal. I was responsible for designing and implementing the low-pass filter, while my teammate focused on the high-pass filter.
One of my biggest takeaways from this project was realizing the gap between theoretical expectations and real-world behavior. While theory suggests that attenuation from cascaded filters should add up due to logarithmic scaling, practical non-idealities and noise meant that the overall suppression was often limited by the weaker filter stage. This shifted my mindset from simply “calculating the right values” to becoming comfortable with iteration, tuning, and compromise.
After using TI Filter Design tools to obtain an initial design, I repeatedly adjusted cutoff frequencies, filter order, and filter types (Butterworth vs. Chebyshev), and validated each change using LTspice Bode plot simulations, Python-based spectral analysis, and auditory evaluation by listening to the filtered output. Seeing the same signal through visual, mathematical, and auditory techniques strengthened my intuition for filter behavior.
The process involved extensive trial and error, which built both technical confidence and resilience. After validating individual low-pass and high-pass designs in simulation, we combined them into a band-pass filter, iteratively refined it in LTspice, and finally implemented the circuit on a breadboard. Testing the final output with AD3 and WaveForms, and hearing the filtered audio played through a speaker, which was very satisfying.
Overall, this project taught me not just how to design filters, but how to approach circuit design holistically: starting from theory, validating through simulation, iterating with real-world constraints, and embracing non-idealities as part of the engineering process.