app icon indicating copy to clipboard operation
app copied to clipboard

sorting tracks

Open Djfe opened this issue 6 years ago • 3 comments

use something like round robin to switch between people

If there are several songs with the same vote count prefer songs of people which have less songs that were played to date (not added). If that leaves more than one song sort by date (when added to db)

sort songs with the same vote count by: recently added further up top (people that only check in every now and then, likely want to vote for newer tracks, especially tracks that have been added since the last time they checked the board)

Djfe avatar Apr 30 '18 20:04 Djfe

Hey, thanks for the suggestions! :) I'm not sure I can follow you on some of them, though.

use something like round robin to switch between people

What do you mean by switching between people?

If there are several songs with the same vote count prefer songs of people which have less songs that were played to date

Is this what you mean by round robin? :)

This is a very interesting approach, but I'm not sure how we could make this work consistently and whether we want Festify to work like this. First, I'm afraid this would cause tracks to reorder at seemingly random, because people that voted for tracks earlier (without having their tracks played) that now have some of their voted tracks played, will decrease in voting power and thus their "weight" on the track would decrease as well. But this might be something we can work around. :)

The main point, however, is that people that have only a small share of the tracks they voted for actually played, have seemingly voted for unpopular songs. Festify is built to "filter" out unpopular tracks by voting, so this would work against the purpose, wouldn't it? :)

Anyways, you have brought me to the point of thinking about eigenvalues and PageRank (the algorithm google initially used to rank the websites), and whether we can make some of the ideas behind it work in a system like Festify. I'm currently thinking about fairness (in a mathematical sense) and the fact that people that vote a lot currently have more influence over the party than people that vote only for a select few tracks and whether this is something that needs correction or not. We could, for example, assign each voter a finite "voting fuel" and distribute that evenly between tracks (or even allow something like "super votes", where you designate multiple shares of your voting power to a track). The simplest "fix" (or way to gain equal influence), of course, is voting for other tracks if you don't like the current ones and don't want to vote for them.

sort songs with the same vote count by: recently added further up top (people that only check in every now and then, likely want to vote for newer tracks, especially tracks that have been added since the last time they checked the board)

This is already how Festify works, if I understand you correctly. We currently sort by vote count first and then by the date the track is added to the queue. :) Tracks are removed when their vote count reaches zero if they aren't a fallback track.

NeoLegends avatar May 01 '18 20:05 NeoLegends

Is this what you mean by round robin? :)

exactly

The main point, however, is that people that have only a small share of the tracks they voted for actually played, have seemingly voted for unpopular songs. Festify is built to "filter" out unpopular tracks by voting, so this would work against the purpose, wouldn't it? :)

The user that added the track is supposed to be the second sorting factor not the first one (how I imagine it at least). So the track that get's played still has the same number of votes (equally popular), but doesn't have to be the one added first. The one added by a user with less played songs (more interesting for people that arrived later at the party, since their songs get played out earlier and this helps against the negative side effect of queue spam in an effective way; also since the amount of plays counts, users that added lots of tracks still have a big voting power, until many of their songs were actually played)

Also: this should only apply to adding songs (first vote), not to adding votes, so voting for other's song still has the same weight. Only the first vote would have some influence on the track selection.

Not everyone is much of a person, that wants to influence the choice of music, so giving them a tad more vote power, might encourage them to vote more or it makes them happier ;) (the tad only applies to equally popular songs after all)

If you want to reduce the "movement" of highly voted tracks -> only consider the last 80-90% of the queue(and maybe everything below 3 votes), since there is lots of movement down there anyways. And only do resorting once a minute or so. (with a loading animation gif or so to avoid people from tapping while the site reloads; and maybe load the data and add the elements to the dom before you move them into the visible div with javascript, so the loading takes less time)

Anyways, you have brought me to the point of thinking about eigenvalues and PageRank

Very cool!! :)

It would be interesting, if users could add tracks as fallback tracks with zero votes IMO :) (I for a example like to add lots of tracks and leave the choice to others)

What do you think of downvoting tracks? it would be just another way you could analyze the choice of music people in the audience like and don't like; algorithms to analyze the choice of songs, maybe even a recommended list of songs that could be played next for the users to select from -> vote; and maybe some stats once the party is done. of course the biggest problem might be the little amount of metainformation spotify gives you on sub genres of songs (though they started the line-in service now, so fans can fix metadata) Does their API actually offer the info "similar artists"? you could use that instead. or even better: Spotify usually offers you similar tracks if you create a playlist, is it possible to get that same info from the API? (that would be perfect) soundcloud offers similar choices for next songs (if you played one, you get the "related tracks" info

It would also be nice to see the amount of views, the songs have (I was considering it for the voting algorithm, but I'm not sure, if that behavior would even be desired, unless it's a mainstream party hehe)

I kind of jumped between the lines of this reply, when typing it, so it might be kind of hard to understand some of it. I could still polish it, if you want me to. Or just ask me, when something isn't clear ;) I'm just trying to provide some input for you to help you while improving festify. Just something you could think about, to give you ideas (It's nice to hear, that you got the idea to use eigenvalues/pagerank from my input)

Djfe avatar May 06 '18 10:05 Djfe

Id like to second some of these requests but also, It would be nice if there was an option for the admin to sort the queue a bit. There might be alot of highly voted songs but the order in which they are playing isnt optimal. E.g. really slow downtempo songs after a real high energy song. Everyone might really want to hear the downtempo song but playing it after the high energy one isnt nice and a sure buzzkiller.

Would be nice if as an admin you could bump some songs down or have a priority play function, the same way as Spotify does it with their "add to queue function". You original playlist order is kept but when u add it this way it gets put next in line, after which the playlist is resumed. This way you can prioritse a song (thats also high voted) to transition into the other song.

MisterTimn avatar Jul 06 '18 13:07 MisterTimn