Music has a drastic effect on our actions and feelings. However, adjusting music on-the-fly to fit our constantly shifting mood/actions is difficult and tedious. Our app is intended to automate this process and provide a sort-of "Hollywood soundtrack to your life"
What it does
Users can select either an automatic or activity-based mode for the app. The automatic mode monitors the user’s heart rate data (via wearable fitness trackers, smart watches, etc.) and curates a custom playlist based on this data. The user can also choose a certain genre of music they would like to hear, further refining their listening experience. This allows the user to create a so-called “movie soundtrack” to the cadence of their life. The activity-based mode allows users to pick the activity that they will be doing, allot a certain amount of time that they will be doing said activity for, and name the genre of music that they would like to hear during the activity. Our proprietary algorithm then will select the best music for that activity based on the user’s preferences. This mode also allows users to set a queue of different activities and genres, allowing the app to help them organize their time.
How I built it
The main code of the project was built using a combination of Vim and Android Studio. The mySQL database was hosted on Google Cloud, and database interactions were made through Google Cloud's shell. Github was used for version control throughout the duration of the project.
Challenges I ran into
Originally, the plan was to use MongoDB instead of Google Cloud, but after struggling to find connection from MongoDB to Android Studio, I settled on using Google Cloud. We also had several problems involving saving the individual Soundtrack object to a file (to ensure it being saved for use in all classes), including Java denying writing permissions of the file. After much deliberation and hours of intense debugging, we decided to store the Soundtrack objects in a table on the mySQL database instead. In regards to the Spotify API, this presented many challenges. Within the last six hours of the project, we discovered that the Spotify API cannot play any song, album, or playlist directly through our app. However, for a long-term solution, we would be pivoting away from Spotify and towards using the Pandora API. We cannot use the Pandora API right now because we would have to be approved as developers before we can access it, and we did not have enough time for that process to go through.
Accomplishments that I'm proud of
Jake: Taking charge of the massive amounts of pre-development planning, making the development process immensely easier Avery: Setting up and running the database Eric: Learning how to use Gradle
What I learned
Jake: cut your losses and know when an idea won't work (in reference to spending four-plus hours on Soundtrack File I/O) and getting more comfortable with Android Studio Avery: More comfortable with mySQL, learned about connecting database functions to Java Eric: How to use Gradle, using the Java Library, the importance of pre-development planning and becoming comfortable with android studio
What's next for Kadence
- Connecting to wearable fitness trackers and smartwatches and use that as source for heartrate data
- AI to automatically classify music
- Like/dislike feature to customize song selection
- Move towards platform independence
- Move away from spotify API to our own service