Inspiration
Andrea gave me the idea.
What it does
Plays songs and displays fingerings alongside. Can also change the key of a song being played
How I built it
Tkinter for the frontend, numpy for signal processing
Challenges I ran into
Pitch detection is hard! There are many academic papers written on the topic. The approach I took is simple (basic filters, a Fourier Transform, and some simple postprocessing), which limits its utility. The class of mp3 files it works for require: 1) Very little environmental noise. 2) Notes are played uniformly and have a small stop between the next note (slurred notes are not supported). A significant time was spent experimenting with filters and thresholds in order to get a reliable pitch detector, even with these requirements.
These limitations can be ameliorated with a more robust pitch detection algorithm, such as these:
There were also various frontend challenges that I had to deal with - I'm not very proficient in frontend.
Accomplishments that I'm proud of
I had little signal processing background going into this, so I'm really happy with managing to get up to speed quickly enough to build a reliable pitch detector, despite how simple the set of mp3s it works on are.
What I learned
I learned a solid amount about music pitches (I knew essentially nothing beforehand), and had to shake off some rust on frontend stuff. I also learned about how hard pitch detection is!
What's next for Fingering Helper
See the future work section of the Github readme: https://github.com/jagielski/fingering-helper
Log in or sign up for Devpost to join the conversation.