Skylar "The Cobra" Widulski
730fb9a2bb
Signed-off-by: Skylar "The Cobra" Widulski <cobra@vern.cc> |
||
---|---|---|
screenshots | ||
src | ||
.gitignore | ||
COPYING | ||
README.md | ||
compile.sh | ||
config.example.scm | ||
yammer |
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 and stuff.
To disable FFTW, use export NO_FFTW=1
To disable PulseAudio, use export NO_PULSE=1
To enable debugging symbols, use export DEBUG=1
./compile.sh
You may need to adjust PKG_CONFIG_PATH
if you use something like Guix System.
Configuration
Copy config.example.scm
to ~/.config/yammer/config.scm
Below is a list of values and what they do
-
using-fftw?
: Was libyammer.so compiled using FFTW? -
using-pulse?
: Was libyammer.so compiled using PulseAudio? -
source
: The MPD fifo or PulseAudio source -
source-type
: One of'mpd
or'pulse
-
pulse-latency
: Latency to request from PulseAudio -
bitrate
: The bitrate of the audio coming from the input -
sample-factor
: Proportional to quality, may cause stuttering when >1. -
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 byqueue-size
frames. Useful if desync is noticed -
fft
: 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 disable -
smoothing
: Smoothing mode. Possible values are:#f
: No smoothing or interpolation. Disregardsinterpolation
'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.
Running
Either install .libs/libyammer.so, src/c/yammer.h, src/guile/yammer.scm, and src/guile/yammer to their respective systemwide locations, or do the following:
export LD_LIBRARY_PATH=.libs
export GUILE_LOAD_PATH=src/guile
Then, run yammer.
./yammer
Screenshots
Normal mode
FFT mode
Exponential
Moving Average
Wishlist
- Native PipeWire, ALSA, JACK, sndio sources
- More smoothing modes (one that actually works would be nice)
- Average over
resolution
- Offload some calculations to the GPU
- Use more than one core lmao?
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
- PulseAudio can be reeaaaaally behind