In this document, we will define which kind of errors will be handled by the program, and discuss about the program's tolerance.
I - Error types
I.1 - Note errors I.1.1 - Wrong Notes I.1.2 - Skip Notes I.1.3 - Extra Notes
I.2 - Tempo and rhythm errors I.2.1 - General tempo errors I.2.2 - Duration errors I.2.3 - Start time errors I.2.4 - Lack of regularity
I.3 - Dynamics and phrasing errors I.3.1 - General dynamics errors I.3.2 - Accentuation errors I.3.3 - Staccato / legato errors
I.4 - "A posteriori" classification Error classification could not (and should not) be made in real-time.
Let's take the note errors as example : This implies we must have a quite large working window to see clearly what happens arround the note which is actually played.
II - Tolerence - Threshold values
II.1 - Note pitch (note errors)
II.2 - Note and Rest duration (rhythm errors) Things cannot be here defined in a "binary way": We must introduce a threshold delta and consider that the played duration d is right if we have : (expected duration - delta) < d < (expected duration + delta) Threshold value should depend on note's own duration, and not exceed
50% of this duration. The precise definition of this value will depend
on what the player (or the teacher) wants : it can not be the same value
for a beginner and for an experienced musician, and from a musical piece
to another. Let's take an example : A good compromise would be to give the possibility to the user to define the value corresponding to the musical piece. This threshold value would become a parameter of the score, and directly correspond to the musical style of the piece.
II.3 - Dynamics - Note velocity This becomes here much more subjective. We have two ways to detect these errors : First, we can have the same idea as for note duration : compare the played note's velocity to the expected one, and validate it with a threshold : (expected velocity - delta) < v < (expected velocity + delta) The second way would be to define a "velocity scale" which would give, for each velocity value, the corresponding dynamic : Between 0 and 10 : ppp The great advantage of this solution is an independant definition of dynamics. If rhythm is a fuzzy concept and can be different from a piece to another, a mezzo-forte will always be a mezzo-forte, and this notion is totally independant of the musical style of the piece. We must here consider note velocity in comparison with both previous and next note. If the note should be accentuated, then we can say we have no error if : ( v > Velo(previous note) + delta ) AND ( v > Velo(next note) + delta ) For accentuation problems, we just need relative velocity : we don't
care about absolute values, since the wanted effect of an accentuated
note is to make contrast.
|