Skip to content
Back to projects
Complete

opengl-audio-visualizer

OpenGL 4.5 audio visualizer with FFT-based frequency analysis and reactive 3D graphics. Built in C++ with GLFW and ImGui for a computer graphics course.

GitHub topics

  • Audio
  • CMake
  • DSP
  • FFT
  • Music
  • OpenGL
  • C++
Repository
AidenCarrera/opengl-audio-visualizer
Created
May 7, 2026

Highlights

  • Analyzes live audio with a Hann-windowed 1024-point FFT.
  • Maps bass, mid, and treble energy to separate rings of reactive 3D objects.
  • Implements Phong shading, cubemap reflections, and a full skybox in OpenGL 4.5.
  • Provides real-time controls for camera, lighting, color, geometry, and reaction intensity.
  • Loads WAV, MP3, and FLAC files at runtime through miniaudio.

OpenGL Audio Visualizer is a C++ desktop application I built for a computer graphics course. I wanted to create something more interesting than a standard graphics demo, so I made a reactive 3D visualizer that turns music into movement, lighting, scale, and color.

The application analyzes audio in real time using a Hann-windowed 1024-point FFT. The signal is divided into bass, mid, and treble bands, with each range controlling a different ring of spheres, toruses, or cubes. Envelope following and automatic normalization keep the animation responsive across songs with different volumes and frequency balance.

The graphics pipeline uses OpenGL 4.5, Phong shading, cubemap reflections, and an environment skybox. An ImGui control panel allows object counts, ring sizes, reaction intensity, camera settings, lighting, and dynamic color behavior to be adjusted while the visualizer is running.

Audio playback is handled by miniaudio, while KissFFT performs the frequency analysis. The application can load WAV, MP3, and FLAC files at runtime and falls back to a time-based animation when no audio is available.

Building the project gave me a much better understanding of how a real-time graphics pipeline works, from shaders and buffers to camera movement, lighting, audio analysis, and rendering animated 3D scenes.

Gallery

  • OpenGL audio visualizer second perspective
  • Visualizer settings