VIBEQ BY GROOVEPOP · GUIDES
How vibeQ’s Fair Play Queue System works
A shared jukebox needs to balance popular songs with contributions from different guests. vibeQ by Groovepop uses FPQS, the Fair Play Queue System, to calculate a score for each pending request. The lowest score goes next.
Votes change the cost of a song
Each request has a cost of 1 / (votes + 1). An unvoted request costs one unit. Votes lower that cost, helping popular songs move forward. A guest’s requests accumulate costs, so submitting a burst of songs also increases the scores of their later requests.
The equation used by vibeQ
- i identifies a guest.
- k is a request’s position in that guest’s pending line.
- v is the request’s vote count.
- H is the accumulated cost of that guest’s requests already buffered in Spotify and observed plays from the last two hours.
A current requested song counts while it falls within the recent-play window. Saving a set does not erase that recent history. Within each guest’s pending line, songs are ranked by votes, then request time, then request ID.
How the next song is selected
vibeQ recomputes scores from current request records. It starts with each guest’s history, adds the cost of each pending song in that guest’s line, and compares the resulting scores across guests. Equal scores favour more votes, then earlier requests, then request ID.
New requests and votes can reorder pending songs. The small buffer already sent to Spotify keeps its order, so a vote may not immediately change the next track shown by Spotify.
What fairness means here
FPQS balances weighted song requests. Every song counts as one unit before votes, regardless of duration, so it does not promise equal listening minutes or strict round-robin turns. Guest identity is browser-based. The system is intended to help a shared room balance participation.
The implementation is open for inspection in the FPQS source. For the precise history and playback behaviour, see the README’s technical explanation.