An FFT based audio visualizer built with C++ and OpenGL
This project was meant to be my first forray into graphics programming and also audio file processing.
The architecture is pretty short and sweet. One object holds and initializes audio data from a .wav file. I sample this file at regular intervals and perform a FFT on the samples. This gives me logarithmic frequency data to feed to the OpenGL rendere object. This object then manipulates the patters of the data and passes the final numbers onto the shader for rendering.'
If you would like to see the debug output for just the FFT, uncomment the #define DEBUG_DRAW
in AudioVis.h
to see an FFT of your .wav similar to the one below:
The final visualizer dynamically responds to an inputted .wav file, just like the gif below.
The included Visual Studio solution file should be self contained and links to all the libraries and tools in the /External folder. Open it up in VS2019 and run in whatever configuration you please.
- SFML was used for audio file reading and sampling
- A cheap FFT based on the Cooley-Turkey algorithm was implemented from here
- Inspiration and boilerplate code for OpenGL was taken from my own tutorial repo
- OpenGL tooling includes: