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

Download history 84/week @ 2024-10-30 118/week @ 2024-11-06 26/week @ 2024-11-13 6/week @ 2024-11-20 2/week @ 2024-11-27 23/week @ 2024-12-04 19/week @ 2024-12-11 40/week @ 2025-01-08 171/week @ 2025-01-15 97/week @ 2025-01-29

1,089 downloads per month

MIT license

74KB
2K SLoC

Static Badge Crates.io Version License: MIT push workflow Static Badge

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

Vibe runs on coffee! ko-fi

Dependencies

~7–37MB
~625K SLoC