Custom stations

With RQL and

Some of the most frequent questions and complaints we get at include:

  • “I’ve added hundreds or thousands of artists to my library, but it doesn’t play them.”
  • “Is there any way to filter my music by a tag or genre?”
  • “Can I ban artists from my stations?”

Fortunately, there is a way.  Read on.

Radio Query Language (RQL) lets you combine stations (artists, users, tags) and allows you to filter them with basic logical operators (or, and, not).

For example, if I want to filter my library radio to only play jazz, I can do this with the RQL string:

library:Maddieman and tag:"jazz"

If I want to exclude ‘Lady Gaga’ from ‘Pop’ tag radio:

tag:"pop" not simart:"lady gaga"

If I want to combine two unrelated stations:

tag:"classical" or tag:"electronic"

It’s perhaps easier to illustrate these as diagrams (click any image to launch the station):

Intersection between My Music Library and the tag ‘Jazz‘.

Exclusion – Pop tag radio, but not artists similar to Lady Gaga

Union between Classical and Electronic tag radio.

If you want, you can make more complicated stations, such as “1980s, Rock, Female Vocalists“, which hopefully will give music like Blondie and The Pretenders.  In practise though, this station didn’t give me the results I wanted (use the 80s tag at your own risk), so this one required a slight adjustment:

tag:"80s" and tag:"rock" and tag:"female vocalists" not tag:"pop" not tag:"hair metal"

However, be forewarned that overly complicated queries are unlikely to work. If you just want to listen to a very limited range of artists, you’re probably better off just creating a Spotify playlist.

That’s all fine and good, but how do you actually create your own stations? Fortunately one of our moderators, tburny, created a very nice user interface for RQL, called  It might not win any awards for web design, but it allows you to quickly and easily create custom radio stations.

On the left hand side, you pick the stations you want to include (from personal stations, artists, users, and tags). In the middle of the page you can edit the query and adjust the operators (or, and, not). On the right hand column you can launch your custom station, and you can also tweak the mainstream/obscurity of the artists played, as well as the repetition rates.

As a reminder:

  • Or = Union of two or more stations, gives you everything.
    • e.g. Pop OR Rock will play artists tagged as either pop or rock.
  • And = Intersection of two or more stations, used to filter a station by tag.
    • e.g. Pop AND Rock only plays music tagged as both Pop and rock.
  • Not = Excludes content from your stations, used to ban artists and tags.
    • e.g. Pop NOT Justin Bieber plays artists tagged as pop, but not those similar to Justin Bieber.

Discovery Mode is an advanced feature that attempts to play only music you haven’t listened to yet.  It effectively treats your scrobbles as banned tracks.  However, due to a quirk in its design, it doesn’t work with your standard Library radio by default, so simply selecting ‘Discovery mode’ won’t make any noticeable difference to your station.  In order to activate it, you need to include a dummy tag as well, for example:

library:Maddieman not tag:"pornogrind" opt:discovery|true

None of the music in my library is tagged with “pornogrind”, so nothing is actually excluded; all this does is enable Discovery Mode to launch, and play me music from my library that I haven’t listened to yet.

That’s basically all there is to it. I tend to use it mostly for filtering my library or recommendations radio by a particular tag (e.g. french + female vocalists). It also works well with friends and neighbours radio, and for setting up multi-user stations (good for parties, etc). Give it a go, and see what you can come up with!

Further Reading:

3 thoughts on “Custom stations

  1. Good tutorial.
    It is simple and if it works, stick with it.
    I don’t want to complicate matters(OK, yes I do;) )….
    But I’m getting rather different results with the Paris hilton death metal tag.
    So if it ever starts crashing/stopping maybe bear this in mind.

    For me I’ve found the dummy tag needs to be a globalised one; and needs to be with ‘or’.
    library:headey not tag:”Paris hilton death metal” opt:discovery|true
    is only playing me some tracks which seem to have anomalies on them :
    two unbannable ones ;one loved recently but unscrobbled ; one loved then unloved recently but which did have a scrobble. So just now it only played about four tracks. Maybe it works well if it has plenty to go at though.
    I might be getting something different because recently I’ve been giving my library a good ‘thrashing’ with + ‘Discovery mode’. As far as I can tell 99.n% of my scrobbled tracks have played within the last 12 months.

    I find the only setting for me now for unheard ‘headey library’ tracks is mix ‘not’ rec :
    ‘adv:headey not rec:headey opt:discovery|true’
    Once every few days it might add a track not scrobbled since mid 2011 or before.
    This is still quite a simple setting though. I wonder what results you’d get with it?

    Going back to ‘library ‘or’ (globalised) tag’ +Discovery
    I use a small globalised tag in which all the tracks are either scrobbled or banned.
    Hmmm, I had to think about that one!
    This plays me loved unscrobbled tracks. Then stops. Again, it throws in the odd unbannable track or one from early 2011.

    library:headey and tag:”female” opt:discovery|true =stops
    library:headey and tag:”classical” opt:discovery|true = 1 banned classical track ; =stops
    or confusingly returned to an earlier station just now.
    I really thought there would be enough scope with those tags, but no.

    library:maddieman and tag:”french” opt:discovery|true
    is finding me plenty(thanks)
    library:headey and tag:”french” opt:discovery|true
    only two tracks! -and one of those is a banned(temporarily) Juliette Greco track.

    It’s all fascinating, but I’ve a few hours proper work to do yet before I can go home. :(

  2. Ah you’re right with that Paris Hilton tag. I’ve restored it a global tag that works for me (but a word of warning, make absolutely sure you use *not*). I haven’t tried mix ‘not’ rec yet, I imagine that would give interesting results though (with or without discover).

    As for the french tag + discovery… I’m not entirely sure what’s happening here, but remember that discover is relative to the listener. So if you’re listening to library:maddieman and tag:”french” opt:discovery|true, that would play tracks and artists from my library that are new to you, not me. However, when you play library:headey and tag:”french” opt:discovery|true, that would only play tracks/artists from your library that are new to you — that’s a subset of a subset of your own library (your library > french > tracks you haven’t heard yet), so it’s reasonable to expect the pool of artists to be smaller. If you’re finding the radio gives you ‘not enough content’ errors, you might be better off with mix or recs radio.

Comments are closed.