Skip to content

my own audio visualizer library, because after effects sucks

License

Notifications You must be signed in to change notification settings

trustytrojan/libavz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libavz

my own audio visualizer library, because after effects sucks

here are some songs rendered with libavz!

features

  • low-level construction of visuals from audio
  • layer-and-effect composition
  • super fast video encoding with ffmpeg
  • faster than adobe after effects!!!!!!!!!

prerequisite knowledge

below are two great videos by Cinamark explaining some of the fundamentals of programming with audio & visualization:

How do computers even render audio...?
How Do Computers Even Visualize Audio...?

building

  1. install dependencies, per platform:

    ubuntu noble (24.04 LTS)

    # ppa required to install SFML 3
    sudo add-apt-repository ppa:bleedingedge/noble-bleed
    sudo apt-get update
    sudo apt-get install -y libfftw3-dev ffmpeg libglew-dev libsfml-dev portaudio19-dev

    arch linux

    sudo pacman -S fftw ffmpeg glew sfml portaudio

    windows

    winget install gyan.ffmpeg

    macOS

    brew install glew sfml fftw ffmpeg
  2. on all platforms: clone repo, configure cmake, and build

    git clone https://github.com/trustytrojan/libavz && cd libavz
    cmake -S. -Bbuild && cmake --build build -j
  3. by default, example programs are built, so you can run them like so:

    build/examples/scope 'my-song.mp3'

libraries/software used

developer environment setup

the project requires C++23 with GNU extensions, so try to use a compliant toolchain. i primarily use GCC 15.2 on linux and windows. thanks to github actions, there is success building with AppleClang on macOS (see actions workflow runs for more details). i do not guarantee fully working builds with Clang/LLVM or MSVC. if you want to see them work, contribute!

my choice of editor is Visual Studio Code with the CMake Tools and clangd extensions. optionally install WebGL GLSL Editor for shaders.

windows

please use the MinGW-w64 toolchain as it is the only toolchain i have compiled with, and honestly the easiest to setup and use.

with winget you can get the version i usually use with the command below. make sure to restart your terminal if it doesn't pick up on the updated PATH environment variable.

winget install BrechtSanders.WinLibs.POSIX.UCRT

clangd might freak out about the standard headers being missing. to fix this, open clangd extension settings, and add the following argument without quotes:

--query-driver=C:\path\to\mingw\bin\g++.exe

todo list / goals

  • gonna take imgui out... it belongs in a separate repo as an effort to make some kind of editor using libavz. ui should not be conflated with the library itself.
  • rhythm-based effects