Go to file
Lucas Verney 3356ff711e Use Python-mpd2 instead of mpc calls 2016-05-25 19:15:16 +02:00
bliss@4781124ff1 Use cosine similarity as well in client code 2016-05-25 00:11:39 +02:00
client Use Python-mpd2 instead of mpc calls 2016-05-25 19:15:16 +02:00
include Add docstrings 2016-05-10 19:32:45 +02:00
src Use cosine similarity as well in client code 2016-05-25 00:11:39 +02:00
.gitignore First commit 2016-04-06 00:35:22 +02:00
.gitmodules First commit 2016-04-06 00:35:22 +02:00
CMakeLists.txt Fix CMakeLists.txt 2016-05-19 17:59:33 +02:00
README.md Large refactor 2016-05-10 19:16:34 +02:00
main_args.c Large refactor 2016-05-10 19:16:34 +02:00
main_mpd.c Large refactor 2016-05-10 19:16:34 +02:00

README.md

MPDBliss

MPDBliss is an attempt at binding Bliss to MPD to be able to play smooth mixes with MPD, à la Grooveshark radio.

Dependencies

To build it you will need sqlite3 and libmpdclient, plus the required dependencies from bliss (see https://github.com/Polochon-street/bliss).

Build

git clone --recursive https://github.com/phyks/mpdbliss
cd mpdbliss; mkdir build
cmake ..
make

This will build a mpdbliss executable.

Usage

mpdbliss is made of two components. First one, mpdbliss, has to run on the MPD server machine (or at least have access to the music files) and will build and maintain a parallel database of song "features" and distances between them, as computed by bliss. This will be stored in $XDG_DATA_HOME/mpdbliss/ (defaults to ~/.local/share/mpdbliss). Second one is a client, to create playlist based on the currently playing song. client.sh script at the root of this repository is an example of such a script. Such client script needs to have access to the database build in first step.

See mpdbliss --help for up to date doc.

Note: mpdbliss supports the MPD_HOST/MPD_PORT environment variables. You can overload them passing it command-line argument. Passwords should be provided in the host string following the standard MPD syntax.

There are basically 3 modes of operation:

  • --rescan which will trigger a full rescan of your MPD database and recreate the associated bliss database.
  • --update which will do the same, but will only consider newly added musics.
  • Without any flag, mpdbliss will listen for MPD IDLE protocol, and trigger an update of the database whenever the MPD database is modified.

Typical usage would be to run a --rescan first, and then either do periodic --update or let it run listening at MPD IDLE protocol to maintain MPD database and mpdbliss database in sync.

Check the client.sh script for an example client script to build smooth MPD playlists. out any flag, mpdbliss will listen for MPD IDLE protocol, and trigger an update of the database whenever the MPD database is modified.

Typical usage would be to run a --rescan first, and then either do periodic --update or let it run listening at MPD IDLE protocol to maintain MPD database and mpdbliss database in sync.

Check the client/client.py script for an example client script to build smooth MPD playlists.