Building a piano tutor

I grew up playing percussion so I know about different beats and reading rhythm but get tripped up when sheet music has multiple notes. I understand how to translate the notation on the page to its corresponding key on the piano but this often involves squinting and an intermediate letter conversion:

position of note on page > letter > position of key on piano

I’ll often write the letter corresponding to the note directly on the sheet music to bypass the rate limiting step (identifying note (“dot”) position and converting to letter) but I understand this is frowned upon by musicians and for good reason as the intermediate letter is completely unnecessary - the ideal system is to instantly and directly translate position of dot on page to position of key on piano. That’s really when sight reading begins.

To help learn this system while also speeding up note recognition, I’ve decided to build a GUI using python that flashes random notes and has the user click the corresponding position on a displayed keyboard, only proceeding to the next note when the user gets it right (aka musical flash cards). I figured this will be cool to digitize as I can track my progress over time (e.g. average time it takes to click correct position on keyboard). I can also build up the application to include chords and, perhaps, play the corresponding sound of each note when clicked.

Let’s begin!

Okay I’ve never built a GUI in python before but how hard could it be? Internet seems to recommend Tkinter or PySimpleGUI package although this top Reddit comment on a thread about the best/right way to do it in python intrigues me:

I’ll look more into that later.. for now it’s Tkinter