VIRUS – VLC Iterative Recommender Under SoundCloud

For the Audio and Music Processing Lab, I developed a social recommendation system for music, inspired somehow in the idea of This is the main idea behind: if somebody likes your music, then it is likely that you will find interesting other music that this person likes.

Copyright Daniel' - CC BY SA 3.0. Image from

Copyright Daniel’ – CC BY SA 3.0. Image from wikipedia.

For the system implementation, I choose SoundCloud, which hosts my songs for the Vagabundo Barbudo project, and furthermore provides a nice python wrapper for the API. Based on how the site is structured, I found out 2 basic ways of implementing the system:

– Favorites: the user can select specific songs as “favorites”. If the user U1 favorites both songs S1 and S2, then these two songs are first degree connected. If another user, called U2, favorites songs S2 and the new hit S3, now songs S1 and S3 are second degree connected. And so on…

– Followers: the user can also “follow” another user, mainly because they are friends or the first one likes the music of the second one. It is basically a unidirectional relationship: if user U1 is follower of U2, then U2 is followed by U1 (but U2 can, of course, reciprocally become follower of U1). We consider here that, if U1 follows U2, and U2 follows U3, then U1 and U3 are second degree connected.

The idea is that, given these connexion methods, and the desired proximity degree, one can enjoy a playlist composed by music randomly choosed among his friends’ friends. It is probably not the ultimate recommendation system, but at least one can have some fun and discover the musical ecosystem of his closer environment.

Once the songs are chosen, they are streamed from soundcloud into VLC player. From here comes the name of the system: VIRUS (VLC Iterative Recommender Under SoundCloud).

Schema of the VIRUS system

Schema of the VIRUS system

The code is already available in my repo:

For the future work, it would be nice to have a tool for measuring the distance between two artists, say Vagabundo Barbudo and Justin Bieber.

PD – For the assignment, I also created an AutoTagger trained with the MajorMiner dataset (from MIREX), and applied it to my tracks. It was kind of correct, but far less interesting that the current tags.

Left colums: actual tags.  Right columns: auto-tags classified from the MajorMiner dataset

Left colums: actual tags.
Right columns: auto-tags classified from the MajorMiner dataset

Esta entrada fue publicada en sound and music computing y etiquetada , , , , . Guarda el enlace permanente.


Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de

Estás comentando usando tu cuenta de Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s