pet project written in C++17, using the MinGW compiler (GCC version 15.2.0)
main.cpp: the entry point of the application. Initializes and calls audio engine and visualizer.engine.cpp: the data pipline. Responsible for capturing the audio levels and samples for the visualizer.signal_processor.cpp: the FIFO queue that is responsible for processing the audio samples for FFT.visualizer.cpp: to display the audio levels in a graphical way (spectral visualizer).
- MSYS2 / MinGW-w64
- CMake
- FFTW3 library installed via MSYS2
run these commands to compile the project:
# compile the project
cmake -S . -B output -G "MinGW Makefiles"
cmake --build output
# run (assuming path is terminal-equalizer)
.\output\terminal-equalizer.exeDocumentation & Readings:
WASAPI: IAudioEndpointVolume
WASAPI: audioclient.h
WASAPI: IAudioClient::Initialize [4]
Fast Fourier Transform (Wiki)
Third-Party Libraries:
FFTW++ (SourceForge)
FFTW++ (GitHub)