All Projects → Polochon-street → bliss

Polochon-street / bliss

Licence: MIT license
Bliss music library that can compute distance between songs

Programming Languages

c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to bliss

Foucluster
FouCluster compute distance among songs in frequency domains, and operate with clusters
Stars: ✭ 15 (-80.26%)
Mutual labels:  distance, songs
tsunami
A simple but powerful audio editor
Stars: ✭ 41 (-46.05%)
Mutual labels:  audio-analysis, audio-applications
lidbox
End-to-end spoken language identification out of the box.
Stars: ✭ 39 (-48.68%)
Mutual labels:  audio-analysis
Shadowcol
A python control interface to play games and control your PC using voice commands
Stars: ✭ 16 (-78.95%)
Mutual labels:  audio-applications
audio noise clustering
https://dodiku.github.io/audio_noise_clustering/results/ ==> An experiment with a variety of clustering (and clustering-like) techniques to reduce noise on an audio speech recording.
Stars: ✭ 24 (-68.42%)
Mutual labels:  audio-analysis
distance
Go lib to calculate distance 🗺
Stars: ✭ 16 (-78.95%)
Mutual labels:  distance
COVID-19-train-audio
COVID-19 Coughs files for training AI models
Stars: ✭ 39 (-48.68%)
Mutual labels:  audio-analysis
fasterRaster
Faster raster processing using GRASS GIS
Stars: ✭ 18 (-76.32%)
Mutual labels:  distance
geodist
Golang package to compute the distance between two geographic latitude, longitude coordinates
Stars: ✭ 133 (+75%)
Mutual labels:  distance
ludacris
🎶 Get song lyrics. No BS. https://liyasthomas.github.io/ludacris
Stars: ✭ 37 (-51.32%)
Mutual labels:  songs
DingoLingo
A Discord music bot written in Python with support for Youtube, SoundCloud, Spotify, Bandcamp, Twitter, and custom files.
Stars: ✭ 183 (+140.79%)
Mutual labels:  songs
youtubly-android
An android app to download 📹 videos and 🎶 songs from youtube to phone internal storage. In a nutshell NewPipe for just audio.
Stars: ✭ 24 (-68.42%)
Mutual labels:  songs
spafe
🔉 spafe: Simplified Python Audio Features Extraction
Stars: ✭ 310 (+307.89%)
Mutual labels:  audio-analysis
Lyrics
Music is life. That's why our hearts have beats! This is an android application for all the music lovers who occasionally search for lyrics of various songs. This app makes this process easier and simpler.
Stars: ✭ 17 (-77.63%)
Mutual labels:  songs
go-coronanet
Go implementation of the Corona Network
Stars: ✭ 35 (-53.95%)
Mutual labels:  distance
haversine-geolocation
Get distances between two points or get closest position to current point. Based on the Haversine Formula
Stars: ✭ 20 (-73.68%)
Mutual labels:  distance
geodesy-php
Geodesy PHP - Port of some known geodesic/math functions for getting distance from a known point A to a known point B given their coordinates. It also supports conversion between units of length, Polar position to Cartesian coordinates, and different Reference Datums.
Stars: ✭ 26 (-65.79%)
Mutual labels:  distance
enmSdm
Faster, better, smarter ecological niche modeling and species distribution modeling
Stars: ✭ 39 (-48.68%)
Mutual labels:  distance
Appo-Music
A full-stack clone of the incredible Apple Music online streaming platform, with an aim to re-create it's core features, seamless design, and excellent user experience.
Stars: ✭ 82 (+7.89%)
Mutual labels:  songs
MusicBot
A multi-server music bot for Discord built in Go
Stars: ✭ 44 (-42.11%)
Mutual labels:  songs

build

Note: this is now in support-mode only.

For new features, see bliss-rs.

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

Usage

  • The main purpose of the library is to extract features from songs in the form of coordinates (tempo, amplitude, frequency, attack).
  • Use bl_analyze() to compute these coordinates for a given song.
  • Use 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.

Dependencies

  • libavformat
  • libavutil
  • libavcodec
  • libswresample (or libavresample, if libswresample isn't present)
  • libfftw3

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

  • python-cffi
  • python-setuptools

Installation

Linux users

  • 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
$ make
  • Install the library
(root) make install
  • (optional) Install the python bindings
(root) cd python && python setup.py install

Usage examples

  • 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

Unittests

This library comes with some unittests. To build them, just run

$ make test

in the build/ folder. Unittests source files can be found in the tests/ folder.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].