Our inspiration for this app was our interest in finding the right music for every mood. We wanted to create a way to always have music to match the mood of your environment as you are roaming your city.
What it does
Our app curates playlists built to match the mood of a user's location. Locations are grouped into categories, such as shopping for a shopping center, hang-out for a cafe, outdoor for a park, etc. Each of these location categories looks for specific attributes in a song, and add the best ones it can find to its playlist. The app has two modes - search and map. Search allows you to search for a specific location, and map allows you to pick a location off the map to get a playlist.
How we built it
We built this app in Android Studio, primarily coded in Java and xml.
Challenges we ran into
One major challenge we ran into was finding a correct distribution of attributes for a song for each category. The attributes of a song that we considered were things such as danceability, energy, tempo, liveness, valence, etc. While it was relatively easy to decide what range of values each location category wanted for each of these attributes (clubs looked for high danceability/energy, libraries would look for low danceability/energy for example), deciding the weights of these attributes was difficult. At first, we were having trouble distinguishing between the desired value of the attribute and how important it was that this attribute was as close to the desired value as possible. Our algorithm was giving us songs that had no place in the category we were testing, such as giving us slow songs for club music. We were finally able to figure out a weighting that worked, and now are successfully able to return mood-matching songs for any of the locations in our database. Another challenge that we ran into was including the Spotify API. Our goal for this app would be that a user can log into our app using Spotify, and then their mood-matching songs will specifically come from songs or genres the user already enjoys, providing a very personal music experience. We ran into problems incorporating the Spotify API into our project. These problems mainly stemmed from having different things working on different computers at different times, specifically, the computer used to set up the Spotify API was unable to run the app so we had to abandon it for the moment in order to make progress. Our goal is to finish including the Spotify API and allowing the user to sign in and use a larger database of songs.
Accomplishments that we're proud of
Despite the trouble it gave us, we are really proud of our algorithm for picking songs. Once we figured out the correct weights of attributes, our playlist picker was able to easily pick out the desired number of songs that fit the mood every time. We tested our algorithm with Excel, using the specific values of songs and finding their difference from our desired values. With this tool, we were able to fine-tune our weights based on what the best/worst songs the algorithm was finding. We were also able to figure out an appropriate tolerance, so that even if you don't have enough songs to fill the desired length of the playlist, we will still uphold a certain quality of the music picked for the mood.
What we learned
Over the course of this hackathon, we learned a lot about data parsing and the importance of having good data. We also learned a lot about Android Studio, and the life cycle of app activities and how to create a life cycle that works with our model functionality. Finally, we learned about incorporating API's into our project, and different ways to use them in order to get the data and functionality we need.
What's next for Muse
Our end goal for Muse is to have a music streaming service that will add songs to the queue based on your location. This means that if you are roaming through different locations, your music will roam along with you and stay in tune with your surroundings. We hope to continue working on Muse until it reaches this functionallity. As previously stated, we also hope to finish incorporating the Spotify API to have more personal choices for music and recommendations for our playlists.