Oh nice, another HN'er that's on the same wavelength :) I'll give your app a spin and send you some feedback, meanwhile, maybe there are useful ideas in pianojacq.com that you can adopt.
Ohh Hi! I've come across pianojacq before! Definitely love how clean the sheet music looks and on first glance the way the song plays smoothly even when you hit the note a little late/early works really well! That's one aspect I really need to improve.
I see you're also using Vexflow. Are you using a library to go from Midi to Vexflow format? It's a rabbit hole I sometimes wish I hadn't entered :)
@OP Can really recommend VexFlow [0] when you do get to implementing sheet music.
I used two separate libraries, one to convert the MIDI file into an in memory representation and Vexflow, then a whole pile of glue (not the nicest part of the code) to combine the two.
There are some aspects of that that I want to revisit such as the automatic recognition of decorations (for instance: trills) so that they can be shown properly but these are tricky problems and I want to avoid spending more time on pianojacq.com than on using it.
Lately I've added an ear training module but I'm not completely happy with it yet (hit Bb0 to enable a hidden menu if you want to play around with it).
You're both on the same midi channel too, so you'll play well together, and should compare notes and velocities, and send each other your running status.
(Where's my drum machine when I need a badoom psssssh?)