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. install any required dependencies below using winget:
    • lua can be installed with winget install devcom.lua
    • ffmpeg and its libraries can be installed with winget install gyan.ffmpeg.shared
  2. run cmake -S. -Bbuild && cmake --build build or use your IDE of choice with CMake support

libraries/software used

dev note

on namespaces:

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

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 / goals

  • ✅️ viz::ScopeDrawable
    • extra: audio window customization independent of shape size
  • 🔄 lua api
    • ✅️ modular layering/effects system
    • ✅️ remove hardcoded visualizer components
    • freshen up c++ api for consumption
    • decide whether to split up audioviz into library & programs
  • ✅️ make audioviz generic, extend it with default functionality in a new class named ttviz
    • ✅️ figure out how to deal with fft_size and sa.analyze(...)
    • extra: rename base_audioviz to audioviz and call the default implementation something else
  • ✅️ 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)
    • extra: try using basic_ipstream over basic_pipe
    • extra: try to have one ffmpeg process output both streams
  • 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
  • interactive gui (long term)