(57)【要約】【課題】  曲データを演奏した後に、演奏した音高の正誤や演奏のタイミングだけでなく、演奏中の手の動きを模範の演奏と比較することにより、効率的な演奏練習を実現する。【解決手段】  ＣＰＵ１１は、楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと、電子楽器１から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像とカメラ５によって撮像された演奏中の手の画像とを比較して、比較結果を判定して電子楽器１の演奏を評価する。【選択図】  図２
2006091633.tif 000002
【特許請求の範囲】
【請求項１】
鍵盤装置で演奏された楽曲の演奏データを入力するデータ入力手段と、
前記鍵盤装置の鍵盤の画像および当該鍵盤を演奏中の手の画像を撮像する撮像手段と、
前記楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと前記データ入力手段から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像と前記撮像手段によって撮像された演奏中の手の画像とを比較する比較手段と、
前記比較手段によって比較された結果を判定して前記鍵盤装置の演奏を評価する評価手段と、
を備えた演奏評価システム。
【請求項２】
前記比較手段は、前記鍵盤の画像および手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせと、模範の演奏データにおける演奏中の手の画像における手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせとを比較することを特徴とする請求項１に記載の演奏評価システム。
【請求項３】
前記比較手段は、手の甲の複数箇所に施された異なる色彩に基づいて手の位置、手の傾き、および手の幅を検出することを特徴とする請求項２に記載の演奏評価システム。
【請求項４】
前記比較手段は、各指先に施された異なる色彩に基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較することを特徴とする請求項１に記載の演奏評価システム。
【請求項５】
前記比較手段は、所定の操作手段によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とすることを特徴とする請求項２又は３に記載の演奏評価システム。
【請求項６】
鍵盤装置で演奏された楽曲の演奏データを入力する第１のステップと、
前記鍵盤装置の鍵盤の画像および当該鍵盤を演奏中の手の画像を所定の撮像手段によって撮像する第２のステップと、
前記楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと前記データ入力手段から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像と前記撮像手段によって撮像された演奏中の手の画像とを比較する第３のステップと、
前記第３のステップによって比較された結果を判定して前記鍵盤装置の演奏を評価する第４のステップと、
を実行する演奏評価処理のプログラム。
【請求項７】
前記第３のステップは、前記鍵盤の画像および手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせと、模範の演奏データにおける手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせとを比較することを特徴とする請求項６に記載の演奏評価処理のプログラム。
【請求項８】
前記第３のステップは、手の甲の複数箇所に施された異なる色彩に基づいて、手の位置、手の傾き、および手の幅を検出することを特徴とする請求項７に記載の演奏評価処理のプログラム。
【請求項９】
前記第３のステップは、各指先に施された異なる色彩に基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較することを特徴とする請求項６に記載の演奏評価処理のプログラム。
【請求項１０】
前記第３のステップは、所定の操作手段によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とすることを特徴とする請求項７又は８に記載の演奏評価処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏評価システムおよび演奏評価処理のプログラムに関し、特に、鍵盤の演奏練習を評価する演奏評価システムおよび演奏評価処理のプログラムに関するものである。
【背景技術】
【０００２】
従来、電子鍵盤楽器や外部音源に接続して演奏するキーボード装置などの鍵盤装置によって演奏練習を行うための提案がなされている。
ある提案の演奏練習装置においては、楽曲の演奏に入るタイミングや、押鍵を左右どちらの手ですべきなどの、より初歩的な練習に使用するために、図１に示す構成が記載されている。図１には、鍵盤１と、複数の曲データを記憶しているＨＤＤ１１のハードディスクと、演奏者が曲データを選択するためのパネルスイッチ２と、選択された曲データに応じた楽譜を表示する表示装置９と、選択された曲データを順次読み出して再生して、曲データの再生位置に対応する表示された楽譜中の位置を指示し、指示される楽譜中の位置のうち曲データの先頭に相当する位置近傍において、演奏者が鍵盤１を介して行った鍵盤操作と、再生された曲データとを比較することにより、演奏者の初歩的な誤操作を判定するＣＰＵ５とを有する。（特許文献１参照）
【０００３】
また、別の提案における遠隔音楽教育システムでは、ネットワークを利用した遠隔教育において、遠隔地にいながらにして、各生徒の個性に合わせた適切な音楽教育を行う発明が記載されている。この提案によれば、その実施形態における図１および図２に示すように、教師１の使用する端末１０と、生徒の使用する端末２０とはネットワークを介して接続されており、それぞれ、マイク１３、２３、カメラ１２、２２を備えており、音声および画像の双方向通信が可能である。教師１と生徒２との間は、カメラ１２、２３で撮像されたお互いの姿、および、マイク１３、２３を介したお互いの音声によって、双方向通信によるコミュニケーションが可能であるとともに、教師１からは生徒２に楽譜データなどの教材データが送信され、情報の共有が可能であり、教師１、生徒２が演奏する楽器１５、２５の演奏音はＭＩＤＩデータとして交換可能である。（特許文献２参照）
【特許文献１】特開２００１−１４２３８８号公報
【特許文献２】特開２００２−３２３８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１においては、演奏中の手の動きを評価することができないので、楽曲の初歩的な練習を行うには不十分である。一方、特許文献２の提案においては、カメラで撮像されたお互いの姿を見ることはできるが、特許文献１の場合と同様に、模範となる演奏の手の動きを指示する教材データを教師から生徒に送信することがなく、生徒は演奏した後に手の動きが正しいか誤っているかを認識することができない。このため、ネットワークを利用した遠隔の音楽教育が十分に生かされていない。
本発明は、このような従来の課題を解決するためのものであり、曲データを演奏した後に、演奏した音高の正誤や演奏のタイミングだけでなく、演奏中の手の動きを模範の演奏と比較することにより、効率的な演奏練習を実現することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に記載の演奏評価システムは、鍵盤装置（実施形態においては、図１および図２の電子楽器１に相当する）で演奏された楽曲の演奏データを入力するデータ入力手段（実施形態においては、図２のＭＩＤＩ・インターフェース１６およびＣＰＵ１１に相当する）と、鍵盤装置の鍵盤の画像および当該鍵盤を演奏中の手の画像を撮像する撮像手段（実施形態においては、図１および図２のカメラ５に相当する）と、楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングとデータ入力手段から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像と撮像手段によって撮像された演奏中の手の画像とを比較する比較手段（実施形態においては、図２のＣＰＵ１１に相当する）と、比較手段によって比較された結果を判定して鍵盤装置の演奏を評価する評価手段（実施形態においては、図２のＣＰＵ１１に相当する）と、を備えた構成になっている。
【０００６】
請求項１の演奏評価システムにおいて、請求項２に記載したように、比較手段は、鍵盤の画像および手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせと、模範の演奏データにおける演奏中の手の画像における手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせとを比較するような構成にしてもよい。
【０００７】
請求項２の演奏評価システムにおいて、請求項３に記載したように、比較手段は、手の甲の複数箇所に施された異なる色彩に基づいて手の位置、手の傾き、および手の幅を検出するような構成にしてもよい。
【０００８】
請求項１の演奏評価システムにおいて、請求項４に記載したように、比較手段は、各指先に施された異なる色彩に基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較するような構成にしてもよい。
【０００９】
請求項２又は３の演奏評価システムにおいて、請求項５に記載したように、比較手段は、所定の操作手段（実施形態においては、図２のスイッチ部１４に相当する）によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とするような構成にしてもよい。
【００１０】
請求項６に記載の演奏評価処理のプログラムは、鍵盤装置（実施形態においては、図１および図２の電子楽器１に相当する）で演奏された楽曲の演奏データを入力する第１のステップと、鍵盤装置の鍵盤の画像および当該鍵盤を演奏中の手の画像を所定の撮像手段（実施形態においては、図１および図２のカメラ５に相当する）によって撮像する第２のステップと、楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと第１のステップによって入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像と撮像手段によって撮像された演奏中の手の画像とを比較する第３のステップと、第３のステップによって比較された結果を判定して鍵盤装置の演奏を評価する第４のステップと、を実行する。
第１のステップないし第４のステップは、実施形態においては、図２のＣＰＵ１１の処理に相当する。
【００１１】
請求項６の演奏評価処理のプログラムにおいて、請求項７に記載したように、第３のステップは、鍵盤の画像および手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせと、模範の演奏データにおける手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせとを比較するような構成にしてもよい。
【００１２】
請求項７の演奏評価処理のプログラムにおいて、請求項８に記載したように、第３のステップは、手の甲の複数箇所に施された異なる色彩に基づいて、手の位置、手の傾き、および手の幅を検出するような構成にしてもよい。
【００１３】
請求項６の演奏評価処理のプログラムにおいて、請求項９に記載したように、第３のステップは、各指先に施された異なる色彩に基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較するような構成にしてもよい。
【００１４】
請求項７又は８の演奏評価処理のプログラムにおいて、請求項１０に記載したように、第３のステップは、所定の操作手段（実施形態においては、図２のスイッチ部１４に相当する）によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とするような構成にしてもよい。
【発明の効果】
【００１５】
本発明の演奏評価システムおよび演奏評価処理のプログラムによれば、曲データを演奏した後に、演奏した音高の正誤や演奏のタイミングだけでなく、演奏中の手の動きを模範の演奏と比較することにより、効率的な演奏練習を実現できるという効果が得られる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明による演奏評価システムの実施形態について、鍵盤を備えた電子楽器、パソコン、およびカメラを組合わせた場合を例に採って説明する。
図１は、実施形態における演奏評価システムの外観図である。電子楽器１は、鍵盤２を備えているとともに、その背面側には、アングル３が取り付け部３ａによって固定されている。アングル３の最上部には、鍵盤２の中心部と対応する位置にカメラ取り付け部４が設けられ、ＣＣＤやＣＭＯＳなどの撮像素子を有するカメラ５が取り付けられている。なお、図には示していないが、カメラ取り付け部４には、カメラ５の水平位置（図の左右方向および奥行き方向の位置）を調節する機構が設けられている。
電子楽器１の上面にはパソコン６が置かれている。ただし、パソコン６は図に示した位置に限定されない。比較的奥行きのある電子楽器の場合や、平面型の表示部と本体とが別体のパソコンの場合には、演奏者の正面の位置、例えば、アングル３の取り付け部３ａの上に置くようにしてもよい。
【００１７】
図２は、電子楽器１、カメラ５、パソコン６の接続関係、および、パソコン６の内部構成を示すブロック図である。パソコン６のＣＰＵ１１は、システムバスを介して、ＲＯＭ１２、ＲＡＭ１３、スイッチ部１４、表示部１５、ＭＩＤＩ・Ｉ／Ｆ（インターフェース）１６、ビデオキャプチャ・Ｉ／Ｆ１７、不揮発性メモリ１８と接続され、各部との間でコマンドおよびデータの授受を行うことによって、このシステム全体を制御する。
【００１８】
ＲＯＭ１２は、ＣＰＵ１１によって実行される演奏評価処理のプログラムや初期データなどを記憶している。ＲＡＭ１３は、ＣＰＵ１１のワークエリアであり、ＣＰＵ１１によって処理されるデータを一時的に記憶する。スイッチ部１４は、キーボードおよびマウスなどのポインティングデバイスで構成され、ユーザの操作に応じて、曲選択指令、再生指令、再生停止指令などのコマンドをＣＰＵ１１に入力する。表示部１５は、液晶ディスプレイやプラズマディスプレイなどで構成され、演奏評価処理のプログラムやその他のアプリケーションを起動させるメニュー画面、選択された曲データの楽譜などを表示する。ＭＩＤＩ・Ｉ／Ｆ１６は、演奏ガイドのためにＭＩＤＩ形式の曲データを電子楽器１に出力するとともに、電子楽器１からＭＩＤＩ形式の演奏データを入力する。
【００１９】
ビデオキャプチャ１７は、カメラ５に対してＣＰＵ１１の制御コマンドを出力してカメラ５を制御し、カメラ５で撮像された画像データをＣＰＵ１１に入力する。例えば、カメラ５の位置設定指令に応じて、撮像画像の位置調整、画角調整、フォーカス調整などを制御する。不揮発性メモリ１８は、ＵＳＢなどのコネクタを介して、着脱可能に装着された半導体メモリ、又はハードディスクなどで構成され、外部記憶媒体やネットワークを介してインストールされた演奏練習用の曲データを記録するメモリである。
【００２０】
次に、ＣＰＵ１１によって実行される演奏評価処理のプログラムのフローチャート、ＲＯＭ１２又は不揮発性メモリ１８に記憶されている演奏練習用の曲データ、ＲＡＭ１３に記憶される演奏データなどに基づいて、図１に示した演奏評価システムの動作について説明する。この演奏評価システムにおいては、ユーザが演奏練習用の曲データを演奏したときに、発音および消音のイベントや運指だけでなく、演奏する手の位置、手の傾き、手の幅を判定して演奏を評価する。このため、曲データの中には、各イベントにおいて模範となる手の位置、手の傾き、手の幅を表わすための画像を生成するためのパラメータが含まれている。パラメータについては後述する。ユーザの選択によって任意の評価対象を選択できるようになっているが、この実施形態においては、（１）手の位置、（２）手の位置および手の傾き、（３）手の位置および手の幅が選択された場合について説明する。
【００２１】
図３は、カメラ５によって撮像された１画面を示す図であり、カメラ５の撮像素子の各画素に対応するｘ座標およびｙ座標の位置が決定する。左上の座標（０，０）、右上の座標（ＳＸ，０）、左下の座標（０，ＳＹ）、座標（ＳＸ，ＳＹ）によって指定される画角の中に、鍵盤の画像２ｉ、右手の画像７ｉ、および左手の画像８ｉが撮像できるように、カメラ５の水平位置が調節されている。音楽教育を行う教師や管理側において、模範の曲データを作成する際には、教師は、右手および左手の甲に、中央、中指の根元、手首、親指の根元、小指の根元に異なる色彩のシールを貼付し、各指の爪に異なる色のシールを貼付して、演奏を行うことによって、模範となる手の位置、手の傾き、手の幅を表わすための画像のパラメータが作成される。
【００２２】
図４は、実施形態における演奏評価処理のメインルーチンのフローチャートである。種々の変数の初期化（ステップＳＡ１）の後、曲データの読込みを行い（ステップＳＡ２）、スイッチ部１４から再生指令が入力されたか否かを判別する（ステップＳＡ３）。再生指令が入力されたときは、曲データを電子楽器１に出力する再生処理を実行する（ステップＳＡ４）。再生処理中において、スイッチ部１４から再生停止指令が入力されたか否かを判別する（ステップＳＡ５）。再生停止指令が入力されない場合には、曲が終了したか否かを判別し（ステップＳＡ６）、曲が終了していない場合には、ステップＳＡ４における再生処理を続行する。再生停止指令が入力されたとき、又は、曲が終了したときは、スイッチ部１４から曲選択指令が入力されたか否かを判別する（ステップＳＡ７）。曲選択指令が入力されたときは、ステップＳＡ２に移行して、新たに選択された曲データを読込み、ステップＳＡ３以降の処理を繰り返す。
【００２３】
ステップＳＡ７において曲選択指令が入力されない場合には、ステップＳＡ３に移行して、再生が終了した同じ曲データに対して再生指令が入力されたか否かを判別する。再生指令が入力されない場合には、この演奏練習管理のアプリケーションプログラムの終了指令が入力されたか否かを判別し（ステップＳＡ８）、終了指令が入力されない場合にはステップＳＡ３に移行して再生指令が入力されたか否かを判別する。終了指令が入力されたときは、演奏練習管理のアプリケーションプログラムを終了して、パソコンの初期メニューに戻る。
【００２４】
図５は、不揮発性メモリ１８に記憶されている実施形態の模範の曲データを示すフォーマットを示す図である。この図に示すように、曲データは、ＮＯＴＥ（０）、ＮＯＴＥ（１）、ＮＯＴＥ（３）…、および、曲の終了を示すＮＵＬＬからなる複数のイベントのシーケンスデータで構成されている。各イベントは、発音開始時間を示すＯＮＴＩＭＥ、発音継続時間（音長）を示すＧＡＴＥ、音高を示すＰＩＴＣＨ、指番号を示すパラメータであるＦＩＧＯ、手の位置を示すパラメータであるＰＸＯおよびＰＹＯ、手の傾きを示すパラメータであるＧＤＯ、手の幅を示すパラメータであるＷＤＯ、正誤判定に用いるフラグを示すＭＫ、前回のイベントを示すポインタであるｐｒ、次のイベントを示すポインタであるｐｎで構成されている。ＦＩＧＯの番号は、右手の親指、人差し指、中指、薬指、小指がそれぞれ０，１，２，３，４で指定され、左手の親指、人差し指、中指、薬指、小指がそれぞれ５，６，７，８，９で指定される。
【００２５】
図６は、ＲＡＭ１３のバッファエリアＯＮＢＵＦ（０）、ＯＮＢＵＦ（１）、ＯＮＢＵＦ（３）…の構成を示し、各バッファエリアには、再生指令に応じてＲＯＭ１２から読込まれたイベントのＯＮＴＩＭＥ、ＰＩＴＣＨの値とともに、消音時間を示すＯＦＦＴＩＭＥおよび対応する図５のイベントＮＯＴＥを示すポインタであるｐｓがストアされる。このうち、ＯＮＴＩＭＥ、ＰＩＴＣＨの値がＭＩＤＩ・Ｉ／Ｆ１６を介して電子楽器１に出力され、ＰＩＴＣＨに対応する鍵の発光素子がＯＮＴＩＭＥの発音開始時間に発光して演奏ガイドが行われる。
【００２６】
図７ないし図１１は、ユーザの演奏に応じて、ＭＩＤＩ・ＩＦ１６を介して電子楽器１からパソコン６に入力された演奏データ、および、カメラ５によって撮像されて、ビデオキャプチャ・ＩＦ１７を介してパソコン６に入力された画像データをストアするＲＡＭ１３のエリアを示す図である。
図７は、電子楽器１から入力される演奏データをストアするＲＡＭ１３のエリアを示す図である。この図に示すように、ＰＬＡＹ（０）、ＰＬＡＹ（１）、ＰＬＡＹ（２）…からなる各演奏データは、押鍵開始時間を示すＯＮＴＩＭＥ、押鍵継続時間を示すＧＡＴＥ、押鍵の音高を示すＰＩＴＣＨ、その演奏データを示すポインタであるｐｐ、演奏した指番号を示すＦＩＧＰ、１つ前に演奏した指番号を示すＦＰＲＥＶ、押鍵の評価結果を示すＯＮＪ、離鍵の評価結果を示すＯＦＦＪ、手の位置の評価結果を示すＰＪ、手の傾きの評価結果を示すＧＪ、手の幅の評価結果を示すＷＪ、１つ前の演奏データを示すポインタであるｐｒ、次の演奏データを示すポインタであるｐｎで構成されている。ＦＩＧＰおよびＦＰＲＥＶのデータは、右手の親指０、人差し指１、中指２、薬指３、小指４、左手の親指５、人差し指６、中指７８、薬指、小指９が割り当てられている。したがって、ＰＬＡＹのデータが右手の演奏によるものか又は左手の演奏によるものかを指の番号によって識別できる。
【００２７】
図８は、電子楽器１から入力される演奏データを一時的にストアするＲＡＭ１３のエリアを示す図である。この図に示すように、ＰＬＢＵＦ（０）、ＰＬＢＵＦ（１）、ＰＬＢＵＦ（３）…の各エリアには、押鍵開始時間を示すＯＮＴＩＭＥ、図７のエリアを示すポインタであるｐｐ、図８の当該エリアを示すポインタであるｐｑ、押鍵の評価結果を示すＯＮＪ、離鍵の評価結果を示すＯＦＦＪ、手の位置の評価結果を示すＰＪ、手の傾きの評価結果を示すＧＪ、手の幅の評価結果を示すＷＪのデータがストアされる。
【００２８】
図９は、カメラ５の画面における各画素ＩＭＧ（０，０）、ＩＭＧ（０，２）、ＩＭＧ（０３０）…ＩＭＧ（ＳＸ，ＳＹ）における青、緑、赤の３原色の値であるＢＶＡＬＵＥ、ＧＶＡＬＵＥ、ＲＶＡＬＵＥを示す１画面分の画像データをストアするＲＡＭ１３のエリアを示す図である。この場合において、ＢＶＡＬＵＥ、ＧＶＡＬＵＥ、ＲＶＡＬＵＥは０から１までの値で表される。外光の分光特性や反射率などによって多少変化はするが、白鍵の領域における各画素のＢＶＡＬＵＥ、ＧＶＡＬＵＥ、ＲＶＡＬＵＥは、ほぼ（１，１，１）となり、黒鍵のＢＶＡＬＵＥ、ＧＶＡＬＵＥ、ＲＶＡＬＵＥは、ほぼ（０，０，０）となる。
【００２９】
図１０は、ユーザの手の甲に貼付された１０個のシールの異なる色のデータＨＡＮＤＣ（０）〜ＨＡＮＤＣ（９）をストアするＲＡＭ１３のエリアを示す図である。各色は青、緑、赤の３原色の値であるＢＶＡＬＵＥ、ＧＶＡＬＵＥ、ＲＶＡＬＵＥの比率によって識別される。上記したように、実施形態においては、ユーザの選択によって、手の動きの評価対象を選択する。その選択を２つのフラグＧＦ、ＷＦを用いて表わす。すなわち、（１）手の位置はＧＦ＝０、ＷＦ＝０、（２）手の位置および手の傾きはＧＦ＝１、ＷＦ＝０、（３）手の位置および手の幅はＧＦ＝０、ＷＦ＝１で表わす。いずれかの選択によって、各指の爪には合計１０個の異なる色のシールが貼付され、両手の甲には２個又は６個のシールが貼付される。
図１１は、演奏中の右手ＨＡＮＤ（０）および左手ＨＡＮＤ（１）の中央を示すｘ座標ＰＸ、ｙ座標ＰＹ、手の傾きＧＤ、手の幅ＷＤのデータを一時的にストアするＲＡＭ１３のエリアを示す図である。
【００３０】
図１２は、図４におけるステップＳＡ４の再生処理のフローチャートである。まず、変数を初期化する（ステップＳＢ１）。次に、ＭＩＤＩ・Ｉ／Ｆ１６を介して電子楽器１に出力して演奏をガイドするために、図５のエリアにストアされているＮＯＴＥを指定するポインタｐｓを変数ｎにセットする（ステップＳＢ２）。そして、ステップＳＢ４からステップＳＢ１１までのループ処理を実行する。
すなわち、図５に示したＲＯＭ１２の曲データにおいて、ＮＯＴＥ（ｎ）がＮＵＬＬすなわち曲の終了であるか否かを判別し（ステップＳＢ４）、ＮＯＴＥ（ｎ）がＮＵＬＬでない場合には、ＮＯＷＴＩＭＥに経過時間を加算する（ステップＳＢ５）。すなわち、曲再生開始からの時刻であるリアルタイムでＮＯＷＴＩＭＥを更新する。実際には、曲再生開始からのクロック数によってリアルタイムを表わすが、説明を分かり易くするために時刻を用いることにする。この後、ノートオン処理（ステップＳＢ６）、ノートオフ処理（ステップＳＢ７）、表示処理（ステップＳＢ８）を行う。次に、ＮＯＷＴＩＭＥの時刻をＬＡＳＴＴＩＭＥにストアして（ステップＳＢ９）、ｎの値を次のイベントのポインタｐｎに変更する（ステップＳＢ１０）。そして、ステップＳＢ４に移行して上記ループ処理を繰り返す。
【００３１】
ステップＳＢ４においてＮＯＴＥ（ｎ）がＮＵＬＬである場合には、ＯＮＢＵＦ（０）がＮＵＬＬであるか否かを判別する（ステップＳＢ１１）。ＯＮＢＵＦ（０）がＮＵＬＬでない場合には、ステップＳＢ５においてＮＯＷＴＩＭＥに経過時間を加算する。一方、ＯＮＢＵＦ（０）がＮＵＬＬである場合には、電子楽器１に出力するイベントが残っていないので、メインルーチンに戻る。
【００３２】
図１３は、図１２におけるステップＳＢ６のノートオン処理のフローチャートである。この処理においては、不揮発性メモリ１８の曲データをＲＡＭ１３のバッファエリアにストアする。まず、変数ｎのイベントＮＯＴＥ（ｎ）がＮＵＬＬであるか否かを判別し（ステップＳＣ１）、ＮＯＴＥ（ｎ）がＮＵＬＬである場合にはこのフローを終了するが、ＮＵＬＬでない場合には、ＮＯＷＴＩＭＥの時刻がＯＮＴＩＭＥの発音開始時間に達したか否かを判別する（ステップＳＣ２）。まだ発音開始時間に達していない場合はこのフローを終了するが、発音開始時間に達したときは、ＯＮＢＵＦの空きエリアを捜すために、エリアを指定する変数ｉを０にセットし（ステップＳＣ３）、ｉの値をインクリメントしながら以下のループ処理を実行する。
【００３３】
ＯＮＢＵＦ（ｉ）がＮＵＬＬであるか否かを判別し（ステップＳＣ４）、ＯＮＢＵＦ（ｉ）がＮＵＬＬでない場合には、ｉの値を１つインクリメントする（ステップＳＣ５）。このとき、ｉの値が最大値ｉＭＡＸを超えたか否かを判別し（ステップＳＣ６）、ｉの値が最大値以内である場合には、ステップＳＣ４においてＯＮＢＵＦ（ｉ）がＮＵＬＬであるか否かを判別する。ＯＮＢＵＦ（ｉ）がＮＵＬＬである場合には、ＮＯＴＥ（ｎ）の発音開始時間ＯＮＴＩＭＥ、音高ＰＩＴＣＨ、ポインタｐｓをＯＮＢＵＦ（ｉ）にストアする（ステップＳＣ７）。そして、ＯＮＢＵＦ（ｉ）のＯＮＴＩＭＥ、ＰＩＴＣＨを電子楽器１に出力し（ステップＳＣ８）、変数ｎに次のイベントを示すポインタｐｎをストアする（ステップＳＣ９）。そして、図１２のフローに戻り、ステップＳＢ７のノートオフ処理に移行する。
【００３４】
図１４は、ステップＳＢ７のノートオフ処理のフローチャートである。まず、ＲＡＭ１３のＯＮＢＵＦのエリアを指定する変数ｉを０にセットし（ステップＳＤ１）、ｉの値をインクリメントしながら以下のループ処理を実行する。ＯＮＢＵＦ（ｉ）がＮＵＬＬであるか否かを判別する（ステップＳＤ２）。ＯＮＢＵＦ（ｉ）がＮＵＬＬでない場合には、ＮＯＷＴＩＭＥの時刻がＯＦＦＴＩＭＥの消音時間に達したか否かを判別する（ステップＳＤ３）。ＯＮＢＵＦ（ｉ）がＮＵＬＬである場合、又は、ＮＯＷＴＩＭＥの時刻がＯＦＦＴＩＭＥの消音時間に達していない場合には、ｉの値を１つインクリメントする（ステップＳＤ４）。このとき、ｉの値が最大値ｉＭＡＸを超えたか否かを判別し（ステップＳＤ５）、ｉの値が最大値以内である場合には、ステップＳＤ２においてＯＮＢＵＦ（ｉ）がＮＵＬＬであるか否かを判別する。
【００３５】
ＮＯＷＴＩＭＥの時刻がＯＦＦＴＩＭＥの消音時間に達したときは、ＯＮＢＵＦ（ｉ）のＰＩＴＣＨおよび消音指令のＭＩＤＩデータを電子楽器１に出力する（ステップＳＤ６）。次に、ＯＮＢＵＦ（ｉ＋１）のデータをＯＮＢＵＦ（ｉ）のエリアに上書きして更新する（ステップＳＤ７）。そして、ｉの値をインクリメントして（ステップＳＤ８）、ＯＮＢＵＦ（ｉ＋１）がＮＵＬＬであるか否かを判別する（ステップＳＤ９）。ＯＮＢＵＦ（ｉ＋１）がＮＵＬＬでない場合には、ステップＳＤ７〜ステップＳＤ９のループ処理を繰り返し、ＯＮＢＵＦ（ｉ＋１）のデータを順次ＯＮＢＵＦ（ｉ）のエリアに上書きする。ステップＳＤ９において、ＯＮＢＵＦ（ｉ＋１）がＮＵＬＬである場合には、バッファのエリアの上書きがすべて終了したので、図１０のフローに戻り、ステップＳＢ８の表示処理に移行する。
【００３６】
図１５は、電子楽器１から演奏データが入力されたときの割り込み処理であるＭＩＤＩ・ＩＮ処理のフローチャートである。この割り込みがあると、入力された演奏データが押鍵であるか否かを判別し（ステップＳＥ１）、押鍵である場合には押鍵処理を行う（ステップＳＥ２）。演奏データが押鍵でない場合には、演奏データが離鍵であるか否かを判別し（ステップＳＥ３）、離鍵である場合には離鍵処理を行う（ステップＳＥ４）。演奏データが押鍵でも離鍵でもない場合、例えば、エフェクト操作などの場合には、その演奏データに対応する処理を行う（ステップＳＥ５）。演奏データに対応する処理の後はメインルーチンに戻る。
【００３７】
図１６および図１７は、図１５におけるステップＳＥ２の押鍵処理のフローチャートである。図１６のフローにおいて、まず、押鍵された鍵番号をＫＥＹにストアする（ステップＳＦ１）。次に、初期設定を行うために、フラグＰＬＡＹＦが０であるか否かを判別する（ステップＳＦ２）。ＰＬＡＹＦは図４におけるステップＳＡ１の変数の初期化で０にリセットされている。ＰＬＡＹＦが０である場合には、ＰＬＡＹＦを１にセットし（ステップＳＦ３）、次の演奏データを示すポインタｐｎを０にセットし（ステップＳＦ４）、この押鍵処理で用いる変数ｍを−１にセットし（ステップＳＦ５）、ポインタｐｑを０にセットする（ステップＳＦ６）。
【００３８】
ステップＳＦ３ないしステップＳＦ６の初期設定の後、又は、ステップＳＦ２においてＰＬＡＹＦが１である場合には、ポインタｐｎによって図７のＰＬＡＹ（ｐｎ）を指定する（ステップＳＦ７）。したがって、初期設定した直後はＰＬＡＹ（０）を指定する。次に、押鍵開始時間であるＯＮＴＩＭＥにＮＯＷＴＩＭＥの現時刻をストアする（ステップＳＦ８）。また、押鍵された鍵番号であるＫＥＹのデータをＰＩＴＣＨにストアする（ステップＳＦ９）。この後、ｐｐにｐｎの値をセットし（ステップＳＦ１０）、ｐｒにｍの値をセットし（ステップＳＦ１１）、ｍにｐｐ＋１の値をセットする（ステップＳＦ１２）。したがって、初期設定した最初は、現在のＰＬＡＹ（ｐｐ）を示すポインタｐｐの値は０、変数ｍの値は１となる。
【００３９】
次に、図１７のフローに移行して、ＰＬＡＹ（ｍ）がＮＵＬＬであるか否かを判別する（ステップＳＦ１３）。したがって、最初は、ＰＬＡＹ（０）の次のエリアであるＰＬＡＹ（１）がＮＵＬＬであるか否かを判別する。ＰＬＡＹ（ｍ）がＮＵＬＬでない場合には、ｍの値を１つインクリメントする（ステップＳＦ１４）。このとき、ｍの値が最大値を超えたか否かを判別し（ステップＳＦ１５）、最大値以内である場合には、ステップＳＦ１３において再びＰＬＡＹ（ｍ）がＮＵＬＬであるか否かを判別する。すなわち、変数ｍの値をインクリメントしながら、次の演奏データをストアできる空きエリアを捜す。
【００４０】
ＰＬＡＹ（ｍ）がＮＵＬＬの空きエリアを見つけた場合には、次のエリアを示すポインタｐｎにｍの値をセットし（ステップＳＦ１６）、ｍに現在のエリアを示すポインタｐｐの値をセットする（ステップＳＦ１７）。すなわち、ｍの値をインクリメントしてＰＬＡＹ（ｍ）がＮＵＬＬの空きエリアを見つけたので、ｍの値を元の値に戻す。次に、図８に示したバッファにおいてＰＬＢＵＦ（ｐｑ）のエリアを指定する（ステップＳＦ１８）。したがって、最初はＰＬＢＵＦ（０）のエリアを指定する。次に、押鍵開始時間であるＯＮＴＩＭＥにＮＯＷＴＩＭＥの現時刻をストアする（ステップＳＦ１９）。次に、ＰＬＢＵＦ（ｐｑ）のエリアのポインタｐｐに、ＰＬＡＹ（ｐｐ）のエリアにおけるｐｐの値をセットする（ステップＳＦ２０）。すなわち、電子楽器１から入力された現在の演奏データをストアしたＰＬＡＹ（ｐｐ）のエリアとＰＬＢＵＦ（ｐｑ）のエリアとをポインタｐｐによって対応させる。そして、ｐｑの値を１つインクリメントして（ステップＳＦ２１）、次に演奏データをストアするためのＰＬＢＵＦ（ｐｑ）のエリアを示すポインタを変更する。この後は、演奏中の指を検出するための画像処理（ステップＳＦ２２）、演奏中の手の座標を特定する手の座標処理（ステップＳＦ２３）、演奏内容を判定する判定処理（ステップＳＦ２４）を行って、メインルーチンに戻る。
【００４１】
図１８は、電子楽器１の鍵盤２の各鍵で指が接触する領域ＡＲ（０）〜ＡＲ（１２７）を示すＲＡＭ１３のエリアを示す図である。各領域は、その領域内の画素の座標ＰＯＳＩ（ｘ、ｙ）および鍵番号ＫＥＹ（０〜１２７）で表わされる。図１９は、図２に示した鍵盤の画像２ｉの一部であり、各白鍵および各黒鍵において押鍵する指が接触する範囲を二点鎖線の矩形の領域ＡＲ（０）、ＡＲ（１）、ＡＲ（２）、ＡＲ（３）…で示している。これらの領域は、撮像素子の画素によって位置の座標が確定されるので、各領域における１つの座標、例えば、左下の座標を基準にすると、すべての領域ＡＲ（０）〜ＡＲ（１２７）における画素の座標を確定することができる。
図２０は、変数ｊ，ｋで指定される画素（ｊ，ｋ）に基づく矩形の範囲を示す図である。この図に示すように、ｘ（水平）方向がαでｙ（垂直）方向がβの範囲が画像処理の対象となる領域であり、この領域の画素数は（α＋１）×（β＋１）である。
【００４２】
図２１ないし図２３は、図１７の押鍵処理におけるステップＳＦ２２の画像処理のフローチャートである。この画像処理においては、右手の親指、人差し指、中指、薬指、小指の各画像であるＦＩＧ（０）、ＦＩＧ（１）、ＦＩＧ（２）、ＦＩＧ（３）、ＦＩＧ（４）、および、左手の親指、人差し指、中指、薬指、小指の各画像であるＦＩＧ（５）、ＦＩＧ（６）、ＦＩＧ（７）、ＦＩＧ（８）、ＦＩＧ（９）において、爪に貼付された各シールにおける青、緑、赤の３原色の値として、あらかじめ登録されたＢＦＩＧ、ＧＦＩＧ、ＲＦＩＧの画像データと、カメラ５によって撮像された画像の各画素のデータとを比較する。
【００４３】
図２１において、まず、押鍵された鍵番号であるＫＥＹの値に対応する領域の基準座標であるｘ（ＫＥＹ）をｊとし、ｙ（ＫＥＹ）をｋとする（ステップＳＧ１）。すなわち、ＡＲ（ＫＥＹ）の領域を特定する。次に、押鍵した指番号をストアするＦＩＧＰに−１をストアし、この画像処理によって各指に対応する画素をカウントするカウンタＣＮＴ（０）〜ＣＮＴ（４）を０にクリアする（ステップＳＧ２）。次に、変数ｊ，ｋで指定される画素（ｊ，ｋ）をＩＭＧにストアして（ステップＳＧ３）、ＩＭＧの青成分、緑成分、および赤成分と基準の青成分、緑成分、および赤成分とのそれぞれの差の絶対値を算出する。
【００４４】
すなわち、ＢＶＡＬＵＥとＢＲＥＦとの差の絶対値をＤＢにストアし（ステップＳＧ４）、ＧＶＡＬＵＥとＧＲＥＦとの差の絶対値をＤＧにストアし（ステップＳＧ５）、ＲＶＡＬＵＥとＲＲＥＦとの差の絶対値をＤＲにストアする（ステップＳＧ６）。次に、ＤＢ、ＤＧ、ＤＲの値のいずれかが所定値以下であるか否かを判別する（ステップＳＧ７）。ＩＭＧの青成分、緑成分、又は赤成分と、基準の青成分、緑成分、又は赤成分との差が所定値以下である場合には、ＩＭＧの画素は爪に貼付されたシールの画素の可能性がある。一方、ＤＢ、ＤＧ、ＤＲの値のすべてが所定値を超えている場合には、ＩＭＧの画素はシールの画素ではない。
【００４５】
ステップＳＧ７において、ＤＢ、ＤＧ、ＤＲの値のすべてが所定値を超えている場合には、ｊの値を１つインクリメントする（ステップＳＧ８）。このとき、ｊの値がαの値を超えているか否かを判別し（ステップＳＧ９）、αの値を超えているときは、ｊの値を０にセットして、ｋの値を１つインクリメントする（ステップＳＧ１０）。このとき、ｋの値がβの値を超えているか否かを判別する（ステップＳＧ１１）。ステップＳＧ９においてｊの値がαの値を超えていない場合、又は、ステップＳＧ１１においてｋの値がβの値を超えていない場合には、ＡＲ（ＫＥＹ）の領域において未処理の画素が残っているので、ステップＳＧ３に移行してｊ，ｋで指定される画素（ｊ，ｋ）をＩＭＧにストアして、上記のループ処理を繰り返し、その画素の色を判定する。
【００４６】
ステップＳＧ７において、ＤＢ、ＤＧ、ＤＲの値のいずれかが所定値以下である場合には、図２２のフローにおいて、変数ｉを０にセットして（ステップＳＧ１２）、あらかじめ登録されている各指に貼付されたシールの色データの中から、ｉで指定する指のシールの色データであるＦＩＧＣ（ｉ）の青成分ＢＦＩＧ、緑成分ＧＦＩＧ、赤成分ＲＦＩＧを読出し（ステップＳＧ１３）、ＩＭＧの画素（ｊ，ｋ）の青成分ＢＶＡＬＵＥ、緑成分ＧＶＡＬＵＥ、赤成分ＲＶＡＬＵＥとの差の絶対値を算出する。
すなわち、ＢＶＡＬＵＥとＢＦＩＧとの差の絶対値をＪＢにストアし（ステップＳＧ１４）、ＧＶＡＬＵＥとＧＦＩＧとの差の絶対値をＪＧにストアし（ステップＳＧ１５）、ＲＶＡＬＵＥとＲＦＩＧとの差の絶対値をＪＲにストアする（ステップＳＧ１６）。
【００４７】
そして、ＪＢ、ＪＧ、ＪＲのすべてが基準値であるか否かを判別する（ステップＳＧ１７）。ＪＢ、ＪＧ、ＪＲのすべてが基準値である場合には、画素（ｊ，ｋ）は指番号ｉの色データＦＩＧＣ（ｉ）と一致する。この場合には、ＣＮＴ（ｉ）の値を１つインクリメントする（ステップＳＧ１８）。この後、又は、ステップＳＧ１７においてＪＢ、ＪＧ、ＪＲのすべてが基準値でなく、画素（ｊ，ｋ）が指番号ｉの色データＦＩＧＣ（ｉ）と一致しない場合には、ｉの値を１つインクリメントする（ステップＳＧ１９）。このとき、ｉの値が４を超えたか否かを判別し（ステップＳＧ２０）、ｉの値が４以下である場合には、ステップＳＧ１３に移行して、次の指番号ｉで指定するＦＩＧＣ（ｉ）のＢＦＩＧ、ＧＦＩＧ、ＲＦＩＧを読出し、上記の色判別処理を繰り返す。そして、ステップＳＧ２０においてｉの値が４を超えたときは、図２１のフローのステップＳＧ８に移行して、次の画素を指定する。
【００４８】
図２１のステップＳＧ１１において、ｋの値がβの値を超えた場合、すなわち、押鍵された鍵番号の領域ＡＲ（ＫＥＹ）におけるすべての画素について色判別処理が終了したときは、図２３のフローにおいて、指番号を指定する２つの変数ｉ，ｄをともに０にセットし（ステップＳＧ２１）、押鍵の指を示すＦＩＧＰにｄの値をストアする（ステップＳＧ２２）。したがって、最初はＦＩＧＰの値は０であり、親指が押鍵の指として仮に設定される。次に、ｉの値を１つインクリメントし（ステップＳＧ２３）、ｉの値が４以下であるか否かを判別する（ステップＳＧ２４）。
【００４９】
ｉの値が４以下である場合には、ＣＮＴ（ｉ）の値がＣＮＴ（ｄ）の値よりも大きいか否かを判別する（ステップＳＧ２５）。すなわち、押鍵された鍵番号の領域ＡＲ（ＫＥＹ）において、ｉで指定する指のシールの画素数がｄで指定する指のシールの画素数よりも大きいか否かを判別する。ＣＮＴ（ｉ）の値がＣＮＴ（ｄ）の値よりも大きい場合には、押鍵した指の可能性は、ｄで指定した指よりもｉで指定した指の方が高い。この場合には、ｄにｉの値をセットして（ステップＳＧ２６）、ステップＳＧ２２に移行して、ＦＩＧＰにストアする指番号ｄの値を変更する。そして、ステップＳＧ２３に移行して、ｉの値を１つインクリメントする。一方、ステップＳＧ２５において、ＣＮＴ（ｉ）の値がＣＮＴ（ｄ）の値よりも小さい場合には、押鍵した指の可能性は、ｉで指定した指よりもｄで指定した指の方が高い。この場合には、ＦＩＧＰにストアする指番号を変更することなく、ステップＳＧ２３に移行して、ｉの値を１つインクリメントする。そして、ｉの値が４を超えるまでＣＮＴ（ｉ）の値とＣＮＴ（ｄ）の値とを比較しながら、押鍵した可能性がより高い指を捜す。
【００５０】
ｉの値が４を超えたときは、押鍵の指が暫定的に判定されるが、指くぐりや指越えによって親指がカメラ５から見えない場合もある。例えば、演奏練習前のウォーミングアップや初心者の基礎練習で音階を演奏する際には、低音から高音への１オクターブの演奏では「ドレミファソラシド」のファの鍵を指くぐりの親指で押鍵し、高音から低音への１オクターブの演奏では「ドシラソファミレド」のミの鍵を指越えの中指で押鍵する。このため、指くぐり又は指越えの演奏であるかを判定しなければ、押鍵の指を確定的に判定することができない。
【００５１】
したがって、ステップＳＧ２４においてｉの値が４を超えたときは、ＦＩＧＰの暫定的な指番号が０でないか否かを判別する（ステップＳＧ２７）。暫定的な指番号が０である場合には、カメラ５によって親指のシールが撮像されているので、指くぐりおよび指越えの演奏ではないので、暫定的に判定した親指は実際の押鍵の指として確定する。一方、ＦＩＧＰの暫定的な指番号が０でない場合には、押鍵された鍵番号を中心とする所定範囲、例えば、手の幅に相当する範囲に、親指が無いか否かを判別する（ステップＳＧ２８）。親指がある場合には、暫定的に判定した人差し指、中指、薬指、又は小指は実際の押鍵の指として確定する。
【００５２】
所定範囲に親指が無い場合には、親指くぐり又は親指越えの演奏の可能性があるので、前回の押鍵の指を示すＦＰＲＥＶの値が０でないか否かを判別する（ステップＳＧ２９）。親指で押鍵した後に親指くぐりので押鍵することはないので、ＦＰＲＥＶの値が０でない場合には、押鍵した指は親指であるので、ＦＩＧＰに０をストアする（ステップＳＧ３０）。ＦＰＲＥＶの値が０で前回の押鍵が親指である場合には、今回の押鍵は親指以外の他の指である。すなわち、暫定的な指番号が押鍵の指番号として確定される。指番号を確定した後は、その確定したＦＩＧＰの指番号をＦＰＲＥＶにストアして（ステップＳＧ３１）、このフローチャートを終了する。
【００５３】
図２４および図２５は、図１７の押鍵処理におけるステップＳＦ２３の手の座標処理のフローチャートである。まず、変数ｉに０をセットし（ステップＳＨ１）、レジスタｘｍａｘ、ｘｍｉｎ、ｙｍａｘ、ｙｍｉｎにそれぞれ撮像画像の左端の最小値座標０、右端の最大値座標ＳＸ、上端の最小値座標０、下端の最大値座標ＳＹをセットする（ステップＳＨ２）。次に、現在処理中の画素の座標ｘ、ｙをともに０にセットする（ステップＳＨ３）。すなわち、図７のエリアのＩＭＧ（０，０）の画素を指定する。そして、座標ｘ、座標ｙの値をインクリメントしながら、ＩＭＧ（０，０）の画素からＩＭＧ（ＳＸ，ＳＹ）の画素に至るまで以下のループ処理を行う。
【００５４】
ＩＭＧ（ｘ，ｙ）の画素の色と変数ｉで指定したＨＡＮＤＣ（ｉ）の色とが一致するか否かを判別する（ステップＳＨ４）。両者の色が一致する場合には、ｘの座標がｘｍａｘの座標よりも大きいか否かを判別し（ステップＳＨ５）、ｘの座標がｘｍａｘの座標よりも大きい場合には、ｘの座標をｘｍａｘの座標として更新する（ステップＳＨ６）。次に、ｘの座標がｘｍｉｎの座標よりも小さいか否かを判別し（ステップＳＨ７）、ｘの座標がｘｍｉｎの座標よりも小さい場合には、ｘの座標をｘｍｉｎの座標として更新する（ステップＳＨ８）。次に、ｙの座標がｙｍａｘの座標よりも大きいか否かを判別し（ステップＳＨ９）、ｙの座標がｙｍａｘの座標よりも大きい場合には、ｙの座標をｙｍａｘの座標として更新する（ステップＳＨ１０）。次に、ｙの座標がｙｍｉｎの座標よりも小さいか否かを判別し（ステップＳＨ１１）、ｙの座標がｙｍｉｎの座標よりも小さい場合には、ｙの座標をｙｍｉｎの座標として更新する（ステップＳＨ１２）。すなわち、ＨＡＮＤＣ（ｉ）の画像において、最大のｘ座標、最小のｘ座標、最大のｙ座標、および最小のｙ座標を検索する。
【００５５】
ステップＳＨ４において、ＩＭＧ（ｘ，ｙ）の画素の色とＨＡＮＤＣ（ｉ）の色とが一致しない場合には、ｘの座標を１つインクリメントする（ステップＳＨ１３）。このとき、ｘの座標が最大値座標ＳＸを超えたか否かを判別し（ステップＳＨ１４）、ｘの座標がＳＸ以下である場合には、ステップＳＨ４に移行して、ＩＭＧ（ｘ，ｙ）の画素の色とＨＡＮＤＣ（ｉ）の色とが一致するか否かを判別する。ｘの座標がＳＸを超えたときは、ｘの座標を０にセットし、ｙの座標を１つインクリメントする（ステップＳＨ１５）。このとき、ｙの座標が最大値座標ＳＹを超えたか否かを判別し（ステップＳＨ１６）、ｙの座標がＳＹ以下である場合には、ステップＳＨ４に移行して、ＩＭＧ（ｘ，ｙ）の画素の色とＨＡＮＤＣ（ｉ）の色とが一致するか否かを判別する。
【００５６】
ｙの座標がＳＹを超えたとき、すなわち、撮像された画面のすべての画素の色について、ＨＡＮＤＣ（ｉ）の色との一致又は不一致の判別が終了したときは、ｘｍａｘの値とｘｍｉｎの値との和の平均値をＰＸ（ｉ）にストアし、ｙｍａｘの値とｙｍｉｎの値との和の平均値をＰＹ（ｉ）にストアする（ステップＳＨ１７）。すなわち、ＨＡＮＤＣ（ｉ）に対応するシールのｘ座標の中心をＰＸ（ｉ）にストアし、ｙ座標の中心をＰＹ（ｉ）にストアする。したがって、ＨＡＮＤＣ（ｉ）に対応するシールの中心位置を取得する。次に、ｉの値を１つインクリメントして（ステップＳＨ１８）、次のシールを指定する。
【００５７】
次に、フラグＧＦが０であるか否かを判別し（ステップＳＨ１９）、ＧＦが０である場合には、フラグＷＦが０であるか否かを判別する（ステップＳＨ２０）。ＷＦが０である場合には、手の位置の座標を特定する場合であり、図２６の撮像画像に示すように、右手および左手の中央に１個のシールが貼付されている場合である。この場合には、ｉの値が１を超えたか否かを判別する（ステップＳＨ２１）。ｉの値が１である場合には、ステップＳＨ２に移行して、ステップＳＨ２１までの処理を繰り返す。ステップＳＨ２１において、ｉの値が１を超えたとき、すなわち、右手および左手の中央に貼付されたのシールの中心位置を取得したときは、メインルーチンに戻る。
【００５８】
ステップＳＨ１９においてＧＦが１である場合には、図２７に示すように、右手および左手の中央、中指の根元、手首に３個のシールが貼付されている場合である。ステップＳＨ２０においてＷＦが１である場合には、図２８に示すように、右手および左手の中央、親指の根元、小指の根元に３個のシールが貼付されている場合である。すなわち、ＧＦ＝１又はＷＦ＝１である場合には、両手の甲に合計６個のシールが貼付されている場合である。この場合には、図２５のフローにおいて、ｉの値が５を超えたか否かを判別する（ステップＳＨ２２）。ｉの値が５以下である場合には、図２４のステップＳＨ２に移行して、図２５のステップＳＨ２２までの処理を繰り返す。
【００５９】
ｉの値が５を超えたときは、変数ｉを再び０にセットして（ステップＳＨ２３）、下記の演算式を実行する（ステップＳＨ２４）。
ＰＸＤ＝ＰＸ（４＊ｉ＋２）−ＰＸ（４＊ｉ＋３）
ＰＹＤ＝ＰＹ（４＊ｉ＋２）−ＰＹ（４＊ｉ＋３）
【００６０】
ｉの値が０（右手）であるときは、ＰＸＤ＝ＰＸ（２）−ＰＸ（３）となり、ＰＹＤ＝ＰＹ（２）−ＰＹ（３）となる。図１０に示した割り付けによって、ＰＸ（２）は右手の中指の根元のｘ座標を表わし、ＰＸ（３）は右手の手首のｘ座標を表わす。したがって、ＰＸＤの値は、右手の中指の根元と手首との横方向の差分の値である。同様に、ＰＹ（２）は右手の中指の根元のｙ座標を表わし、ＰＹ（３）は右手の手首のｙ座標を表わす。したがって、ＰＹＤの値は、右手の中指の根元と手首との縦方向の差分の値である。
【００６１】
次に、ＧＦが１であるか否かを判別する（ステップＳＨ２５）。ＧＦが１である場合には、下記の演算式を実行して、ＧＤ（ｉ）を算出する（ステップＳＨ２６）。
ＧＤ（ｉ）＝ＡＴ（ＰＸＤ／ＰＹＤ）−ＫＧＤ
この演算式において、ＡＴ（ＰＸＤ／ＰＹＤ）はtan−１（ＰＸＤ／ＰＹＤ）すなわち逆正接関数であり、ＰＸＤおよびＰＹＤの値によって手の傾き角度を算出している。ＫＧＤは電子楽器１の鍵盤２の傾き角度である。
したがって、ｉの値が０である場合には、ＧＤ（０）は鍵盤２に対する右手の相対的な傾きを表わしている。
ステップＳＨ２６の後、ｉの値を１つインクリメントして（ステップＳＨ２７）、ｉの値が１を超えたか否かを判別する（ステップＳＨ２８）。ｉの値が１である場合には、ステップＳＨ２４に移行してステップＳＨ２８までの処理を繰り返す。
【００６２】
したがって、ステップＳＨ２５の演算式において、ｉの値が１（左手）であるときは、ＰＸＤ＝ＰＸ（６）−ＰＸ（７）となり、ＰＹＤ＝ＰＹ（６）−ＰＹ（７）となる。図１０に示した割り付けによって、ＰＸ（６）は左手の中指の根元のｘ座標を表わし、ＰＸ（７）は左手の手首のｘ座標を表わす。したがって、ＰＸＤの値は、左手の中指の根元と手首との横方向の差分の値である。同様に、ＰＹ（６）は左手の中指の根元のｙ座標を表わし、ＰＹ（７）は左手の手首のｙ座標を表わす。したがって、ＰＹＤの値は、左手の中指の根元と手首との縦方向の差分の値である。
また、ステップＳＨ２６の演算式において、ｉの値が１である場合には、ＧＤ（１）は鍵盤２に対する左手の相対的な傾きを表わしている。
【００６３】
ステップＳＨ２５においてＧＦが０である場合、すなわち、ＷＦが１である場合には、下記の演算式を実行して、鍵盤２と手の相対的な傾きθを算出する（ステップＳＨ２９）。
θ＝ＡＴ（ＰＸＤ／ＰＹＤ）−ＫＧＤ
次に、下記の演算式を実行して、ＷＤ（ｉ）を算出する（ステップＳＨ２９）。
|ＰＸ（４＊ｉ＋４）−ＰＸ（４＊ｉ＋５）|／cos（θ）＝ＷＤ（ｉ）
ｉの値が０（右手）である場合には、
|ＰＸ（４）−ＰＸ（５）|／cos（θ）＝ＷＤ（０）
となる。したがって、ＷＤ（０）の値は右手の親指の根元の位置と小指の根元の座標差をＧＤ（０）の余弦で除算した値であり、鍵盤２に対する相対的な手の傾きを補正した右手の幅を表わす。
ステップＳＨ２９の後は、ｉの値を１つインクリメントして（ステップＳＨ２７）、ｉの値が１を超えたか否かを判別する（ステップＳＨ２８）。ｉの値が１である場合には、ステップＳＨ２４に移行してステップＳＨ２９、ステップＳＨ２７、およびステップＳＨ２８の処理を繰り返す。
【００６４】
ステップＳＨ２９の演算式において、ｉの値が１（左手）であるときは、
|ＰＸ（８）−ＰＸ（９）|／cos（θ）＝ＷＤ（１）
となる。したがって、ＷＤ（１）の値は左手の親指の根元の位置と小指の根元の座標差をＧＤ（０）の余弦で除算した値であり、手の傾きを補正した左手の幅を表わす。
ステップＳＨ２８においてｉの値が１を超えたときは、このフローを終了して、図１７の押鍵処理におけるステップＳＦ２４の判定処理に以降する。
【００６５】
図２９ないし図３１は、図１７の押鍵処理におけるステップＳＦ２４の判定処理のフローチャートである。この判定処理においては、検索用の２つのポインタｐｂ、ｐｆを使用して、演奏データの正誤や演奏のタイミングずれを判定する。ｐｂは、すでに押鍵をガイドしたイベントを検索するポインタであり、ｐｆは、次に押鍵をガイドする予定のイベントを検索するポインタである。図２９において、まず、ｐｂに変数ｎの値をセットする（ステップＳＫ１）。変数ｎの値は、図１３のフローのステップＳＣ７およびステップＳＣ８に示したように、電子楽器１に出力してすでに押鍵をガイドした発音のイベントＮＯＴＥ（ｎ）を示すものである。次に、ｐｆにＮＯＴＥ（ｎ）のｐｎの値をセットする（ステップＳＫ２）。すなわち、次に押鍵をガイドする予定のイベントを示すポインタｐｎの値をｐｆにセットする。
【００６６】
次に、ＮＯＴＥ（ｐｂ）およびＮＯＴＥ（ｐｆ）がともにＮＵＬＬであるか否かを判別する（ステップＳＫ３）。これらがともにＮＵＬＬである場合には、すでに押鍵をガイドしたイベントに対する演奏データの判定が終了し、次にガイドするイベントの無い状態、すなわち、判定する対象がないのでメインルーチンに戻る。ＮＯＴＥ（ｐｂ）およびＮＯＴＥ（ｐｆ）のうち少なくとも一方がＮＵＬＬでない場合には、ＮＯＴＥ（ｐｂ）がＮＵＬＬであるか否かを判別する（ステップＳＫ４）。ＮＯＴＥ（ｐｂ）がＮＵＬＬでない場合には、このイベントを電子楽器１に出力して、電子楽器１から入力された演奏データがＲＡＭ１３のＰＬＢＵＦのエリアにストアされている場合である。
【００６７】
この場合には、イベントＮＯＴＥ（ｐｂ）の発音開始時間であるＯＮＴＩＭＥ（ｐｂ）をｔ１にストアし（ステップＳＫ５）、演奏データＰＬＢＵＦ（ｐｐ）の押鍵開始時間であるＯＮＴＩＭＥ（ｐｐ）をｔ２にストアする（ステップＳＫ６）。そして、ｔ１とｔ２の時間差の絶対値がタイミングずれの許容値ＬＡＧ以下であるか否かを判別する（ステップＳＫ７）。ｔ１とｔ２の時間差の絶対値がＬＡＧ以下である場合には、押鍵をガイドしたイベントの音高であるＰＩＴＣＨ（ｐｂ）の値が押鍵の鍵番号ＫＥＹの値と一致するか否かを判別する（ステップＳＫ８）。値が一致する場合には、イベントＮＯＴＥ（ｐｂ）に対する演奏データの判定を示すフラグＭＫ（ｐｂ）が０（未判定）であるか否かを判別し（ステップＳＫ９）、ＭＫ（ｐｂ）が０である場合には、ＭＫ（ｐｂ）を１（判定）にセットする（ステップＳＫ１０）。
【００６８】
次に、ｐｐにｐｂの値をセットする（ステップＳＫ１１）。すなわち、判定対象の演奏データＰＬＢＵＦ（ｐｐ）のポインタを押鍵ガイドのイベントＮＯＴＥ（ｐｂ）のポインタと一致させる。次に、ｔ１とｔ２の時間差の絶対値が良否の閾値ＯＫ以内であるか否かを判別する（ステップＳＫ１２）。ＯＫ以内である場合には、図８における演奏データＰＬＢＵＦ（ｐｐ）の評価エリアＯＮＪに１をストアする（ステップＳＫ１３）。すなわち、演奏のタイミングずれがない正確な演奏であると判定する。ステップＳＫ８においてＰＩＴＣＨ（ｐｂ）の値がＫＥＹの値と一致しない場合、又は、ステップＳＫ９においてＭＫ（ｐｂ）が１で、ＮＯＴＥ（ｐｂ）に対する判定が終っている場合には、演奏データがＮＯＴＥ（ｐｂ）よりさらに前のイベントに対するものであるか否かを検索するために、ｐｂにＮＯＴＥ（ｐｂ）において１つ前のイベントを指定するポインタｐｒをセットする（ステップＳＫ１４）。
【００６９】
ステップＳＫ１２において、ｔ１とｔ２の時間差の絶対値がＯＫから外れている場合には、図３０のフローにおいて、ｔ１の時間がｔ２の時間より大きいか否かを判別する（ステップＳＫ１５）。すなわち、演奏データＰＬＢＵＦ（ｐｐ）の押鍵開始時間がイベントＮＯＴＥ（ｐｂ）の発音開始時間より早いか否かを判別する（ステップＳＫ１５）。ｔ１の時間がｔ２の時間より大きい場合には、ＯＮＪに２をストアする（ステップＳＫ１６）。すなわち、押鍵ガイドの発音タイミングに対して演奏のタイミングが早すぎると判定する。これと反対に、ｔ１の時間がｔ２の時間より小さい場合には、ＯＮＪに３をストアする（ステップＳＫ１７）。すなわち、押鍵ガイドの発音タイミングに対して演奏のタイミングが遅すぎると判定する。
【００７０】
図２９のステップＳＫ１３においてＯＮＪに１をストアした後、又は、図３０のステップＳＫ１６においてＯＮＪに２をストアした後、又は、ステップＳＫ１７においてＯＮＪに３をストアした後は、次に押鍵をガイドする予定のイベントを検索する必要がないので、ｐｆにＮＵＬＬをストアする（ステップＳＫ１８）。さらに、すでに押鍵をガイドしたイベントも検索する必要がないので、ｐｂにＮＵＬＬをストアする（ステップＳＫ１９）。図２９のステップＳＫ７において、ｔ１とｔ２の時間差の絶対値が許容値ＬＡＧを超えている場合には、電子楽器１から入力された演奏データは、すでに押鍵をガイドしたＮＯＴＥ（ｐｂ）に対するものではないので、図３０のステップＳＫ１９においてｐｂにＮＵＬＬをストアする。
【００７１】
図３０のステップＳＫ１９の後、又は、図２９のステップＳＫ２３のステップＳＫ４において、ＮＯＴＥ（ｐｂ）がＮＵＬＬである場合、若しくは、ステップＳＫ１４において、ｐｂにＮＯＴＥ（ｐｂ）のｐｒをセットした後は、図３０のフローにおいて、ＮＯＴＥ（ｐｆ）がＮＵＬＬであるか否かを判別する（ステップＳＫ２０）。ＮＯＴＥ（ｐｆ）がＮＵＬＬでない場合には、イベントＮＯＴＥ（ｐｆ）の発音開始時間であるＯＮＴＩＭＥ（ｐｆ）をｔ１にストアし（ステップＳＫ２１）、演奏データＰＬＢＵＦ（ｐｐ）の押鍵開始時間であるＯＮＴＩＭＥ（ｐｐ）をｔ２にストアする（ステップＳＫ２２）。そして、ｔ１とｔ２の時間差の絶対値がタイミングずれの許容値ＬＡＧ以下であるか否かを判別する（ステップＳＫ２３）。ｔ１とｔ２の時間差の絶対値がＬＡＧ以下である場合には、押鍵をガイドしたイベントの音高であるＰＩＴＣＨ（ｐｆ）の値が押鍵の鍵番号ＫＥＹの値と一致するか否かを判別する（ステップＳＫ２４）。値が一致する場合には、イベントＮＯＴＥ（ｐｆ）に対する演奏データの判定を示すフラグＭＫ（ｐｆ）が０（未判定）であるか否かを判別し（ステップＳＫ２５）、ＭＫ（ｐｆ）が０である場合には、ＭＫ（ｐｆ）を１（判定）にセットする（ステップＳＫ２６）。
【００７２】
次に、ｐｐにｐｆの値をセットする（ステップＳＫ２７）。すなわち、判定対象の演奏データＰＬＢＵＦ（ｐｐ）のポインタを押鍵ガイドのイベントＮＯＴＥ（ｐｆ）のポインタと一致させる。ステップＳＫ２４においてＰＩＴＣＨ（ｐｆ）の値がＫＥＹの値と一致しない場合、又は、ステップＳＫ２５においてＭＫ（ｐｆ）が１で、ＮＯＴＥ（ｐｆ）に対する判定が終っている場合には、演奏データがＮＯＴＥ（ｐｆ）よりさらに後のイベントに対するものであるか否かを検索するために、ｐｆにＮＯＴＥ（ｐｆ）において１つ後のイベントを指定するポインタｐｎをセットする（ステップＳＫ２８）。次に、図３１のフローにおいて、ｔ１とｔ２の時間差の絶対値が良否の閾値ＯＫ以内であるか否かを判別する（ステップＳＫ２９）。ＯＫ以内である場合には、図８における演奏データＰＬＢＵＦ（ｐｐ）および図７におけるＰＬＡＹ（ｐｐ）の評価エリアＯＮＪに１をストアする（ステップＳＫ３０）。すなわち、演奏のタイミングずれがない正確な演奏であると判定する。
【００７３】
ステップＳＫ２９において、ｔ１とｔ２の時間差の絶対値がＯＫから外れている場合には、ｔ１の時間がｔ２の時間より大きいか否かを判別する（ステップＳＫ３１）。すなわち、演奏データＰＬＢＵＦ（ｐｐ）の押鍵開始時間がイベントＮＯＴＥ（ｐｆ）の発音開始時間より早いか否かを判別する。ｔ１の時間がｔ２の時間より大きい場合には、ＯＮＪに２をストアする（ステップＳＫ３２）。すなわち、押鍵ガイドの発音タイミングに対して演奏のタイミングが早すぎると判定する。これと反対に、ｔ１の時間がｔ２の時間より小さい場合には、ＯＮＪに３をストアする（ステップＳＫ３３）。すなわち、押鍵ガイドの発音タイミングに対して演奏のタイミングが遅すぎると判定する。
【００７４】
図３１のステップＳＫ３０においてＯＮＪに１をストアした後、ステップＳＫ３２においてＯＮＪに２をストアした後、又は、ステップＳＫ３３においてＯＮＪに３をストアした後は、すでに押鍵をガイドしたイベントを検索する必要がないので、ｐｂにＮＵＬＬをストアする（ステップＳＫ３４）。さらに、次に押鍵をガイドする予定のイベントに対して演奏データが入力されて、その判定が終了しているので、そのイベントを検索する必要がない。したがって、ｐｆにＮＵＬＬをストアする（ステップＳＫ３５）。図３０のステップＳＫ２３において、ｔ１とｔ２の時間差の絶対値が許容値ＬＡＧを超えている場合には、電子楽器１から入力された演奏データは、次に押鍵をガイドする予定のＮＯＴＥ（ｐｆ）に対するものではないので、図３１のステップＳＫ３５においてｐｆにＮＵＬＬをストアする。
【００７５】
図３０のステップＳＫ２０においてｐｆがＮＵＬＬである場合、又は、ステップＳＫ２８において、ｐｆにＮＯＴＥ（ｐｆ）のｐｎをセットした後、又は、図３１のステップＳＫ３５においてｐｆにＮＵＬＬをストアした後は、図５の曲データにおける手の動きのパラメータ、すなわち、模範の手の位置を示すＰＸＯおよびＰＹＯ、模範の手の傾きを示すＧＤＯ、模範の手の幅を示すＷＤＯと、カメラ５で撮像された演奏中の手の動きのパラメータ、すなわち、図１１に示す手の位置を示すＰＸおよびＰＹ、手の傾きを示すＧＤ、手の幅を示すＷＤとを比較して、それぞれの判定結果を図８のＰＬＢＵＦ（ｐｐ）および図７のＰＬＡＹ（ｐｐ）における評価エリアＰＪ、ＧＪ、ＷＪにストアする。
【００７６】
図３１において、ＰＸとＰＸＯとの差の絶対値が基準値ＸＴ以下であるか否かを判別し（ステップＳＫ３６）、ＸＴ以下である場合には、ＰＹとＰＹＯとの差の絶対値が基準値ＹＴ以下であるか否かを判別し（ステップＳＫ３７）、ＹＴ以下である場合にはＰＪに１（正確な手の位置）をストアする（ステップＳＫ３８）。ステップＳＫ３６においてＰＸとＰＸＯとの差の絶対値がＸＴを超えている場合、又は、ステップＳＫ３７においてＰＹとＰＹＯとの差の絶対値がＹＴを超えている場合には、ＰＪに０（手の位置ずれ）をストアする（ステップＳＫ３９）。
【００７７】
次に、ＧＦが１であるか否かを判別する（ステップＳＫ４０）。ＧＦが１である場合には、ＧＤとＧＤＯとの差の絶対値が基準値ＧＴ以下であるか否かを判別し（ステップＳＫ４１）、ＧＴ以下である場合にはＧＪに１（正確な手の傾き）をストアし（ステップＳＫ４２）、ＧＴを超えている場合にはＧＪに０（手の傾きのずれ）をストアする（ステップＳＫ４３）。ステップＳＫ４０においてＧＦが０である場合には、ＷＦが１であるか否かを判別する（ステップＳＫ４４）。ＷＦが１である場合には、ＷＤとＷＤＯとの差の絶対値が基準値ＷＴ以下であるか否かを判別し（ステップＳＫ４５）、ＷＴ以下である場合にはＷＪに１（正確な手の幅）をストアし（ステップＳＫ４６）、ＷＴを超えている場合にはＷＪに０（手の幅のずれ）をストアする（ステップＳＫ４７）。
【００７８】
ＰＪ、ＧＪ、およびＷＪに１又は０をストアした後は、図２９のステップＳＫ３に移行して、ＮＯＴＥ（ｐｂ）およびＮＯＴＥ（ｐｆ）がともにＮＵＬＬであるか否かを判別する。いずれか一方がＮＵＬＬでない場合には、ステップＳＫ５以降の処理を繰り返す。そして、押鍵をガイドしたすべてのイベントに対して、電子楽器１から入力された演奏データの判定がすべて終了したときは、ステップＳＫ３においてＮＯＴＥ（ｐｂ）およびＮＯＴＥ（ｐｆ）がともにＮＵＬＬとなるので、メインルーチンに戻る。
【００７９】
図３２は、図１５のＭＩＤＩ・ＩＮのフローにおけるステップＳＥ４の離鍵処理のフローチャートである。まず、押鍵の鍵番号をＫＥＹにストアし（ステップＳＬ１）、ＫＥＹで指定される演奏データの離鍵開始時間ＯＮＴＩＭＥ（ＫＥＹ）に現時刻をストアする（ステップＳＬ２）。次に、図８のＰＬＢＵＦのエリアを指定するポインタｐｑを０にセットして（ステップＳＬ３）、ｐｑの値をインクリメントしながら、離鍵された鍵番号に対応する押鍵の演奏データを捜す。ｐｑで指定するＰＬＢＵＦ（ｐｑ）がＮＵＬＬであるか否かを判別し（ステップＳＬ４）、ＰＬＢＵＦ（ｐｑ）がＮＵＬＬでない場合には、ＰＬＢＵＦ（ｐｑ）におけるｐｐによってＰＬＡＹ（ｐｐ）を指定する（ステップＳＬ５）。そして、ＰＬＡＹ（ｐｐ）の鍵番号とＫＥＹの鍵番号とが一致するか否かを判別する（ステップＳＬ６）。これらの鍵番号が一致しない場合には、ｐｑの値を１つインクリメントして（ステップＳＬ７）、ステップＳＬ４において、新たなｐｑで指定するＰＬＢＵＦ（ｐｑ）がＮＵＬＬであるか否かを判別する。
【００８０】
ステップＳＬ６においてＰＬＡＹ（ｐｐ）の鍵番号とＫＥＹの鍵番号とが一致した場合には、ＰＬＡＹ（ｐｐ）の押鍵開始時間ＯＮＴＩＭＥ（ｐｐ）に離鍵開始時間ＯＮＴＩＭＥ（ＫＥＹ）を加算した時間をＰＬＡＹ（ｐｐ）の発音継続時間（音長）としてストアする（ステップＳＬ８）。この後は、離鍵の演奏データに対する判定処理を行う（ステップＳＬ９）。なお、ステップＳＬ４において、ＰＬＢＵＦ（ｐｑ）がＮＵＬＬである場合には、離鍵された鍵番号に対応する押鍵の演奏データがＰＬＢＵＦのすべてのエリアに存在しない。この場合にも、ステップＳＬ９における判定処理を行う。判定処理の後はメインルーチンに戻る。
【００８１】
図３３は、図３２のフローにおけるステップＳＬ９の判定処理のフローチャートである。まず、ポインタｐｑで指定するＰＬＢＵＦ（ｐｑ）がＮＵＬＬであるか否かを判別し（ステップＳＭ１）、ＰＬＢＵＦ（ｐｑ）がＮＵＬＬでない場合には、変数ｍを０にセットして（ステップＳＭ２）、図６に示したＯＮＢＵＦのエリアにおけるノートオンのイベントの中から、ＯＮＢＵＦ（ｍ）を指定する（ステップＳＭ３）。そして、ＯＮＢＵＦ（ｍ）の音高ＰＩＴＣＨ（ｍ）とＫＥＹの鍵番号とが一致するか否かを判別する（ステップＳＭ４）。ＰＩＴＣＨ（ｍ）とＫＥＹとが一致しない場合には、ｍの値を１つインクリメントする（ステップＳＭ５）。このとき、ＯＮＢＵＦ（ｍ）がＮＵＬＬであるか否かを判別し（ステップＳＭ６）、ＯＮＢＵＦ（ｍ）がＮＵＬＬでない場合には、ステップＳＭ３に移行して、新たなｍに対するＯＮＢＵＦ（ｍ）を指定する。そして、ＰＩＴＣＨ（ｍ）とＫＥＹとが一致するか否かを判別する。
【００８２】
ＰＩＴＣＨ（ｍ）とＫＥＹとが一致した場合には、図６に示したＯＮＢＵＦのエリアにおいて、ＯＮＢＵＦ（ｍ）の発音終了時間ＯＦＦＴＩＭＥ（ｍ）の値をｔ１にストアし（ステップＳＭ７）、離鍵開始時間ＯＮＴＩＭＥ（ＫＥＹ）をｔ２にストアする（ステップＳＭ８）。そして、ｔ１とｔ２の時間差の絶対値がタイミングずれの許容値ＬＡＧ以下であるか否かを判別する（ステップＳＭ９）。ｔ１とｔ２の時間差の絶対値がＬＡＧ以下である場合には、ｔ１とｔ２の時間差の絶対値が良否の閾値ＯＫ以内であるか否かを判別する（ステップＳＭ１０）。ＯＫ以内である場合には、図７および図８の対応するエリアのＯＦＦＪに１をストアする（ステップＳＭ１１）。すなわち、演奏のタイミングずれがない正確な演奏であると判定する。
【００８３】
ステップＳＭ１０において、ｔ１とｔ２の時間差の絶対値がＯＫから外れている場合には、ｔ１の時間がｔ２の時間より大きいか否かを判別する（ステップＳＭ１２）。すなわち、演奏データの離鍵開始時間が離鍵ガイドのイベントの発音終了時間より早いか否かを判別する。ｔ１の時間がｔ２の時間より大きい場合には、ＯＦＦＪに２をストアする（ステップＳＭ１３）。すなわち、押鍵ガイドの消音タイミングに対して離鍵のタイミングが早すぎると判定する。これと反対に、ｔ１の時間がｔ２の時間より小さい場合には、ＯＦＦＪに３をストアする（ステップＳＭ１４）。すなわち、離鍵ガイドの消音タイミングに対して離鍵のタイミングが遅すぎると判定する。
【００８４】
ステップＳＭ１においてＰＬＢＵＦ（ｐｑ）がＮＵＬＬの場合、すなわち、離鍵した鍵番号に対応する演奏データがＰＬＢＵＦのエリアにない場合には、その離鍵した鍵の押鍵が押鍵ガイドのイベントの音高と異なっているので、押鍵が誤っていると判定する。この場合には、ＯＦＦＪに０をストアする（ステップＳＭ１５）。また、ステップＳＭ６においてＯＮＢＵＦ（ｍ）がＮＵＬＬの場合も同様に、離鍵した鍵番号に対応する演奏データがＯＮＢＵＦのエリアにないので、押鍵誤りと判定してＯＦＦＪに０をストアする（ステップＳＭ１５）。さらに、ステップＳＭ９においてｔ１とｔ２の時間差の絶対値がタイミングずれの許容値ＬＡＧを超えている場合も、押鍵誤りと判定してＯＦＦＪに０をストアする（ステップＳＭ１５）。すなわち、この実施形態においては、離鍵の後にその押鍵が誤っているか否かを判定している。
【００８５】
この判定結果は、履歴データとして不揮発性メモリ１８に保存されるとともに、パソコン６の表示部１５に表示された楽譜にもリアルタイムで表示される。例えば、ＯＮＪおよびＯＦＦＪの値に応じて、正確な演奏（ＯＮＪ＝ＯＦＦＪ＝１）の場合は「○」、誤った演奏（ＯＦＦＪ＝０）の場合は「×」、早すぎる演奏タイミング（ＯＮＪ＝ＯＦＦＪ＝２）の場合は「→」、遅すぎる演奏タイミング（ＯＮＪ＝ＯＦＦＪ＝３）の場合は「←」のマークが音符の画像に対応して表示される。また、ＰＪ、ＧＪ、ＷＪが０である場合には、模範の手の位置、手の傾き、手の幅を表わす画像が表示部１５に表示される。
【００８６】
以上のように、上記実施形態によれば、ＣＰＵ１１は、電子楽器１で演奏された楽曲の演奏データをＭＩＤＩ・ＩＦ１６を介して入力する。カメラ５は、電子楽器１の鍵盤２の画像２ｉおよび鍵盤２を演奏中の手の画像７ｉ、８ｉを撮像する。ＣＰＵ１１は、楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと、ＭＩＤＩ・ＩＦ１６から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像とカメラ５によって撮像された演奏中の手の画像とを比較して、比較結果を判定して電子楽器１の演奏を評価する。
したがって、曲データを演奏した後に、演奏した音高の正誤や演奏のタイミングだけでなく、演奏中の手の動きを模範の演奏と比較することにより、効率的な演奏練習を実現できる。
【００８７】
この場合において、ＣＰＵ１１は、鍵盤２の画像２ｉおよび手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせと、模範の演奏データにおける演奏中の手の画像における手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせとを比較する。
したがって、演奏中の手の動きに対してきめ細かな評価を行うことができるので、より効率的な演奏練習を実現できる。この場合に、ＣＰＵ１１は、手の甲の複数箇所に貼付された異なる色彩のシールに基づいて手の位置、手の傾き、および手の幅を正確に検出する。
また、ＣＰＵ１１は、各指先に貼付された異なる色彩のシールに基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較して、運指の良否を正確に評価する。
さらに、ＣＰＵ１１は、スイッチ部１４によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とするので、演奏者が不得意とする演奏の手の動きを集中的に練習して、その評価を得ることで、演奏者の技量に応じた効率的な演奏練習を実現できる。
【００８８】
なお、上記実施形態においては、パソコン６と接続する鍵盤装置として、電子楽器１を例に採って本発明の演奏データ作成システムを説明したが、本発明の演奏データ作成システムに使用する鍵盤装置は電子楽器１に限定するものではない。例えば、外部音源と接続して楽音を発音するキーボード装置をパソコン６と接続することも可能である。
【００８９】
上記実施形態においては、手の爪に異なる色彩のシールを貼付することによって、シールの画像とそれ以外の画像とを識別して、演奏する指を判定する構成にしたが、実施形態の変形例として、手の爪にシールを貼付しない構成について説明する。
図３４は、カメラ５で撮像された右手の画像と、その画像に対して上下位置ｙを変えながら、ｘ方向にスキャンした信号を示す図である。なお、左手の画像は、右手の画像と対称になることと、指番号が異なるだけであるので、説明および図面は省略する。
【００９０】
図３４（Ａ）に示すように、親指くぐりや親指越えがない場合には、手が存在する部分を「１」存在しない部分を「０」に２値化した信号は、ｙ１の位置では指の画像がないＭＯＤＥ＝０のパターンになる。ｙ２の位置になると、親指（０）の画像のみが現れ、他の指の画像はまだ現れないＭＯＤＥ＝１のパターンになる。ｙ３の位置になると、親指の画像はなくなり、人差し指（１）、中指（２）、薬指（３）、小指（４）の画像が現れるＭＯＤＥ＝３のパターンになる。ここで、１又は０に２値化した信号における親指（０）、人差し指（１）、中指（２）、薬指（３）、小指（４）の画像信号を、ＦＩＧ（０）、ＦＩＧ（１）、ＦＩＧ（２）、ＦＩＧ（３）、ＦＩＧ（４）と定義する。
【００９１】
一方、図３４（Ｂ）に示すように、親指くぐりや親指越えがある場合には、ｙ１の位置では、図３２（Ａ）の場合と同じように、指の画像がないＭＯＤＥ＝０のパターンになるが、ｙ２の位置においては、図３２（Ａ）の場合と異なり、指の画像がないＭＯＤＥ＝０のパターンになる。そして、ｙ３の位置になると、再び図３４（Ａ）の場合と同じように、親指の画像はなくなり、人差し指（１）、中指（２）、薬指（３）、小指（４）の画像が現れるＭＯＤＥ＝３のパターンになる。
【００９２】
この変形例では、上記の実施形態における図１７の画像処理（ステップＳＦ２２）が異なり、他の処理については実施形態と同じである。図３５ないし図３７は、変形例における画像処理のフローチャートである。
図３５において、まず、押鍵された鍵の座標であるｘ（ＫＥＹ）を変数ｊにストアし、ｙ（ＫＥＹ）を変数ｋにストアする（ステップＳＮ１）。次に、鍵盤の画像を消去する（ステップＳＮ２）。実際には、ＲＡＭ１３に鍵盤の画像のエリア、手の画像のエリア、座標のエリアを設けて、図１９に示したように、各白鍵および各黒鍵において押鍵する指が接触する範囲の領域ＡＲ（０）、ＡＲ（１）、ＡＲ（２）、ＡＲ（３）…を確定した後は、鍵盤の画像のエリアを消去するか、又は画像処理の対象から外す。
【００９３】
次に、上下方向の位置であるｙの値をｙ１にセットして（ステップＳＮ３）、その位置でスキャンした信号のパターンがＭＯＤＥ＝０であるか否かを判別する（ステップＳＮ４）。信号のパターンがＭＯＤＥ＝０でない場合には、鍵盤上に手がない状態であるのでこのフローを終了するが、信号のパターンがＭＯＤＥ＝０の場合には、ｙの値を所定値であるΔだけインクリメントする（ステップＳＮ５）。Δの値は実像における数ミリ程度、例えば、５ミリとする。次に、その位置でスキャンした信号のパターンがＭＯＤＥ＝０からＭＯＤＥ＝１に変化したか否かを判別する（ステップＳＮ６）。
【００９４】
信号のパターンがＭＯＤＥ＝１に変化したときは、さらにｙの値をΔだけインクリメントする（ステップＳＮ７）。そして、その位置でスキャンした信号のパターンにおいて、ＦＩＧ（０）が１から０に変化したか否かを判別する（ステップＳＮ８）。すなわち、親指の画像が消えたか否かを判別する。ＦＩＧ（０）が０に変化したときは、ｙの値をΔだけデクリメントして（ステップＳＮ９）、親指の画像が存在する位置まで戻る。そして、ＦＩＧ（０）の位置を取得する（ステップＳＮ１０）。具体的には、図３４（Ｃ）に示すように、親指の画像の左端および右端のｘ座標であるｘ１およびｘ２を検出して、中点の座標ｘ＝（ｘ１＋ｘ２）／２の演算式で求めて、ＦＩＧ（０）の座標Ｐ０（ｘ、ｙ）を取得する。
【００９５】
次に、再びｙの値をΔだけインクリメントして（ステップＳＮ１１）、その位置でスキャンした信号のパターンがＭＯＤＥ＝３に変化したか否かを判別する（ステップＬ１２）。ＭＯＤＥ＝３に変化しない場合には、ステップＳＮ１１においてさらにｙの値をΔだけインクリメントする。すなわち、親指以外の４本の指の画像が現れる状態、すなわち、ＦＩＧ（１）＝ＦＩＧ（２）＝ＦＩＧ（３）＝ＦＩＧ（４）＝１の信号のパターンになるまでｙの値をインクリメントする。
【００９６】
ステップＳＮ５におけるｙの値のインクリメントによって、ステップＳＮ６でＭＯＤＥ＝１に変化しない場合には、ＭＯＤＥ＝２に変化したか否かを判別する（ステップＳＮ１３）。ＭＯＤＥ＝２に変化しない場合、すなわち、ＭＯＤＥ＝０の状態が続いている場合には、ステップＳＮ５におけるｙの値のインクリメントを繰り返す。ステップＳＮ１３においてＭＯＤＥ＝２に変化した場合、すなわち、ステップＳＮ５におけるｙの値のインクリメントによって、ＭＯＤＥ＝０からＭＯＤＥ＝１を経ることなくＭＯＤＥ＝２に変化した場合は、図３４（Ｂ）に示した親指くぐり又は親指越えの場合である。
【００９７】
この場合には、親指くぐりでの親指による押鍵であるか、又は親指越えでの中指による押鍵であるかを判別する必要がある。したがって、上記の実施形態の場合と同様に、前回の押鍵の指番号であるＦＰＲＥＶが０（親指）でないか否かを判別して（ステップＳＮ１４ａ）、ＦＰＲＥＶが０でない場合には、ＦＩＧＰに０をストアする（ステップＳＮ１４ｂ）。すなわち、前回の押鍵が親指でない場合には、図３４（Ｂ）に示した画像は親指くぐりであるので、今回の押鍵の指番号を０（親指）とする。ＦＩＧＰに０をストアした後は、このフローを終了して判定処理に移行する。
【００９８】
ステップＳＮ１２においてＭＯＤＥ＝２に変化した場合、又は、ステップＳＮ２４ａにおいてＦＰＲＥＶが０である場合には、図３６のフローにおいて、人差し指、中指、薬指、小指の信号ＦＩＧ（１）、ＦＩＧ（２）、ＦＩＧ（３）、ＦＩＧ（４）が１であるか０であるかを判別するフラグｆ（１）、ｆ（２）、ｆ（３）、ｆ（４）をすべて１にセットし、指の画像の数を示す変数Ｍを４にセットする（ステップＳＮ１５）。次に、指を指定する変数ｉを１にセットして（ステップＳＮ１６）、ｙの値をΔだけインクリメントする（ステップＳＮ１７）。次に、指（ｉ）に対応するｆ（ｉ）が１であるか否かを判別する（ステップＳＮ１８）。ｆ（ｉ）が１である場合には、信号ＦＩＧ（ｉ）＝０であるか否かを判別する（ステップＳＮ１９）。図３４（Ａ）、（Ｂ）に示すように、信号のパターンがＭＯＤＥ＝２になった最初は、人差し指、中指、薬指、小指のすべてについて、信号ＦＩＧ（ｉ）＝１である。したがって、ｉの値を１つインクリメントして（ステップＳＮ２０）、ｉの値が４を超えたか否かを判別する（ステップＳＮ２１）。ｉの値が４以下である場合には、ステップＳＮ１８においてｆ（ｉ）が０であるか否かを判別する。ｉの値が４を超えた場合には、ステップＳＮ１６に移行して再びｉを１に戻して、ステップＳＮ１７以下の処理を繰り返す。
【００９９】
ｙの値をΔ単位でインクリメントしていった結果、ある指（ｉ）の信号ＦＩＧ（ｉ）＝０になったときは、ｆ（ｉ）を０にリセットして（ステップＳＮ２２）、ｙの値をΔだけデクリメントして（ステップＳＮ２３）、ＦＩＧ（ｉ）＝１の位置に戻る。そして、図３４（Ｃ）に示すように、その指の位置である座標Ｐｉ（ｘ、ｙ）を取得する（ステップＳＮ２４ａ）。次に、ｙの値をΔだけインクリメントして元の位置に戻る（ステップＳＮ２４ｂ）。この後、Ｍの値を１つデクリメントする（ステップＳＮ２５）。このとき、Ｍの値が０になったか否かを判別し（ステップＳＮ２６）、Ｍの値が１以上である場合には、ステップＳＮ２０に移行してｉの値を１つインクリメントする。
【０１００】
このように、ｙの値をΔだけインクリメントしながら、任意の指のＦＩＧ（ｉ）が１から０に変化する位置、すなわち、その指の先端部を検出するたびに、その指の座標Ｐｉ（ｘ、ｙ）を取得する。そして、１つの指の座標Ｐｉ（ｘ、ｙ）を取得するごとにＭの値をデクリメントする。ステップＳＮ２６においてＭの値が０になった場合、すなわち、人差し指、中指、薬指、小指のすべてについて座標Ｐｉ（ｘ、ｙ）（ｉ＝１〜４）を取得したときは、図３７のフローにおいて、ｉを０にセットして（ステップＳＮ２７）、ｉの値を変化させながら押鍵した指を検出する処理を行う。
【０１０１】
すなわち、Ｐｉ（ｘ、ｙ）がＡＲ（ＫＥＹ）の位置であるか否かを判別し（ステップＳＮ２８）、Ｐｉ（ｘ、ｙ）がＡＲ（ＫＥＹ）とは異なる位置である場合には、ｉの値をインクリメントする（ステップＳＮ２９）。このとき、ｉの値が４を超えたか否かを判別する（ステップＳＮ３０）。ｉの値が４以下である場合には、ステップＳＮ２８においてＰｉ（ｘ、ｙ）がＡＲ（ＫＥＹ）の位置であるか否かを判別する。Ｐｉ（ｘ、ｙ）がＡＲ（ＫＥＹ）の位置である場合には、ＦＩＧＰにｉの値をストアする（ステップＳＮ３１）。そして、ＰＰＲＥＶにＦＩＧＰの値をストアして（ステップＳＮ３２）、このフローを終了してメインフローに戻る。ステップＳＮ３０においてｉの値が４を超えたときは、正常な演奏ではないので、ＦＩＧＰにＮＵＬＬをストアして（ステップＳＮ３３）、このフローを終了してメインフローに戻る。
【０１０２】
以上のように、この変形例においては、ＣＰＵ１１は、各指にシールが貼付されない場合でも、鍵盤の画像および手の画像に基づいて、図３５ないし図３７の画像処理を行って、各鍵の位置および演奏中の各指の位置を検出することによって、演奏中の運指の画像処理を行うことができる。
【０１０３】
さらに、上記実施形態においては、図２６、図２７、図２８に示したように、右手および左手の甲において、中央、中指の根元、手首、親指の根元、小指の根元に異なる色彩のシールを貼付して、手の位置、手の傾き、手の幅を検出する構成を説明したが、図３５ないし図３７のフローを応用して、シールを貼付しない場合でも、手の位置、手の傾き、手の幅を検出することができる。
【０１０４】
例えば、図３４（Ａ）の場合において、ｙの値をΔだけインクリメントしたときに、ＭＯＤＥ＝０からＭＯＤＥ＝１に変化した場合には、ＭＯＤＥ＝１の信号において、手の甲に対応する信号の左右両端のｘ座標であるｘ１およびｘ２を取得し、その中点である（ｘ１＋ｘ２）／２のｘ座標とｙ座標によって手の中央の位置ＰＸおよびＰＹを検出できる。
【０１０５】
さらに、ｙの値をΔだけデクリメントして、ＭＯＤＥ＝０に戻した場合において、ＭＯＤＥ＝０の信号における左端のｘ座標を取得すれば、親指の根元の位置のｘ座標を検出できる。この後、ｙの値をインクリメントしていき、ＭＯＤＥ＝１の信号が変形したときは、そのときのｙの位置が手の甲と親指以外の４本の指との境界と見なせるので、信号における右端のｘ座標を取得すれば、小指の根元の位置のｘ座標を検出できる。したがって、小指の根元の位置のｘ座標から親指の根元の位置のｘ座標を減算すれば、右手の幅ＷＤ（０）のデータが得られる。
【０１０６】
さらに、ｙの値をインクリメントして、ＭＯＤＥ＝２の信号に変化したとき、中指の信号ＦＩＧ（２）における中心位置のｘ座標を図３４（Ｃ）によって算出すれば、中指の根元の座標を検出できる。最後に、中指の先端における中心位置のｘ座標を図３４（Ｃ）によって算出すれば、中指の指先の位置のｘ座標を検出できる。上記実施形態においては、手首の位置と中指の根元の位置によって手の傾きを算出したが、中指の根元の位置と中指の先端の位置によっても手の傾きを算出することができる。その算出方法は、図２５のステップＳＨ２５およびステップＳＨ２６の処理と同じである。すなわち、逆正接関数を用いた演算によって、右手の傾きＧＤ（０）を検出できる。
【０１０７】
上記実施形態においては、ＲＯＭ１２にあらかじめ記憶された演奏データ作成処理のプログラムをＣＰＵ１１が実行する装置の発明について説明したが、フレキシブルディスク（ＦＤ）、ＣＤ、ＭＤなどの記憶媒体に記録されている演奏データ作成処理のプログラムをパソコン６の不揮発性メモリ１８にインストールしたり、インターネットなどのネットワークからダウンロードした演奏データ作成処理のプログラムを不揮発性メモリ１８にインストールして、そのプログラムをパソコン６のＣＰＵ１１が実行することも可能である。この場合には、プログラムの発明やそのプログラムを記録した記録媒体の発明を実現できる。
【０１０８】
すなわち、本発明による演奏評価処理のプログラムは、鍵盤装置で演奏された楽曲の演奏データを入力する第１のステップと、前記鍵盤装置の鍵盤の画像および当該鍵盤を演奏中の手の画像を所定の撮像手段によって撮像する第２のステップと、前記楽曲に対する模範の演奏データにおける発音イベント、消音イベント、発音および消音のタイミングと前記データ入力手段から入力された押鍵データ、離鍵データ、押鍵および離鍵のタイミングとを比較し、模範の演奏データにおける演奏中の手の画像と前記撮像手段によって撮像された演奏中の手の画像とを比較する第３のステップと、前記第３のステップによって比較された結果を判定して前記鍵盤装置の演奏を評価する第４のステップと、を実行する。
【０１０９】
前記第３のステップは、前記鍵盤の画像および手の画像に基づいて検出した手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせと、模範の演奏データにおける手の位置、手の傾き、若しくは手の幅、又は、これらの組み合わせとを比較する。
前記第３のステップは、手の甲の複数箇所に施された異なる色彩に基づいて、手の位置、手の傾き、および手の幅を検出する。
前記第３のステップは、各指先に施された異なる色彩に基づいて検出した運指の画像と、模範の演奏データにおける運指の画像とを比較する。
前記第３のステップは、所定の操作手段によって選択された評価対象に従って、手の位置、手の傾き、若しくは手の幅、又はこれらの組み合わせを比較対象とする。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施形態における演奏評価システムの外観図。
【図２】図１の演奏データ作成システムにおける電子楽器、パソコン、カメラの接続関係およびパソコンの内部構成を示すブロック図。
【図３】図１の演奏評価システムにおける電子楽器の鍵盤の画像を示す図。
【図４】実施形態のＣＰＵの演奏評価処理におけるメインルーチンのフローチャート。
【図５】実施形態において不揮発性メモリに記憶されている模範の曲データを示すフォーマットを示す図。
【図６】実施形態において不揮発性メモリから読み出された曲データを一時的にストアするＲＡＭのエリアを示す図。
【図７】実施形態において電子楽器から入力される演奏データをストアするＲＡＭのエリアを示す図。
【図８】実施形態において電子楽器から入力される演奏データを一時的にストアするＲＡＭのエリアを示す図
【図９】実施形態においてカメラの１画面における各画素をストアするＲＡＭのエリアを示す図。
【図１０】実施形態において手の甲に貼付された１０個のシールの色データをストアしたＲＡＭのエリアを示す図。
【図１１】実施形態において両手の位置、傾き、幅のデータをストアしたＲＡＭのエリアを示す図。
【図１２】図４のメインルーチンにおける再生処理のフローチャート。
【図１３】図１３の再生処理におけるノートオン処理のフローチャート。
【図１４】図１３の再生処理におけるノートオフ処理のフローチャート。
【図１５】図４のメインルーチンにおけるＭＩＤＩ・ＩＮ処理のフローチャート。
【図１６】図１５のＭＩＤＩ・ＩＮ処理における押鍵処理のフローチャート。
【図１７】図１６に続く押鍵処理のフローチャート。
【図１８】実施形態において演奏中の指が接触する鍵盤の領域を指定するデータをストアしたＲＡＭのエリアを示す図。
【図１９】図３における鍵盤の画像の一部を示す図。
【図２０】図１９における矩形の領域の１つの範囲を示す図。
【図２１】図１７の押鍵処理における画像処理のフローチャート。
【図２２】図１８に続く画像処理のフローチャート。
【図２３】図１９に続く画像処理のフローチャート。
【図２４】図１７の押鍵処理における手の座標処理のフローチャート。
【図２５】図２４に続く手の座標処理のフローチャート。
【図２６】実施形態において手の位置を評価する場合の手の画像を示す図。
【図２７】実施形態において手の位置および手の傾きを評価する場合の手の画像を示す図。
【図２８】実施形態において手の位置および手の幅を評価する場合の手の画像を示す図。
【図２９】実施形態における押鍵に対する判定処理のフローチャート。
【図３０】図２９に続く判定処理のフローチャート。
【図３１】図３０に続く判定処理のフローチャート。
【図３２】実施形態における離鍵処理のフローチャート。
【図３３】実施形態における離鍵に対する判定処理のフローチャート。
【図３４】実施形態の変形例においてカメラで撮像された右手の画像および画像のスキャン信号を示す図。
【図３５】変形例における画像処理のフローチャート。
【図３６】図３５に続く画像処理のフローチャート。
【図３７】図３６に続く画像処理のフローチャート。
【符号の説明】
【０１１１】
１  電子楽器
２  鍵盤
３  アングル
４  カメラ取り付け部
５  カメラ
６  パソコン
２ｉ  鍵盤の画像
７ｉ、８ｉ  手の画像
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  スイッチ部
１５  表示部
１６  ＭＩＤＩ・インターフェース
１７  ビデオキャプチャ・インターフェース
１８  不揮発性メモリ
【図１】
2006091633.tif 000003
【図２】
2006091633.tif 000004
【図３】
2006091633.tif 000005
【図４】
2006091633.tif 000006
【図５】
2006091633.tif 000007
【図６】
2006091633.tif 000008
【図７】
2006091633.tif 000009
【図８】
2006091633.tif 000010
【図９】
2006091633.tif 000011
【図１０】
2006091633.tif 000012
【図１１】
2006091633.tif 000013
【図１２】
2006091633.tif 000014
【図１３】
2006091633.tif 000015
【図１４】
2006091633.tif 000016
【図１５】
2006091633.tif 000017
【図１６】
2006091633.tif 000018
【図１７】
2006091633.tif 000019
【図１８】
2006091633.tif 000020
【図１９】
2006091633.tif 000021
【図２０】
2006091633.tif 000022
【図２１】
2006091633.tif 000023
【図２２】
2006091633.tif 000024
【図２３】
2006091633.tif 000025
【図２４】
2006091633.tif 000026
【図２５】
2006091633.tif 000027
【図２６】
2006091633.tif 000028
【図２７】
2006091633.tif 000029
【図２８】
2006091633.tif 000030
【図２９】
2006091633.tif 000031
【図３０】
2006091633.tif 000032
【図３１】
2006091633.tif 000033
【図３２】
2006091633.tif 000034
【図３３】
2006091633.tif 000035
【図３４】
2006091633.tif 000036
【図３５】
2006091633.tif 000037
【図３６】
2006091633.tif 000038
【図３７】
2006091633.tif 000039