# milkbucket milkbucket is an audio visualizer. It uses [Milkdrop](https://www.geisswerks.com/milkdrop/) preset files to generate visualizations from standard input. ## Build milkbucket depends on the [projectM](https://github.com/projectM-visualizer/projectm) library. To run milkbucket, you'll need to install this library either by building it yourself, or installing one of the builds from [here](https://github.com/projectM-visualizer/projectm/actions). (If you've never done this before, you'll want to download one of the "shared" artifacts for your system. Then, copy the contents of the artifact's `include` folder to `/usr/local/include` and the contents of the `lib` folder to `/usr/local/lib`.) After installing projectM, build milkbucket with `go build`. ## Usage milkbucket reads a PCM stream from standard input to generate visualizations. If you have an audio file and a preset in mind, you can use `ffmpeg` to generate the PCM stream, then pipe to milkbucket, like so: ``` ffmpeg -i $audio -ar 44100 -f s16le - | ./milkbucket $preset ``` Note that you can pass in multiple presets, then use the arrow keys to cycle through the presets while running. Note that neither of these commands (ffmpeg or milkbucket) will output any audio! If you want to hear the audio at the same time (and assuming your machine uses pipewire), run: ``` ffmpeg -i $audio -ar 44100 -f s16le - | tee >(pw-play --rate=44100 --format=s16 -) | ./milkbucket $preset ``` (If you don't use pipewire try using `aplay` instead of `pw-play`, or some other command for playing PCM streams.) You can also generate a visualization from your system sound. Assuming pipewire again, and that you have audio coming from Firefox, run: ``` pw-record --target Firefox - | ./milkbucket $preset ```