Have you ever been attracted to a singer who released awesome music whenever you hear it? And probably you may be inspired to create your own music too! However, as a non-music professional, we don’t know exactly how to write music notes. Here we are inspired to create an app that helps non-music professionals convert their humming sound into several awesome music notes that they can choose from. It also helps some music professionals to get ideas from the generated music sheets for their next music release. So here is how Hum Hum It comes to help you!
What it does
Hum Hum It will detect the note that you sing with the tempo that the user specifies. It will then process the resulting note into a midi file that can be downloaded. The resulting midi files will be processed into a python script that outputs several music notes combinations that the user can choose from.
How we built it
We build it using node.js and express.js for conversion from the humming sound to midi file. Then we generated several different music notes from the midi file using pre-trained AI music generation python scripts.
Challenges we ran into
The white noise that’s hard to be filtered out from the inputted humming sound. How to sample the node and differentiate the cluster of the same note and a single long note.
Accomplishments that we're proud of
We just thought about this idea after the start of the hackathon, and just created and did it in a very limited time that we had. It was cool to see how much we all can do in around 24 hours, and how panicking and tight deadlines can boost our creativity and productivity.
What we learned
Things that seem to be trivial at first always have multitudes of complicated issues hidden. One of the biggest challenges that we faced was about filtering out “noise” (both in terms of audio noise and data noise), in the note recognition mechanism. To filter out audio noise, we need to create some frequency filters, but the parameter depends a lot on the actual environment the recorder is in. Furthermore, we can’t find a fitting library existing that might help us to execute the task in our required setting (in the browser). Data noise is also present when the chromatic tuner that we leverage to generate the notes picks up some random noise or inaccurately detect some notes. And also the problem that human voice is in general wobbly and not as stable as instrument’s sound adds to the problem. However, knowing that these issues exist is actually part of the fun and that’s how the world works. We might not be able to fix these issues to the perfect right now, but knowing and identifying it is definitely the first step that we can revisit later on in the future :)
What's next for Hum Hum It!
Due to the white noise, the accuracy of the note detected is still poor. We need to find a way to preprocess the audio and filter out the noise to increase the accuracy.