Don't you hate it when people don't leave things the way they found them? Like when your short friend adjusts the driver's seat and mirrors, or when your brother leaves the toilet seat up? Bose Profiles solves this problem for SoundTouch speakers by remembering and restoring the last volume/bass configuration that each person used.

Further, we were inspired by the viral Spotify "Year in Review" trend, where a user's listening history is captured in a visually concise and interesting format. We built on the Spotify API to construct a visual dashboard of interesting analytics for each profiled SoundTouch Spotify user.

What it does

Bose Profiles is a local web server that passively augments your SoundTouch speaker right out of the box. The web server listens for music change, volume change, and bass change events from your speaker, and automatically associates them with the current Spotify user. The next time that user streams Spotify through the SoundTouch app, the volume and bass will automatically be set to where they left off, even if other people messed with the settings in the meantime.

Bose Profiles goes further with its web dashboard. The dashboard visualizes a summary of each profiled user's activity. This includes visualization of bass/volume history and a summary of each user's top songs and musical preferences. These charts can be viewed by accessing the local web server via browser.

How we built it

The local web server runs on Python Flask, and uses the Semantic UI framework for the front-end. The SoundTouch WebSocket API is used to listen for events, and the Google Cloud text-to-speech API is used to notify users that their configuration has been loaded. Visualizations are created with Highcharts and d3.js.

Challenges I ran into

We had some issues with the asynchronous nature of the SoundTouch API (setting volume), but ultimately figured out (with the help of Bose folks) how to block until the value we wanted was set.

Accomplishments that we're proud of

We think we made full use of the Bose SoundTouch API to create a useful and functional product. Additionally, we're proud that our solution can run transparently alongside a SmartTouch device and immediately enhance user experience.

What we learned

This was the first time we worked with the SoundTouch API or a smart speaker. Previously we did not have a lot of experience working with "smart" devices, but we found the SoundTouch API made these interactions very straight-forward.

What's next for Bose Profiles

We hope to enable profiling for settings across all input sources, not just Spotify. This would require some changes to the underlying SoundTouch API. Additionally, we would like the ability to recommend new songs from historical activity.

Share this project: