Inspiration
Everyone in our group has a passion for music, and some of us play instruments such as guitar and violin. Combining this passion with code, we decided to make something that musicians could use and benefit from.
What it does
Our project is called InSync Tuner. The project is a tuner for musical instruments like guitar, piano, violin, etc. Using frequencies and magnitudes of sound waves, the project transforms frequencies to musical notes, hence identifying which note is being played. This feature was used to identify notes that users play and then advice them on whether they need to tune up or tune down their instruments. It will also display the note that the user is currently playing so that the user has an idea of what their instrument is doing. Apart from displaying whether the user needs to tune up or tune down their instrument, it also says what the user needs to do so that they can focus on how to fix the instrument.
How we built it
We built a digital tuner that records or imports audio from an instrument and converts it into musical notes using mathematical analysis of sound waves. The audio is first captured and, if necessary, converted to mono, then processed with the Fast Fourier Transform (FFT) to shift it from the time domain into the frequency spectrum. By identifying the highest peaks in the spectrum, we determined the fundamental frequency of the sound. Using a logarithmic frequency-to-pitch formula based on concert pitch (A4 = 440 Hz), the tuner mapped this fundamental frequency to the closest musical note. The detected note was then compared against standard tuning frequencies to determine whether the user needed to tune up or tune down. Finally, we built a graphical user interface (GUI) that allowed users to record or stop audio, choose which string they wanted to tune, and view in real time both the detected note and clear feedback on whether their instrument was sharp, flat, or in tune.
Challenges we ran into
Some of the main challenges we faced included accurately identifying the correct fundamental frequency, since overtones and background noise often interfered with pitch detection. Capturing and stabilizing real-time audio input was also difficult, as our recording function initially kept looping and required several adjustments to work consistently. Finally, building the GUI proved challenging as we had to figure out how to make it both intuitive and responsive to real-time updates from the pitch detection system.
Accomplishments that we're proud of
Something we are really proud of is how accurate the tuner is at recognizing the notes. The physics concepts and mathematical equations were really complex, especially to code, which when combined with the error of real-world data and rounding could have resulted in a lot of mismatches. Along with this, the ability of the tuner to recognize the tone even with background noise is phenomenol. It can focus on the musical notes being played and ignore the background noise to a certain extent.
What we learned
This project involved working with frequencies and waves, which made getting accurate results a little challenging. At first, finding the mathematical equations was not that hard and we were able to theoretically find the notes based on the frequencies. Later, when we started testing with real data the graphs were really inconsistent and complex making it hard to correctly predict the notes based on frequencies. This helped us learn how important it is to account for other factors that could cause errors in our computations while working with such sensitive data. Another challenge was learning how to use the Python GUI as it was the first time we were working with it. The challenge of learning and understanding the mechanics of the GUI while also being under the time constraint of getting the project done was a big learning experience. Integrating the front end with the back end was really intuitive and fun but was also challenging in the beginning.
What's next for InSync Tuner
In the future, we plan to expand the tuner’s functionality beyond single-note detection to include chord recognition. This would allow users to play multiple notes at once and receive feedback on the chord being played, which would be especially useful for guitarists, pianists, and other musicians who rely on harmony. Additionally, we aim to make the platform adaptable for a wider range of instruments. Instead of being limited to a standard six-string guitar, users would be able to select their instrument (such as violin, ukulele, piano) and the tuner would adjust its calculations and target ranges accordingly. These upgrades would make the tuner more versatile and valuable as a universal tool for musicians across different backgrounds and skill levels.
Log in or sign up for Devpost to join the conversation.