曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段とを具備することを特徴とする演奏評価装置。前記特定手段は、演奏入力された演奏データに対し、前記記憶手段に記憶される複数の音符データの全てにDPマッチングを施して類似度に相当する距離を算出し、算出した距離の中で最も類似度の大きい最小距離となる音符データを演奏データに該当する音と特定することを特徴とする請求項1記載の演奏評価装置。前記特定手段は、前記記憶手段に記憶される複数の音符データが右手パート、左手パートおよび左右両パートに区分されている場合、演奏入力された演奏データに該当する音の音符データが右手パート、左手パートおよび左右両パートの何れで弾かれたかを特定することを特徴とする請求項1記載の演奏評価装置。前記達成度取得手段は、曲の難易度に応じた達成度に、それぞれ異なる補正係数を乗じて右手パートおよび左手パートにおける達成度を算出する達成度補正手段を更に備えることを特徴とする請求項1記載の演奏評価装置。演奏評価装置に搭載されるコンピュータに、曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定ステップと、前記特定ステップにて特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定ステップと、前記複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出ステップと、前記正解率算出ステップにて算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得ステップとを実行させることを特徴とするプログラム。ところで、上記特許文献1に開示の技術では、単に正しく弾けた音符の数に応じた正解率を算出し、算出した正解率でユーザの演奏技量を評価するだけなので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することが出来ないという問題がある。本発明は、このような事情に鑑みてなされたもので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することができる演奏評価装置およびプログラムを提供することを目的としている。上記目的を達成するため、本発明の演奏評価装置は、曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段とを具備することを特徴とする。本発明では、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することができる。以下、図面を参照して本発明の実施形態について説明する。A.構成図1は、実施の一形態による演奏評価装置100の全体構成を示すブロック図である。この図において、鍵盤10は、演奏入力曲演奏の押離鍵操作に応じたキーオン/キーオフイベント、鍵番号およびベロシティ等を含む演奏情報を発生する。スイッチ部11は、装置パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。スイッチ部11に配設される主要なスイッチとしては、例えばパワーオンオフする電源スイッチの他、手本模範演奏となる曲データを選択する曲選択スイッチや、動作の終了を指示する終了スイッチ等がある。表示部12は、LCDパネル等から構成され、CPU13から供給される表示制御信号に応じて、演奏入力する際に曲データを楽譜表示したり、演奏終了後に演奏評価結果を表示したりする他、装置の動作状態や設定状態を表示する。CPU13は、演奏入力に応じて鍵盤10が発生する演奏情報をMIDI形式の演奏データノートオン/ノートオフ等に変換し、変換した演奏データを音源16に供給して楽音発生を指示する一方、当該演奏データと手本模範演奏となる曲データを構成する音符データとの比較に基づきユーザの演奏技量を評価する。本発明に係わるCPU13の特徴的な処理動作については追って詳述する。ROM14には、CPU13にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述するメインルーチンを構成する該当箇所特定処理、距離算出処理、DPマッチング処理、演奏判定処理および達成度算出処理を含む。RAM15は、ワークエリア、演奏データエリアおよび曲データエリアを備える。RAM15のワークエリアには、CPU13の処理に使用される各種レジスタフラグデータが一時記憶される他、演奏技術の種別に対応する難易度が登録される難易度テーブルiFTCostを備える。この難易度テーブルiFTCostが意図するところについては追って述べる。RAM15の演奏データエリアには、演奏入力に応じてCPU10が生成する複数の演奏音の演奏データがストアされる。RAM15の曲データエリアには、手本模範演奏となる曲データが複数曲分格納される。曲データは、曲を形成する複数の音符を表す音符データから構成される。曲データを構成する音符データは、右手で弾く右手パート、左手で弾く左手パートおよび両手で弾く左右両パートに区分される。1つの音符データは、iTime、iGate、iPit、iVel、iTechおよびiClearから構成される。iTimeは発音時刻、iGateは音長、iPitはピッチ音高、iVelはベロシティ音量を表す。iTechは演奏技術の種別を表す値である。演奏技術の種別とは、指潜りや指跨ぎ等の指の動かし方の種類を指す。負の値の場合には、演奏技術を要しない音符であることを表し、0以上の値が演奏技術の種別を表す。以下、iTechを演奏技術タイプと称す。iClearは対応する音符が手本通りに正しく弾けたかどうかを表すフラグであり、1の場合に手本通りに正しく弾けたことを表し、0の場合に弾けていないことを表す。以下、iClearをクリアフラグiClearと称す。音源16は、周知の波形メモリ読み出し方式によって構成され、CPU13から供給される演奏データに応じた楽音データを発生して出力する。サウンドシステム17は、音源16から出力される楽音データをアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。B.動作次に、図2~図9を参照して上記構成による演奏評価装置100の動作を説明する。以下では、CPU13が実行するメインルーチン、該当箇所特定処理、演奏判定処理および達成度算出処理の各動作について述べる。なお、該当箇所特定処理は、距離算出処理およびDPマッチング処理を含む。1メインルーチンの動作図2は、メインルーチンの動作を示すフローチャートである。演奏評価装置100がパワーオンされると、CPU13は図2に図示するメインルーチンを実行してステップSA1に処理を進め、装置各部を初期化するイニシャライズを行う。イニシャライズが完了すると、CPU13はステップSA2に進み、終了操作が為された否かを判断する。終了操作が為された場合には、判断結果がYESになり、本メインルーチンを終えるが、終了操作が為されなければ、判断結果はNOになり、ステップSA3に進む。ステップSA3では、演奏入力に応じてCPU10が生成する演奏データをRAM15の演奏データエリアに保存する演奏入力処理を実行する。なお、演奏入力処理では、曲選択スイッチ操作により選択された曲データを練習課題とし、当該曲データを表示部12に楽譜表示させ、その楽譜を見てユーザが演奏入力するようになっている。次いで、ステップSA4では、ユーザの演奏入力で発生した演奏データが、手本模範演奏となる曲データ中のどの音符データに該当し、かつその該当音符データを右手パート、左手パートおよび左右両パートの何れで弾いたのかを特定する該当箇所特定処理を実行する。続いて、ステップSA5では、上記ステップSA4において特定した音符データのピッチiPitと演奏データの音高とを比較して当該音符データの音が正しく弾かれたかどうかを判定し、正しく弾かれた音符データのクリアフラグiClearを1にセットする演奏判定処理を実行する。そして、ステップSA6では、達成度算出処理を実行する。達成度算出処理では、後述するように、曲データ中の全ての音符データに含まれる演奏技術タイプiTechから演奏技術の種別毎の発生回数およびクリア回数正しく弾かれた回数を抽出し、抽出した発生回数およびクリア回数から得られる演奏技術の種別毎の正解率クリア回数/発生回数に、演奏技術の種別に応じた難易度を乗算して演奏技術の種別毎の達成度を算出し、算出された各達成度を累算することで曲の難易度に応じた達成度aを取得する。この後、上述のステップSA2に処理を戻し、以後、終了操作が為されるまで上述したステップSA2~SA6を繰り返し実行する。2該当箇所特定処理の動作次に、図3を参照して該当箇所特定処理の動作を説明する。上述したメインルーチンのステップSA4図2参照を介して本処理が実行されると、CPU13は図3に図示するステップSB1に処理を進め、レジスタdoDistMinに初期値となる所定値をストアする。レジスタdoDistMinに格納される初期値が意図するところについては追って述べる。続いて、ステップSB2では、ポインタmeorgtar0およびポインタmeorgtar1をゼロリセットする。ポインタmeorgtar0とは、曲データ中の右手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタである。同様に、ポインタmeorgtar1とは、曲データ中の左手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタである。次いで、ステップSB3~SB4では、曲データ中の右手パートの音符データの内、先頭ノート先頭の音符を指定するアドレス値をポインタmeorg[0]にストアし、曲データ中の左手パートの音符データの内、先頭ノート先頭の音符を指定するアドレス値をポインタmeorg[1]にストアする。そして、ステップSB5に進むと、ポインタmeorg[0]、meorg[1]が共に終端でないか否か、つまり曲の終わりに達するまで該当箇所を検索したかどうかを判断する。曲の終わりに達するまで該当箇所を検索していなければ、判断結果はYESになり、ステップSB6に進む。ステップSB6~SB8では、ポインタmeorg[0]およびポインタmeorg[1]を曲の終わりに達するまで歩進させる毎に、ステップSB6の距離算出処理を繰り返し実行する。そして、曲の終わりに達するまで該当箇所を検索し終えると、上記ステップSB5の判断結果がNOとなり、本処理を終える。なお、ステップSB6の距離算出処理では、後述するように、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ右手パート、左手パートおよび左右両パートについて公知のDPマッチングを施して類似度に相当する距離右手パート時の距離、左手パート時の距離および左右両パート時の距離を算出し、算出した距離の中で最も類似度の大きい最小距離となるパートの音符データを、演奏データに該当する箇所と特定する。3距離算出処理の動作次に、図4を参照して距離算出処理の動作を説明する。上述した該当箇所特定処理のステップSB6図3参照を介して本処理が実行されると、CPU13は図4に図示するステップSC1に処理を進め、レジスタiHandに0をストアする。レジスタiHandの値は、曲データ中のパートを指定する。具体的には、0の場合に曲データ中の右手パートを指定し、、1の場合に曲データ中の左手パートを指定し、2の場合に曲データ中の左右両パートを指定する。以下、レジスタiHandの値をパート指定データiHandと称す。続いて、ステップSC2では、パート指定データiHandが3より小さいか否か、すなわち全てのパートについて距離算出し終えたかどうかを判断する。パート指定データiHandが3より小さく、全てのパートについて距離算出し終えていなければ、判断結果はYESとなり、ステップSC3を介してDPマッチング処理を実行する。DPマッチング処理では、後述するように、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ右手パート、左手パートおよび左右両パートについて類似度に相当する距離doDistを取得する。次いで、ステップSC4では、上記ステップSC3のDPマッチング処理にて今回取得した距離doDistが、前回取得した距離doDistMin初回時はステップSB1にてストアした所定値を用いるの95値より小さいか否かを判断する。つまり最小距離を更新したかどうかを判断する。最小距離を更新していなければ、判断結果はNOになり、後述のステップSC10に進む。一方、今回取得した距離doDistが、前回取得した距離doDistMinの95値より小さく、最小距離を更新すると、上記ステップSC4の判断結果はYESになり、ステップSC5に進む。ステップSC5では、距離doDistを距離doDistMinに更新する。また、ステップSC5では、ポインタmeorg[0]の値をポインタmeorgtar0に、ポインタmeorg[1]の値をポインタmeorgtar1にセットする。そして、ステップSC6に進むと、パート指定データiHandが0であるか否か、つまり距離算出対象が右手パートであるかどうかを判断する。右手パートならば、判断結果はYESになり、ステップSC8に進み、ポインタmeorgtar1をゼロリセットし、続くステップSC10では、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。これに対し、パート指定データiHandが0でない場合、つまり距離算出対象が右手パートでなければ、上記ステップSC6の判断結果はNOになり、ステップSC7に進み、パート指定データiHandが1であるか否か、つまり距離算出対象が左手パートであるかどうかを判断する。左手パートならば、判断結果はYESになり、ステップSC9に進み、ポインタmeorgtar0をゼロリセットし、続くステップSC10では、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。一方、距離算出対象が左手パートでない場合、つまり左右両パートであると、上記ステップSC7の判断結果はNOになり、ステップSC10に進み、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。そして、歩進されたパート指定データiHandが3より大きくなると、上記ステップSC2の判断結果はNOになり、本処理を終える。4DPマッチング処理の動作次に、図5~図6を参照してDPマッチング処理の動作を説明する。上述した距離算出処理のステップSC3図4参照を介して本処理が実行されると、CPU13は図5に図示するステップSD1に処理を進め、音符データを指定するポインタIに初期値0をセットする。次いで、ステップSD2では、ポインタmeorg[0]の値をポインタme0orgIに、ポインタmeorg[1]の値をポインタme1orgIにセットする。なお、ポインタmeorg[0]は曲データ中の右手パートの先頭の音符データを指定するポインタ値であり、ポインタmeorg[1]は、曲データ中の左手パートの先頭の音符データを指定するポインタ値である。続いて、ステップSD3では、ポインタIの歩進に応じて、全ての音符データを指定し終えたか否かを判断する。全ての音符データを指定し終えていなければ、判断結果はNOになり、ステップSD4に進み、パート指定データiHandが0、つまりDPマッチングの対象が右手パートであるかどうかを判断する。右手パートならば、判断結果はYESになり、ステップSD5に進み、ポインタme0orgIをポインタmeAorgIにセットした後、図6に図示するステップSD9後述するに処理を進める。DPマッチングの対象が右手パートでなければ、上記ステップSD4の判断結果はNOになり、ステップSD6に進む。ステップSD6では、パート指定データiHandが1、つまりDPマッチングの対象が左手パートであるかどうかを判断する。左手パートならば、判断結果はYESになり、ステップSD7に進み、ポインタme1orgIをポインタmeAorgIにセットした後、図6に図示するステップSD9後述するに処理を進める。DPマッチングの対象が左右両パートであると、上記ステップSD6の判断結果はNOになり、ステップSD8に進む。ステップSD8では、ポインタme0orgIで指定される音符データの発音時刻iTimeと、ポインタme1orgIで指定される音符データの発音時刻iTimeとを比較し、発音時刻の早い音符データを指定する方のポインタをポインタmeAorgIにセットした後、図6に図示するステップSD9後述するに処理を進める。そして、図9に図示するステップSD9に進むと、演奏データを指定するポインタJに初期値0をセットする。次いで、ステップSD10では、ポインタJの歩進に応じて、全ての演奏データを指定し終えたか否かを判断する。全ての演奏データを指定し終えていなければ、判断結果はNOになり、ステップSD11に進む。ステップSD11では、ポインタmeAorgIで指定される音符データのピッチiPitと、ポインタmeBusrJで指定される演奏データのピッチとを比較する。両データのピッチが一致すると、ステップSD12に進み、レジスタdoMissMatch[I][J]に一致値0.0をセットし、一方、両データのピッチが不一致ならば、ステップSD13に進み、レジスタdoMissMatch[I][J]に不一致値1.0をセットする。次いで、ステップSD14では、ポインタJをインクリメントして歩進させた後、上述のステップSD10に処理を戻す。以後、ポインタJを歩進させながら、上述したステップSD10~SD14を繰り返すことによって、ポインタmeAorgIで指定される音符データのピッチiPitに対し、全ての演奏データのピッチについて一致不一致を判別し、その判別結果を一致不一致マトリクスに相当する2次元のレジスタdoMissMatch[I][J]に保存する。ポインタJの歩進に応じて、全ての演奏データを指定し終えると、上記ステップSD10の判断結果がYESになり、ステップSD15に進み、ポインタIをインクリメントして歩進させた後、前述したステップSD3図5参照に処理を戻す。そして、ポインタIの歩進に応じて、全ての音符データを指定し終えると、前述したステップSD3の判断結果がYESになり、ステップSD16に進む。ステップSD16では、パート指定データiHandが0であるか否か、つまりDPマッチングの対象が右手パートであるかどうかを判断する。右手パートならば、判断結果はYESになり、ステップSD17に進み、ポインタme1orgをゼロリセットした後、ステップSD20に進む。一方、パート指定データiHandが0でない場合、つまりDPマッチングの対象が右手パートでなければ、上記ステップSD16の判断結果はNOになり、ステップSD18に進み、パート指定データiHandが1であるか否か、つまりDPマッチングが左手パートであるかどうかを判断する。左手パートならば、判断結果はYESになり、ステップSD19に進み、ポインタme0orgをゼロリセットした後、ステップSD20に進む。DPマッチングの対象が左右両パートの場合には、上記ステップSD16、SD18の各判断結果が何れもNOになり、ステップSD20に進む。そして、ステップSD20では、2次元のレジスタdoMissMatch[I][J]に保存された一致不一致マトリクスに基づく公知のDPマッチングによって、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ右手パート、左手パートおよび左右両パートについて類似度に相当する距離doDistを取得して本処理を終える。5演奏判定処理の動作次に、図7を参照して演奏判定処理の動作を説明する。前述したメインルーチンのステップSA5図2参照を介して本処理が実行されると、CPU13は図7に図示するステップSE1に処理を進め、音符データを指定するポインタIに初期値0をセットする。次いで、ステップSE2では、曲データ中の右手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタmeorgtar0の値を、ポインタme0orgIにセットすると共に、曲データ中の左手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタmeorgtar1の値を、ポインタme1orgIにセットする。続いて、ステップSE3では、ポインタIの歩進に応じて、全ての音符データを指定し終えたか否かを判断する。全ての音符データを指定し終えていなければ、判断結果はNOになり、ステップSE4に進む。ステップSE4では、ポインタme0orgIで指定される音符データの発音時刻iTimeと、ポインタme1orgIで指定される音符データの発音時刻iTimeとを比較し、発音時刻の早い音符データを指定する方のポインタをポインタmeAorgIにセットする。次いで、ステップSE5では、演奏データを指定するポインタJに初期値0をセットし、続くステップSE6では、ポインタJの歩進に応じて、全ての演奏データを指定し終えたか否かを判断する。全ての演奏データを指定し終えていなければ、判断結果はNOになり、次のステップSE7に進む。ステップSE7では、ポインタmeAorgIで指定される音符データのピッチiPitと、ポインタmeBusrJで指定される演奏データのピッチとを比較する。音符データのピッチと演奏データのピッチとが一致すると、ステップSE8に進み、ポインタmeAorgIで指定される音符データのクリアフラグiClearに1をセットし、正しく弾かれた音であること表す。そして、ステップSE9に進み、ポインタJをインクリメントして歩進させた後、上述のステップSE6に処理を戻す。以後、ポインタJを歩進させながら、上述したステップSE6~SE9を繰り返す。そして、ポインタJの歩進に応じて、全ての演奏データを指定し終えると、上記ステップSE6の判断結果がYESになり、ステップSE10に進み、ポインタIをインクリメントして歩進させた後、上述のステップSE3に処理を戻す。ポインタIの歩進に応じて、全ての音符データを指定し終えると、このステップSD3の判断結果がYESになり、本処理を終える。6達成度算出処理の動作次に、図8~図9を参照して達成度算出処理の動作を説明する。前述したメインルーチンのステップSA6図2参照を介して本処理が実行されると、CPU13は図8に図示するステップSF1に処理を進め、レジスタmeに先頭ノート曲頭の音の音符データをストアする。続いて、ステップSF2では、曲データ中の全ての音符データを読み出し終えたかどうかを判断する。全ての音符データを読み出し終えていなければ、判断結果はNOになり、ステップSF3に進む。ステップSF3では、レジスタmeにストアした音符データに含まれる演奏技術タイプiTechが0以上であるか否か、つまり演奏技術を要する音符であるかどうかを判断する。演奏技術タイプiTechが負の値の場合には、演奏技術を要しない音符なので、判断結果はNOになり、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。一方、レジスタmeにストアした音符データに含まれる演奏技術タイプiTechが0以上であり、演奏技術の種別を表す場合には、上記ステップSF3の判断結果がYESになり、ステップSF4に進む。ステップSF4では、演奏技術タイプiTech別に発生回数を計数するカウンタiFTTypeCnt[iTech]をインクリメントして歩進させる。次いで、ステップSF5では、レジスタmeにストアした音符データに含まれるクリアフラグiClearが1、すなわち正しく弾かれた音であるか否かを判断する。正しく弾かれていない音クリアフラグiClearが0であれば、判断結果はNOになり、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。これに対し、正しく弾かれた音ならば、上記ステップSF5の判断結果はYESになり、ステップSF6に進む。ステップSF6では、演奏技術タイプiTech別にクリア回数を計数するカウンタiFTTypeClear[iTech]をインクリメントして歩進させる。そして、この後、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。以後、全ての音符データを読み出し終えるまで、上述したステップSF2~SF7を繰り返すことによって、演奏技術タイプiTech別の発生回数がカウンタiFTTypeCnt[iTech]にて計数されると共に、演奏技術タイプiTech別のクリア回数がカウンタiFTTypeClear[iTech]にて計数される。そして、全ての音符データについて読み出し終えると、上記ステップSF2の判断結果がYESになり、図9に図示するステップSF8に進む。ステップSF8では、演奏技術の種別を指定するポインタIおよびレジスタaをゼロクリアする。なお、レジスタaには、後述するように演奏技量の向上具合を表す達成度がストアされる。以下、レジスタaを達成度aと称す。次いで、ステップSF9に進むと、全ての演奏技術の種別毎の達成度aを算出し終えたかどうかを判断する。算出し終えていなければ、判断結果はNOになり、ステップSF10に進む。ステップSF10~SF11では、クリア回数カウンタiFTTypeClear[I]を発生回数カウンタiFTTypeCnt[I]で除して得られる正解率に、ポインタIに応じて難易度テーブルiFTCost[I]から読み出される難易度を乗算することによって、ポインタIで指定される演奏技術の種別における達成度aを算出し、それをポインタIの歩進に応じて累算する。こうして、全ての演奏技術の種別毎の達成度aを算出し終えると、上記ステップSF10では、各演奏技術の種別毎に算出した達成度aが累算され、この結果、ユーザが演奏入力した曲について難易度を加味した達成度aが得られる。また、全ての演奏技術の種別について達成度aを算出し終えると、上記ステップSF9の判断結果がYESになり、ステップSF12に進む。ステップSF12では、パート指定データiHandが0であるか否か、つまり右手パートの演奏入力であるかどうかを判断する。右手パートの演奏入力であると、判断結果はYESになり、ステップSF17に進み、上記ステップSF10で得た達成度aに補正値0.5を乗算して右手パートの演奏入力の達成度aを算出して本処理を終える。一方、右手パートの演奏入力でなければ、上記ステップSF12の判断結果はNOになり、ステップSF14に進み、パート指定データiHandが1であるか否か、つまり左手パートの演奏入力であるかであるかどうかを判断する。左手パートの演奏入力であると、判断結果はYESになり、ステップSF15に進み、上記ステップSF10で得た達成度aに補正値0.4を乗算して左手パートの演奏入力の達成度aを算出して本処理を終える。なお、左右両パートの演奏入力であると、上記ステップSF12、SF14の各判断結果が何れもNOになり、この場合には上記ステップSF10で得た達成度aがそのまま左右両パートの演奏入力の達成度aとして本処理を終える。以上説明したように、本実施形態では、ユーザの演奏入力に応じて発生する演奏データが、手本模範演奏となる曲データ中のどの音符データに該当し、かつその該当音符データを右手、左手および両手の何れで弾いたのかを特定し、特定された音符データのピッチiPitと演奏データのピッチとを比較して当該音符データの音が正しく弾かれたかどうかを判定し、正しく弾かれた音符データのクリアフラグiClearを1にセットする。そして、曲データ中の全ての音符データに含まれる演奏技術タイプiTechから演奏技術の種別毎の発生回数およびクリア回数正しく弾かれた回数を抽出し、抽出した発生回数およびクリア回数から得られる演奏技術の種別毎の正解率クリア回数/発生回数に、演奏技術の種別に応じた難易度を乗算して演奏技術の種別毎の達成度を算出し、算出された各達成度を累算することで曲の難易度に応じた達成度aを取得するので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することが可能になる。また、上述した実施形態では、ユーザの演奏入力に応じて発生する演奏データが、手本模範演奏となる曲データ中のどの音符データに該当し、かつその該当音符データを右手、左手および両手の何れで弾いたのかをDPマッチングを用いて特定するようにしたので、曲データ中のどの音から弾いたとしても、演奏データに該当する音符データを特定することが出来る。なお、本実施形態では、演奏技術の種別毎の達成度を累算して得られる、曲の難易度に応じた達成度aに固定的な補正係数を乗じて右手パート、左手パートの各演奏入力における達成度を取得するようにしたが、これに限定されず、演奏入力した曲区間例えば小節単位などの難易度に応じて補正係数を可変させる態様とすることも可能であるし、ユーザの利き手が右手であるか左手であるかに応じてパート毎の補正係数を異ならせる態様としても良い。以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。付記[請求項1]曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段とを具備することを特徴とする演奏評価装置。[請求項2]前記特定手段は、演奏入力された演奏データに対し、前記記憶手段に記憶される複数の音符データの全てにDPマッチングを施して類似度に相当する距離を算出し、算出した距離の中で最も類似度の大きい最小距離となる音符データを演奏データに該当する音と特定することを特徴とする請求項1記載の演奏評価装置。[請求項3]前記特定手段は、前記記憶手段に記憶される複数の音符データが右手パート、左手パートおよび左右両パートに区分されている場合、演奏入力された演奏データに該当する音の音符データが右手パート、左手パートおよび左右両パートの何れで弾かれたかを特定することを特徴とする請求項1記載の演奏評価装置。[請求項4]前記達成度取得手段は、曲の難易度に応じた達成度に、それぞれ異なる補正係数を乗じて右手パートおよび左手パートにおける達成度を算出する達成度補正手段を更に備えることを特徴とする請求項1記載の演奏評価装置。[請求項5]演奏評価装置に搭載されるコンピュータに、曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定ステップと、前記特定ステップにて特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定ステップと、前記複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出ステップと、前記正解率算出ステップにて算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得ステップとを実行させることを特徴とするプログラム。