Show HN: Momixa – Custom playlist mixes using machine learning
momixa.com
momixa.com
People make playlists for a variety of reasons, according to their specific tastes. Songs that appear together on a functional playlist (workout jams, study music, etc) likely won't have appeared together for the same (or even similar reasons). Contrast that even further against playlists built for aesthetic reasons ('sad songs', 'psychedelic-sounding', 'minimal', etc) and it seems hard to imagine how mining just playlists can lead to good music selections.
Is this algorithm attempting to track context or merely playlist contents?
And for the record, if there is one area that I really want machine learning and "AI" to fall flat on its face with, it's music. It's a shame technophiles want to strip the people out of art and its consumption.
Already advocating affirmative action for people in arts? That must mean a lot for "deep art" researchers.
I simply want "deep art" to fail. Big difference. A world dominated by AI-generated art will coalesce us all into one or a handful of dull, lowest-common-denominator aesthetics and rob the world of aesthetic vitality. Not to mention all the artists, many of whom are already scraping for work, that get shut out as peoples' artistic pursuits are gratified instantly.
I absolutely agree that "AI" can't replace knowledgeable humans building thoughtful playlists. I started this project because I can't find new music quickly enough, and listening to any computer generated playlist/radio station gets stale fast. I also rarely find artists that I like more than a handful of their songs, so a lot of artist-centric recommendations miss the mark for me.
In a perfect world, we would feed in reams of carefully curated playlists, learn about different contexts songs appear in, and use some signals from the user to find the types of songs they want to listen to. Two songs don't make for a very strong signal - we have discussed trying to use the user's listening history to help refine the playlist.
Thanks for taking the time to check it out!
We are essentially trying to draw a line between the embeddings of the two songs and find "close" songs to points along that line. This should give us a somewhat smooth transition - at least that's the hope.
I suspect some of it may be that we are using a euclidean line through the vector space, but using cosine distance for similarity. We're still trying to get the hang of using the vectors to build a smooth transition between songs.
We are also tuning our model and training variables, as well as pulling in more playlists, which should help (I hope).
We used thousands of Spotify playlists to train on, but obviously more popular genres are going to be heavily represented. For rarer songs, it may not pick up on the association between two songs.
We are still trying to tune our heuristics and scrape more playlists, which should help it to learn rarer songs better.
This was trained on playlists we scraped from Spotify, so by definition pop music is going to be heavily represented. We are still playing with the training parameters and algorithm for building the playlists.
We also have some ideas on including "rare" or new tracks, but haven't gotten to that part yet.
Thanks for checking it out!
Rarer songs/genres do tend to be all over the map, and certain super popular songs seem to show up all the time. We are still messing with the training, pulling in more playlists, and working on the playlist algorithm. Every training run produces better results!
From the comments, it does appear that we set the threshold for how frequently a song must appear to be included a little low based on the sparsity of our training data.
Thanks for taking the time to check it out!
We basically try to draw a line between the two songs you chose and find songs close to that line. It can produce some weird results, and it very seldom seems to be the smooth transition we were shooting for.
We are still playing around with the algorithm for generating the playlist, as well as getting more/better training data.