ListenBrainz Radio

Good news everyone!

@mr_monkey and I worked for the past two weeks to make a drastically better UI for LB radio and we just pushed that into production:

LB Radio - ListenBrainz

Also, “user:…” has now been renamed to a more fitting “stats:…”. Please kick the tyres and let us know if you find any problems!

I have to say I am very excited to be releasing this – while it is still in beta and has loads of bugs, it finally brings functionality that I wanted to write… 23 years ago. And back then, I realize that I needed a massive database of music metadata with much better data then CDDB, so I set out to write that (hoping it would take 2-3 years) so that I then could go and write better playlisting tools.

I’m only 20 years late. But, better than never, right?


Awesome, this is fun to play with.

One problem: it chokes on anything other than basic Latin characters. We have some genres that use characters like ō, ñ and ħ; currently, we can’t generate a playlist using them.
Example: if I run tag:(idol kayō), I get the error

cannot parse prompt: ‘, found ‘ō’ (at char 13), (line:1, col:14)’


Ah, yes. I had started looking for a test case, couldn’t find one and then promptly (pun intended) forgot about it. Thanks for the reminder and the good example.

I’ve improved the code for this – I’ll push it out with an upcoming release; when that happens, I’ll post an update here.


OK, that update is now live in production.

Next request: The module we use for parsing is great, but the error messages are very techy. I’ve added one sanity check already that takes a common problem (artist:u2:nosim), catches it and suggests right prompt (artist:u2::nosim).

If you encounter error messages that are cryptic, please post them here and I will see about improving them.


1 Like

When I click the radiohead example it works and generates a playlist, but trying a few KPop artists nothing comes out. The most popular girl group and one of the most popular solo artist as examples:

Not sure if I’m doing something wrong?

Also are the similar artists based on listening history or MB data (or mix)? Is there data such as tags that could help with that? I did recently tag 608 KPop groups as either girl group or boy group :laughing:

1 Like

I’m getting the same result for some artists, including Makkon - MusicBrainz, Alex S. - MusicBrainz, and General Mumble - MusicBrainz (all looked up by name, not MBID). all three are decently big names in the Brony music community, but it’s possible there’s not much data in ListenBrainz to go off of (tho like the Kpop examples above, it did give good similar artists in the infobox)

I do get results for Renard tho~

1 Like

OK, the two cases above could at very least give hints as to why it didn’t work, if nothing else is wrong. I’ll go take a look at this on monday!

1 Like

I had a look and a previous version was giving fat playlists for this query, but for some reason this version is broken. I’ll dig deeper later today.

1 Like

I wonder if we could implement other tags, such as from works and some series? maybe series could fall under the next mode up (i.e. recording series under medium, since recordings are easy mode)?

I don’t know if it’s the right place, but I made a ticket for works (more broadly in ListenBrainz, that is), just so it’s somewhere


Both of these have been fixed – we forgot that we needed to include another dataset in the popularity data. We were missing more recent popularity data and these two artists were relatively new in the grand scheme of things.

Thanks for letting us know!


Thank you! It indeed works now for those and some others that previously didn’t! So if it fails now it’s likely there isn’t enough people who listen to the artist?

For fun I tested with a playlist of very small KPop groups and got results for about 7 of ~50 artists. The artists on there mostly only have a few hundred spotify listeners, and all are under 10k, so they are quite small (Though there should be listens from the linked account for all of them).

I am sure there is plans for this in the future, but I will throw it out there anyway: It would be cool if we could get an option in the listen drop down menu to open an artist in the radio page.

Thank you for all the hard work!

1 Like

Yep, once we get these different entity types debugged, we’ll start putting tag and artist radio buttons everywhere.


I’ve finally got a chance to tune this a bit. It turns out the modes were not well implemented in the artist entity, so I gave that a bit of a tune-up. Now easy mode will select the most similar artists, medium the medium similar ones and hard mode the least similar ones. The playlist now feel very distinct to me.

Similarly the tag entity has also gotten a bit of a tune, but the results there won’t be quite as drastic – they’ll bet a bit more similar.

I’ve also added better feedback for the artists entity in case not many similar artists or top recordings are available.

All of this is now on beta:

LB Radio - ListenBrainz

Let me know if you think the modes are better now. Thanks!


It’s changed results in an interesting way - when re-running the playlists one hard mode one changes (but not medium), and one medium one changes (but not hard). I would say the changed playlists look slightly more accurate (whether some of this was due to your tag change I can’t say).

