Vivo Music Hack.

Building a custom music player for our team.

We’re all big music fans at Vivo and we love working to a soundtrack that inspires creativity. For a while now we’ve listened to Triple J in the office, but recently felt that the daily lineup of music wasn't always in sync with our office vibe. Not only did we want a different range of music to that on offer from Triple J, we wanted a greater degree of control over our listening experience. At our recent team planning day, the topic of music in the office came up and we decided a shared Spotify playlist would be an easy fix. Little did we know that this would escalate into an impromptu hack to develop our own custom player.

After setting up a shared Spotify playlist and contemplating the logistics of how to play and control the music in the office, it became clear that the ultimate solution would require some customisation. We quickly discovered that we could remotely control Spotify playback on our resident Mac Mini (connected to a set of speakers via AirPlay) with AppleScripts, and build a database of playlist and user information using elements of the Spotify API.

This began our quest to develop an entirely new approach as to how music would be controlled in the office.

The application plays music from our shared playlist to which we individually contribute songs in Spotify. We log in using our own Spotify credentials and begin interacting with the office playback. In earlier versions, features were limited to simple control functions such as play, pause, skip and volume. Once this basic functionality was in place we continued to add more features to further customise the application to our specific team needs. We added a drop down menu to switch between the different speaker systems connected to the Mac Mini (so we could control where the music was playing during meetings) and created a “WIP” button to announce our weekly work in progress meetings (it instantly plays “Whip It” by Devo). We even created a Yeezus mode so that whenever a Kanye song plays, the interface is overtaken by the glorious Mr West and his ballerinas. These were great additions, but the best was yet to come.

It was time to bring democracy to the system.

Our playlist is quite diverse and covers everything from Alt-J to Al Green. To ensure the music playing at any given time is a true reflection of the active listener's preferences (and also to protect some guilty pleasures from being skipped too quickly), we introduced a voting and preferences system. Once logged in, we each have the ability to downvote or upvote a track while it’s playing. Once a track is downvoted by 50% of the active listeners, it is skipped. In addition, the system remembers the voting preferences for each user and customises future playback based on this for those logged in. This makes for a fair and intuitive listening experience that keeps the music interesting and the team happy.

Through working on our dream music player, we came across a lot of hurdles that we typically wouldn’t encounter on daily client projects. Working with AppleScripts and the Spotify API was new for many of us and has provided valuable technical lessons. Surprisingly though, some of the most interesting lessons surround the team's use of the voting and preferences system. We have found that allowing the team to express their preferences has turned listening into an active and collaborative team activity - far more than radio ever could have offered us.

What started out as a simple team playlist has rapidly evolved into a mini hack to deliver a superior democratic listening experience.

We plan to improve the interface considerably and include more user functions using Spotify’s API. For example, when someone upvotes a song, adding it to their own “liked at work” Spotify playlist. There is also huge potential around more comprehensive measurement of user preferences. Mapping musical tastes and similarities between team members is something we have begun to experiment with and has already returned some very interesting results. Ultimately, we envision a player that intuitively queues tracks based on the preferences of the team members actively listening and makes recommendations based on similar tastes - like our own personal Vivo DJ.

Share this.