Skylar "The Cobra" Widulski
9287e222a5
Signed-off-by: Skylar "The Cobra" Widulski <cobra@vern.cc> |
||
---|---|---|
yammer | ||
.gitignore | ||
COPYING | ||
README.md | ||
config.example.scm | ||
yammer.c | ||
yammer.h | ||
yammer.scm |
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 fifobitrate
: The bitrate of the audio coming from the inputsample-factor
: Proportional to quality, may cause stuttering when >1.fps
: Self explanatoryresolution
: Pixel width of barsscale
: Bar height multipliercolor
: Bar colorbgcolor
: Background colorqueue-size
: The size of the queue (minimum of 1), delays displaying bars byqueue-size
frames. Useful if desync is noticedfft
: Whether or not to perform a fourier transform to show frequencies (likespectrum
mode in most other visualizers)interpolation
: Number of points to interpolate between values. <1 means disablesmoothing
: Smoothing mode. Possible values are:#f
: No smoothing or interpolation. Disregardsfft-interpolation
'none
: No smoothing'moving-average
: Moving average'exponential
: Simple (basic) exponential smoothing
moving-average-block-size
: Size of the moving average window. Higher is smoother.exponential-factor
: Exponential smoothing factor, lower is more smooth.exponential-init-factor
: The first value of the exponentially smoothed list is multiplied by this
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 (one that actually works would be nice)
- 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