19 unstable releases (4 breaking)
new 0.5.1 | Feb 8, 2025 |
---|---|
0.4.1 | Jan 16, 2025 |
0.3.4 | Nov 11, 2024 |
0.3.1 | Jun 21, 2024 |
0.2.2 | Sep 14, 2023 |
#15 in Audio
1,089 downloads per month
74KB
2K
SLoC
Vibe
About
Vibe is a music player that uses the SLIM TCP protocol to connect to a Lyrion Music Server formally known as a Logitech Media Server.
Vibe is intended to be run as a user daemon and designed to be simple and as unobtrusive as possible.
I use Vibe as my daily driver, so it gets lots of use by me and I fix
bugs as I find them, but this is on a linux system and using the
pulseaudio
output. For anything else, I rely on bug reports but
I'm limited to testing on a Linux system only.
Running
To list the run-time options:
vibe -h
To see all audio output devices on your machine:
vibe -l
There is a systemd service file in the resources directory which you can adapt to your needs as follows:
Copy the systemd service file to ~/.config/systemd/user/
.
If you installed via the deb package you can leave this
file unchanged. If you compiled Vibe yourself then you will
need to edit the line beginning with ExecStart=
so that it
points to the vibe
executable.
Tell systemd of the new service with
systemctl --user daemon-reload
You only need to do this once.
Start the service with
systemctl --user start vibe.service
You can make it so that vibe will start whenever you login with
systemctl --user enable vibe.service
Output
By default, Vibe uses the pulse
feature flag which means it uses
the pulseaudio
API. This means that it can play
sounds both with the pulseaudio
system and with the pipewire
system, thanks
to the fact that pipewire
implements the pulseaudio
API.
There is also the compile-time option rodio
, for playing audio via other systems
such as ALSA. This uses the rodio
crate which, in turn, uses the cpal
crate.
This means that the following hosts are possible (according to cpal
documentation):
- Linux (via ALSA or JACK)
- Windows (via WASAPI by default, also ASIO)
- macOS (via CoreAudio)
- iOS (via CoreAudio)
- Android (via Oboe)
- Emscripten
Compilation
Compile-time dependencies
Vibe needs the pulseaudio
development files, but this can be disabled, see below.
These are provided as
part of the libpulse-dev
package on Debian and Ubuntu distributions.
If the rodio
feature is selected, then Vibe also needs
the ALSA development files. These are provided as part of the libasound2-dev
package on Debian and Ubuntu distributions and alsa-lib-devel
on Fedora.
Features
Symphonia optimization
Symphonia has optimization features that are off by default, you can switch them on
with --features symphonia/<optimization>
. These features are:
opt-simd-sse
opt-simd-avx
opt-simd-neon
or you can switch them all on with opt-simd
.
If the Symphonia devs have them off by default then so will I.
Rodio
To use rodio
/cpal
, use the rodio
feature. This will add the
ability to use --system=rodio
on the command line to select the
rodio output. Note that when
this feature flag is used, Vibe will still default to pulseaudio
if --system=rodio
is not specified.
When the rodio
feature is selected, Vibe will compile for
both pulseaudio and rodio so will still have a dependency
on pulseaudio
.
If you want to compile without having a dependency on pulseaudio then use
the --no-default-features
compilation option. In this case, the rodio
feature flag must be selected, otherwise Vibe will not compile.
Notify
To enable new track notifications on the desktop use the notify
feature. If this is enabled, you will be able to suppress the
notifications with the --quiet
command option.
To compile when this feature is selected, pkg-config
must be
installed along with the dbus development package; this is
libdbus-1-dev
on Debian and Ubuntu.
Run-time Dependencies
Vibe has zero run-time dependencies, all the stream demultiplexing and decoding is done natively thanks to Symphonia, a big "thank-you" to the Symphonia devs for their amazing work!
Support me
Dependencies
~7–37MB
~625K SLoC