A very quick intro on how to use this program:

The idea here is that you have a midi file of a piece that you
would like to learn how to play. You push the midi file into
the repertoire store in the program and then you can keep
track of your progress and focus on parts where you are weak
using the tools provided. Over time more and more of this
should be automated but the basic set of tools is there and
I use it myself to good effect. Over time you should find that
your ability to sightread scores improves and that you end up
with a larger repertoire of pieces that you can play. 

- This program right now *only* works with the Chrome web browser.
  FireFox is my daily driver but it does not support Web Midi and
  so we are forced to use Chrome exclusively. Trying the software
  using any other browser will not give usable results.

- First hook up a midi keyboard to a USB port on your machine. If you
  reload the page of the software it should show up in the drop down
  menus. Choose your device both for input and output.

- Then you need a midi file to practice. To make this easier you
  can download one of the linked example files if you don't have
  anything handy. The file can then be sent to the program using
  the 'add new midi file' button. After uploading the file the
  contents of the score display should change to show you the
  midi file as a musical score. A useable midi file should: contain
  two tracks, one for the left hand, one for the right hand, direct
  all notes to *one* channel. Right now the program can not (yet)
  deal with key changes in the middle of a piece. 

- Now you can start practicing!

- If you want to listen to the piece change the practice type 
  to 'listen' at the top left. Change it back to 'play' to
  do a practice session. Auto mode walks you to the piece
  section by section with periodic playthroughs to find out
  which parts need attention and then to help focus on those.

- If the indicated tempo is too fast for you then you can 
  use the speed slider on the left hand side to slow it down,
  alternatively, if you want an extra hard practice you can 
  speed it up to go faster than the indicated tempo.

- Which hand you want to practice you can select via the
  drop down with 'left hand/right hand/both hands', the notes you
  will not be playing will be grayed out. During practice
  those notes will be played by the computer so you can
  fully concentrate on the part that you are practicing.

- The difficulty factor indicates how many notes you are
  comfortable playing at once, if you set this to '1' there
  are no chords or more than one note sounding at the same
  time. At '2' you will at most have to play two notes at
  the same time. '3' limits you to triads, and '4' will 
  give you everything from four notes and up. Use this if
  a piece requires you to play more notes than you are
  comfortable with. But do keep trying higher settings
  from time to time to practice to the point where you
  can play more complex combinations. 

- The 'keys' drop down allows you to limit the size of the
  range the computer expects you to play so the program
  won't sit there waiting for keys that are missing on 
  your keyboard. Up to 61 keys will give a useful 
  practice session, below that it gets harder to really
  learn how to play. If you have the room (and the $) I
  recommend a keyboard of 73 keys or more.

- The position slider will move the cursor through the piece 
  rapidly so you can move to another section.

- The range slider will limit the part that you are    
  practicing. This is useful for spending some time on
  a hard passage. In auto mode the range slider is automatically
  positioned and resized to focus on the spots that need it most.

- auto mode will set the range slider automatically to the 
  part in the piece that are worst at and prompt you to play
  it through a number of times, when that part is no longer 
  the worst it will advance the slider to the next worst
  part and so on. Like this you can rapidly improve your
  ability to play a piece by practicing the parts that are
  the most challenging for you first.

- the 'slide' modes allow you to advance bit-by-bit through
  a piece, you set the range slider to the size of the chunk
  that you want to practice and when you have it the slider
  will advance to the next chunk in sequence, moving it
  along by roughly half the width of the segment that you 
  have chosen. Easy/Normal/Perfect correspond to streaks of
  1, 3 and 7 respectively. At setting '7' it can take quite
  a while to get through a piece that you think you have
  mastered, because a single mistake will send you back all
  the way to the beginning of the streak. 

- The |<< button will move you back to the beginning of
  the midi file to ready the program for another practice

- The >|| button changes to paused mode and back to 
  resume playback or practicing or to pause it

- The stats display shows you how well you are doing, dark
  green entries are good notes and on time, light green 
  are good notes but late, red notes are wrong notes. You
  can use this info to see which parts of the piece
  still need work. The display shows you the last 10 
  sessions. If you use the scroller to move back across the
  score after a practice you can see the score annotated
  with your performance.

- The practice log shows you a numerical comparison with
  previous, similar practice sessions. Whenever you complete
  a whole session without skipping parts or repeating parts
  it will get recorded here so you can see your progress. 

- The ear training module is 'work in progress', but it is
  already quite useful. You can practice a few minutes every
  day and you'll find that over time you will get better at
  picking out notes and chords as well as scales and intervals.

  This is all based on relative pitch, absolute pitch can't
  (as far as we know) be trained reliably or even at all.

  To help you with ear training here are some hints about 
  how to identify intervals. Intervals are the gaps between
  two notes played in sequence or together, and to be able
  to identify a particular interval is a very important 
  skill to learn. Initially it may seem impossible but as
  you train you gradually develop this skill. What can help
  is to have some pieces of music that you know very well
  to help associate the intervals, and as you get more used
  to them you will do this automatically. 

  For 'm3' melodic: Oystein Sevag, Norwegian mood (the first
  two notes) are a nice example and easy to recognize over a
  broad range.

  For 'M3' harmonic: Bill Withers, Lean on me

  For 'P4' melodic: Here comes the bride.

  For 'P5' melodic: the intro to Forrest Gump.

  For 'P5' harmonic: Supertramp, Dreamer

  For 'm6' melodic: Scott Joplin, the jump in the beginning of 
  "The Entertainer"

  And so on, you can probably find a few pieces that you know
  by heart already, look at their first couple of notes and
  use them to help you identify intervals when you first start
  out to give you a bit of a boost in the beginning.

- Privacy statement: your privacy is 100% secured, this program
  does not send any information back to the server in its
  present day form. That may change at some point in the future
  if there is functionality that is hard to implement on the
  client side, but for now it all runs on *your* computer, not
  on mine and that is both a good way to keep things secure and
  to safeguard your privacy in the best possible way. All of the
  stats data about our practices also stays on your computer in 
  a local storage facility that you have control over. If this
  should ever change I will make sure to note it prominently.
  So, no cookies, no tracking, no uploads, no spyware, malware
  or any other trickery. 

Things the program is still weak on:

- we only support one browser right now (Chrome)
- timing is - and likely always will be - a very tricky thing to get perfect
- support for rests in the score is for now not yet present, this is harder than it
  seems because rests do not have a representation in the input file
- any kind of ornamentation, rolled chords, trills and so on that are clearly
  marked in the original score are present in the midi file as individual notes
  and displayed as such, it is a very hard problem to reliably reverse these back
  into their original annotation *and* to then allow the program to still accurately
  verify whether the student played the notes as intended. We are very much aware of
  this problem and are trying to find a good solution, ideas welcome.
- midi files can contain all kinds of errors and while we know how to recognize and
  fix quite a few of them already they are likely just the tip of the iceberg. If you
  have a problematic midi file then please send it to us with a description of what
  goes wrong and what the intended behavior should be. That way we can build up a 
  library of such files and fix the issues, then test against them to ensure we do 
  not accidentally re-introduce a problem already fixed. 
- midi files that have not been created directly as midi
  files but are the result of a recording or a conversion
  from some other format may have issues. You will need to
  edit these using a midi file editor to ensure that the
  bars, beats, chords and notes line up properly in the
  file otherwise there will be errors in the rendering 
  of the score which may lead to you learning to play 
  the piece incorrectly.

A nice website that you may try out to learn more about chords on the
piano: https://pianochord.io/