Entry for HacknRoll 2019
Abhijit Ravichandran, Hemanshu Gandhi 159, Lim Kai Yu Bridget Grace, Zhu Ruicong 838
Best Freshman Hack, Most Socially Useful Hack
Figuring out how to play a song one has heard is a constant struggle faced by guitarists. A good ear for music and experience is needed to decide the best possible way to play a given combination of notes, as the ability to play the same note in multiple ways complicates the task. Tablature for uncommon songs is also difficult to find online, and are manually created, rather than generated using software.
Our algorithms utilise a host of criterion to determine the best possible fingering of a song, converting the information into user-friendly visual tablature.
Our script runs a tool[1] to convert an audio file to musicXML via command line. We wrote an XML parser to retrieve the necessary data from the text file. We then designed our own procedural algorithms to suggest the best possible fingerings for the song. Our priority was to suggest fingerings based on the proximity of the notes that occur consecutively in each measure, how close they are to the head of the guitar (to maximise ease of play for beginners) and whether they minimise movement horizontally across the neck, amongst others.
Determining the best possible fingerings for a given song on the guitar remains an active area of research due to the numerous possible permutations, hence we were unable to find existing algorithms to aid us. Furthermore, we had to decide on a set of criterion for the basis of the designed algorithm using our own playing experience.
It works
[1] AnthemScore, Python
The project was developed on a Unix system, and can be further developed to operate on Windows.