Friday, August 8, 2008

Introducing: Fuzzy Biases

Suppose you're really into music created around the "summer of love" in 1967. Its easy enough it create a filter so you only get music from 1967. We could do that in Amarok 1, but that excludes a lot of music around that period that's just as significant.

Maybe you could do something like asking for everything that's recorded after 1960 but before 1973. That's better, but it's still not really what you mean when you say around 1967. You would prefer tracks closer to 1967 than farther away.

This is where "fuzzy biases" come in. The goal with fuzzy biases, is create a playlists that approximately match a value. Generating biased playlists, is always a question of probability distributions. What we are really trying to do here is generate a playlist that fits normal distribution bell-curve.

Like this:



The horizontal axis is the year, the vertical axis is the probability of getting track of that particular. So the nearer to 1967 the track is, the better chance of it ending up in our playlist it has.

Ok, another example.

I really just want to listen to some good straight up pop right now. No eleven minute epic folk ballads, no classical, no post-rock, just tight catchy songs. So I make a fuzzy bias to find songs that are about three minutes long.

Great. That's a pretty good mix, and I can refine it later with other biases.

The fairly vague "Strictness" slider indirectly controls the standard deviation of of the distribution.

It looks a little like this:


How is this different than the old fashion method, just specifying a pair of strict biases?




To get all mathematical on you, that creates a playlist that matches a uniform distribution.

If you've never taken a statistics class and didn't follow any of this, let me summarize:

  1. pretty curves > boring rectangles.
  2. Apparently a math degree is actually good for something.
  3. Mom, you owe me an apology.

5 comments:

Marcel said...

Nice feature, although (as an album lsitener) I'll never use it...

However, could you please label the 2 options in a way that even people without a math degree can understand what a "proportional bias" and a "fuzzy bias" is good for? ;)

Uhm, yeah. Thanks for your work on Amarok! :)

Parker said...

I love the summary.

reldruH said...

What a wonderful summary, much easier to understand than all those confusing pictures :-) I just have a couple questions: what criteria will we be able to use for these fuzzy biases? I'm assuming all the amarok metadata will be available but what about more abstract things, like tempo (is there a way to even calculate that?) or using moodbar information? Similar artist information is available from last.fm, will we be able to have a fuzzy bias of '50% similar to Tom Petty' and '50% upbeat music'? Also, what if I'm looking for a range (of years, possibly) with strict endpoints (nothing outside that range)? Does that require two biases? One for the lower bound, one for the upper bound or is there the ability to do that in one bias? Can't wait to try it out. Thanks for putting all the work in for this. Dynamic playlists were never that great for me but this like it'll be really useful.

tbocek said...

@reldruh, I've taken a very general look at the bias framework and it's very general - you could implement a bias for tempo (although having the tempo cached in the files would probably be a necessity for this to work) or anything else like that. I'm looking into implementing a bias that allows you to match Nepomuk tags (the tags you assign in Dolphin), although I can't quite figure out the framework well enough

rduht said...

we offer wow power leveling and wow gold wow gold