An audio visualizer made with C++. I used Fmod as the audio library. The program can visualize audio through input like volume, frequency, pitch and beats per minute.


You can download it by clicking the image below.

What did I do?

  • Dove deep into Fmod – sound loading, sound, pitch, DSP, …
  • Created my own user interface with buttons, sliders, checkboxes, lists, textboxes and displays that can be dragged and minimized
  • Visualized audio
  • Loading and saving files with Windows
  • Saving and loading settings in appdata

Code snippet

UPDATE 04/04

Changes since last update:

  • Library interface (add songs from file to library, saves library to file and loads up library on startup)
  • Add and remove tracks from library
  • Shuffle/repeat/repeat one options for (automatically) playing songs after one another
  • Visualizer now keeps going even when the window is unfocused.
  • Keeps track of “listening history” (return with “<<” button and skip to next song with “>>”)
  • Some small visual changes (shape speed, rotation, amount, size, …)
  • Interfaces are automatically docked to specific corners of the screen on startup

LOGO: 05/04

Made a quick ‘lil logo in Adobe Illustrator for the program, no real name yet though.


UPDATE 12/06: v0.05 and BETA RELEASE

I think it’s fair to say Audio Visualizer is now ready for (beta) release.


  • There is now a scroll bar for the library list. A green line shows where the currently playing track is located.
  • The buttons are now slightly rounded to make them look nicer.
  • The shapes are now less frequent, but rely on the highest registered volume since the last shape was added.
    This is done so short louder parts of a song never go unnoticed.
  • The volume effect now appears on the top and bottom of the screen instead of the middle. It also has rounded corners.
  • Added “NOIRE” (5) and “SHADOW” (6) theme.
  • Settings (checkboxes, sliders, interface layout, theme) are now saved.
  • Added search function to library
  • Added library loading and creating new library files. Library files are now .avl (Audio Visualizer Library) files instead of .dat files. This feature provides a way of loading in different libraries from files. It also provides an elaborate way of making playlists.
  • Program now continues even when minimized.
  • Solved some problems caused by removing tracks.
  • The ID3 tag (title/artist/album) reading has been improved, and now avoids most (if not all) cases of weird character sequences (like “UUUUUUUUUUUU…” or a series of nonsensical symbols, letters and/or numbers).
    Note that some songs will still not have artist and album available since they don’t have an ID3 tag.
  • Info now displays both the file name (sans file type, like .mp3) and the title.
    e.g. name = “01 – Burn The Witch” | title = “Burn The Witch”
  • Adjusted the slider’s “snap to middle” property (see pitch slider).
    The slider used to snap any value between 45% and 55% of the slider to 50%; instead, now the slider snaps when the mouse drags the slider within a (horizontal) range of 3 pixels of the middle pixel.
    This resulted in the pitch to always be in the range of [0.0;0.90] + 1.0 + [1.10;2.0], regardless of the width of the slider.