An Intelligent Virtual Piano Tutor

碩士 === 國立中正大學 === 資訊工程所 === 94 === Aiming to instruct the novice in good playing of musical instruments, tutors need to teach the students how to practice certain fingering for certain notes sequence, which typically is the most difficult skill for a beginner to learn. Although it is not easy for a...

Full description

Bibliographic Details
Main Authors: Chih-Chun Lin, 林致群
Other Authors: Damon Shing-Min Liu
Format: Others
Language:en_US
Online Access:http://ndltd.ncl.edu.tw/handle/73906599281280722272
Description
Summary:碩士 === 國立中正大學 === 資訊工程所 === 94 === Aiming to instruct the novice in good playing of musical instruments, tutors need to teach the students how to practice certain fingering for certain notes sequence, which typically is the most difficult skill for a beginner to learn. Although it is not easy for a novice to get the “good” fingering for one note sequence at the beginning, it exists rules to determinate quality of these fingerings. The most common method is to define the scoring rule to accumulate the cost and solves the optimization problem, using dynamic programming or graph-based system. Others speed up the counting using expert system, generic algorithm, or neural network. Some hybrid methods have also been proposed in recent years, but there is one common significant drawback, i.e., none can solve fingering problem in real-time. In this paper, we propose a novel bitwise real-time algorithm solving the fingering problem. This is a graph-based fingering generating algorithm with edge pruning technique in it. For evaluating function, we adopt the 12 cost rules defined by Parncutt in Music Perception, Summer 1997, Vol. 14, No. 4, 341-382, and solve the optimization problem. In order to accelerate computing process of finding the shortest path, we also propose an efficient pruning algorithm reducint graph size. After solving the figering problem, we illustrate this fingering results not only using the “text mode” but also using a 3D pianist model to show students how to play this music. To animate the virtual pianist, we adopt the Inverse Kinematics algorithm to generate playing motion for every note, and interpolate previous generated key frames to maintain a constant frame rate. The major significances of this paper are solving fingering problem in real-time and good fingering graph pruning algorithm. Moreover, we develop an integrated graphical user interface that allows input either from an external file in MIDI audio format, or from unpredictable MIDI events received using MIDI device. Our virtual pianist therefore provides an effective means to learning piano playing for novices.