vibe
Cross-platform command line Tidal music streaming service client
Motivation
- Audio quality:
- 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
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