Smart Music Recommendation System

I am interested in building a smart music recommendation system using ListenBrainz data. The main goal of this project is to analyze user listening history and provide personalized music recommendations in a simple and efficient way. I chose this idea because recommendation systems are a core part of modern music platforms, and I want to explore how similar functionality can be implemented using open data from MetaBrainz.

The system will work by collecting user listening data such as tracks, artists, and frequency of listens. Initially, I plan to implement a basic recommendation approach using similarity techniques like cosine similarity or collaborative filtering. For example, users with similar listening patterns can be grouped together, and tracks liked by similar users can be recommended. As the project progresses, I may explore simple clustering methods to improve recommendation quality.

The architecture will include a backend system (likely in Python) that processes ListenBrainz data, computes similarities, and generates recommendations. A simple API layer can be added to fetch recommendations for a user. Optionally, a minimal UI or command-line interface can be provided to demonstrate the results.

This project can benefit MetaBrainz by enhancing user engagement in ListenBrainz, as users will be able to discover new music based on their listening habits. It also aligns with the goal of making open music data more useful and interactive. Additionally, the system can be designed in a modular way so it can be extended or integrated into existing MetaBrainz tools in the future.

I would appreciate feedback from the community regarding the feasibility of this idea, suggestions for improvement, and guidance on how best to integrate it with existing systems. I am also willing to start contributing to the codebase to better understand the project before finalizing my proposal.

            +----------------------+
            |   ListenBrainz API   |
            +----------+-----------+
                       |
                       v
            +----------------------+
            |   Data Collection    |
            | (User listening logs)|
            +----------+-----------+
                       |
                       v
            +----------------------+
            |   Data Processing    |
            | (Cleaning & Filtering)|
            +----------+-----------+
                       |
                       v
            +----------------------+
            | Recommendation Engine|
            | (Similarity / ML)    |
            +----------+-----------+
                       |
                       v
            +----------------------+
            |   API Layer (Python) |
            +----------+-----------+
                       |
                       v
            +----------------------+
            | UI / CLI Interface   |
            +----------------------+
1 Like

Doesn’t ListenBrainz already do this?

3 Likes

There is Troi. I got it to work with Nextcloud Music via Subsonic API but recommendations are a bit random, IMHO. It would be cool, if someone got a bit more out of the data from Listenbrainz.

1 Like

Well, to my understanding, ListenBrainz’s Weekly Exploration (when working) does exactly this, and I quote: “The ListenBrainz Weekly Exploration playlist helps you discover new music! It may require active listening and skips. The playlist features tracks you haven’t heard before, selected by a collaborative filtering algorithm.”

Now, can it be done better? I don’t know the specs, but of course, there’s always room for improvement with everything, but in my experience, Weekly Exploration delivers a very good result.

Before discovering LB, I had been trying to implement such a thing myself without a collaborative algorithm, as I wanted to listen to new stuff based solely on my own taste. I ended up reinventing the wheel with a weekly playlist of 50 songs, composed of:

  • 80% completely new stuff (tunes and artists not in my library),

  • 10% fairly new stuff (same artists, but songs not in my library),

  • 5% known stuff in alternative versions (live/variants),

  • 3% tracks saved in my library (comfort zone, mostly liked),

  • 2% a forgotten batch (tracks I hadn’t played in a long time).

After a while, the algorithm kind of converged into what felt like an echo chamber, so I linked my system to LB suggestions.

2 Likes