(57)【要約】【課題】どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を教示する演奏診断装置を実現する。【解決手段】演奏記録データベースＤＢに記録される各練習データから課題曲を形成する各音符毎の演奏練習回数および適正演奏回数を集計し、その適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する。また、演奏記録データベースＤＢに履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを各音符毎に集計し、各度数分布間の相関を表す１次近似関数を各音符毎に算出する。算出された１次近似関数から各音符毎の向上度を判定する。判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する。【選択図】  図８
2004246237.tif 000002
【特許請求の範囲】
【請求項１】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項２】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、
前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出手段と、
前記向上度算出手段によって算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定手段にて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項３】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
前記完成度解析手段によって算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項４】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、
前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出手段と、
前記向上度算出手段によって算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、
前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項５】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項６】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
を具備することを特徴とする演奏診断装置。
【請求項７】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【請求項８】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、
前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出ステップと、
前記向上度算出ステップにて算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定ステップにて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【請求項９】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
前記完成度解析ステップにて算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【請求項１０】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、
前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出ステップと、
前記向上度算出ステップにて算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、
前記向上度判定ステップにて判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【請求項１１】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録演奏記録データベースと、
前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【請求項１２】
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
をコンピュータで実行させることを特徴とする演奏診断プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演奏技術の完成度や向上度あるいは演奏ミスを犯し易い苦手箇所を分析して表示する演奏診断装置および演奏診断プログラムに関する。
【０００２】
【従来の技術】
適正な演奏であるか否かを診断する装置として、例えば特許文献１には、予め記憶された練習曲の音符情報を読み出して楽譜表示すると共に、練習曲の音符情報と演奏入力される音符情報とを比較し、両音符情報が一致する場合には対応する音符を第１の表示態様で楽譜表示し、一方、不一致である場合には対応する音符を第２の表示態様で楽譜表示することによって、適正に演奏された音符と誤った演奏が行われた音符とを識別する技術が開示されている。
【０００３】
【特許文献１】
特許公開平６−２３６１４１号公報
（特許第２６１１６２４号）
【０００４】
【発明が解決しようとする課題】
ところで、上述した従来の装置では、楽譜表示される各音符毎の表示態様を異ならせて正しく弾けたか否かを識別するだけなので、どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を判定してユーザに教示したり、演奏ミスを犯し易い苦手箇所を分析してユーザに報知することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を教示でき、しかも演奏ミスを犯し易い苦手箇所を報知することができる演奏診断装置および演奏診断プログラムを提供することを目的としている。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出手段と、前記向上度算出手段によって算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定手段にて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【０００７】
請求項３に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記完成度解析手段によって算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段とを具備することを特徴とする。
【０００８】
請求項４に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出手段と、前記向上度算出手段によって算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段とを具備することを特徴とする。
【０００９】
請求項５に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【００１０】
請求項６に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【００１１】
請求項７に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１２】
請求項８に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出ステップと、前記向上度算出ステップにて算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定ステップにて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１３】
請求項９に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記完成度解析ステップにて算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１４】
請求項１０に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数を、ノートデータ毎に算出する向上度算出ステップと、前記向上度算出ステップにて算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、前記向上度判定ステップにて判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１５】
請求項１１に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録演奏記録データベースと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１６】
請求項１２に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【００１７】
第１の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、この演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて楽譜表示される各音符を区別表示するので、演奏技術の完成度をユーザに教示することが可能になる。
【００１８】
第２の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計し、集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数をノートデータ毎に算出した後、算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する。そして、判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示するので、どれだけ演奏技術が向上しているのかをユーザに教示することが可能になる。
【００１９】
第３の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。算出された各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【００２０】
第４の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とをノートデータ毎に集計し、ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数をノートデータ毎に算出する。算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定し、判定された各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【００２１】
第５の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する。そして、演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、演奏パート別にどの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【００２２】
第６の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の演奏練習回数と、範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【００２３】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏診断装置が搭載されたＤＴＭ装置を実施例とし、これについて図面を参照して説明する。
Ａ．第１実施例の構成
（１）全体構成
図１は、本発明による第１実施例の構成を示すブロック図である。この図において、１０は構成要素１〜７からなるＤＴＭ（デクストップミュージック）装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。電子楽器２０は鍵盤を備え、この鍵盤を用いたユーザの演奏操作に応じて発生する演奏データをＭＩＤＩ出力する。ＤＴＭ装置１０では、電子楽器２０側から演奏データがＭＩＤＩ入力される毎に、手本となる課題曲のノートデータと比較して演奏判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースＤＢ（後述する）に記録する。また、ＤＴＭ装置１０では、演奏記録データベースＤＢに記録された練習データを分析してどの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を判定したり、演奏ミスを犯し易い苦手箇所を分析した結果を表示してユーザに報知する。
【００２４】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１は装置各部を制御するＣＰＵである。ＣＰＵ１は、電子楽器２０側から演奏データがＭＩＤＩ入力される毎に、課題曲のノートデータと比較して演奏判定し、その結果を課題曲のノートデータに付加した練習データを、後述する演奏記録データベースＤＢに記録する一方、演奏記録データベースＤＢに記録された練習データを分析して演奏技術の完成度や向上度あるいは演奏ミスを犯し易い苦手箇所を判定する。こうした本発明の要旨に係わるＣＰＵ１の処理動作は追って詳述する。
【００２５】
２はプログラムエリアおよびデータエリアを有するＲＯＭである。ＲＯＭ２のプログラムエリアには、後述するメインルーチン、演奏判定処理、完成度解析処理、向上度算出処理、向上度判定処理および苦手箇所抽出処理を実行させる各種制御プログラムが記憶される。
ＲＯＭ２のデータエリアには、手本となる課題曲のノートデータが複数曲分記憶され、その内から選曲指定される課題曲のノートデータが後述の演奏記録データベースＤＢに登録される。課題曲を形成する各音符に対応するノートデータは、曲頭からの経過時間で表現される発音タイミングＴｉｃｋ、音高を表すノートナンバＮｏｔｅ＃および左手／右手のいずれのパートであるかを識別するパート番号Ｔｒａｃｋから構成される。
【００２６】
３はワークエリアおよびデータエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには、ＣＰＵ１の各種演算に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータエリアには、演奏記録データベースＤＢおよび苦手箇所抽出スタックＳＴが設けられる。以下、図２および図３を参照して演奏記録データベースＤＢおよび苦手箇所抽出スタックＳＴの構成を説明する。
【００２７】
図２はＲＡＭ３のデータエリアに設けられる演奏記録データベースＤＢの構成を示す図である。演奏記録データベースＤＢは、演奏練習した課題曲の練習データｐｒａｃｔ＿ｄｂ［０］〜ｐｒａｃｔ＿ｄｂ［ｎ］を履歴記憶する。練習データｐｒａｃｔ＿ｄｂ［ｉ］は、練習属性（ｐｒａｃｔ＿ｄｂ［ｉ］［０］〜ｐｒａｃｔ＿ｄｂ［ｉ］［９］）、演奏結果（ｐｒａｃｔ＿ｄｂ［ｉ］［１０］〜ｐｒａｃｔ＿ｄｂ［ｉ］［１４］）およびノートデータＮｏｔｅｓ［ＮＯＴＥＳ］から構成される。
【００２８】
練習属性は、記録ＩＤを表すｐｒａｃｔｉｃｅＩＤ（ｐｒａｃｔ＿ｄｂ［ｉ］［０］）、課題曲中の練習開始時点（開始Ｔｉｃｋ）を表すＳｔａｒｔＭｅａｓ（ｐｒａｃｔ＿ｄｂ［ｉ］［１］）、課題曲中の練習終了時点（終了Ｔｉｃｋ）を表すＥｎｄＭｅａｓ（ｐｒａｃｔ＿ｄｂ［ｉ］［２］）、課題曲のテンポを表すＯｒｇＴｅｍｐ（ｐｒａｃｔ＿ｄｂ［ｉ］［３］）、課題曲中の練習開始時点（開始Ｔｉｃｋ）から練習終了時点（終了Ｔｉｃｋ）までの演奏練習範囲に含まれるノートイベント総数を表すＮｏｔｅＣｏｕｎｔ（ｐｒａｃｔ＿ｄｂ［ｉ］［４］）、演奏練習日時を表すＤａｔｅ（ｐｒａｃｔ＿ｄｂ［ｉ］［５］）、演奏モードを表すＬＳｔｙｌｅ（ｐｒａｃｔ＿ｄｂ［ｉ］［６］）、演奏エリアを表すＬＡｒｅａ（ｐｒａｃｔ＿ｄｂ［ｉ］［７］）、練習パート選択状況を表すＬＨａｎｄ（ｐｒａｃｔ＿ｄｂ［ｉ］［８］）および演奏練習時に設定されたテンポを表すＬＴｅｍｐｏ（ｐｒａｃｔ＿ｄｂ［ｉ］［９］）から構成される。
【００２９】
演奏結果は、正しく弾けたノートイベント総数を表すＲｓｌｔＯｋｅｙ（ｐｒａｃｔ＿ｄｂ［ｉ］［１０］）、演奏ミスしたノートイベント総数を表すＲｓｌｔＮＧ（ｐｒａｃｔ＿ｄｂ［ｉ］［１１］）、押鍵タイミングを逸したノートイベント総数を表すＲｓｌｔＭｉｓｓＴｏｕｃｈ（ｐｒａｃｔ＿ｄｂ［ｉ］［１２］）、正しい発音タイミングから一定時間以上ずれて発音されたノートイベント総数を表すＲｓｌｔＴｉｍｉｎｇ（ｐｒａｃｔ＿ｄｂ［ｉ］［１３］）および課題曲中の練習開始時点（開始Ｔｉｃｋ）から練習終了時点（終了Ｔｉｃｋ）までの演奏練習範囲の内で正しく弾けたノートイベントの割合を表すＲｓｌｔＣｌｅａｒＬｅｖｅｌ（ｐｒａｃｔ＿ｄｂ［ｉ］［１４］）から構成される。
【００３０】
ノートデータＮｏｔｅｓ［ＮＯＴＥＳ］は、ＲＯＭ２のデータエリアから転送されるデータであって、選択された課題曲を形成する各音符に対応したＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［ＮＯＴＥＳ］（ＮＯＴＥＳは音符数を表す）からなる。１つのノートデータＮｏｔｅｓ［ｉ］は、曲頭からの経過時間で表現される発音タイミングＴｉｃｋ（Ｎｏｔｅｓ［ｉ］［０］）、音高を表すノートナンバＮｏｔｅ＃（Ｎｏｔｅｓ［ｉ］［１］）、左手／右手のいずれのパートであるかを識別するパート番号Ｔｒａｃｋ（Ｎｏｔｅｓ［ｉ］［２］）および演奏入力される演奏データとの比較結果Ｒｅｓｕｌｔ（Ｎｏｔｅｓ［ｉ］［３］）から構成される。
【００３１】
なお、ノートデータＮｏｔｅｓ［ｉ］［３］の比較結果Ｒｅｓｕｌｔは、後述する演奏判定処理により「−１」〜「３」の整数値になる。各値が意味するところは次の通りである。「−１」は正しく弾けていないことを表す。「０」は演奏範囲に無いことを表す。「１」は正しく弾かれたことを表す。「２」は演奏データが課題曲のノートデータの発音タイミングより早く押鍵されたことを表す。「３」は演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたことを表す。
【００３２】
次に、図３を参照してＲＡＭ３のデータエリアに設けられる苦手箇所抽出スタックＳＴの構成を説明する。苦手箇所抽出スタックＳＴには、演奏ミスを犯し易い苦手箇所を表す苦手箇所データｗｅａｋｐｏｉｎｔ［０］〜［ｎ］が格納される。苦手箇所データｗｅａｋｐｏｉｎｔ［ｉ］は、課題曲中の苦手箇所の始点を表すＳｔａｒｔＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｉ］［０］）と、その終点を表すＥｎｄＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｉ］［１］）とから構成される。苦手箇所データｗｅａｋｐｏｉｎｔ［ｉ］は、後述する完成度解析処理にて得られる演奏完成度に基づき、課題曲のノートデータ中から演奏ミスを犯し易い苦手箇所を抽出して得られる。なお、上記苦手箇所の始点ＳｔａｒｔＭｅａｓおよび終点ＥｎｄＭｅａｓはそれぞれ曲頭からの経過時間で表現される。
【００３３】
次に、再び図１を参照して実施例の構成について説明を進める。図１において、ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、電子楽器２０側から送出される演奏データを取り込む。マウス５は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード６はキー入力操作に応じたイベントを発生する。表示部７はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて、演奏技術の完成度や向上度あるいは苦手箇所を画面表示する。
【００３４】
Ｂ．第１実施例の動作
次に、図４〜図１５を参照して第１実施例の動作について説明する。以下では、最初に全体動作としてメインルーチンの動作について説明し、続いてメインルーチンからコールされる演奏判定処理、完成度解析処理、向上度算出処理、向上度判定処理および苦手箇所抽出処理の各動作について述べる。
【００３５】
（１）メインルーチンの動作
ＤＴＭ装置１０において、メインルーチンが実行されると、ＣＰＵ１は図４に示すステップＳＡ１に処理を進め、メニュー画面（不図示）を表示部７に表示する。図示していないが、メニュー画面には練習開始アイコン、完成度解析アイコン、向上度解析アイコンおよび終了アイコンが設けられており、これらアイコンにマウス５のマウスカーソルをポインティングさせてクリック操作することで、クリック操作されたアイコンに対応するコマンド（イベント）が生成する。そして、ステップＳＡ２以降では、メニュー画面に表示される上記各アイコンのクリック操作に応じて発生するコマンド種に対応した処理を実行する。以下、発生するコマンド種別の処理動作を説明する。
【００３６】
ａ．練習開始コマンドが発生した場合
演奏練習を開始すべくユーザがメニュー画面に表示される練習開始アイコンにマウス５のマウスカーソルをポインティングさせてクリック操作したとする。そうすると、練習開始コマンドが発生し、これによりステップＳＡ２の判断結果が「ＹＥＳ」になり、ステップＳＡ３を介して演奏判定処理を実行する。演奏判定処理では、後述するように、ユーザの演奏操作に応じて電子楽器２０がＭＩＤＩ出力する演奏データを、ＭＩＤＩインタフェース４を介して取り込み、取り込んだ演奏データと課題曲のノートデータとを比較して適正な演奏であるか否かを判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースＤＢに記録する。
【００３７】
そして、ステップＳＡ４では、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、演奏判定結果した結果に基づき、楽譜表示された各音符が正しく弾かれたかどうかを区別して表示する表示処理を実行する。この後、ステップＳＡ５では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「ＹＥＳ」になり、上記ステップＳＡ１に処理を戻し、メニュー画面表示状態に復帰する。
【００３８】
ｂ．完成度解析コマンドが発生した場合
演奏技術の完成度を解析するためにユーザが完成度解析アイコンをクリック操作したとする。そうすると、完成度解析コマンドが発生し、これによりステップＳＡ６の判断結果が「ＹＥＳ」となり、ステップＳＡ７に進み、完成度解析処理を実行する。後述するように、完成度解析処理では、演奏記録データベースＤＢに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して課題曲を形成するノートデータ毎の演奏完成度、つまり音符毎に正しく弾けた割合を算出する。この後、ステップＳＡ４に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、楽譜表示された各音符毎の演奏完成度を表示する表示処理を実行し、続くステップＳＡ５では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「ＹＥＳ」になり、上記ステップＳＡ１に処理を戻し、メニュー画面表示状態に復帰する。
【００３９】
ｃ．向上度解析コマンドが発生した場合
演奏技術の向上度を解析するためにユーザが向上度解析アイコンをクリック操作したとする。そうすると、向上度解析コマンドが発生し、これによりステップＳＡ８の判断結果が「ＹＥＳ」となり、ステップＳＡ９，ＳＡ１０に進み、向上度算出処理および向上度判定処理を実行し、演奏記録データベースＤＢに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して演奏向上度を算出して判定する。この後、ステップＳＡ４に進み、上記ステップＳＡ１０にて判定された演奏向上度を表示する表示処理を実行し、続くステップＳＡ５では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「ＹＥＳ」になり、上記ステップＳＡ１に処理を戻し、メニュー画面表示状態に復帰する。
【００４０】
ｃ．苦手箇所解析コマンドが発生した場合
演奏ミスが生じ易い苦手箇所を解析するためにユーザが苦手箇所解析アイコンをクリック操作したとする。そうすると、苦手箇所解析コマンドが発生し、これによりステップＳＡ１１の判断結果が「ＹＥＳ」となり、ステップＳＡ１２に進み、演奏記録データベースＤＢに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して演奏ミスが生じ易い苦手箇所を抽出する苦手箇所抽出処理（後述する）を実行する。次いで、ステップＳＡ４に進み、上記ステップＳＡ１２にて抽出された苦手箇所を表示する表示処理を実行し、続くステップＳＡ５では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「ＹＥＳ」になり、上記ステップＳＡ１に処理を戻し、メニュー画面表示状態に復帰する。
【００４１】
ｄ．終了コマンドが発生した場合
メインルーチンを完了させるべく終了アイコンをクリック操作すると、終了コマンドが発生し、これによりステップＳＡ１３の判断結果が「ＹＥＳ」となり、メインルーチンの処理を終了させる。
【００４２】
（３）演奏判定処理の動作
次に、図５を参照して演奏判定処理の動作を説明する。上述したステップＳＡ３（図４参照）を介して本処理が実行されると、ＣＰＵ１は図５のステップＳＢ１に進み、準備処理を行う。準備処理では、ユーザ操作に従ってＲＯＭ２のデータエリアに格納される複数の課題曲のノートデータの内から演奏練習する課題曲のノートデータを選曲し、選曲された課題曲のノートデータを、ＲＡＭ３のデータエリアに設けられた演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］のＮｏｔｅｓ［ＮＯＴＥＳ］に転送する。ここで、ポインタｉＰＩＤは演奏記録データベースＤＢの空きエリアを表す。
【００４３】
また、準備処理では、演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］に格納された課題曲のノートデータを楽譜表示する楽譜表示画面（不図示）を発生して表示部７に画面表示する。楽譜表示画面は、クリック操作に応じて演奏停止イベントを発生する演奏停止アイコンや、表示された楽譜上で練習開始ポイントをユーザ操作で指定する機能を有する。さらに準備処理では、楽譜表示画面においてユーザが行う練習開始ポイント指定に従い、指定された練習開始ポイントの開始ＴｉｃｋをレジスタＳｔａｒｔＭｅａｓにストアする。なお、ここで言う開始Ｔｉｃｋとは、曲頭からの経過時間を表す。したがって、曲頭を練習開始ポイントに指定した場合には、開始Ｔｉｃｋは「０」となる。
【００４４】
こうして、演奏判定に必要な準備が整うと、ＣＰＵ１はステップＳＢ２に進み、レジスタｉＯＫｅｙ、レジスタｉＭｉｓＴｏｕｃｈおよびレジスタｉＴｉｍｉｎｇＭｉｓｓをそれぞれゼロリセットする。なお、これらレジスタに格納される値が意図するところについては追って述べる。
次いで、ステップＳＢ３以降では、ＭＩＤＩ入力イベントおよび演奏停止イベントの有無に応じた処理を実行する。以下、イベント無しの場合、ＭＩＤＩ入力イベントが有る場合および演奏停止イベントが有る場合に分けて説明を進める。
【００４５】
ａ．イベント無しの場合
ＭＩＤＩ入力イベントや演奏停止イベントのいずれも無い場合には、ステップＳＢ３、ＳＢ４の各判断結果が「ＮＯ」となり、ステップＳＢ３、ＳＢ４を繰り返してイベント待ちの状態になる。
【００４６】
ｂ．ＭＩＤＩ入力イベントが有る場合
ユーザが電子楽器２０の鍵盤を弾いて演奏練習を始めると、電子楽器２０は演奏操作に応じて発生する演奏データをＤＴＭ装置１０側にＭＩＤＩ出力する。これに応じてＭＩＤＩ入力イベントが発生すると、ステップＳＢ３の判断結果は「ＹＥＳ」になり、ステップＳＢ５に進む。ステップＳＢ５では、ＭＩＤＩ入力イベントが発生したイベントタイミングをレジスタＴｉｃｋＴｍｐにストアする。本実施例では、図示していないが、一定周期毎に実行されるタイマ割込みによって曲テンポに対応したタイマクロックを開始Ｔｉｃｋに累算し、これにて曲先頭からの経過時間で表現されるイベントタイミングを計時するようになっている。続いて、ステップＳＢ６では、レジスタＴｉｃｋＴｍｐにストアされたイベントタイミングを参照し、そのイベントタイミングの近傍であって押鍵ノート（演奏データのノートナンバ）と同じノートオンイベントが演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］に格納された課題曲のノートデータＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［ＮＯＴＥＳ］に存在するか否かを判断する。
【００４７】
該当するノートオンイベントがノートデータＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［ＮＯＴＥＳ］に存在しない場合には、上記ステップＳＢ６の判断結果は「ＮＯ」になり、ステップＳＢ７に進み、押鍵ミス回数をカウントするレジスタｉＭｉｓＴｏｕｃｈをインクリメントして歩進させた後、ステップＳＢ３に処理を戻す。一方、該当するノートオンイベントが存在すると、上記ステップＳＢ６の判断結果は「ＹＥＳ」になり、そのノートオンイベントを含むノートデータを指定するポインタｉＮｏｔｅを設定してステップＳＢ８に進む。ステップＳＢ８では、該当するノートオンイベントに対応するノートデータＮｏｔｅｓ［ｉＮｏｔｅ］の発音タイミングＴｉｃｋ（Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］）と、レジスタＴｉｃｋＴｍｐにストアされたイベントタイミングとの差分が許容誤差ｅｒＯｆｆｓｅｔに収まっているか否か、つまり適正なタイミングで演奏しているかどうかを判断する。
【００４８】
適正なタイミングで演奏していると、判断結果は「ＹＥＳ」になり、ステップＳＢ９に進み、演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］の比較結果Ｒｅｓｕｌｔに「１」をストアする。これによりノートデータＮｏｔｅｓ［ｉＮｏｔｅ］は正しく弾かれたことを表す。そして、適正押鍵回数をカウントするレジスタｉＯｋｅｙをインクリメントして歩進させた後、前述のステップＳＢ３に処理を戻す。
【００４９】
これに対し、適正なタイミングで演奏できなかった場合には、上記ステップＳＢ８の判断結果が「ＮＯ」となり、ステップＳＢ１０に進む。ステップＳＢ１０では、レジスタＴｉｃｋＴｍｐにストアされたイベントタイミングが、対応するノートデータＮｏｔｅｓ［ｉＮｏｔｅ］の発音タイミングＴｉｃｋ（Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］）より小さいか否か、つまりノートデータの発音タイミングより早いタイミングで押鍵したかどうかを判断する。
【００５０】
ノートデータの発音タイミングより早いタイミングで押鍵した場合には、判断結果が「ＹＥＳ」になり、ステップＳＢ１１に進み、演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］の比較結果Ｒｅｓｕｌｔに「２」をストアする。これによりノートデータＮｏｔｅｓ［ｉＮｏｔｅ］は早いタイミングで押鍵されたことを表す。そして、ステップＳＢ１２に進み、押鍵タイミングミス回数をカウントするレジスタｉＴｉｍｉｎｇＭｉｓｓをインクリメントして歩進させた後、前述のステップＳＢ３に処理を戻す。
【００５１】
一方、ノートデータの発音タイミングより遅いタイミングで押鍵した場合には、上記ステップＳＢ１０の判断結果が「ＮＯ」になり、ステップＳＢ１３に進み、演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］の比較結果Ｒｅｓｕｌｔに「３」をストアする。これによりノートデータＮｏｔｅｓ［ｉＮｏｔｅ］は遅いタイミングで押鍵されたことを表す。そして、ステップＳＢ１２に進み、押鍵タイミングミス回数をカウントするレジスタｉＴｉｍｉｎｇＭｉｓｓをインクリメントして歩進させた後、前述のステップＳＢ３に処理を戻す。
【００５２】
ｃ．演奏停止イベントが有る場合
演奏練習を終えるためユーザが楽譜表示画面に配設される演奏停止アイコンをクリック操作したとする。そうすると、演奏停止イベントが発生してステップＳＢ４の判断結果が「ＹＥＳ」になり、ステップＳＢ１５に進む。ステップＳＢ１５では、演奏停止イベントが発生した時点の停止ＴｉｃｋをレジスタＥｎｄＭｅａｓにストアする。
次いで、ステップＳＢ１５では、演奏判定した結果を演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］に記録する。すなわち、レジスタＳｔａｒｔＭｅａｓに格納される開始ＴｉｃｋやレジスタＥｎｄＭｅａｓに格納される停止Ｔｉｃｋ等、練習属性を表す各種データを演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［０］〜ｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［９］にストアすると共に、レジスタｉＯｋｅｙに格納される適正押鍵回数をｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［１０］のＲｓｌｔＯｋｅｙとしてストアする。
【００５３】
また、レジスタｉＭｉｓＴｏｕｃｈに格納される押鍵ミス回数とレジスタｉＴｉｍｉｎｇＭｉｓｓに格納される押鍵タイミングミス回数との和をｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［１１］のＲｓｌｔＮＧとしてストアする。レジスタｉＭｉｓＴｏｕｃｈに格納される押鍵ミス回数をｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［１２］のＲｓｌｔＭｉｓｓＴｏｕｃｈとしてストアする。レジスタｉＴｉｍｉｎｇＭｉｓｓに格納される押鍵タイミングミス回数をｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［１３］のＲｓｌｔＴｉｍｉｎｇとしてストアする。さらに上記ＲｓｌｔＯｋｅｙとＲｓｌｔＮＧとから正しく弾けたノートイベントの割合を表すＲｓｌｔＣｌｅａｒＬｅｖｅｌを算出してｐｒａｃｔ＿ｄｂ［ｉＰＩＤ］［１４］にストアする。
【００５４】
このように、演奏判定処理では、演奏練習する課題曲を選曲し、選曲された課題曲の練習開始ポイントを楽譜上で指定して演奏練習を始めると、ユーザの鍵盤操作に応じて発生する演奏データを取り込むＭＩＤＩ入力イベントが発生する毎に、その演奏データと同じノートオンイベントを持つ課題曲のノートデータの有無を判断して無ければ押鍵ミスと見做し、一方、該当するノートデータが有れば適正な押鍵タイミングであるか否かを判断する。適正な押鍵タイミングの時には正しく弾かれた旨を表す比較結果Ｒｅｓｕｌｔを該当ノートデータに付与し、適正な押鍵タイミングでなければ、適正タイミングより早い押鍵あるいは遅い押鍵である旨を表す比較結果Ｒｅｓｕｌｔを該当ノートデータに付与するようになっている。
【００５５】
さて、このようにして、課題曲のノートデータと比較して演奏判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースＤＢに記録し終えると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、演奏判定結果に基づき楽譜表示された各音符が正しく弾かれたかどうかを区別して表示する。これにより、例えば図６に図示する表示画面の一例のように、正しく弾かれた音符を○印、正しく弾かれていない音符を×印で区別表示する結果、どの程度演奏操作を習得しているかをユーザに教示し得るようになっている。
【００５６】
（４）完成度解析処理の動作
次に、図７を参照して完成度解析処理の動作を説明する。前述したメインルーチンのステップＳＡ７（図４参照）を介して本処理が実行されると、ＣＰＵ１は図７のステップＳＣ１に進み、完成度解析に必要な条件を設定するＧＵＩ画面（不図示）を表示部７に表示する。ＧＵＩ画面では、演奏記録データベースＤＢに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置ｉＬＵＳｔａｔおよび検索数ｉＬＵＴｉｍｅをユーザ操作により入力する。そして、入力されると、ステップＳＣ２に進み、ポインタｉＤＢに検索開始位置ｉＬＵＳｔａｔをセットすると共に、各レジスタ（ｉＡｎｌＯｒｇＣｎｔ［ＮＯＴＥＳ］、ｉＡｎｌＯＫＣｎｔ［ＮＯＴＥＳ］およびｉＡｎｌＲａｔｉｏ［ＮＯＴＥＳ］）を初期化する。これらレジスタが意図するところは追って述べる。
【００５７】
次いで、ステップＳＣ３では、ポインタｉＤＢから検索開始位置ｉＬＵＳｔａｔを差し引いた値が検索数ｉＬＵＴｉｍｅ−１より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「ＹＥＳ」になり、次のステップＳＣ４に進む。ステップＳＣ４では、ポインタｉＤＢに対応する演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＤＢ］［０］が空き領域を表すデータＮＵＬＬであるか否かを判断する。空き領域を表すデータＮＵＬＬであると、検索対象となる練習データが無い為、判断結果は「ＹＥＳ」になり、後述するステップＳＣ１３に進む。一方、空き領域を表すデータＮＵＬＬでなければ、検索対象となる練習データが存在するので、判断結果は「ＮＯ」となり、ステップＳＣ５に進む。
【００５８】
ステップＳＣ５では、検索対象となる練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出すためのポインタｉＮｏｔｅをゼロリセットする。続いて、ステップＳＣ６では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出し終えたかどうかを判断する。
【００５９】
読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＣ７に進む。ステップＳＣ７では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］（発音タイミングＴｉｃｋ）が、ｐａｒｃｔ＿ｄｂ［ｉＤＢ］［１］（開始Ｔｉｃｋを表すＳｔａｒｔＭｅａｓ）からｐａｒｃｔ＿ｄｂ［ｉＤＢ］［２］（終了Ｔｉｃｋを表すＥｎｄＭｅａｓ）の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「ＮＯ」となり、ステップＳＣ１１に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＣ６に処理を戻す。
【００６０】
一方、演奏練習したノートデータであると、判断結果が「ＹＥＳ」になり、次のステップＳＣ８に進み、演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］をインクリメントして歩進させる。そして、ステップＳＣ９では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］（比較結果Ｒｅｓｕｌｔ）が「１」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。正しく弾けたノートデータであると、判断結果は「ＹＥＳ」になり、次のステップＳＣ１０に進み、適正演奏回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］をインクリメントして歩進させる。これに対し、正しく弾けたノートデータでなければ、判断結果が「ＮＯ」になり、ステップＳＣ１１に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＣ６に処理を戻す。
【００６１】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＣ６〜ＳＣ１１を繰り返し、ポインタｉＤＢで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］を歩進させ、さらにそのノートデータが適正演奏されたものであると、適正演奏回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］を歩進させるようになっている。
【００６２】
そして、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＣ６の判断結果が「ＹＥＳ」になり、ステップＳＣ１２に進み、ポインタｉＤＢをインクリメントして歩進させた後、前述のステップＳＣ３に処理を戻す。
以後、同一課題曲の練習データを演奏記録データベースＤＢから検索し終えるまでステップＳＣ３〜ＳＣ１２を繰り返す。これにより、課題曲を形成する各音符毎の演奏練習回数および適正演奏回数が集計される。そして、検索し終えると、ステップＳＣ３の判断結果が「ＮＯ」となり、ステップＳＣ１３に進む。
【００６３】
ステップＳＣ１３以降では、上記ステップＳＣ３〜ＳＣ１２によって集計された各音符毎の演奏練習回数および適正演奏回数に基づき演奏完成度を算出する。すなわち、ステップＳＣ１３では、演奏練習回数を格納するレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］および適正演奏回数を格納するレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］の内容を読み出すためのポインタｉＮｏｔｅをゼロリセットし、続くステップＳＣ１４では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＣ１５に進む。ステップＳＣ１５では、ポインタｉＮｏｔｅに応じてレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］から読み出される値が「０」、つまりポインタｉＮｏｔｅに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。
【００６４】
一度も演奏練習されていない状態であると、判断結果は「ＹＥＳ」となり、この場合、演奏完成度を算出出来ないので、ステップＳＣ１６に進み、ポインタｉＮｏｔｅを歩進させた後、ステップＳＣ１４に戻る。
一方、そうでなければ、判断結果が「ＮＯ」となり、ステップＳＣ１７に進み、レジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］とレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］との比に「１００」を乗じて演奏完成度（％表示）を算出してレジスタｉＡｎｌＲａｔｉｏ［ｉＮｏｔｅ］にストアする。この後、ステップＳＣ１６にてポインタｉＮｏｔｅを歩進させてからステップＳＣ１４に戻る。
【００６５】
以後、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＣ１４〜ＳＣ１７を繰り返し、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＣ１４の判断結果が「ＹＥＳ」となり、本処理を完了する。これにより、適正演奏回数と演奏練習回数との比で定まる演奏完成度が課題曲の各音符毎に得られる。
【００６６】
さて、こうして課題曲の各音符毎の演奏完成度が算出されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に処理を進め、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示すると共に、各音符毎の演奏完成度を、例えば図８に図示する表示画面の一例のように、完成度が０％〜３０％未満の音符を×印、３０％以上〜５０％未満の音符を△印、５０％以上〜７０％未満の音符を▽印、７０％以上〜９０％未満の音符を○印、９０％以上〜１００％の音符を◎印で区別表示する結果、どの程度演奏操作を習得しているかを表す演奏技術の完成度をユーザに教示することができる。
【００６７】
（５）向上度算出処理の動作
次に、図９〜図１０を参照して向上度算出処理の動作を説明する。なお、向上度算出処理では、同一の課題曲について複数回演奏練習して得た練習データが演奏記録データベースＤＢに履歴記録されていることを前提とする。
前述したメインルーチンのステップＳＡ９（図４参照）を介して本処理が実行されると、ＣＰＵ１は図９のステップＳＤ１に進み、各種レジスタ・ポインタを初期化する。続いて、ステップＳＤ２では、ポインタｉＤＢで指定される演奏記録データベースＤＢ中の練習データｐｒａｃｔ＿ｄｂ［ｉＤＢ］［０］が空き領域を表すデータＮＵＬＬであるか否かを判断する。空き領域を表すデータＮＵＬＬであると、検索対象となる練習データが無い為、判断結果は「ＹＥＳ」になり、後述するステップＳＤ１０（図１０参照）に進む。一方、空き領域を表すデータＮＵＬＬでなければ、検索対象となる練習データが存在するので、判断結果は「ＮＯ」となり、次のステップＳＤ３に進む。
【００６８】
ステップＳＤ３では、ポインタｉＮｏｔｅをゼロリセットする。次いで、ステップＳＤ４では、ポインタｉＮｏｔｅの値が、ポインタｉＤＢで指定される練習データに含まれるノートデータ数ＮＯＴＥＳを超えたか否か、すなわちノートデータを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、次のステップＳＤ５に進む。
ステップＳＤ５では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］（発音タイミングＴｉｃｋ）が、ｐａｒｃｔ＿ｄｂ［ｉＤＢ］［１］（開始Ｔｉｃｋを表すＳｔａｒｔＭｅａｓ）からｐａｒｃｔ＿ｄｂ［ｉＤＢ］［２］（終了Ｔｉｃｋを表すＥｎｄＭｅａｓ）の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「ＮＯ」となり、ステップＳＤ８に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＤ４に処理を戻す。
【００６９】
一方、演奏練習したノートデータであると、判断結果が「ＹＥＳ」になり、次のステップＳＤ６に進み、演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＣｎｔ［ｉＮｏｔｅ］をインクリメントして歩進させると共に、練習データ数をポインタｉＮｏｔｅ毎にカウントするレジスタｓｕｍ＿Ｔｉｍｅ［ｉＮｏｔｅ］にポインタｉＤＢの値を加算する。次に、ステップＳＤ７では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］（比較結果Ｒｅｓｕｌｔ）に応じて線形近似パラメータを更新する。
【００７０】
すなわち、比較結果Ｒｅｓｕｌｔが正しく弾かれた旨を表す値「１」の場合には、レジスタｒｓｌｔ＿ｔｍｐに「１」をストアする。比較結果Ｒｅｓｕｌｔが正しく弾けていないことを表す値「−１」の場合には、レジスタｒｓｌｔ＿ｔｍｐに「０」をストアする。比較結果Ｒｅｓｕｌｔが早く押鍵されたことを表す値「２」もくしは遅く押鍵されたことを表す値「３」の場合には、レジスタｒｓｌｔ＿ｔｍｐに「０．５」をストアする。
そして、レジスタｒｓｌｔ＿ｔｍｐの値をレジスタｓｕｍ＿Ｒｓｌｔ［ｉＮｏｔｅ］に加算する。また、レジスタｒｓｌｔ＿ｔｍｐの自乗値をレジスタｓｕｍ＿Ｒｓｑ［ｉＮｏｔｅ］にストアする。さらに、レジスタｒｓｌｔ＿ｔｍｐの値にポインタｉＤＢを乗算した値をレジスタｓｕｍ＿ＲＴ［ｉＮｏｔｅ］にストアする。
【００７１】
ここで、線形近似パラメータとなるレジスタｓｕｍ＿Ｒｓｌｔ［ｉＮｏｔｅ］、レジスタｓｕｍ＿Ｔｉｍｅ［ｉＮｏｔｅ］、レジスタｓｕｍ＿ＲＴ［ｉＮｏｔｅ］およびレジスタｓｕｍ＿Ｒｓｑ［ｉＮｏｔｅ］の各値が意図するところを説明する。
向上度判定処理では演奏記録データベースＤＢに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出する。上記レジスタｒｓｌｔ＿ｔｍｐに格納される演奏結果は、正しく弾かれていない場合に「０」、早く押鍵もしくは遅く押鍵された場合に「０．５」、正しく弾かれた場合に「１」となる。そうした値の演奏結果をｘ軸に、この演奏結果に対応する練習回数をｙ軸に割り当て、例えば図１３（ロ）に図示するように演奏結果毎の度数分布を得る。
【００７２】
この度数分布では、正しく弾かれていない場合の値「０」に対応する練習回数、早く押鍵もしくは遅く押鍵された場合の値「０．５」に対応する練習回数および正しく弾かれた場合の値「１」に対応する練習回数を、順次積み上げる形で表現する。そのように表現された各度数分布間の相関を得るため、最小自乗法にて各度数分布を一次近似する。最小自乗法によれば、１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂは、次式（１）および（２）で表現される。
ａ＝ｎΣｘｉｙｉ−ΣｘｉΣｙｉ／ｎΣｘｉ２−（Σｘｉ）２  …（１）
ｂ＝Σｘｉ２Σｙｉ−ΣｘｉΣｘｉｙｉ／ｎΣｘｉ２−（Σｘｉ）２  …（２）
ここで、ｎはデータ数、ｘｉおよびｙｉはｉ番目の演奏結果、練習回数を表す。そして、上記（１），（２）式におけるデータ数ｎがレジスタｉＡｎｌＣｎｔ［ｉＮｏｔｅ］に、Σｘｉｙｉがレジスタｓｕｍ＿ＲＴ［ｉＮｏｔｅ］に、Σｘｉがレジスタｓｕｍ＿Ｒｓｌｔ［ｉＮｏｔｅ］に、Σｙｉがレジスタｓｕｍ＿Ｔｉｍｅ［ｉＮｏｔｅ］に、Σｘｉ２がレジスタｓｕｍ＿Ｒｓｑ［ｉＮｏｔｅ］にそれぞれ対応している。
【００７３】
こうした線形近似パラメータが上記ステップＳＤ６、ＳＤ７にて更新されると、ステップＳＤ８に処理を進め、ポインタｉＮｏｔｅをインクリメントして歩進させた後、上述のステップＳＤ４に処理を戻す。
以後、ポインタｉＤＢで指定される練習データに含まれるノートデータを読み出し終えるまでステップＳＤ４〜ＳＤ８を繰り返して線形近似パラメータを更新する。そして、ノートデータを読み出し終えると、ステップＳＤ４の判断結果が「ＹＥＳ」となり、ステップＳＤ９に進み、ポインタｉＤＢをインクリメントして歩進させる。この後、ステップＳＤ２に処理を戻し、演奏記録データベースＤＢに記憶される練習データ群を全て読み出したかどうかを判断し、全て読み出し終えると、判断結果が「ＹＥＳ」になり、図１０に示すステップＳＤ１０に処理を進める。
【００７４】
ステップＳＤ１０〜ＳＤ１４では、演奏記録データベースＤＢに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂを、上述の式（１），（２）により算出する。
すなわち、まずステップＳＤ１０では、ポインタｉＮｏｔｅをゼロリセットし、続くステップＳＤ１１では、ノートデータ数ＮＯＴＥＳ分の線形近似パラメータを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、次のステップＳＤ１２に進む。ステップＳＤ１２では、ポインタｉＮｏｔｅに対応したレジスタｉＡｎｌＣｎｔ［ｉＮｏｔｅ］の値（練習回数）が「０」、つまりポインタｉＮｏｔｅで指定される課題曲の音符が練習されているかどうかを判断する。練習されておらず、練習回数が「０」であると、判断結果は「ＮＯ」となり、後述するステップＳＤ１４に進む。
【００７５】
一方、練習されている場合には、判断結果が「ＮＯ」になり、ステップＳＤ１３に進み、ポインタｉＮｏｔｅに対応した線形近似パラメータを前述の式（１），（２）に代入して最小自乗法による１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂを算出し、算出した傾きａをレジスタｇｒａｄ［ｉＮｏｔｅ］に、算出した切片ｂをレジスタｒｏｏｔ［ｉＮｏｔｅ］にストアする。次いで、ステップＳＤ１４に進み、ポインタｉＮｏｔｅをインクリメントして歩進させた後、上述のステップＳＤ１１に処理を戻す。
【００７６】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳに達するまでステップＳＤ１１〜ＳＤ１４を繰り返し、ポインタｉＮｏｔｅに対応した線形近似パラメータに基づき課題曲の各音符毎の１次近似関数の傾きａおよび切片ｂを算出してレジスタｇｒａｄ［ｉＮｏｔｅ］、レジスタｒｏｏｔ［ｉＮｏｔｅ］にストアする。そして、ノートデータ数ＮＯＴＥＳ分の線形近似パラメータを読み出し終えると、ステップＳＤ１１の判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００７７】
このように、向上度算出処理では、演奏記録データベースＤＢに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂを、課題曲の各音符毎に算出するようにしている。
【００７８】
（６）向上度判定処理の動作
次に、図１１〜図１２を参照して向上度判定処理の動作を説明する。前述したメインルーチンのステップＳＡ１０（図４参照）を介して本処理が実行されると、ＣＰＵ１は図１１のステップＳＥ１に進み、課題曲の各音符毎の向上度判定結果を保持するレジスタｉＰｒｏｇｒｅｓｓ［ＮＯＴＥＳ］をゼロリセットする。次に、ステップＳＥ２では、ポインタｉＮｏｔｅをゼロリセットし、続くステップＳＥ３では、ノートデータ数ＮＯＴＥＳ分の向上度を判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＥ４に進む。ステップＳＥ４では、上述の向上度算出処理にて得たレジスタｉＡｎｌＣｎｔ［ｉＮｏｔｅ］の値（練習回数）が「０」、つまりポインタｉＮｏｔｅで指定されるノートデータが練習されているかどうかを判断する。ポインタｉＮｏｔｅで指定されるノートデータが練習されていない場合には、判断結果が「ＹＥＳ」になり、ステップＳＥ９にてポインタｉＮｏｔｅを歩進させてから再びステップＳＥ３に処理を戻す。
【００７９】
一方、ポインタｉＮｏｔｅで指定されるノートデータが練習されていると、上記ステップＳＥ４の判断結果が「ＮＯ」になり、ステップＳＥ５に進む。ステップＳＥ５では、上述の向上度算出処理で求めた線形近似パラメータを、ｎΣｘｉ２−（Σｘｉ）２なる条件式（３）に代入したときの値が「０」か否かを判断する。この条件式（３）は、１次近似関数ｙ＝ａｘ＋ｂの傾きａを算出する式（１）の分母に相当するものである。したがって、このステップＳＥ５では線形近似の可否を判断することになる。以下、線形近似することが出来ない場合と出来る場合とに分けて動作説明を進める。
【００８０】
ａ．線形近似することが出来ない場合
この場合、ステップＳＥ５の判断結果が「ＹＥＳ」になり、次のステップＳＥ６に進む。ステップＳＥ６では、上述の向上度算出処理で求めた線形近似パラメータを、Σｘｉ／ｎなる条件式（４）に代入したときの値が「１」か否かを判断する。条件式（４）は演奏結果の平均値を表しており、これが「１」になるケースは演奏ミスがなく全て正しく弾けたことを表す。
従って、演奏ミスがなく全て正しく弾けた音符であると、ステップＳＥ６の判断結果は「ＹＥＳ」になり、ステップＳＥ７に進み、演奏ミスがなく全て正しく弾けた完了期を表す判定値「５」をレジスタｉＰｒｏｇｒｅｓｓにストアした後、ステップＳＥ９に進み、ポインタｉＮｏｔｅを歩進させてから前述のステップＳＥ３に処理を戻す。
【００８１】
一方、条件式（４）の値が「１」でない場合、つまり図１３（イ）に図示するように、適正タイミングより早く押鍵したり遅く押鍵した場合の演奏結果「０．５」の頻度分布しか存在しない場合には、ステップＳＥ６の判断結果が「ＮＯ」になり、ステップＳＥ８に進み、練習初期段階にある旨を表す判定値「１」をレジスタｉＰｒｏｇｒｅｓｓにストアする。この後、ステップＳＥ９にてポインタｉＮｏｔｅを歩進させてから前述のステップＳＥ３に処理を戻す。
【００８２】
ｂ．線形近似することが出来る場合
この場合、上述したステップＳＥ５の判断結果が「ＮＯ」になり、図１２に示すステップＳＥ１０以降に進み、上述の向上度算出処理で求めた線形近似パラメータ、一次近似関数の傾きａ（レジスタｇｒａｄ［ｉＮｏｔｅ］）および切片ｂ（レジスタｒｏｏｔ［ｉＮｏｔｅ］）に基づき向上度を判定する。まずステップＳＥ１０では、下記条件式（５）を満たすか否かを判断する。
ｇｒａｄ［ｉＮｏｔｅ］＞ＰａｒａｍＥｒｒ＋ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］×２／３  ａｎｄ  ｒｏｏｔ［ｉＮｏｔｅ］＞ＰａｒａｍＥｒｒ＋ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］／６  …（５）
ここで、ｇｒａｄ［ｉＮｏｔｅ］は傾きａ、ＰａｒａｍＥｒｒは許容誤差、ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］は練習回数（Ｎｐｒａｃｔと記す）、ｒｏｏｔ［ｉＮｏｔｅ］は切片ｂを表す。
【００８３】
したがって、条件式（５）はポインタｉＮｏｔｅで指定されるノートデータについて得られた一次近似関数の傾きａが２×Ｎｐｒａｃ／３＋ＰａｒａｍＥｒｒより大きく、かつ一次近似関数の切片ｂがＮｐｒａｃ／６＋ＰａｒａｍＥｒｒより大きいか否か、つまり図１３（ロ）に図示する向上期に該当するかどうかを判断する。そして、向上期に該当する場合には、判断結果が「ＹＥＳ」になり、ステップＳＥ１１に進み、向上期段階にある旨を表す判定値「２」をレジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］にストアする。この後、図１１のステップＳＥ９にてポインタｉＮｏｔｅを歩進させてからステップＳＥ３に処理を戻す。
【００８４】
一方、条件式（５）を満たさず、向上期に該当しない場合には、ステップＳＥ１０の判断結果が「ＮＯ」となり、ステップＳＥ１２に進む。ステップＳＥ１２では、下記条件式（６）を満たすか否かを判断する。
ｇｒａｄ［ｉＮｏｔｅ］＜ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］×２／３−ＰａｒａｍＥｒｒ  ａｎｄ  ｒｏｏｔ［ｉＮｏｔｅ］＜ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］／６−ＰａｒａｍＥｒｒ  …（６）
【００８５】
したがって、条件式（６）はポインタｉＮｏｔｅで指定されるノートデータについて得られた一次近似関数の傾きａが２×Ｎｐｒａｃ／３−ＰａｒａｍＥｒｒより大きく、かつ一次近似関数の切片ｂがＮｐｒａｃ／６−ＰａｒａｍＥｒｒより大きいか否か、つまり図１３（ニ）に図示する完成期に該当するかどうかを判断する。そして、完成期に該当する場合には、判断結果が「ＹＥＳ」になり、ステップＳＥ１３に進み、完成期段階にある旨を表す判定値「４」をレジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］にストアする。この後、図１１のステップＳＥ９にてポインタｉＮｏｔｅを歩進させてからステップＳＥ３に処理を戻す。
【００８６】
これに対し、条件式（６）を満たさず、完成期に該当しない場合には、ステップＳＥ１２の判断結果が「ＮＯ」となり、ステップＳＥ１４に進む。ステップＳＥ１４では、下記条件式（７）を満たすか否かを判断する。
ｓｕｍ＿Ｒｓｌｔ［ｉＮｏｔｅ］／ｉＡｎｌＣｎｔ［ｉＮｏｔｅ］＞０．５  …（７）
条件式（７）は演奏結果の平均値（Σｘｉ／ｎ）を表しており、これが「０．５」より大きいか否か、つまり図１３（ハ）に図示する安定期に該当するかどうかを判断する。そして、安定期に該当する場合には、判断結果が「ＹＥＳ」になり、ステップＳＥ１５に進み、安定期段階にある旨を表す判定値「３」をレジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］にストアする。この後、図１１のステップＳＥ９にてポインタｉＮｏｔｅを歩進させてからステップＳＥ３に処理を戻す。一方、条件式（７）を満たさず、安定期に該当しない場合には、ステップＳＥ１４の判断結果が「ＮＯ」となり、ステップＳＥ１６に進み、向上期段階にある旨を表す判定値「２」をレジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］にストアした後、図１１のステップＳＥ９にてポインタｉＮｏｔｅを歩進させてからステップＳＥ３に処理を戻す。
【００８７】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳに達するまでステップＳＥ３以降を繰り返し、向上度算出処理にて得た線形近似パラメータ、一次近似関数の傾きａ（レジスタｇｒａｄ［ｉＮｏｔｅ］）および切片ｂ（レジスタｒｏｏｔ［ｉＮｏｔｅ］）をポインタｉＮｏｔｅに応じて読み出し、これにより課題曲の各ノートデータ毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定し、該当する段階を表す判定値を設定する。そして、ノートデータ数ＮＯＴＥＳについて判定値を設定し終えると、ステップＳＥ３２の判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００８８】
さて、こうして課題曲の各音符毎の向上度が判定されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示すると共に、画面表示された楽譜の各音符の表示色を判定された向上度に応じて異ならせることによって、課題曲を形成する各音符毎に、どれだけ演奏技術が向上しているのかをユーザに教示することができる。
【００８９】
（７）苦手箇所抽出処理の動作
次に、図１４を参照して苦手箇所抽出処理の動作を説明する。前述したメインルーチンのステップＳＡ１２（図４参照）を介して本処理が実行されると、ＣＰＵ１は図１４のステップＳＦ１に進み、図７に図示した完成度解析処理を行う。完成度解析処理では、前述したように、課題曲の各音符毎に、適正演奏回数と演奏練習回数との比で定まる演奏完成度を求める。
次いで、ステップＳＦ２では、完成度解析処理によって得られた各音符毎の演奏完成度、すなわちレジスタｉＡｎｌＲａｔｉｏ［０］〜［ＮＯＴＥＳ］を取得する。続いて、ステップＳＦ３では、レジスタｗｅａｋｐｔＣｎｔおよびポインタｉＮｏｔｅをゼロリセットすると共に、フラグｂＦｏｕｎｄに「０」をセットする。このフラグｂＦｏｕｎｄは、苦手箇所を検出したか否かを表すフラグであり、「０」の時に未検出状態を表し、「１」の時に検出状態を表す。
【００９０】
次いで、ステップＳＦ４に進むと、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳより小さいか否か、つまり苦手箇所抽出中であるかどうかを判断する。苦手箇所抽出中であると、判断結果は「ＹＥＳ」になり、次のステップＳＦ５に進む。ステップＳＦ５では、フラグｂＦｏｕｎｄが「０」であるか否か、すなわち苦手箇所を検出していない状態であるかどうかを判断する。未検出状態であると、判断結果は「ＹＥＳ」になり、ステップＳＦ６に進む。ステップＳＦ６では、レジスタｉＡｎｌＲａｔｉｏ［ｉＮｏｔｅ］に格納される演奏完成度がレジスタＣｌｅａｒＰｏｉｎｔに格納される合格点より小さいか否か、つまり苦手箇所であるかどうかを判断する。苦手箇所でなければ、判断結果は「ＮＯ」となり、ステップＳＦ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＦ４に処理を戻す。
【００９１】
一方、苦手箇所であると、上記ステップＳＦ６の判断結果が「ＹＥＳ」になり、ステップＳＦ７に進む。ステップＳＦ７では、フラグｂＦｏｕｎｄに「１」をセットして苦手箇所を検出した旨を表すと共に、苦手箇所検出回数をカウントするレジスタｗｅａｋｐｔＣｎｔをインクリメントして歩進させる。また、ステップＳＦ７では、演奏記録データベースＤＢから苦手箇所とされたノートデータの発音タイミングＴｉｃｋ（ｐｒａｃｔ＿ｄｂ［０］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］）を読み出し、これを苦手箇所の始点として、苦手箇所抽出スタックＳＴ（図３参照）のｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［０］にストアする。この後、ステップＳＦ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＦ４に処理を戻す。
【００９２】
そして、苦手箇所抽出中であって、苦手箇所を検出した状態にあると、ステップＳＦ４の判断結果が「ＹＥＳ」、ステップＳＦ５の判断結果が「ＮＯ」となり、ステップＳＦ９に進む。ステップＳＦ９では、レジスタｉＡｎｌＲａｔｉｏ［ｉＮｏｔｅ］に格納される演奏完成度がレジスタＣｌｅａｒＰｏｉｎｔに格納される合格点以下であるか、つまり苦手箇所の終点であるかどうかを判断する。苦手箇所の終点でなければ、判断結果は「ＮＯ」となり、ステップＳＦ８にてポインタｉＮｏｔｅを歩進させた後、上述のステップＳＦ４に処理を戻す。
【００９３】
これに対し、苦手箇所の終点であると、上記ステップＳＦ９の判断結果が「ＹＥＳ」になり、ステップＳＦ１０に進む。ステップＳＦ１０では、フラグｂＦｏｕｎｄに「０」をセットすると共に、演奏記録データベースＤＢから苦手箇所の終点とされたノートデータの発音タイミングＴｉｃｋ（ｐｒａｃｔ＿ｄｂ［０］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］）を読み出し、これを苦手箇所抽出スタックＳＴ（図３参照）のｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］にストアする。
これにより、課題曲中の苦手箇所の始点を表すＳｔａｒｔＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［０］）と、その終点を表すＥｎｄＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］）とから構成される苦手箇所データｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］が苦手箇所抽出スタックＳＴに登録される。この後、ステップＳＦ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＦ４に処理を戻す。
【００９４】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超える迄、ステップＳＦ４〜ＳＦ１０を繰り返し、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えると、ステップＳＦ４の判断結果が「ＮＯ」となり、ステップＳＦ１１に進む。ステップＳＦ１１では、フラグｂＦｏｕｎｄが「１」であるか否か、すなわち苦手箇所を検出した状態であるかどうかを判断し、未検出状態であれば、判断結果が「ＮＯ」になり、本処理を完了させる。
一方、検出状態であると、判断結果は「ＹＥＳ」になり、ステップＳＦ１２に進み、曲終端Ｔｉｃｋを苦手箇所抽出スタックＳＴのｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］にストアして本処理を完了させる。
【００９５】
以上のように、苦手箇所抽出処理では、歩進されるポインタｉＮｏｔｅに応じて指定されるノートデータの演奏完成度が合格点を超えているかどうかを判断し、合格点に達していない演奏完成度が見つかると、そのノートデータの発音タイミングＴｉｃｋを苦手箇所の始点とし、以降、合格点に達する演奏完成度のノートデータを探し出し、その発音タイミングＴｉｃｋを苦手箇所の終点にして苦手箇所データを形成する。そうした処理をポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えるまで繰り返し行い、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えた時点で苦手箇所の終点が検出されない場合には課題曲の終端を表す曲終端Ｔｉｃｋを苦手箇所の終点に設定するようになっている。
【００９６】
さて、以上のようにして課題曲の各音符毎の演奏完成度に基づき苦手箇所が抽出されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、苦手箇所抽出スタックＳＴに格納される苦手箇所データに従って、例えば図１５に図示する表示画面の一例のように、苦手箇所データに含まれる苦手箇所の始点および終点に対応した区間の楽譜部分の表示色を変化させたり、ブリンク表示する等、表示形態を変化させることによって、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【００９７】
以上説明したように、第１実施例によれば、ユーザの鍵操作に応じて発生する演奏データと課題曲のノートデータと比較して演奏判定し、その演奏判定結果を課題曲のノートデータに付加した練習データを演奏記録データベースＤＢに記録しておき、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示すると共に、ノートデータに付加される演奏判定結果に基づき楽譜表示された各音符が正しく弾かれたかどうかを区別して表示するようにしたので、どの程度演奏操作を習得しているかをユーザに教示し得ることが可能になる。
【００９８】
また、第１実施例では、演奏記録データベースＤＢに記録される同一課題曲の各練習データから課題曲を形成する各音符（ノートデータ）毎の演奏練習回数および適正演奏回数を集計し、集計された適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する為、演奏技術の完成度をユーザに教示し得るようになっている。
【００９９】
さらに、第１実施例では、演奏記録データベースＤＢに記録された各練習データに含まれるノートデータから課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂを課題曲の各音符毎に算出し、算出した１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂに基づき、課題曲の各音符毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定して向上度（判定値）を設定する。そして、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示する際に、各音符の表示色を判定された向上度に応じて異ならせることによって、課題曲を形成する各音符毎に、どれだけ演奏技術が向上しているのかをユーザに教示することが可能になっている。
【０１００】
加えて、第１実施例では、演奏記録データベースＤＢに記録される同一課題曲の各練習データから課題曲を形成する各音符（ノートデータ）毎の演奏練習回数および適正演奏回数を集計し、集計された適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に基づき、合格点に達していない演奏完成度の音符から合格点に達した演奏完成度の音符までの区間を苦手箇所として抽出する。そして、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示する際に、苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になっている。
【０１０１】
Ｃ．第２実施例の動作
次に、図１６を参照して第２実施例による苦手箇所抽出処理の動作を説明する。第１実施例による苦手箇所抽出処理では、完成度解析処理によって得られた課題曲の各音符毎の演奏完成度に基づき苦手箇所を抽出するのに対し、第２実施例による苦手箇所抽出処理は、前述した向上度算出／向上度判定処理にて得られた課題曲の各音符毎の向上度（判定値）に基づき苦手箇所を抽出する点で相違する。以下、こうした第２実施例の動作を述べる。
【０１０２】
第１実施例と同様に、メインルーチンのステップＳＡ１２（図４参照）を介して第２実施例による苦手箇所抽出処理が実行されると、ＣＰＵ１は図１６に示すステップＳＧ１に進み、前述した向上度算出処理および向上度判定処理（図９〜図１２参照）を行う。向上度算出／向上度判定処理では、前述したように、演奏記録データベースＤＢに記録された各練習データに含まれるノートデータから抽出した課題曲の各音符毎の演奏結果と練習回数とを線形近似し、これにより得られる１次近似関数ｙ＝ａｘ＋ｂの傾きａおよび切片ｂに基づき、課題曲の各音符毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定して向上度（判定値）を設定する。
【０１０３】
次いで、ステップＳＧ２では、向上度算出／向上度判定処理によって得られた各音符毎の向上度（判定値）、すなわちレジスタｉＰｒｏｇｒｅｓｓ［０］〜［ＮＯＴＥＳ］を取得する。続いて、ステップＳＧ３では、レジスタｗｅａｋｐｔＣｎｔおよびポインタｉＮｏｔｅをゼロリセットすると共に、フラグｂＦｏｕｎｄに「０」をセットする。このフラグｂＦｏｕｎｄは、苦手箇所を検出したか否かを表すフラグであり、「０」の時に未検出状態を表し、「１」の時に検出状態を表す。
【０１０４】
次いで、ステップＳＧ４に進むと、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳより小さいか否か、つまり苦手箇所抽出中であるかどうかを判断する。苦手箇所抽出中であると、判断結果は「ＹＥＳ」になり、次のステップＳＧ５に進む。ステップＳＧ５では、フラグｂＦｏｕｎｄが「０」であるか否か、すなわち苦手箇所を検出していない状態であるかどうかを判断する。未検出状態であると、判断結果は「ＹＥＳ」になり、ステップＳＧ６に進む。ステップＳＧ６では、レジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］に格納される向上度が「１（練習初期）」または「２（向上期）」であるか否かを判断する。向上度が「３（安定期）」、「４（完成期）」あるいは「５（完了期）」であると、苦手箇所と見做さず、判断結果は「ＮＯ」となり、ステップＳＧ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＧ４に処理を戻す。
【０１０５】
一方、向上度が「１（練習初期）」または「２（向上期）」であると、苦手箇所と見做して、上記ステップＳＧ６の判断結果が「ＹＥＳ」になり、ステップＳＧ７に進む。ステップＳＧ７では、フラグｂＦｏｕｎｄに「１」をセットして苦手箇所を検出した旨を表すと共に、苦手箇所の検出回数をカウントするレジスタｗｅａｋｐｔＣｎｔをインクリメントして歩進させる。また、ステップＳＧ７では、演奏記録データベースＤＢから苦手箇所とされたノートデータの発音タイミングＴｉｃｋ（ｐｒａｃｔ＿ｄｂ［０］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］）を読み出し、これを苦手箇所の始点として、苦手箇所抽出スタックＳＴ（図３参照）のｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［０］にストアする。この後、ステップＳＧ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＧ４に処理を戻す。
【０１０６】
そして、苦手箇所抽出中であって、苦手箇所を検出した状態であると、ステップＳＧ４の判断結果が「ＹＥＳ」、ステップＳＧ５の判断結果が「ＮＯ」となり、ステップＳＧ９に進む。ステップＳＧ９では、レジスタｉＰｒｏｇｒｅｓｓ［ｉＮｏｔｅ］に格納される向上度が「３（安定期）」以上であるか否か、つまり苦手箇所の終点であるかどうかを判断する。苦手箇所の終点でなければ、判断結果は「ＮＯ」となり、ステップＳＧ８にてポインタｉＮｏｔｅを歩進させた後、上述のステップＳＧ４に処理を戻す。
【０１０７】
これに対し、苦手箇所の終点であると、上記ステップＳＧ９の判断結果が「ＹＥＳ」になり、ステップＳＧ１０に進む。ステップＳＧ１０では、フラグｂＦｏｕｎｄに「０」をセットすると共に、演奏記録データベースＤＢから苦手箇所の終点とされたノートデータの発音タイミングＴｉｃｋ（ｐｒａｃｔ＿ｄｂ［０］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］）を読み出し、これを苦手箇所抽出スタックＳＴのｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］にストアする。
【０１０８】
これにより、課題曲中の苦手箇所の始点を表すＳｔａｒｔＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［０］）と、その終点を表すＥｎｄＭｅａｓ（ｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］）とから構成される苦手箇所データｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］が苦手箇所抽出スタックＳＴに登録される。この後、ステップＳＧ８に進み、ポインタｉＮｏｔｅを歩進させた後、上述のステップＳＧ４に処理を戻す。
【０１０９】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超える迄、ステップＳＧ４〜ＳＧ１０を繰り返し、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えると、ステップＳＧ４の判断結果が「ＮＯ」となり、ステップＳＧ１１に進む。ステップＳＧ１１では、フラグｂＦｏｕｎｄが「１」であるか否か、すなわち苦手箇所を検出した状態であるかどうかを判断し、未検出状態であれば、判断結果が「ＮＯ」になり、本処理を完了させる。
一方、検出状態であると、判断結果は「ＹＥＳ」になり、ステップＳＧ１２に進み、曲終端Ｔｉｃｋを苦手箇所抽出スタックＳＴのｗｅａｋｐｏｉｎｔ［ｗｅａｋｐｔＣｎｔ］［１］にストアして本処理を完了させる。
【０１１０】
以上のように、第２実施例による苦手箇所抽出処理では、歩進されるポインタｉＮｏｔｅに応じて指定されるノートデータの向上度が練習初期または向上期であるかどうかを判断し、練習初期または向上期のノートデータであると、その発音タイミングＴｉｃｋを苦手箇所の始点とし、以降、安定期以上の向上度のノートデータを探し出し、その発音タイミングＴｉｃｋを苦手箇所の終点にして苦手箇所データを形成する。こうした処理をポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えるまで繰り返し、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳを超えた時点で苦手箇所の終点が検出されない場合には課題曲の終端を表す曲終端Ｔｉｃｋを苦手箇所の終点に設定するようになっている。
【０１１１】
さて、このようにして課題曲の各音符毎の向上度に基づき苦手箇所が抽出されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、苦手箇所抽出スタックＳＴに格納される苦手箇所データに従って、例えば図１５に図示する表示画面の一例のように、苦手箇所データに含まれる苦手箇所の始点および終点に対応した区間の楽譜部分の表示色を変化させたり、ブリンク表示する等、表示形態を変化させることによって演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【０１１２】
Ｄ．第３実施例の動作
次に、図１７〜図１８を参照して第３実施例による完成度解析処理の動作について説明する。第１実施例による完成度解析処理では、演奏記録データベースＤＢに記録される練習データのパート選択状況（右手パート／左手パート）を区別せずに課題曲を形成する各音符毎の演奏完成度を算出したのに対し、第３実施例による完成度解析処理は、演奏記録データベースＤＢに記録される練習データのパート選択状況を区別して、各パート別に各音符毎の演奏完成度を算出する点で相違する。以下、そうした第３実施例の動作を述べる。
【０１１３】
第１実施例と同様に、メインルーチンのステップＳＡ７（図４参照）を介して第３実施例による完成度解析処理が実行されると、ＣＰＵ１は図１７のステップＳＨ１に進み、完成度解析に必要な条件を設定するＧＵＩ画面（不図示）を表示部７に表示する。ＧＵＩ画面では、演奏記録データベースＤＢに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置ｉＬＵＳｔａｔおよび検索数ｉＬＵＴｉｍｅをユーザ操作により入力する。そして、入力されると、ステップＳＨ２に進み、ポインタｉＤＢに検索開始位置ｉＬＵＳｔａｔをセットすると共に、各レジスタ（ｉＡｎｌＯｒｇＣｎｔ［ＮＯＴＥＳ，ＰＡＲＴＳ］、ｉＡｎｌＯＫＣｎｔ［ＮＯＴＥＳ，ＰＡＲＴＳ］およびｉＡｎｌＲａｔｉｏ［ＮＯＴＥＳ，ＰＡＲＴ］）を初期化する。
【０１１４】
次いで、ステップＳＨ３では、ポインタｉＤＢから検索開始位置ｉＬＵＳｔａｔを差し引いた値が検索数ｉＬＵＴｉｍｅ−１より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「ＹＥＳ」になり、次のステップＳＨ４に進む。ステップＳＨ４では、ポインタｉＤＢに対応する演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＤＢ］［０］が空き領域を表すデータＮＵＬＬであるか否かを判断する。空き領域を表すデータＮＵＬＬであると、検索対象となる練習データが無い為、判断結果は「ＹＥＳ」になり、後述するステップＳＨ１３に進む。一方、空き領域を表すデータＮＵＬＬでなければ、検索対象となる練習データが存在するので、判断結果は「ＮＯ」となり、ステップＳＨ５に進む。
【０１１５】
ステップＳＨ５では、検索対象とされている練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出すためのポインタｉＮｏｔｅをゼロリセットする。続いて、ステップＳＨ６では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出し終えたかどうかを判断する。
【０１１６】
読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＨ７に進む。ステップＳＨ７では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］（発音タイミングＴｉｃｋ）が、ｐａｒｃｔ＿ｄｂ［ｉＤＢ］［１］（開始Ｔｉｃｋを表すＳｔａｒｔＭｅａｓ）からｐａｒｃｔ＿ｄｂ［ｉＤＢ］［２］（終了Ｔｉｃｋを表すＥｎｄＭｅａｓ）の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「ＮＯ」となり、ステップＳＨ１１に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＨ６に処理を戻す。
【０１１７】
一方、演奏練習したノートデータであると、判断結果が「ＹＥＳ」になり、次のステップＳＨ８に進み、ポインタｉＤＢで指定される練習データの、選択パートでの演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ，ｐｒａｃｔ＿ｄｂ［ｉＤＢ］［８］］をインクリメントして歩進させる。そして、ステップＳＨ９では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］（比較結果Ｒｅｓｕｌｔ）が「１」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。
【０１１８】
正しく弾けたノートデータであると、判断結果は「ＹＥＳ」になり、次のステップＳＨ１０に進み、ポインタｉＤＢで指定される練習データの、選択パートでの適正演奏回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅｐｒａｃｔ＿ｄｂ［ｉＤＢ］［８］］をインクリメントして歩進させる。これに対し、正しく弾けたノートデータでなければ、判断結果が「ＮＯ」になり、ステップＳＨ１１に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＨ６に処理を戻す。
【０１１９】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＨ６〜ＳＨ１１を繰り返し、ポインタｉＤＢで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、レジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ，ｐｒａｃｔ＿ｄｂ［ｉＤＢ］［８］］を歩進させ、さらにそのノートデータが適正演奏されたものであると、レジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅｐｒａｃｔ＿ｄｂ［ｉＤＢ］［８］］を歩進させる。そして、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＨ６の判断結果が「ＹＥＳ」になり、ステップＳＨ１２に進み、ポインタｉＤＢをインクリメントして歩進させた後、前述のステップＳＨ３に処理を戻す。
【０１２０】
以後、同一課題曲の練習データを演奏記録データベースＤＢから検索し終えるまでステップＳＨ３〜ＳＨ１２を繰り返す。これにより、選択パート別に各音符毎の演奏練習回数および適正演奏回数が集計される。そして、検索し終えると、ステップＳＨ３の判断結果が「ＮＯ」となり、図１８に示すステップＳＨ１３に進む。ステップＳＨ１３以降では、上記ステップＳＨ３〜ＳＨ１２によって各選択パート別に集計された各ノートデータ毎の演奏練習回数および適正演奏回数に基づき演奏完成度を算出する。
【０１２１】
すなわち、ステップＳＨ１３では、ポインタｉＮｏｔｅをゼロリセットし、続くステップＳＨ１４では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＨ１５に進む。ステップＳＨ１５では、選択パートを指定するポインタｉＰａｒｔをゼロリセットする。続いて、ステップＳＨ１６では、ポインタｉＰａｒｔの値がパート数ＰＡＲＴＳ以上に達したか否か、つまりポインタｉＮｏｔｅに対応した音符の演奏完成度を全ての選択パートについて算出し終えたかどうかを判断する。
【０１２２】
全ての選択パートについて算出し終えていなければ、判断結果は「ＮＯ」になり、次のステップＳＨ１７に進む。ステップＳＨ１７では、ポインタｉＮｏｔｅおよびｉＰａｒｔに応じてレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ，ｉＰａｒｔ］から読み出される値が「０」、つまりポインタｉＰａｒｔで指定される選択パートにおいてポインタｉＮｏｔｅに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。
一度も演奏練習されていない状態であると、判断結果は「ＹＥＳ」となり、この場合、演奏完成度を算出し得ない為、ステップＳＨ１９に進み、ポインタｉＰａｒｔをインクリメントして歩進させた後、上述のステップＳＨ１６に戻る。
【０１２３】
一方、そうでなければ、判断結果が「ＮＯ」となり、ステップＳＨ１８に進み、レジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ，ｉＰａｒｔ］とレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ，ｉＰａｒｔ］との比に「１００」を乗じて演奏完成度（％）を算出してレジスタｉＡｎｌＲａｔｉｏ［ｉＮｏｔｅ，ｉＰａｒｔ］にストアする。この後、ステップＳＨ１９にてポインタｉＰａｒｔを歩進させてからステップＳＨ１６に戻る。
【０１２４】
以後、ポインタｉＰａｒｔの値がパート数ＰＡＲＴＳ以上に達するまでステップＳＨ１６〜ＳＨ１９を繰り返し、ポインタｉＮｏｔｅで指定されるノートデータについて選択パート別の演奏完成度を算出する。そして、ポインタｉＰａｒｔの値がパート数ＰＡＲＴＳ以上に達すると、ステップＳＨ１６の判断結果が「ＹＥＳ」になり、ステップＳＨ２０に進み、ポインタｉＮｏｔｅをインクリメントして歩進させた後、上述のステップＳＨ１４に処理を戻す。
そして、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＨ１４〜ＳＨ２０を繰り返し、選択パート別の演奏完成度を各ノートデータ毎に求め、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＨ１４の判断結果が「ＹＥＳ」となり、本処理を完了する。これにより、課題曲の各パート別に各音符毎の演奏完成度が得られる。
【０１２５】
課題曲の各パート別に各音符毎の演奏完成度が算出されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、各パート別に得られた各音符毎の演奏完成度を楽譜上で区別表示することによって、どのパートがどの程度演奏操作を習得しているかをユーザに教示し得るようになる。
【０１２６】
Ｅ．第４実施例の動作
次に、図１９を参照して第４実施例による完成度解析処理の動作について説明する。第１実施例による完成度解析処理では、演奏記録データベースＤＢに記録される練習データの練習属性の内、練習開始時点（開始Ｔｉｃｋ）を表すＳｔａｒｔＭｅａｓ（ｐｒａｃｔ＿ｄｂ［ｉ］［１］）と練習終了時点（終了Ｔｉｃｋ）を表すＥｎｄＭｅａｓ（ｐｒａｃｔ＿ｄｂ［ｉ］［２］）とで定まる演奏範囲を考慮せずに課題曲を形成する各音符毎の演奏完成度を算出したのに対し、第４実施例による完成度解析処理は、演奏範囲を考慮して課題曲を形成する各音符毎の演奏完成度を算出する点で相違する。以下、そうした第４実施例の動作を述べる。
【０１２７】
第１実施例と同様に、メインルーチンのステップＳＡ７（図４参照）を介して第４実施例による完成度解析処理が実行されると、ＣＰＵ１は図１９のステップＳＪ１に進み、完成度解析に必要な条件を設定するＧＵＩ画面（不図示）を表示部７に表示する。ＧＵＩ画面では、演奏記録データベースＤＢに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置ｉＬＵＳｔａｔおよび検索数ｉＬＵＴｉｍｅをユーザ操作により入力する。そして、入力されると、ステップＳＪ２に進み、ポインタｉＤＢに検索開始位置ｉＬＵＳｔａｔをセットすると共に、各レジスタ（ｉＡｎｌＯｒｇＣｎｔ［ＮＯＴＥＳ］、ｉＡｎｌＯＫＣｎｔ［ＮＯＴＥＳ］およびｉＡｎｌＲａｔｉｏ［ＮＯＴＥＳ］）を初期化する。
【０１２８】
次いで、ステップＳＪ３では、ポインタｉＤＢから検索開始位置ｉＬＵＳｔａｔを差し引いた値が検索数ｉＬＵＴｉｍｅ−１より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「ＹＥＳ」になり、次のステップＳＪ４に進む。ステップＳＪ４では、ポインタｉＤＢに対応する演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＤＢ］［０］が空き領域を表すデータＮＵＬＬであるか否かを判断する。空き領域を表すデータＮＵＬＬであると、検索対象となる練習データが無い為、判断結果は「ＹＥＳ」になり、後述するステップＳＪ１４に進む。一方、空き領域を表すデータＮＵＬＬでなければ、検索対象となる練習データが存在するので、判断結果は「ＮＯ」となり、ステップＳＪ５に進む。
【０１２９】
ステップＳＪ５では、ポインタｉＤＢに対応する演奏記録データベースＤＢのｐｒａｃｔ＿ｄｂ［ｉＤＢ］［２］の練習終了時点（終了Ｔｉｃｋ）を表すＥｎｄＭｅａｓからｐｒａｃｔ＿ｄｂ［ｉＤＢ］［２］の練習開始時点（開始Ｔｉｃｋ）を表すＳｔａｒｔＭｅａｓを減算した値を、曲終端を表すＥＮＤＴＩＣＫで除算して課題曲全体に対する演奏範囲の割合を算出し、レジスタｆＰｌａｙＲａｔｉｏにストアする。次いで、ステップＳＪ６に進み、検索対象とされている練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出すためのポインタｉＮｏｔｅをゼロリセットする。
【０１３０】
続いて、ステップＳＪ７では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータＮｏｔｅｓ［０］〜［ＮＯＴＥＳ］を読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＪ８に進む。
ステップＳＪ８では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［０］］（発音タイミングＴｉｃｋ）が、ｐａｒｃｔ＿ｄｂ［ｉＤＢ］［１］（開始Ｔｉｃｋを表すＳｔａｒｔＭｅａｓ）からｐａｒｃｔ＿ｄｂ［ｉＤＢ］［２］（終了Ｔｉｃｋを表すＥｎｄＭｅａｓ）の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「ＮＯ」となり、ステップＳＪ１２に進み、ポインタｉＮｏｔｅを歩進させた後、上記ステップＳＪ７に処理を戻す。
【０１３１】
一方、演奏練習したノートデータであると、判断結果が「ＹＥＳ」になり、次のステップＳＪ９に進み、演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］をインクリメントして歩進させる。続いて、ステップＳＪ１０では、ポインタｉＤＢで指定される練習データに含まれ、ポインタｉＮｏｔｅに対応するノートデータｐａｒｃｔ＿ｄｂ［ｉＤＢ］［Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］］（比較結果Ｒｅｓｕｌｔ）が「１」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。
【０１３２】
正しく弾けたノートデータであると、判断結果は「ＹＥＳ」になり、次のステップＳＪ１１に進み、レジスタｆＰｌａｙＲａｔｉｏに格納される演奏範囲の割合をレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］に加算する。したがって、レジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］には、演奏範囲の割合に応じた適正演奏回数がポインタｉＮｏｔｅ毎にカウントされる。これに対し、正しく弾けたノートデータでなければ、上記ステップＳＪ１０の判断結果が「ＮＯ」になり、ステップＳＪ１２に進み、ポインタｉＮｏｔｅを歩進させてからステップＳＪ７に処理を戻す。
【０１３３】
以後、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＪ７〜ＳＪ１２を繰り返し行い、ポインタｉＤＢで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、演奏練習回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］を歩進させ、さらにそのノートデータが適正演奏されたものであると、演奏範囲の割合に応じた適正演奏回数をポインタｉＮｏｔｅ毎にカウントするレジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］に加算する。
【０１３４】
そして、ポインタｉＮｏｔｅがノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＪ７の判断結果が「ＹＥＳ」になり、ステップＳＪ１３に進み、ポインタｉＤＢをインクリメントして歩進させた後、前述のステップＳＪ３に処理を戻す。
以後、同一課題曲の練習データを演奏記録データベースＤＢから検索し終えるまでステップＳＪ３〜ＳＪ１３を繰り返す。これにより、各ノートデータ毎に演奏練習回数と演奏範囲の割合に応じた適正演奏回数とが集計される。そして、同一課題曲の練習データを検索し終えると、ステップＳＪ３の判断結果が「ＮＯ」となり、ステップＳＪ１４に進む。ステップＳＪ１４以降では、上記ステップＳＪ３〜ＳＪ１３によって集計された各ノートデータ毎の、演奏練習回数と演奏範囲の割合に応じた適正演奏回数とに基づき、演奏範囲を考慮した各音符毎の演奏完成度を算出する。
【０１３５】
すなわち、ステップＳＪ１４では、ポインタｉＮｏｔｅをゼロリセットし、続くステップＳＪ１５では、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＪ１６に進む。ステップＳＪ１６では、ポインタｉＮｏｔｅに応じてレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］から読み出される値が「０」、つまりポインタｉＮｏｔｅに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。一度も演奏練習されていない状態であると、判断結果は「ＹＥＳ」となり、この場合、演奏完成度を算出することが出来ないので、ステップＳＪ１７に進み、ポインタｉＮｏｔｅを歩進させた後、ステップＳＪ１５に戻る。
【０１３６】
一方、そうでなければ、判断結果が「ＮＯ」になり、ステップＳＪ１８に進み、レジスタｉＡｎｌＯＫＣｎｔ［ｉＮｏｔｅ］とレジスタｉＡｎｌＯｒｇＣｎｔ［ｉＮｏｔｅ］との比に「１００」を乗じて演奏完成度（％表示）を算出してレジスタｉＡｎｌＲａｔｉｏ［ｉＮｏｔｅ］にストアする。この後、ステップＳＣ１７にてポインタｉＮｏｔｅを歩進させてからステップＳＪ１５に戻る。
以後、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達するまでステップＳＪ１５〜ＳＪ１８を繰り返し、ポインタｉＮｏｔｅの値がノートデータ数ＮＯＴＥＳ以上に達すると、ステップＳＪ１５の判断結果が「ＹＥＳ」となり、本処理を完了する。これにより、演奏範囲を考慮した各音符毎の演奏完成度が得られる。
【０１３７】
さて、こうして演奏範囲を考慮した各音符毎の演奏完成度が算出されると、ＣＰＵ１はメインルーチンのステップＳＡ４（図４参照）に進み、演奏記録データベースＤＢに記録された練習データに含まれる課題曲のノートデータを音符として表示部７に楽譜表示する一方、算出された音符毎の演奏完成度を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【０１３８】
なお、第４実施例による完成度解析処理では、演奏範囲を考慮して課題曲を形成する各音符毎の演奏完成度を算出したが、これに限らず、演奏記録データベースＤＢに記録される練習データのパート選択状況と演奏範囲とを考慮して各パート別に各音符毎の演奏完成度を算出する態様、すなわち第４実施例と第３実施例とを組合せる態様としても構わず、そのようにすれば演奏範囲を考慮したパート毎の演奏完成度をユーザに教示し得るようになる。
【０１３９】
【発明の効果】
請求項１，７に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、この演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて楽譜表示される各音符を区別表示するので、演奏技術の完成度をユーザに教示することができる。
請求項２，８に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計し、集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数をノートデータ毎に算出した後、算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定する。そして、判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示するので、どれだけ演奏技術が向上しているのかをユーザに教示することができる。
請求項３，９に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。算出された各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することができる。
請求項４，１０に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とをノートデータ毎に集計し、ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す１次近似関数をノートデータ毎に算出する。算出されたノートデータ毎の１次近似関数から課題曲を形成する各音符毎の向上度を判定し、判定された各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することができる。
請求項５，１１に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する。そして、演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、演奏パート別にどの程度演奏操作を習得しているかをユーザに教示することができる。
請求項６，１２に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の演奏練習回数と、範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することができる。
【図面の簡単な説明】
【図１】本発明による第１実施例の構成を示すブロック図である。
【図２】ＲＡＭ３に設けられる演奏記録データベースＤＢの構成を示す図である。
【図３】ＲＡＭ３に設けられる苦手箇所抽出スタックＳＴの構成を示す図である。
【図４】メインルーチンの動作を示すフローチャートである。
【図５】演奏判定処理の動作を示すフローチャートである。
【図６】演奏判定結果を表示する表示画面の一例を示す図である。
【図７】完成度解析処理の動作を示すフローチャートである。
【図８】完成度解析結果を表示する表示画面の一例を示す図である。
【図９】向上度算出処理の動作を示すフローチャートである。
【図１０】向上度算出処理の動作を示すフローチャートである。
【図１１】向上度判定処理の動作を示すフローチャートである。
【図１２】向上度判定処理の動作を示すフローチャートである。
【図１３】向上度判定処理の動作を説明するための図である。
【図１４】苦手箇所抽出処理の動作を示すフローチャートである。
【図１５】苦手箇所抽出結果を表示する表示画面の一例を示す図である。
【図１６】第２実施例による苦手箇所抽出処理の動作を示すフローチャートである。
【図１７】第３実施例による完成度解析処理の動作を示すフローチャートである。
【図１８】第３実施例による完成度解析処理の動作を示すフローチャートである。
【図１９】第４実施例による完成度解析処理の動作を示すフローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  キーボード
７  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2004246237.tif 000003
【図２】
2004246237.tif 000004
【図３】
2004246237.tif 000005
【図４】
2004246237.tif 000006
【図５】
2004246237.tif 000007
【図６】
2004246237.tif 000008
【図７】
2004246237.tif 000009
【図８】
2004246237.tif 000010
【図９】
2004246237.tif 000011
【図１０】
2004246237.tif 000012
【図１１】
2004246237.tif 000013
【図１２】
2004246237.tif 000014
【図１３】
2004246237.tif 000015
【図１４】
2004246237.tif 000016
【図１５】
2004246237.tif 000017
【図１６】
2004246237.tif 000018
【図１７】
2004246237.tif 000019
【図１８】
2004246237.tif 000020
【図１９】
2004246237.tif 000021