Skip to content

my own audio visualizer, because after effects sucks

License

Notifications You must be signed in to change notification settings

trustytrojan/audioviz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

audioviz

my own audio visualizer, because after effects sucks. builds on windows and linux!!!!

here are some demos:

building

linux

  1. install any required dependencies below
  2. run cmake -S. -Bbuild && cmake --build build -j$(nproc) or use your IDE of choice with CMake support

windows

  1. create a directory called windows_deps, with three subdirectories ffmpeg, portaudio, and fftw
  2. install ffmpeg in one of two ways:
  • run these commands in an administrator command prompt (mklink doesn't run otherwise), replace [version] with the ffmpeg version that was installed by winget:
    winget install gyan.ffmpeg.shared
    mklink /D windows_deps\ffmpeg %LocalAppData%\Microsoft\WinGet\Packages\Gyan.FFmpeg.Shared_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-[version]-full_build-shared
    the mklink command simply links the winget installation directory to windows_deps/ffmpeg.
  • or, go here, download the "shared" release and extract the archive to windows_deps/ffmpeg
  1. download portaudio source, extract portaudio.h (inside include directory of the tarball) to windows_deps/portaudio. i recommending using 7zip for viewing archives: you can get it by running winget install 7zip.
  2. download the 64bit portaudio dll, rename it to portaudio_x64.dll, and move it to windows_deps/portaudio
  3. download fftw, open the archive and extract fftw3.h and libfftw3f-3.dll into windows_deps/fftw

libraries/software used

dev note

on namespaces:

  • fx: post-processing effects
  • tt: utility & library extensions
  • viz: audio visualization components

environment setup

i recommend using vscode as it integrates well with git with no effort. get the cmake tools extension and clangd to make development easier.

on windows please use the mingw toolchain as it is the only toolchain i have compiled with, and honestly the easiest to setup and use. clangd might freak out about the standard headers being missing: to fix this, open clangd extension settings, and add the following argument:

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

todo list

  • viz::ScopeDrawable
  • lua api (in progress)
    • modular layering/effects system
    • remove hardcoded visualizer components
  • make audioviz generic, extend it with default functionality in a new class named ttviz
  • add components/effects based on rhythm
    • involves knowing the tempo of the song
    • want a small translucent flash overlay that flashes to the beat of music
    • copy the osu! stars effect
  • need to experiment with only using the ffmpeg CLI instead of the libraries
    • figure out metadata parsing, then subprocessing for the audio/video streams
    • this might fix all the "ending early" problems (not a guarantee)
  • figure out why particles randomly don't show on linux