Smoothie

Blending music tastes with artificial intelligence.

ðŸŽĻUI/UX Design

ðŸ–ĨïļFull-Stack Dev

ðŸŽŊBranding

🗓ïļ2019

For the introduction of this project I will allow the opening of my dissertation to do the talking:

Any comments will be shown here.

"With tens of millions of songs available for consumption, the ability to discover new music to listen to can often be a daunting process. Having to choose music that two people with unique music tastes will enjoy listening to is exponentially more difficult..."

"The result of this work is a fully-functional website which makes use of the Spotify API to authenticate a user and create a new playlist based on two already existing input playlists. Using a Python script, a neural network is trained to understand the key components of each playlist owner's music taste, and using this information adds tracks which will appeal to both owners to a new playlist..."

"The finished system is able to produce unique playlists which accurately reflect the music tastes present in the playlists it is trained upon, therefore providing a novel way to discover new music when in the company of others..."

I submitted the project as part of my final year studying Computer Science & Artificial Intelligence at Loughborough University. I received a First Class Honours. To read the full dissertation click on this deconstructed smoothie... 🍓🍌🍏🍊ðŸŦ.

I won't blame you if you don't, it's 18,070 words across 82 pages.

User flow overview

Below I will run you through the golden path of Smoothie, from authentication to the final playlist generation. Smoothie is a web-application that can be accessed in-browser and has a focus on clean and self-explanatory interfaces.

The front-end of the system is built in React.

Smoothie splash screen.

Authentication is managed with the Spotify API, which in turn allows the system to access a users playlists and relevant data. Once authenticated, the user is redirected to input their first playlist.

A playlist input screen.

Each playlist on Spotify can be indentified by a unique URI, which a user can easily optain from their Spotify client. Upon pasting the URI into the input field, a call is made to the Spotify API to retrieve the playlist data and display a preview to the user.

A playlist input screen post-input.

Once both playlists have been input (any public playlist can be used, not just those belonging to the authenticated user), a settings screen is displayed so the user can configure the playlist which will be output.

Playlist configuration.

Following the playlist configuration, the AI system gets to work generating a blended playlist. The high-level logic of the system is as follows:

Each playlist is individually analysed based on the audio features of each song within it, and a neural network is trained with the target of being able to understand what makes up the playlist owner's music taste. A new song can then be provided as a suggestion to the model and it can predict whether or not the owner of the playlist would enjoy it or not. This training takes place for both input playlists.

The brains of the system is built on a stack of Node.js (handling Spotify's API) and Python (with scikit-learn and pandas).

Once training is complete, Smoothie then begins inputting new songs to the model and a prediction for which playlist is more likely to contain that song is returned. If the model is unable to predict a clear winner for which owner is more likely to enjoy the song it can be assumed that the song will appeal to both playlist owners. Thus, that song is added to the new playlist.

The system repeats this process until a playlist of the required length has been generated.

Generated playlist output.

Overall, Smoothie is a very effective recommender system. The generated playlists are a good blend of both input playlists and the users who have tested it found it to be simple and engaging to use.

Reflection

Whilst, on the whole, I am satisfied with the end result of this project there are a number of points that could be improved upon to provide the user with an improved experience.

During the summer of 2021 - around two years after I completed and submitted my dissertation project - Spotify announced they were releasing a new personalisation feature called Blend.

"Blend is a new way for two friends to merge their musical tastes into one curated playlist made just for them, making it even easier for users to connect, discover, and share the music they love with one another." - Spotify

Great minds think alike and all that?

'Blend' achieves a similar goal as Smoothie but works natively within the Spotify client using far more personalised data that would be unavailable to an external project. At the very least, I think it's only positive to see my idea confirmed to have market fit and justified by the very product it is based on.