I have to say that easy/medium/hard still doesn’t seem to apply. None of the playlists I get are particularly ‘challenging’, they all fit the bill (e.g. match with the genres/tags I’ve put in). They are just different. Maybe others are getting better results with their searches, since I’m just searching tags, and fairly niche ones (though when I generate for # k-pop or # pop I can’t say I’m seeing a noticeable change in ‘difficulty’ either).

I guess the question is, will easy/medium/hard mode ever really apply to a tag search (which is how I would use the radio)? If ‘grindcore’ is tagged to an artist I think that would be about as accurate as ‘grindcore’ on a recording in the vast majority of cases (if I’m understanding how it works correctly). With some outliers, in terms of artists who have music in multiple genres, but I haven’t seen many pop up at all.

I tested just now using artists as the baseline and easy/medium/hard seems to be more accurate there :tada:

In general the language around ‘selects most similar, medium similar, least similar’ is too abstracted for me to follow - are we still talking about it pulling tags from a ‘level out’ (e.g. tags from recording > album > artist)? If the modes were called something that reflects this I think it would make more sense to me. e.g. ‘narrow search, normal search, broad search’, or something like that.

I know we’re in early days but since you’re on fire right now, I also think it would be good to update:

No playlist was generated.

With something like:

No playlist was generated.
Harder* difficulties will generate more results.

Or a similar nudge.
*Assuming you’re sticking with that language.

Did it also get quicker?? I’m loving the tool btw, it’s only ever getting better, I’m just pulling it apart with tweezers :smiley:

With the current approach, the answer is no. These tests show that the tag data is generally much more consistent than I had feared. This version of the tag entity relies on the inconsistencies between the recording/release/artist level and given that those are not very pronounced, the results are also not markedly different.

I’ll have to pivot and try a different approach.

The artist one got slightly quicker yes. But the tag entity is not performing as it should, so this isn’t nitpicking, its showing a clear problem.

I’ll take some inspiration from the artists entity to see if I can improve the tag entity.

Interestingly, for me there isn’t a problem with it, the way it works is what I want - to be able to set where the tags are pulled from. That’s probably why I keep thinking we should change the name of the ‘difficulty’ levels, we’re after two different things. Maybe we can cater to both?

e.g. you work some new/extra magic to make a challenging mode for genre playlists, and leave in the basic toggle to change how broadly the tags are pulled.

Ignore if that doesn’t work with what you’re doing, but here’s what I mean (see the ‘narrow’ drop down next to ‘tags…’):



@mr_monkey and I spent some time tweaking how the tag entity performs:

  1. Combine all the 3 types of tags (recording, release-group and artist) into one list and sort all the recordings by popularity, rather than using a complicated process to carefully select tags from different levels – that approach didn’t generate playlists that were sufficiently different from each other on the three different modes.
  2. Select recordings that are a bit further down in the popularity, rather than skewing more to the popular recordings.
  3. We’ve added a similar tags feature that finds less-popular similar tags to the given tag. The idea is to also include recordings from other similar genres, avoiding popular tags since they tend to bring in too many recordings that are seemingly unrelated. One single similar tag is selected in medium mode and two similar tags are selected on hard mode; easy mode includes no similar tags.

Since we added similar tags to the tag entity, the nosim option can now be specified for the tag entity as well. All of these changes are live in production:

LB Radio - ListenBrainz

We feel that the tag radio now suits our tastes and unless the community finds serious problems with it, we’re likely to stick to this approach for the time being. My focus is going to shift for making the LB Radio work to making LB Radio scale better. Right now it is rather resource intensive (but easy to develop) and we need to move more intelligence of LB Radio to our database level to generally pull less data from the databases, which in turn makes LB Radio faster and more scalable.

Let me know what you think of the improved tag radio!


What would be cool as a feature would be the ability to save the radios. I mean not like saving the generated list, that you can already do. But essentially save the query. You would be able to give this a name and it would show up in some radio list. When you click to play this radio it runs the query and generates the playlist.

That would also be a cool way to share queries with other users.


Would it be possible to also support labels (directly and via tags)? Some labels are specialized in certain genres like Homesick Music which has mostly techno.

If you play their Soundcloud “artist” station it will contain their released tracks but also other similar tracks.


That seems like it could work ok – that something I can work on later, but right now I have too many things on my plate that I still need to finish on LB radio before I create myself more work.

I think entering a ticket into jira for this feature might be a good move.