Awesome
vibe
Cross-platform command line Tidal music streaming service client
Motivation
- Audio quality:
- web-based Tidal clients might suffer from suboptimal audio mixing / resampling in the browsers (see, e.g, this chromecast review);
- official Windows desktop app might produce choppy sound or adjust volume erratically;
- headless operation.
- Lightweight on resources:
- clients for big media projects, e.g., Kodi, require lots of dependencies;
- web and
electron
based clients require significant amounts of RAM and CPU time;
Note to the users
vibe
is still under development and is subject to dramatic changes without prior notice.
Prerequisites
- ffmpeg
- sox
Regarding MQA
vibe
can decode and render MQA streams using mqa's mqadec
and mqarender
binaries. It is user's responsibility to make sure those are accessible either via PATH
(if using --mqa-mode=host
flag) or via localhost/mqa
container (using either --mqa-mode=podman
or --mqa-mode=docker
flags).
Installation
go get -u github.com/godsic/vibe
Authentication
vibe
supports two authentication methods:
- (default) OAuth2 authentication via a web browser. It requires user to copy-paste
code
from the address bar back to the input field in the terminal. This is still work-in-progress and might eventually be fully automated with the likes of selenium or chromedp. --legacy-login
would trigger single factor authentification in case OAuth2 is absolutely not possible. It would likely be disabled by Tidal in the future.
On successful login, vibe
saves ~/.vibe/config/session.json
file and will reuse it for authomatic login. If one needs to use vibe
on a headless machine, then it is advised to perform OAuth2 authentication elsewhere and then copy session.json
file to the headless client.
MQA encoded streams can only be accessed via OAuth2 authentication.
Audio quality
The main feature of vibe
is absolute loudness normalization to avoid hearing damage.
By taking into account properies of the audio equipment, e.g., output voltages, gains, impedences and sensitivies, vibe
can play music at requested absolute SPL (set via --loudness=
flag, 75 dbC
by default).
vibe
resamples audio internally to the sample rate that offers the highest SINAD of the given DAC.
vibe
maintains database of audio hardware and prompts users to specify their audio chain on first run. It is very limited at the moment and user contributions to the hardware database are very welcome.
Usage
Play favorite tracks
vibe
Shuffle favorite tracks
vibe --shuffle
Override default playback loudness of 75 dbC
vibe --loudness 85
Bypass PulseAudio on Linux
pasuspender -- vibe
For less common flags see
vibe --help