Page 1 of 2

Cool Song Fight! related stuff people should make

Posted: Fri Feb 15, 2013 4:23 pm
by Lunkhead
A thread for brainstorming whatever things occur to people that they think would be cool for somebody to build, related to Song Fight!

This is probably mostly around apps or Web sites or other software, but hey, if you have hardware/building/event/etc. ideas put 'em here too!

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 15, 2013 5:03 pm
by fluffy
I've been wanting to build a Pandora-esque thing where people can vote on whether they like a song or not, and which would coalesce songs into clusters based on taste-similarity. Pandora's algorithms are both secret and require a lot of "tagging" work but I have ideas on how it could be done without that sort of approach.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 15, 2013 6:48 pm
by Caravan Ray
fluffy wrote:I've been wanting to build a Pandora-esque thing where people can vote on whether they like a song or not, and which would coalesce songs into clusters based on taste-similarity. Pandora's algorithms are both secret and require a lot of "tagging" work but I have ideas on how it could be done without that sort of approach.
that sounds cool

Re: Cool Song Fight! related stuff people should make

Posted: Mon Feb 18, 2013 9:40 am
by Billy's Little Trip
That is a good idea, fluffy. There are so many genre style here, it would be a nicer experience for people to listen in their genre of interest.

I mean, it's good to be exposed to a large range of genres, but it's pretty annoying to me when I'm listening to some great indie blues rock and then hit with rap on the next song.

Re: Cool Song Fight! related stuff people should make

Posted: Mon Feb 18, 2013 10:01 am
by fluffy
What I'm thinking of wouldn't cause clusters based on genre (personally I think that "genre" is a pretty arbitrary and pointless criterion to classify things based on), it would cause clusters based on the mindset that likes them.

The basic idea (in case someone else wants to implement it - I don't have much free time these days, and I also might have some legal issues with my employer if I do it myself) is that every song and user are considered to be "particles" in a large multidimensional space (the number of dimensions doesn't matter, as long as it's at least 2, but the more the better; I'd probably start with 5). A "love" is an attractive force, and a "hate" is a repulsive force. So, whenever someone likes a song, the user and the song get drawn closer to each other, and whenever someone hates a song, the user and the song get pushed apart. Then, multiple users can also be compared based on their respective love and hate lists, and based on how similar they were, they'd attract or repel each other too. Beyond the initial impulse there would also be an ongoing process that occasionally pushes stuff around based on past data.

What I'd expect from this is that users with similar tastes will eventually move towards each other, and songs which a lot of people love will get concentrated in little bundles that are close to the users who like them, far from the users who hate them, and hopefully relatively near each other as well. Songs which are universally hated would end up getting scattered outwards. Presumably there'd also be a natural gravitational attraction between songs as well, to help the clustering along (although I wouldn't want to start that up until there's a lot of user data to work with).

I'd also expect to get some pretty pictures, at the very least, and a lot of data which could be used to train other algorithms as well.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 8:32 am
by Billy's Little Trip
Let me see if I get what you're saying. Instead of bundling music in genres so that people can listen to what they want when they are in the mood for a certain type of music, you want to segregate people into cliques based on the music they like. Is that the gist?

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 9:18 am
by Jim of Seattle
The difference between Pandora and something like this is that there is an extra dimension here that Pandora doesn't have to worry about, and that is the basic quality of the track. Pandora assumes that as long as it's got the right attributes, a given song can make someone's playlist. But if I told SFandora I wanted to hear a specific kind of music, it would do so regardless of the actual quality of a song. I mean, right?

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 2:14 pm
by roymond
Jim of Seattle wrote:The difference between Pandora and something like this is that there is an extra dimension here that Pandora doesn't have to worry about, and that is the basic quality of the track. Pandora assumes that as long as it's got the right attributes, a given song can make someone's playlist. But if I told SFandora I wanted to hear a specific kind of music, it would do so regardless of the actual quality of a song. I mean, right?
Yup. So if one of the attributes was "sucks" and you made a playlist for songs that "don't suck" that should work. Problem is that "sucks" is entirely subjective, which is why I'd like a pandora type radio feature that let's me define additional filters based on artist, specific tracks, etc. If it's playing and I encounter a track I despise, I'd like to say "NEVER PLAY THAT FUCKING TRACK AGAIN" and feel confident I will never hear it in any of my playlists ever again. Pandora allows you to ban a track, but only from the current playlist, so there is no such guarentee.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 2:23 pm
by Jim of Seattle
So then for any individual user there would be an enormous ramp-up while they continued to have sucky songs pop up that they then have to blacklist. I mean, we're at 10,000 songs now. I'm willing to bet that 5,000 or them I don't ever want to hear again. A user should also be allowed to say "Don't ever play anything by <sucky band> again".

