Project 7: Audio Equalizer (The Tone Shaper)

Build a multi-band audio equalizer with adjustable gains per band.


Project Overview

Attribute Value
Difficulty Level 2: Intermediate
Time Estimate 1-2 weeks
Main Language C
Alternative Languages Python, Rust, C++
Knowledge Area Filter banks and audio processing
Tools Audio player, plotting tool
Main Book “Understanding Digital Signal Processing” by Richard G. Lyons

What you’ll build: An equalizer that splits audio into bands (bass, mid, treble) and applies gain controls.

Why it teaches DSP: It shows how multiple filters combine into a real audio tool and how frequency shaping affects perception.

Core challenges you’ll face:

  • Designing band-pass or shelving filters
  • Maintaining stable gain across bands
  • Avoiding clipping when bands are boosted

Real World Outcome

You will have a tool that changes the tonal balance of audio. Boosting bass should make the low end stronger; reducing treble should soften sharpness.

Example Output:

$ ./equalizer --bass +6 --mid 0 --treble -3 --input song.wav --output song_eq.wav
Bands: 3
Wrote adjusted audio to song_eq.wav

Verification steps:

  • A/B test the original and processed audio
  • Plot spectra to see band boosts and cuts

The Core Question You’re Answering

“How can I isolate frequency bands and reshape them without destroying the rest of the signal?”

This project connects filter theory to human perception.


Concepts You Must Understand First

Stop and research these before coding:

  1. Band filters and shelving filters
    • What is the difference between a peaking filter and a shelf?
    • Book Reference: “Understanding Digital Signal Processing” by Richard G. Lyons, Ch. 14
  2. Gain staging
    • Why does boosting multiple bands risk clipping?
    • Book Reference: “The Scientist and Engineer’s Guide to DSP” by Steven W. Smith, Ch. 20
  3. Filter banks
    • How do multiple filters combine without gaps or overlaps?
    • Book Reference: “Understanding Digital Signal Processing” by Richard G. Lyons, Ch. 13

Questions to Guide Your Design

  1. Band definitions
    • What cutoff frequencies define bass, mid, and treble?
    • Will you allow custom band edges?
  2. Signal path
    • Will you process bands in parallel and sum, or in series?
    • How will you prevent phase issues?

Thinking Exercise

Band Allocation

Pick a song and list three frequency ranges you would define as bass, mid, and treble. Explain why those ranges make sense for that genre.

Questions while working:

  • How do these ranges change for voice-only audio?
  • What happens if bands overlap too much?

The Interview Questions They’ll Ask

Prepare to answer these:

  1. “What is a peaking filter vs a shelving filter?”
  2. “Why can equalizers cause phase distortion?”
  3. “How do you prevent clipping when boosting bands?”
  4. “What is a filter bank?”
  5. “How do you test whether your EQ is accurate?”

Hints in Layers

Hint 1: Starting Point Start with three simple filters and fixed crossover points.

Hint 2: Next Level Apply gains in linear scale and watch the headroom.

Hint 3: Technical Details Normalize output after summing bands to avoid overload.

Hint 4: Tools/Debugging Plot the output spectrum to verify that the boosts and cuts match settings.


Books That Will Help

Topic Book Chapter
Filter design for audio “Understanding Digital Signal Processing” by Richard G. Lyons Ch. 14
Gain staging “The Scientist and Engineer’s Guide to DSP” by Steven W. Smith Ch. 20
Filter banks “Understanding Digital Signal Processing” by Richard G. Lyons Ch. 13

Implementation Hints

  • Start with fixed bands to simplify validation.
  • Provide a simple CLI interface for gain values.
  • Use test tones to verify that each band responds as expected.

Learning Milestones

  1. First milestone: You can apply basic bass and treble adjustments.
  2. Second milestone: You can explain how band filters interact.
  3. Final milestone: You can build an EQ that sounds transparent at neutral settings.