I am quite interested in this topic. There is some research on that field. Some links I collected in the past:<p><a href="http:&#x2F;&#x2F;thesis.flyingpudding.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;thesis.flyingpudding.com&#x2F;</a><p><a href="http:&#x2F;&#x2F;dynampd.ubitux.fr&#x2F;" rel="nofollow">http:&#x2F;&#x2F;dynampd.ubitux.fr&#x2F;</a><p><a href="http:&#x2F;&#x2F;erikbern.com&#x2F;2015&#x2F;09&#x2F;22&#x2F;presentations-about-spotify-music-recommendations&#x2F;" rel="nofollow">http:&#x2F;&#x2F;erikbern.com&#x2F;2015&#x2F;09&#x2F;22&#x2F;presentations-about-spotify-m...</a><p><a href="http:&#x2F;&#x2F;erikbern.com&#x2F;2015&#x2F;09&#x2F;24&#x2F;nearest-neighbor-methods-vector-models-part-1&#x2F;" rel="nofollow">http:&#x2F;&#x2F;erikbern.com&#x2F;2015&#x2F;09&#x2F;24&#x2F;nearest-neighbor-methods-vect...</a><p><a href="http:&#x2F;&#x2F;www.wired.com&#x2F;underwire&#x2F;2013&#x2F;08&#x2F;qq_netflix-algorithm&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.wired.com&#x2F;underwire&#x2F;2013&#x2F;08&#x2F;qq_netflix-algorithm&#x2F;</a><p><a href="http:&#x2F;&#x2F;www.slideshare.net&#x2F;erikbern&#x2F;collaborative-filtering-at-spotify-16182818" rel="nofollow">http:&#x2F;&#x2F;www.slideshare.net&#x2F;erikbern&#x2F;collaborative-filtering-a...</a><p><a href="http:&#x2F;&#x2F;benanne.github.io&#x2F;2014&#x2F;08&#x2F;05&#x2F;spotify-cnns.html" rel="nofollow">http:&#x2F;&#x2F;benanne.github.io&#x2F;2014&#x2F;08&#x2F;05&#x2F;spotify-cnns.html</a> <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8137264" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8137264</a><p><a href="http:&#x2F;&#x2F;www.playdar.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.playdar.org&#x2F;</a> <a href="https:&#x2F;&#x2F;github.com&#x2F;RJ&#x2F;playdar-core" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;RJ&#x2F;playdar-core</a> <a href="http:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3876724" rel="nofollow">http:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3876724</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;bmcfee&#x2F;librosa" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;bmcfee&#x2F;librosa</a><p><a href="http:&#x2F;&#x2F;forever.fm&#x2F;" rel="nofollow">http:&#x2F;&#x2F;forever.fm&#x2F;</a> <a href="http:&#x2F;&#x2F;blog.petersobot.com&#x2F;introducing-forever-fm" rel="nofollow">http:&#x2F;&#x2F;blog.petersobot.com&#x2F;introducing-forever-fm</a><p><a href="http:&#x2F;&#x2F;musicmachinery.com&#x2F;2011&#x2F;05&#x2F;14&#x2F;how-good-is-googles-instant-mix&#x2F;" rel="nofollow">http:&#x2F;&#x2F;musicmachinery.com&#x2F;2011&#x2F;05&#x2F;14&#x2F;how-good-is-googles-ins...</a><p><a href="http:&#x2F;&#x2F;musicmachinery.com&#x2F;2012&#x2F;11&#x2F;12&#x2F;the-infinite-jukebox&#x2F;" rel="nofollow">http:&#x2F;&#x2F;musicmachinery.com&#x2F;2012&#x2F;11&#x2F;12&#x2F;the-infinite-jukebox&#x2F;</a><p>Btw., as I am developing my own music player, my main important feature&#x2F;goal is a kind of automatic DJ which automatically selects music and I also especially had a discover mode in mind. However, that main feature did not evolve that much so far because there were so much other things to implement first. For now, it only supports access to files in your file system, and it looks on tags and artist and adds quite some randomness to it.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;albertz&#x2F;music-player&#x2F;blob&#x2F;master&#x2F;WhatIsAMusicPlayer.md#intelligent-automatic-queue" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;albertz&#x2F;music-player&#x2F;blob&#x2F;master&#x2F;WhatIsAM...</a>