17 unstable releases (3 breaking)
new 0.4.1 | Jan 16, 2025 |
---|---|
0.3.4 | Nov 11, 2024 |
0.3.1 | Jun 21, 2024 |
0.2.2 | Sep 14, 2023 |
#20 in Audio
902 downloads per month
65KB
1.5K
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:
Once compiled, move the vibe
executable to where you want on your
system then edit the vibe_daemon.service
file so that the
ExecStart=
line points to it, then add options you want, if any, to the
vibe command.
Copy the systemd service file to ~/.config/systemd/user/
and then
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_daemon.service
You can make it so that vibe will start whenever you login with
systemctl --user enable vibe_daemon.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 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.
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 if the rodio
feature is selected, Vibe will compile for
both pulseaudio and rodio so will still have a dependency
on pulseaudo
.
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.
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!
Dependencies
~6–34MB
~565K SLoC