Inspiration
We all quit piano due to various reasons, whether it be moving, a lack of motivation, or it being too difficult. We want people to continue their music journey, and not quit on the way. Furthermore, people are losing their human side through AI, and music can help remedy this.
What it does
- Input sheet music, and output a tutorial on how to play the piece!
- Grade your own music: send an mp3/audio file of you playing your piece, and a picture of the sheet music. Our algorithm then grades you on how accurate you are.
How we built it
We used React for frontend, and Python for backend, and used FastAPI to connect front and back end. to go from sheet music -> tutorial, we sent a picture from the front end, sent it to the backend using FastAPI, and then used HOMR, a research grade Transformer based Optical Music Recognition (OMR) tool that gives a .musicxml file from sheet music. We then display it on React through React-Piano, and we have an assortment of tools (like tempo increase, a highlighted visualizer, a metronome, and a volume notch) to help users learn interactively.
For grading, we used Spotify's Neural Network Basic-Pitch to convert our .mp3 file to a .MIDI file, and through an algorithm utilizing Dynamic Warping Time, we are able to get an accuracy score that has shown to be pretty accurate, but does pretty poorly on ≥ 2+ notes. We then show the notes that the user made wrong in red, and the correct ones in green.
Challenges we ran into
Getting everything to work visually, as well as connecting the front and back end. It was our first time using FastAPI (or any server), so we had our fair share of difficulties with it. Also, formatting everything with the Piano was hard, but we got through it
Accomplishments that we're proud of
Connecting the front and back end, as well as making a product that we would actually use. It feels amazing!
What we learned
Integrate front and back end frequently, not at the end. I did at the end, and it took me 4 hours. Not very fun...
What's next for Musica
more instruments, more accurate predictions, and trying to understand the emotion in music; not everything is a quantifiable metric...
Built With
- base-pitch
- cnn
- fastapi
- fastdtw
- firebase
- firestore
- gemini
- homr
- music-21
- omr
- opensheetmusicdisplay
- pydantic
- python
- react
- react-piano
- typescript
Log in or sign up for Devpost to join the conversation.