Inspiration
With our shared interest in music and desire to make it easier for people to learn music, we seek to create an application to bridge the gap between experienced and beginner music enthusiasts. One of our members teaches music in a public school and sees that musical notation is one of the biggest barriers of entry into learning a musical instrument. With this tool, students can hear any written music before they learn to play it.
What it does
Our website provides an innovative solution for musicians who need to quickly and easily convert printed sheet music into a MIDI file. With our website, users can simply upload a JPEG file of their sheet music, and our service will convert it into a MIDI file that can be downloaded and saved for future use. In doing so, we allow a way for users to share and preview saved music. Our website is user-friendly and intuitive, making it accessible to musicians of all levels.
How we built it
We used HTML and CSS for the front end to design the UI elements for the website. There were features like hover, animation, and website traversal incorporated into the function. We tried to maintain continuity within the website by maintaining certain colors, layouts, and themes within the website.
For the back-end, we utilized Python, Flask, and MongoDB. Python allowed us to implement the algorithms of interest and combine them into a finer product. In utilizing Flask, we developed a web application within Python. Python was also used to analyze the music sheets and what notes they are based on the line they are on and their general symbol. This was made possible with Computer Vision (CV). We later worked with MongoDB, we were able to store the desired content and deliver the user’s desired information. In tandem with SheetVision, we combined multiple techniques to deliver a user experience coded and geared towards aiding in the learning and sharing of music.
Challenges we ran into
As a team that has never worked with one another before, the biggest challenge we faced was learning each other's strengths and weaknesses to properly assign roles to efficiently accomplish the goals of the project. Through collaboration, we found that we all related to each other in one way, our love for music, thus we set out to make a website to further make the love of music more accessible to others. Having limited knowledge of niche libraries such as MIDIUtil made achieving our goal difficult. Yet, through hard work, we learned to work past any challenges and issues we encountered.
Accomplishments that we're proud of
Using MongoDB to store scanned songs onto a dashboard, effectively developing an efficient database that organized our content in an easy-to-access manner. Through this important breakthrough, we were able to access and deliver content seamlessly throughout our service.
What we learned
Learned how to use MongoDB, a non-relational database, to store user information and their inputted sheet music. Because we were unfamiliar with tools like MongoDB, it required us to familiarize ourselves with specific libraries in which we had no previous experience to accomplish our goals. Yet, through this experience, we gained important skill sets to further exponentiate problem-solving. We also learned to work with new people making us stronger collaborators and team players.
What's next for SMS
Making the website more user-friendly will be something that can always be improved on. We wish to implement a search method to make the ease of searching for previously saved songs easier to find with tags of the dates they were uploaded onto the user dashboard. Also adding the element of interacting with other users on the platform to discuss their love for the music they share would be an amazing feature to connect the world through music. In addition, we hope to expand how we can improve the music-learning experience, possibly adding features like MIDI files based on audio samples, and tools that aid in beginner sight-reading.
Log in or sign up for Devpost to join the conversation.