Truth is, most artists that usually suck catch lightning at least once. Without naming names, I am thinking of a few off the top of my head that I would be tempted to blacklist, EXCEPT for one particular song.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 3:41 pm
by Lunkhead
Roy, what would you think of a rating scheme with five ratings:

block, dislike, neutral, like, favorite

?

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 4:26 pm
by ken
That is a really good idea. I was thinking you could let most people have a 3 tier rating of Good, ok, bad, but give some special people a 5 tier rating that allows them some extra points when needed. This is even better.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 5:56 pm
by Lunkhead
I was thinking either five icons in a row, you can select/highlight only one, or maybe instead a slider to dial in your enjoyment/hatred of a song?

This could be applied to artists, too. Allowing for exceptions for certain songs of an artist would be tricky though.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 5:57 pm
by Caravan Ray
Lunkhead wrote:Roy, what would you think of a rating scheme with five ratings:

block, dislike, neutral, like, favorite

?
Are you talking about a personal play list where you can rank like that - with some sort of smart software that would suggest the favourites of other people who had made similar rankings?

If so - then that sounds good

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 6:07 pm
by Lunkhead
I'm thinking of something Pandora like, but super basic. The main mode is you'd get a stream of random songs from the archive, and you could rate them along that scale, if you wanted to, and FB like/share, Tweet, plus on G+, if you wanted to. It wouldn't do suggestions, at least not at first. I'd also like to have so you can see your ratings, and maybe also let you listen to only liked/favorited songs/artists instead of the full "firehose". I think with disliked songs/artists it would reduce the likelihood that the song/artist would show up in the random stream, and with blocked songs/artists they'd be completely removed from the random stream. If I were try to add suggestions, it would just be super simple stuff along the lines of "people who liked that song/artist also liked: suggestion1, suggestion2, etc.". I don't think I'd want to give a lot of visibility to other peoples' ratings, except in that kind of anonymized and general way. Although, it would be cool to listen to somebody else's liked/favorited stream, or maybe the firehose as perceived by someone else, but without spelling out what they've blocked/disliked/liked/favorited, etc.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 6:42 pm
by roymond
Jim of Seattle wrote:So then for any individual user there would be an enormous ramp-up while they continued to have sucky songs pop up that they then have to blacklist. I mean, we're at 10,000 songs now. I'm willing to bet that 5,000 or them I don't ever want to hear again. A user should also be allowed to say "Don't ever play anything by <sucky band> again".

Truth is, most artists that usually suck catch lightning at least once. Without naming names, I am thinking of a few off the top of my head that I would be tempted to blacklist, EXCEPT for one particular song.
I was totally thinking about banning bands outright. If I listen to a fight, I'd want the whole thing I suppose. But in radio mode I'd be happy never to hear <sucky band> at all.

It does bring up the challenge of recognizing how bands develop or change styles, but damn there are a number of show stoppers where I simply don't care. There are thousands of awesome songs, I don't care if they did one good (meaning tolerable) song. On the other hand, if I do hear that one good song when listening to a fight or something, I could revisit my ratings, right? Perhaps if the "ban this band" option banned all their current songs (rather than all songs now and in the future) then they'd reemerge in future fights.

Sorry, this maybe should be in the fugkinh drunk thread. Wine is flowing freely...

Re: Cool Song Fight! related stuff people should make

Posted: Fri Feb 22, 2013 8:05 pm
by fluffy
Unstructured similarity clouds (what I described earlier) would hopefully provide SOME sort of genre-awareness while also providing suckiness as something that pushes things away from the clouds. I think (based on the thought experiments behind the algorithm) that you'd end up with a galaxy of music where the core has stuff that everyone likes, little nodules bud off of the center with genre-biased clusters, and stuff that's universally reviled gets cast off to the inter-galactic aether. (Stuff like pricklypears which require a certain mindset to appreciate would be in a little bud off to the side that is outside of the central core but would still roughly stick together.)

