Bliss music analyzer v1.2.0
Bliss music library is a multithreaded C library used to compute distance between songs. It is especially usable through MPD with Blissify.
It is can be useful for creating « intelligent » playlists and/or continuous play, à la Spotify/Grooveshark Radio.
Bliss is really useful when used as a plug-in for audio players, so feel free to use the python bindings to develop one for your favorite player!
See ANALYSIS.md for a technical description of the project.
NOTE: Currently rewriting and enhancing it in Rust, after prototyping something better than the current Bliss for my Msc thesis. Stay tuned!
See ROADMAP.md for a (very incomplete) list of what's to come.
Current projects using Bliss
- The main purpose of the library is to extract features from songs in the form of coordinates (tempo, amplitude, frequency, attack).
bl_analyze()to compute these coordinates for a given song.
bl_distance_file()to compute the euclidian distance between two songs. The closer the songs are, the more similar they are. Two same songs have a distance that tends towards 0. (This function is merely a wrapper for calling
bl_analyze()for each song and computing their euclidian distance)
- Python bindings are also available for these functions. See the wiki to learn how to use them.
These two functions are just examples of what can be done with coordinates in an euclidian space; machine-learning/big data algorithms could also be used to make cool things, such as clustering. See this article (in French)
The most immediate thing one that can be done to test this library could be to install it and then run python/examples/make_m3u_playlist.py on a folder with random songs in it: it will try to build the best playlist out of the files in the directory.
- libswresample (or libavresample, if libswresample isn't present)
If you are running Ubuntu (e.g. 14.04), you should
apt-get install libavutil-dev libavformat-dev libavcodec-dev libavresample-dev libfftw3-dev.
If you are running Arch Linux,
pacman -S ffmpeg should be enough.
For the Python bindings
- clone repository on github
$ git clone https://github.com/Polochon-street/bliss.git
- go to bliss root directory
$ cd bliss
- Create and enter the build directory
$ mkdir build && cd build
- Generate the Makefile
$ cmake .. -DCMAKE_BUILD_TYPE=Release
- Compile the library
- Install the library
(root) make install
- (optional) Install the python bindings
(root) cd python && python setup.py install
- See examples/analyze.c and examples/distance.c
- Compile any project using bliss with
$ gcc -o example example.c -lbliss $(pkg-config --cflags libavutil libavformat libavcodec)
- Examples for python bindings are in python/examples
This library comes with some unittests. To build them, just run
$ make test
build/ folder. Unittests source files can be found in the