milkbucket/README.md

42 lines
1.7 KiB
Markdown

# 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
```