Inspiration

We were trying to remember a song from our childhood, but we only knew a few of the lyrics. We were gonna Shazam it, but we werent near the song to record the audio. This made us think, what if we made a app that could find ANY song just from a few lyrics we remember?

What it does

Think! - Our "Think!" feature allows the user to input any fragmented lyrics they remember hearing in this familiar song. If you also have things like the Genre, Year it came out, Mood, or even the Vibe of that song, all of this information is being input in our Gemini API model as selected factors and our model will output the song your thinking of! If the song is correct, you can confirm it and add it to your list of "Accepted Thoughts" where you can refer back to it to find further details on the song powered by Gemini API. It will generate a song overview and fun fact about each song you liked!

Chat w/ Déjà - Our Déjà feature allows users to manually talk to the Déjà chatbot who's follow up questions are generated based on the previous input of the user. These follow up questions will also provide buttons for the user to click (yes/no/unsure/other) to help our Gemini API iteratively get closer and closer to the song were looking for as the questions get more specific. If you're familiar with the game Akinator, we're doing that but with music! (Example: User - I think the song had "used to called me on my cell phone, or something close to that" Déjà - is the song "Hotline Bling" by "Drake"? (yes/no/unsure/other) Assuming you say "yes" it gets added to your "Accepted Thoughts"

Generate Tunes - this allows users to generate songs based off of their own personal preferences! Select from preferred factors like the Genre, Era, Vibe, or even some Favorite Artists whose style you'd like to see in the playlist. The user can also choose a x amount of songs of what they want to generate.

All "Accepted Thoughts" are able to be accessed by the user through CRUD operations! The user also has the option to press play on this song to get a preview of how it sounds!

How we built it

  1. Gemini API for the songs, descriptions, fun facts and questionnaire generations
  2. Spotify API for the details of the song, so the Song Picture Cover, Album, Release Date, Track #, etc.
  3. Firebase Firestore for handling our NoSQL Database

Frontend: React + JavaScript backed on TailwindCSS

Challenges we ran into

Figuring out how to access the song after it's saved into Accepted Thoughts. I would output on the main screen, but it would be horizontal, uneven and just really messy. I was stuck for like 2 hours trying to get that section working lmao

Accomplishments that we're proud of

Once accessing the Accepted Thoughts ^^^ correctly filled the main screen, I was really happy I got that to work. I really like how it fills the background with the cover art, but still keeps the sidebars with the clean white UI. It just looks like a really cool container for our app idk. Plus, this was my first REAL time working with Spotify and Gemini API. I loosely used it in HopHacks back in September, but ive learned so much since then, so the integration wasnt as bad this time. This was my first time working with Spotify API, but looking at the documentation, I figured it would be perfect because it stores the cover art WITH the song and artist, which fits perfectly with this app. Plus, adding the spotify play widget was a really nice touch I added. We cant get the full song, but the 15 second preview for ANY song is perfect in this context, especially if we have to demo it quickly to a judge! We cooked here

What we learned

Spotify API is really fun to use, and Gemini API can be a really innovative tool in the right hands! Crazy how we made THIS just from a random thought

What's next for Déjà Tune

I think the next step is to optimize the model being used to detect the songs. The Spotify API is perfect for its job, but it may be wise to personally train a dataset of lyric inputs and artist outputs. Just so its more optimized for detection, but training epochs for EVERY SONGS LYRICS is going to take forever, so maybe if theres a preset model on HuggingFace or something, that should work too

Built With

Share this project:

Updates