Description as a Tweet:

A violin tuner that can also test your skills on scales. Functionality includes a gauge that shows if your note is in tune (based on 440 Hz), projection of the pitch you are playing on a music staff, and supports live playback (in which you can also download your recording)!


As a past violin player, I hated violin because of intonation. No matter what, my ears felt that I played in tune, but either my violin teacher would tell me that a note was too sharp or too flat, or I would record myself and listen in disgust. With all these pitch detection tools and my interest in web development, I felt this was the perfect time to program an application that could help me become a better, more disciplined musician, and maybe help others too.

What it does:

It acts as a violin tuner application and takes the frequency of a note played on a violin and translates it visually onto a music staff. There also is an option to test your accuracy in a one octave scale of your choice, in which you can optionally have live playback and a downloaded file of your playing.

How we built it:

I used p5.js editor ( and the ml5.js and p5.js libraries to make my web application.

Technologies we used:

  • Javascript

Challenges we ran into:

A lot of the challenges I faced was in figuring out the algorithm to place the notes where I wanted them to on the music staff, and trial and error in placing misc. ornaments such as the stems of the notes, the sharps, and the 8va symbol. Other issues included coordination between elements in HTML/CSS/Javascript and hosting my code onto a website.

Accomplishments we're proud of:

I am proud of using a machine learning pitch detection tool and incorporating it into a useful application that I and I hope other musicians can use to improve their own playing. I am also proud of figuring out algorithms to translate frequency to notes on a music staff and in creating the gauge.

What we've learned:

I learned multiple Javascript functions and connections between HTML, CSS, and Javascript. I strengthened my skills in reading documentation from p5.js and ml5.js functions and also in translating code to web service host (specifically github pages). Furthermore, I learned more about the fundamentals of git/github.

What's next:

I plan to Incorporate testing all scales in 1,2,3 octaves and evolve in other technical excerises, such as arpeggios, whole-tone and chromatic scales, and other patterns. Furthermore, another step in improving the project is allowing the user to pick their own notes to test themselves with. In addition, I plan to make the application more graphically and UI sound, especially for mobile devices. Finally, this concept can be expanded to all instruments which their own selective technical excercises.

Built with:

HTML/CSS/JS (Libraries used: p5.js and ml5.js)

Prizes we're going for:

  • Best Web App

Team Members

Enoch Hsiao

Table Number

Table 29

View on Github