What it does
Using logical reasoning, MyMuse curates playlists based on a song or artist the user is vibing with for that day. Whether the user is looking to hold on to an upbeat mood (generate by BPM), or loves the way a certain song sounds that day and is looking for the experience of listening over and over again without the mundanity of actually doing so, MyMuse has an answer.
Inspiration
I wanted to create an application that would help me fine-tune my listening experiences on a day-to-day basis. I often find myself wanting to experience the energy and vibe of a single song through the day without wanting to listen to the same song over and over again. MyMuse was my answer to this daily problem.
To take it one step further, my sibling has also been DJing and through query testing, we found that as an alternative use, MyMuse is fantastic for generating songs that blend together well in sets, especially one most wouldn't think of immediately.
How I built it
Frontend: MyMuse leverages the Java Swing framework to create a responsive and interactive interface
Reasoning: Using Prolog, a set of rules that leveraged bound and unbound variables in relation to a set of nearly 1000 songs as facts were defined. Each rule correlated to a different playlist goal.
Backend: JPL is a bidirectional API interface that allows Java and SWI-Prolog to communicate and interact. Each user input was formatted and parsed as a query to generate the appropriate playlist
Challenges
There were a number of challenges that arose through the creation of MyMuse. The most significant was related to utilizing the JPL API to allow for communication between the Java program and the Prolog program.
The JPL API had to be installed with SWI-Prolog so reinstallation was required to ensure all of the necessary files were loaded onto my computer. From there, the IntelliJ IDE was unable to access the API package. To remedy this roadblock, the available libraries were edited from the project structure and the jpl.jar library was imported from its location within the swipl (SWI-Prolog) files.
Accomplishments that I'm proud of
- Creating a symbolic AI from scratch
- Using solely Java to create the user interface of a computer application
What I learned
I have never created a desktop application before nor worked on the ground level building my own AI. In creating MyMuse, I started with a basic grasp of each component, stepping fully into the unknown, and came out understanding how to build an interactive application with an engaging UI using Java, how to format and parse queries to an AI of my own creation, and above all else, how to create a symbolic AI.
What's next for MyMuse
The final goal of MyMuse is for it to be able to autonomously create and present the playlists on various streaming platforms.
Track
I am submitting to each of the three tracks. I have yet to come across an AI that is able to generate playlists as close to my music tastes. To fix this problem, I created my own that only knows the songs that I know I enjoy. I have solved a problem AI gets wrong for me, personally, made it distinctly myself, and spent the time to collaborate with my computer (more specifically my AI) to create a solution I know fully works for me.
Log in or sign up for Devpost to join the conversation.