Audio visualizer thing
Go to file
Skylar "The Cobra" Widulski 8ce6e20fe8
Add running instructions to README
Signed-off-by: Skylar "The Cobra" Widulski <cobra@vern.cc>
2023-12-21 15:32:00 -05:00
yammer Make this a git repo 2023-12-21 13:59:13 -05:00
.gitignore Prepare for publishing 2023-12-21 15:17:27 -05:00
COPYING Prepare for publishing 2023-12-21 15:17:27 -05:00
README.md Add running instructions to README 2023-12-21 15:32:00 -05:00
config.example.scm Prepare for publishing 2023-12-21 15:17:27 -05:00
yammer.c Prepare for publishing 2023-12-21 15:17:27 -05:00
yammer.h Prepare for publishing 2023-12-21 15:17:27 -05:00
yammer.scm Add running instructions to README 2023-12-21 15:32:00 -05:00

README.md

Yammer

Audio visualizer thing in guile scheme

Build

Dependencies

guile-sdl2, fftw

Compiling the library

You need to compile the yammer.c file because it has wrappers around fftw functions.

gcc -shared yammer.c -o libyammer.so -Wall -Wextra -Werror -fPIC -shared -lfftw3 -lm -O3 -ggdb

Configuration

Copy config.example.scm to config.scm

Below is a list of values and what they do

  • fifo-file: The MPD fifo
  • fps: Self explanatory
  • resolution: Pixel width of bars
  • scale: Bar height multiplier
  • color: Bar color
  • bgcolor: Background color
  • queue-size: The size of the queue (minimum of 1), delays displaying bars by queue-size frames. Useful if desync is noticed
  • fft: Whether or not to perform a fourier transform to show frequencies (like spectrum mode in most other visualizers)
  • smoothing: Not implemented
  • smoothing-factor: Not implemented

Running

Either install libyammer.so and yammer.h to their respective systemwide locations, or do the following:

export LD_LIBRARY_PATH=.

Then, run yammer.

guile -L . yammer.scm

Wishlist

  • Native PulseAudio and PipeWire sources
  • Smoothing
  • Average over resolution
  • Offload some calculations to the GPU

Known issues

  • When MPD is paused or the program is sleeping for the next frame, the UI doesn't update so you can't exit
  • The surface can't be transparent