Compare commits
3 Commits
ebb4d7102b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d0a10c645 | ||
|
|
38016be3d3 | ||
|
|
d13abec803 |
@@ -20,7 +20,7 @@ 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
|
||||
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.
|
||||
@@ -29,7 +29,7 @@ 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
|
||||
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.)
|
||||
@@ -37,5 +37,5 @@ 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
|
||||
pw-record --target Firefox - | milkbucket $preset
|
||||
```
|
||||
|
||||
@@ -27,6 +27,9 @@ import (
|
||||
)
|
||||
|
||||
var transition bool
|
||||
var softCutDuration float64
|
||||
var width int32
|
||||
var height int32
|
||||
|
||||
/*
|
||||
* checkStdin checks if any data has been passed in through stdin and returns
|
||||
@@ -156,7 +159,7 @@ func milkbucket(cmd *cobra.Command, args []string) {
|
||||
}
|
||||
defer sdl.Quit()
|
||||
|
||||
m, err := newMilkDropWindow(800, 600, args)
|
||||
m, err := newMilkDropWindow(width, height, args, softCutDuration)
|
||||
if err != nil {
|
||||
cobra.CheckErr(err)
|
||||
}
|
||||
@@ -203,4 +206,7 @@ func init() {
|
||||
// Cobra also supports local flags, which will only run
|
||||
// when this action is called directly.
|
||||
rootCmd.Flags().BoolVarP(&transition, "transition", "t", false, "smoothly transition between presets")
|
||||
rootCmd.Flags().Float64VarP(&softCutDuration, "soft-cut-duration", "s", 3, "time in seconds for a soft transition between two presets (use with --transition)")
|
||||
rootCmd.Flags().Int32Var(&width, "width", 800, "window width")
|
||||
rootCmd.Flags().Int32Var(&height, "height", 600, "window height")
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ func (m *milkDropWindow) prevPreset(smooth bool) {
|
||||
* newMilkDropWindow returns a new milkDropWindow with the given width and
|
||||
* height, and sets presets available to the window.
|
||||
*/
|
||||
func newMilkDropWindow(width, height int32, presets []string) (*milkDropWindow, error) {
|
||||
func newMilkDropWindow(width, height int32, presets []string, softCutDuration float64) (*milkDropWindow, error) {
|
||||
var m milkDropWindow
|
||||
var err error
|
||||
|
||||
@@ -111,6 +111,8 @@ func newMilkDropWindow(width, height int32, presets []string) (*milkDropWindow,
|
||||
|
||||
C.projectm_set_window_size(m.handle, C.ulong(width), C.ulong(height))
|
||||
|
||||
C.projectm_set_soft_cut_duration(m.handle, C.double(softCutDuration))
|
||||
|
||||
return &m, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user