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