AUTOMATIC FINGERING SYSTEM (AFS)
Alia Al Kasimi Eric Nichols Dr. Christopher Raphael
Indiana University
Computer Science Department
Lindley Hall 215
Bloomington, IN 47405-7104
aalkasim@cs.indiana.edu
Indiana University
Computer Science Department
Lindley Hall 215
Bloomington, IN 47405-7104
epnichol@cs.indiana.edu
Indiana University
Informatics Department
Eigenmann 935
Bloomington, IN 47405-7104
craphael@indiana.edu
ABSTRACT
One of the most important aspects in playing the piano is
using the appropriate fingers to facilitate movement and
transitions. The fingering arrangement depends to a cer-
tain extent on the size of the musician’s hand. We have
developed an automatic fingering system that, given a
sequence of pitches, suggests which fingers should be
used. The output can be personalized to agree with the
limitations of the user’s hand. We also consider this sys-
tem to be the base of a more complex future system: a
score reduction system that will reduce orchestra scores
to piano scores. This paper describes:
• “Vertical cost” model: the stretch induced by a
given hand position.
• “Horizontal cost” model: transition between
two hand positions.
• A system that computes low-cost fingering for a
given piece of music.
• A machine learning technique used to learn the
appropriate parameters in the models.
Keywords: fingering, piano, trellis graph, personaliza-
tion, horizontal cost, vertical cost.
1 PROBLEM DOMAIN
Our goal is to solve basic but fundamental problems in
piano fingering and then to expand our system to handle
more complex examples. The work in progress takes
into account the following musical parameters that affect
fingering:
• Pitches performed by the right hand
• Single notes and chords
• Tempo
• Articulation: staccato versus legato
• Pedal
2 AUTOMATIC FINGERING SYSTEM
APPLICATION
The AFS takes a quantized MIDI file as input and out-
puts a text file specifying a possible fingering for each
note in the piece. The system selects the optimum finger-
ing by minimizing the costs associated with chord transi-
tions and hand stretches. The minimization is imple-
mented via a dynamic programming approach based on
representing the possible fingerings of the piece as a
trellis graph. A trellis graph is a multilayer directed
acyclic graph where nodes are only connected between
adjacent layers.
We selected Java 1.4 as the main programming lan-
guage for the fingering system. Musical input is in the
format of quantized MIDI files.
4.1 The Costs
4.1.1 Vertical Cost
The vertical cost corresponds to the stretch induced by a
given hand position, where the value of the cost is pro-
portional to the difficulty of the stretch. The system de-
fines every vertical position in time – when a new pitch
is added or deleted – as the combination of pitches that
are “live” at that instant.
Figure 1. Excerpt from Aufschwung (Phantasi-
estuck op.12) by Schumann
Figure 2. Vertical analysis of the same excerpt
The example above (Figure 1) demonstrates this
“vertical” concept. The first note, F, is still live when G,
C and D are played, as one can see in Figure 2. Like-
wise, E is still live when G is played. The system will
determine the vertical cost depending on the position of
the hand at each time slice. In this case the chords in-
volved are: F – F G – F C – F D – E – E G.
Permission to make digital or hard copies of all or part of this
work for personal or classroom use is granted without fee pro-
vided that copies are not made or distributed for profit or com-
mercial advantage and that copies bear this notice and the full
citation on the first page.
© 2005 Queen Mary, University of London