I’m working on a WebMIDI based wait-for-input piano/keyboard app, like Flowkey, but bring your own music with MusicXML files.
Works amazingly well, using OpenSheetMusicDisplay lib for parsing MusicXML, rendering it to SVG (OSMD uses VexFlow under the covers) & using OSMD to map the music data into my own data model (I track everything I need for timing and visual x,y coordinates inside the SVG).
From there it’s pretty simple, just refactoring my hacky PoC I’ve been using for myself for the last year into something solid based on React + XState.
Anyways, OSMD would let you import arbitrary music as input to this, opening up the possibility of learning specific pieces