When you want to jump right in to your favorite part of a mix
What it does
Uses ACRCloud to compute the signature of a small slice of the .mp3, and then compares to a database to find the track name. Does this for the whole mix and logs the tuples of the found track's name and start time within the mix. Then it displays this information for the user on a webpage so they can get jamming!
How I built it
First we looked into how to compare .mp3 files. Using an obscure API, we were able to find out that our iterating and comparing algorithm would be feasible by comparing 10 second slices of the stream to existing signatures in our database. Then we built a back end in Flask that would process requests. These requests would be in the form of the URL of the Soundcloud track. After getting the request and algorithm settled we started on displaying this information for the user. We then built a simple webpage that would display the titles and start times.
Challenges I ran into
At first the team was set on a different hack that we spent hours trying to wrap our heads around, that is, compress a file within slices of PI using the BBP hex algorithm for calculating the Nth digit of PI. However, no matter what implementation we used, it would just get bigger instead of smaller. So we pivoted to a different idea.
The second challenge we ran into was that our plan to inject buttons to skip within the Soundcloud page's Html was not doable by anybody on our team with our remaining time. So instead we focused on communicating the information through a separate webpage for the user to discern on their own accord.
Our last challenge came during testing. We would throw songs at the database that are very popular, expecting accurate results, but in a lot of cases we end up with obscure field recordings of Chinese farmers. We could not pivot by switching databases as that would change our whole central algorithmic processing.
Accomplishments that I'm proud of
What I learned
Understanding .mp3 files and their fingerprints How Soundcloud processes API requests Collatz theorem How hexadecimal is interpreted and converted
What's next for Pure Fire
Building Chrome + Firefox extensions to inject Html into the Soundcloud page to allow users to skip forward and back between songs within the large mix Perfecting that #fire mixtape