Audio equalizer (EQ) is an electronic device that allows control over the strength of different frequencies in the audio signal. Generally, there are two types of equalizers, Graphic or standard, and Parametric Equalizer. The main difference between these types is the degree of control over the sound: the graphic EQ gives you control only over the strength of the previously fixed frequency, while the parametric one gives you complete freedom to choose which frequency you want to change and how wide it affects the filter.

However, a parametric equalizer is much more complex to manufacture, much more expensive, and is therefore most often used in professional studios.
This time I will present you a way to build a budget-friendly and relatively simple stereo parametric equalizer using an ESP32 microcontroller and a WM8960 Stereo CODEC (Coder-Decoder) Audio Module. The settings can be visually monitored on a Color display, which gives another professional feature to this advanced audio device.
This project is sponsored by PCBWay. From September 1, 2026, to January 24, 2027, PCBWay is hosting its 9th Project Design Contest. You can enter in five different categories: Edge AI & IoT, Robotics, Power, Open Theme, and Mechanical. Valuable prizes—including cash, coupons, and single-board computers—await the winners, while every participant will receive a Raspberry Pi Pico. Don't miss this opportunity to share your work and win great prizes. Make PCBWayyour first choice!

First of all, I would like to present the function of the equalizer in the simplest way possible, without going into technical details. At the input of the audio system, we bring so-called pink noise (that is, all audible frequencies together, with equal intensity), which is graphically represented by a straight line in the entire range.

Now, if we place a microphone with a spectrum analyzer at the place where we should hear music, theoretically we should get the same almost straight line on the analyzer as on the system's input. However, most often, due to the nonlinear characteristics of the speakers, but also the geometry of the room, at the place intended for listening, to the spectrum analyzer we get a curved line, for example with a shape like in the picture (the red line). Certain frequencies are amplified, and others are attenuated. To correct this, we need to "draw" a mirror curve of the original with the equalizer (blue line). Thus, the resulting curve at the listening position would be approximately flat, which is the ultimate goal for quality Hi-Fi listening. This previously mentioned symmetrical mirror curve can be approximately adjusted with a Graphic Equalizer, and ideally with a Parametric Equalizer.

As I mentioned earlier, this device contains several components.
- ESP32 microcontroller board Dev1 30 pin
- WM8960 Audio Module
- ILI9341 320x240 LCD Display
- Rotary encoders
- And a few resistors
However, on this particular board, the 3.5 mm EARPHONE connector on this board is Stereo headphone output + microphone input. On the other channel there is an onboard MEMS microphone. So it is intended for stereo microphone inputs, and we need Line In inputs. With a small hardware modification of the board, we can get these inputs. It is presented in the pictures below.


We need to remove the 2k2 smd resistor, and then one input is directly on the connector. As for the other input where the MEMS microphone is originally connected, the indicated capacitor should be unsoldered and only one contact should be soldered directly to the PCB as in the picture. The free contact from the capacitor is the other input. Then, directly on the RCA connectors we form a voltage divider with two resistors as shown in the schematic.

With this, the hardware part of modifying the audio board is complete.
As you can see, the device I built is a tangle of wires, but this is merely a test unit intended to demonstrate functionality. The actual, final Hi-Fi device needs to be constructed using shielded and grounded components—particularly the display and the ESP32—to prevent interference with the audio. Additionally, a "star grounding" scheme should be implemented, and coaxial audio cables should be used for the inputs and outputs.
The image below shows a table regarding how the components are connected.

As for the code, it generally consists of two parts, namely a visual part that represents the current settings state and sends commands to the audio board, and the part that performs the audio processing, i.e. the Audio Codec Board. Unexpectedly, the second part of the code was much more complex than the graphical control part, considering that there is no library specifically for this purpose. To compile the code without errors, it is necessary to install the given libraries, especially TFT-eSPI which is modified specifically for this configuration.

I should mention that the equalizer connects between the preamplifier and the power amplifier.

First, let me explain all the functions. When turned on, the last set configuration appears on the display. In the bottom row of the screen there are five buttons that select the five areas by clicking on the first rotating encoder. On the left side are the values of the three parameters for the selected area.
-By rotating this encoder, the center frequency for the specific area is changed. With a long press, bypass is performed, i.e., a clean unprocessed sound is sent to the output for comparison. With a repeated long click, we return to the equalized sound.
-By pressing the second rotating encoder, the speed of changing the curve is changed, normal and 2x speed. By rotating it, the Gain value is changed in the range from -15 to +15 dB. With a long click on the button of this encoder, the device is reset to the initial factory settings, i.e., an unprocessed audio signal to the outputs.

With a single click on the third rotary encoder, the way the curve is displayed changes between Single Band/ All Bands Show, and with its rotation, the Q factor of the curve changes. A long press on the third encoder enters a special PRESET mode. Specifically, I have reserved five slots for saving settings. "P1" appears on the screen, and rotating the encoder allows you to select a slot from P1 to P5. After making a selection, a short press loads the previously saved state, while a long press saves the current EQ state to the selected slot.
So with these three encoders we can adjust any shape of the curve, which is almost impossible for a graphic equalizer. This equalizer also has the ability to detect clipping distortion caused by a too strong input signal, which is manifested by the graph turning red at moments of clipping.
For example, if there is a 50Hz hum caused by the power supply, we can remove a very narrow area around that frequency, thus eliminating that defect.

And finally a short conclusion: This project shows that an inexpensive ESP32 and WM8960 codec can become a surprisingly powerful real-time stereo audio processor. With five fully parametric bands, presets, bypass and graphical control, it offers capabilities normally associated with much more expensive audio equipment.
mircemk