yammer/README.md

1.6 KiB

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: Smoothing mode. Possible values are:
    • #f: No smoothing
    • moving-average: Moving average
  • moving-average-block-size: Size of the moving average window. Higher is smoother.

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
  • More smoothing modes
  • Average over resolution
  • Offload some calculations to the GPU

Known issues

  • Sometimes the read gets misaligned and just becomes noise
  • 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