#audio #similarity #playlist #song

app blissify

An MPD plugin for creating smart playlists

12 releases

0.2.5 Sep 5, 2021
0.2.4 Aug 29, 2021
0.2.2 Jul 21, 2021
0.1.8 Jun 30, 2021
0.1.5 May 26, 2021

#175 in Audio

Download history 10/week @ 2021-05-31 18/week @ 2021-06-07 23/week @ 2021-06-14 9/week @ 2021-06-21 34/week @ 2021-06-28 22/week @ 2021-07-05 2/week @ 2021-07-12 47/week @ 2021-07-19 15/week @ 2021-07-26 31/week @ 2021-08-02 4/week @ 2021-08-09 21/week @ 2021-08-16 27/week @ 2021-08-23 11/week @ 2021-08-30 11/week @ 2021-09-06 12/week @ 2021-09-13

84 downloads per month



crate build

Blissify - analyze an MPD library and make smart playlists

Blissify is a program used to make playlists of songs that sound alike from your MPD track library, à la Spotify radio.

Under the hood, it is an MPD plugin for bliss.

Blissify needs first to analyze your music library, i.e. compute and store a series of features from your songs, extracting the tempo, timbre, loudness, etc.

After that, it is ready to make playlists: play a song to start from, run blissify playlist 30, and voilà! You have a playlist of 30 songs that sound like your first track.

Note: you need to have MPD installed to use blissify. Otherwise, you probably want to implement bliss-rs support for the audio player you use.

Installation / Usage

You'll need clang, pkg-config and ffmpeg libraries (including development headers) to install it, as well as a working Rust installation

On Debian-based systems:

apt install -y clang libavcodec-dev libavformat-dev libavutil-dev pkg-config

On Archlinux:

pacman -S base-devel clang ffmpeg

Finally, use cargo install blissify to install it.

All the commands below read the MPD_HOST and MPD_PORT environment variables and try to reach MPD using that. You might want to change it if MPD is listening to somewhere else than (the default).

Analyze a library

To analyze your MPD library, use

$ blissify update /path/to/mpd/root

Note that it may take several minutes (up to some hours, on very large libraries with more than for instance 20k songs) to complete.

If something goes wrong during the analysis, and the database enters an unstable state, you can use

$ blissify rescan /path/to/mpd/root

to remove the existing database and rescan all files.

If you want to see if the analysis has been successful, or simply want to see the current files in, you can use

$ blissify list-db

Make a playlist

Simple version

$ blissify playlist 100

This will add 100 songs similar to the song that is currently playing on MPD, starting with the closest possible.

Changing the distance metric

To make a playlist with a distance metric different than the default one (euclidean distance), which will yield different playlists, run:

$ blissify playlist 30 --distance <distance_name>

distance_name is currently euclidean and cosine. Don't hesitate to experiment with this parameter if the generated playlists are not to your linking!


If you are interested about what is happening under the hood, or want to make a similar plug-in for other audio players, see bliss' doc.


~611K SLoC