The main problem I can see with it is that there needs to be a way of weighting stuff such that people who love or hate everything only affect the outliers, rather than affecting things based on consensus. I suppose that every song would end up needing a mean and standard deviation, and the ratings "push" should be based on statistical significance, but that gets outside of my algorithmic expertise. (I've only done this stuff where things are equally weighted within its domain space; similar stuff was the basis of some of the work I did on automatic document conversion for Kindle back in the day. Thus, potential legal issues.)

Re: Cool Song Fight! related stuff people should make

Posted: Sat Feb 23, 2013 9:23 am
by Jim of Seattle
While I'm not as excited about this idea as others here seem to be - it seems too ambitious - I think that the need it is trying to answer to is the most critical need on Song Fight, and that is that there need to be some street signs to easier navigate the enormous archive.

How about having a site where people can upload home grown playlists, and anyone can access them, such as "Dexter's 10 Best Songs About Food" or "Best of the One-Submission Wonders" or whatever. It would be more usable than if someone posted a list of links on the BB, because it would be a functional playlist like on the SF Jukebox. Having this site usable on a smartphone would be even better. Just like the "user lists" feature down the right column at IMDB.com. I plan to offer something like that in my in-progress Song Fight Hall of Fame blog.

Re: Cool Song Fight! related stuff people should make

Posted: Sat Feb 23, 2013 10:06 am
by glennny
I want to make an annual deck of trading cards with the 52 most prominent acts of that year. A picture of them on the front. Then stats for them up to that year with a little bio blurb and/or quote. You know like star wars cards or baseball cards. E.g.

Frankie Big Face

2 time Nur Ein champ
Best known for Crinkle Binkle
Xx entries, xx wins
"what we need, is exactly what we have"

Re: Cool Song Fight! related stuff people should make

Posted: Sat Feb 23, 2013 10:27 am
by Jim of Seattle
"I'll trade you 6 Catknife Horsebombs for your Brother Machine rookie card."

Re: Cool Song Fight! related stuff people should make

Posted: Sat Feb 23, 2013 4:12 pm
by JonPorobil
Jim of Seattle wrote:"I'll trade you 6 Catknife Horsebombs for your Brother Machine rookie card."
Worst. Trade. Ever.

Re: Cool Song Fight! related stuff people should make

Posted: Fri Mar 01, 2013 6:01 pm
by jast
Just saw this thread now.
fluffy wrote:The basic idea [...] is that every song and user are considered to be "particles" in a large multidimensional space (the number of dimensions doesn't matter, as long as it's at least 2, but the more the better; I'd probably start with 5). A "love" is an attractive force, and a "hate" is a repulsive force. So, whenever someone likes a song, the user and the song get drawn closer to each other, and whenever someone hates a song, the user and the song get pushed apart. Then, multiple users can also be compared based on their respective love and hate lists, and based on how similar they were, they'd attract or repel each other too. Beyond the initial impulse there would also be an ongoing process that occasionally pushes stuff around based on past data.
Out of my experience with data analysis, the assumption "the more the better" is rather optimistic. Data analysts talk about the "curse of dimensionality" in this context: the more dimensions you have, the longer the distances between points get, and so the less meaningful the distances are.

So, one integral part of anything like this is actually reducing the number of dimensions, and then you're left with the usual big challenge: figuring out a good compromise between model complexity (roughly equivalent to number of dimensions), too much of which makes the model too specific, and simplification, too much of which makes the model inaccurate.

On implementation details: this seems to invite a clustering-style algorithm, or more probably the k-NN algorithm. k-NN often performs surprisingly well, but if it doesn't, there's no real way to fix it (at least in my experience). Since we're essentially trying to combine multiple distributions of the same points (songs) -- the opinions of different users -- there's a whole layer of extra computations we need to do on top of that. I kind of doubt it could be computed online, so there might be some significant delays involved.

Another interesting idea, perhaps: generate a GMM for each user's song preferences and calculate the pairwise divergence of users' models... though I have no concrete ideas about how to do that if the number of GMM components differs between users.

No, I'm not volunteering to implement it. ;)

Re: Cool Song Fight! related stuff people should make

Posted: Fri Mar 01, 2013 7:05 pm
by fluffy
I'm just thinking that a casual relaxation approach would be good enough for starters, and if we want to actually form specific clusters of things that you can just do a QT filter afterwards. But the point was just that things that people like about the same tend to move towards each other, and things that they don't like move away from each other, and it could just make recommendations based on where in the space songs are in relation to the listener.

Basically I was just seeing it as something slightly better than a global good/bad/neutral rating scheme, without requiring a lot of input from individuals.

The great thing is that if we do accumulate preferential data from people then we can try all sorts of crazy algorithms on it and see what works well and what doesn't and so on. The data set is small enough (a few hundred users, a few thousand songs) that something naive could possibly generate something interesting, but large and subjective enough that it would be infeasible to use the usual choices in algorithm.