(57)【特許請求の範囲】
【請求項１】
親指が人差し指または手のひらに重なった手の画像データを１種類以上、および親指が人差し指または手のひらに重なっていない手の画像データを２種類以上記憶する画像記憶手段と、
演奏データ中からノートオンまたはノートオフを検出するノート検出手段と、
前記演奏データ中から手の種類情報を検出する検出手段と、
前記ノート検出手段がノートオンまたはノートオフを検出すると、該ノートオン時またはノートオフ時に該ノートの他にノートオン中のノートがあるか否かを前記演奏データから検出する手段と、
ノートオフ時に他にノートオン中のノートがなければ、次のノート情報に対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像データを基に次のノートの押鍵準備段階の手の画像データを生成出力し、ノートオン時に他にノートオン中のノートがあれば、新たに検出されたノートオンと前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートに対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートの押鍵の手の画像データを生成出力する画像生成手段と
を有する演奏指示装置。
【請求項２】
前記検出手段は、さらに、演奏データ中から手の前後位置情報を検出し、
前記画像生成手段は、前記手の前後位置情報に応じて前記画像記憶手段に記憶されている画像データが示す手が鍵盤の手前または奥に位置する画像データを生成出力する請求項１記載の演奏指示装置。
【請求項３】
前記検出手段は、さらに、演奏データ中から押鍵する指を示すための指情報を検出し、
前記画像生成手段は、前記指情報に応じて前記画像記憶手段に記憶されている画像データが示す手において押鍵する指の長さを押鍵しない場合とは異ならせた画像データを生成出力する請求項１又は２記載の演奏指示装置。
【請求項４】
前記検出手段はノートオフベロシティ中から情報を検出する請求項１〜３のいずれかに記載の演奏指示装置。
【請求項５】
親指が人差し指または手のひらに重なった手の画像データを１種類以上、および親指が人差し指または手のひらに重なっていない手の画像データを２種類以上記憶する画像記憶手段から、画像データを読み出す読み出し手順と、
演奏データ中からノートオンまたはノートオフを検出するノート検出手順と、
前記演奏データ中から手の種類情報を検出する検出手順と、
前記ノート検出手順がノートオンまたはノートオフを検出すると、該ノートオン時またはノートオフ時に該ノートの他にノートオン中のノートがあるか否かを前記演奏データから検出する手順と、
ノートオフ時に他にノートオン中のノートがなければ、次のノート情報に対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像データを基に次のノートの押鍵準備段階の手の画像データを生成出力し、ノートオン時に他にノートオン中のノートがあれば、新たに検出されたノートオンと前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートに対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートの押鍵の手の画像データを生成出力する画像生成手順と
を有する演奏指示処理をコンピュータに実行させるためのプログラムを記録した媒体。
【請求項６】
前記検出手順は、さらに、演奏データ中から手の前後位置情報を検出し、
前記画像生成手順は、前記手の前後位置情報に応じて前記画像記憶手段に記憶されている画像データが示す手が鍵盤の手前または奥に位置する画像データを生成出力する請求項５記載の演奏指示処理をコンピュータに実行させるためのプログラムを記録した媒体。
【請求項７】
前記検出手順は、さらに、演奏データ中から押鍵する指を示すための指情報を検出し、
前記画像生成手順は、前記指情報に応じて前記画像記憶手段に記憶されている画像データが示す手において押鍵する指の長さを押鍵しない場合とは異ならせた画像データを生成出力する請求項５又は６記載の演奏指示処理をコンピュータに実行させるためのプログラムを記録した媒体。
【請求項８】
前記検出手順はノートオフベロシティ中から情報を検出する請求項５〜７のいずれかに記載のプログラムを記録した媒体。
【請求項９】
親指が人差し指または手のひらに重なった手の画像データを１種類以上、および親指が人差し指または手のひらに重なっていない手の画像データを２種類以上記憶する画像記憶手段から、画像データを読み出す読み出し手順と、
演奏データ中からノートオンまたはノートオフを検出するノート検出手順と、
前記演奏データ中から手の種類情報を検出する検出手順と、
前記ノート検出手順がノートオンまたはノートオフを検出すると、該ノートオン時またはノートオフ時に該ノートの他にノートオン中のノートがあるか否かを前記演奏データから検出する手順と、
ノートオフ時に他にノートオン中のノートがなければ、次のノート情報に対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像データを基に次のノートの押鍵準備段階の手の画像データを生成出力し、ノートオン時に他にノートオン中のノートがあれば、新たに検出されたノートオンと前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートに対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートの押鍵の手の画像データを生成出力する画像生成手順と
を有する演奏指示方法。
【請求項１０】
前記検出手順は、さらに、演奏データ中から手の前後位置情報を検出し、
前記画像生成手順は、前記手の前後位置情報に応じて前記画像記憶手段に記憶されている画像データが示す手が鍵盤の手前または奥に位置する画像データを生成出力する請求項９記載の演奏指示方法。
【請求項１１】
前記検出手順は、さらに、演奏データ中から押鍵する指を示すための指情報を検出し、
前記画像生成手順は、前記指情報に応じて前記画像記憶手段に記憶されている画像データが示す手において押鍵する指の長さを押鍵しない場合とは異ならせた画像データを生成出力する請求項９又は１０記載の演奏指示方法。
【請求項１２】
前記検出手順はノートオフベロシティ中から情報を検出する請求項９〜１１のいずれかに記載の演奏指示方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演奏指示技術に関し、特に鍵盤装置等の演奏方法を指示するための演奏指示技術に関する。
【０００２】
【従来の技術】
複数の鍵と、その各鍵の上部に配置されたＬＥＤと、演奏データに基づきＬＥＤを用いて演奏者に指示を与える演奏指示装置とを備えている電子鍵盤楽器が知られている。演奏指示装置は、演奏者が次に押鍵すべき鍵に対応するＬＥＤを点灯し、演奏者の演奏を誘導する。
【０００３】
また、演奏者の演奏練習のため、演奏者の演奏操作が演奏データに一致しているか否かを判断する一致進行制御装置を備える電子鍵盤楽器が知られている。一致進行制御装置は、演奏者による押鍵操作と予め記憶されている演奏データとを比較し、その比較結果に応じて曲の進行を制御する。演奏者の押鍵操作が演奏データに一致しているときには曲の進行を続け、一致しないときには一致するまで曲の進行を中断する。
【０００４】
上記の演奏指示装置と一致進行制御装置の両方を備えている電子鍵盤楽器において、演奏指示装置は、複数の鍵に対応するＬＥＤを点灯することにより、演奏者の演奏を誘導し、一致進行制御装置は、演奏者が適正な鍵を押鍵するまで曲の進行を中断する。
【０００５】
【発明が解決しようとする課題】
複数の鍵に対応するＬＥＤを有する演奏指示装置は、押鍵する鍵を指示することはできるが、演奏方法をより詳細に指示することはできない。例えば、押鍵すべき指の種類や、手の開き方や、鍵盤上に置く手の位置等を指示することができない。
【０００６】
演奏者は、押鍵すべき鍵を知ることができるが、押鍵すべき指の種類等を知ることができないので、初心者は、指１本で鍵盤を「モグラ叩き」のようにＬＥＤを追いかける演奏方法を行うことが多く、演奏技術の上達が望めない。
【０００７】
本発明の目的は、詳細な演奏方法を指示することができる演奏指示装置、演奏指示方法又はプログラムを記録した媒体を提供することである。
【０００８】
【課題を解決するための手段】
本発明の一観点によれば、演奏指示装置は、親指が人差し指または手のひらに重なった手の画像データを１種類以上、および親指が人差し指または手のひらに重なっていない手の画像データを２種類以上記憶する画像記憶手段と、演奏データ中からノートオンまたはノートオフを検出するノート検出手段と、前記演奏データ中から手の種類情報を検出する検出手段と、前記ノート検出手段がノートオンまたはノートオフを検出すると、該ノートオン時またはノートオフ時に該ノートの他にノートオン中のノートがあるか否かを前記演奏データから検出する手段と、ノートオフ時に他にノートオン中のノートがなければ、次のノート情報に対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像データを基に次のノートの押鍵準備段階の手の画像データを生成出力し、ノートオン時に他にノートオン中のノートがあれば、新たに検出されたノートオンと前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートに対応して検出された前記手の種類情報に応じて前記画像記憶手段に記憶されている複数の手の画像データの中から１つを選択して前記画像記憶手段に記憶されている手の画像を基に該新たに検出されたノートの押鍵の手の画像データを生成出力する画像生成手段とを有する。
【０００９】
手の種類情報は、親指が人差し指または手のひらに重なった第１の手の形状と、親指が人差し指または手のひらに重なっていない第２の手の形状を識別する。第１の手の形状は、例えば鍵盤操作における指くぐりまたは指かぶせである（図３（Ａ）参照）。第２の手の形状を、手の開き加減に応じて２種類以上用意すれば（図３（Ｂ）、図４（Ｃ）、図４（Ｄ）参照）、手の位置を動かさずに、スムーズな演奏方法を演奏者に指示することが可能である。生成された画像データを基に手の画像を表示する際、ノートオンのタイミングまたはノートオフのタイミングに応じて、押鍵準備段階の手の画像または押鍵時の手の画像を表示することができる。演奏者は、押鍵準備段階の手の画像をお手本にすることにより、押鍵する前から手を置く位置を知ることができる。
【００１０】
前記検出手段は、さらに、演奏データ中から手の前後位置情報を検出し、前記画像生成手段は、前記手の前後位置情報に応じて前記画像記憶手段に記憶されている画像データが示す手が鍵盤の手前または奥に位置する画像データを生成出力することもできる。
【００１１】
手の前後位置情報は、例えば鍵盤上に置く手の前後方向（手前または奥等）の位置を示す。手の前後位置は、押す指および押鍵する鍵等により適正な位置が決まる。また、黒鍵から白鍵へ移行する場合、または白鍵から黒鍵へ移行する場合等に応じて、次の音に移行しやすい演奏方法を演奏者に指示することができる。
【００１２】
さらに、前記検出手段は、さらに、演奏データ中から押鍵する指を示すための指情報を検出し、前記画像生成手段は、前記指情報に応じて前記画像記憶手段に記憶されている画像データが示す手において押鍵する指の長さを押鍵しない場合とは異ならせた画像データを生成出力することもできる。
【００１３】
指情報は、押鍵する指の種類を示す。当該押鍵する指の長さを変えて手の画像データを生成することにより、自然な指の演奏形態を表現することができる。例えば、黒鍵は鍵の高さが高いので、黒鍵を押鍵する場合には押鍵する指の長さを長くし、白鍵は鍵の高さが低いので、白鍵を押鍵する場合には押鍵する指の長さを短くする。
【００１６】
【発明の実施の形態】
図２は、本発明の実施例による演奏指示装置に用いる演奏データのフォーマット例を示す。このフォーマットは、スタンダードＭＩＤＩファイルと呼ばれているものであり、演奏データとしては汎用的なフォーマットである。
【００１７】
演奏データ１０は、ノートイベント１、タイミングデータ２、ノートイベント３、タイミングデータ４のようなタイミングとノートイベントが対になって演奏のシーケンスを表すデータと、エンドデータ５を有する。演奏データ１０は、その他、コントロールチェンジまたはプログラムチェンジ等を含むことができる。
【００１８】
ノートイベント１は、ノートオンイベントである。タイミングデータ２は、ノートイベント１とその次のノートイベント３との間の時間間隔を示す。ノートイベント３は、ノートオフイベントである。タイミングデータ４は、ノートイベント３と次のノートイベント（図示せず）との間の時間間隔を示す。エンドデータ５は、演奏データ１０の終了を示す。
【００１９】
ノートイベント１と３は、共にＭＩＤＩ形式のデータであり、３バイトのデータである。ノートオンイベント１は、第１バイトが発音開始（鍵盤の場合は押鍵）を示すノートオン１ａであり、第２バイトが音高（鍵盤の場合はキーナンバ）を示すノートナンバ１ｂであり、第３バイトが音の立ち上がり状態（鍵盤の場合は押鍵速度）を示すベロシティ１ｃである。ノートオフイベント３は、第１バイトが発音終了（鍵盤の場合は離鍵）を示すノートオフ３ａであり、第２バイトがノートナンバ３ｂであり、第３バイトが音の立ち下がり状態（鍵盤の場合は離鍵速度）を示すベロシティ３ｃである。
【００２０】
図１（Ａ）は、図２に示すＭＩＤＩ規格によるノートオフベロシティ３ｃの構成を示す。
【００２１】
本実施例では、まず、同図のように、ＭＩＤＩ規格のノートオフベロシティ３ｃを準備する。ノートオンベロシティ１ｃも同様の構成である。ただし、演奏データにおいては、一般的にノートオンベロシティ１ｃは音量として使用されるのに対し、ノートオフベロシティ３ｃは領域が確保されていながら使用されない場合がほとんどである。
【００２２】
ノートオフベロシティ３ｃは、１バイト（８ビット）からなり、その最上位ビットは、必ず０である。これは、ＭＩＤＩ規格で決められているデータフォーマットである。下位７ビットのデータ６が実際のベロシティのデータである。ベロシティデータ６は、７ビットであり、０〜１２７の範囲の数値で示される。ノートオフベロシティ３ｃ（演奏データ）は、市販されている曲データのソフトウエアから読み出したものでも電子楽器を用いて作成したものでもよい。
【００２３】
図１（Ｂ）は、図１（Ａ）のノートオフベロシティ３ｃに手表示情報７を埋め込んだ図である。演奏データ提供者は、図１（Ａ）に示すノートオフベロシティ３ｃを準備した後、ノートオフベロシティ３ｃの下位７ビットを手表示情報７に書き換える。手表示情報７は、演奏者が設定または変更することもできる。
【００２４】
手表示情報７をノートオフベロシティ３ｃ中に設定すれば、新たに手表示情報７のデータ領域を確保する場合に比べ、データ量を増加させずにすむ。また、新たなデータ領域を確保する場合には、演奏データのフォーマットを変えることになるので、汎用フォーマットの演奏データとの互換性がなくなる。ノートオフベロシティ３ｃ中に手表示情報７を設定すれば、演奏データのフォーマットを変えずにすむので、汎用フォーマットの演奏データとの互換性を維持することができる。
【００２５】
ノートオフベロシティ３ｃは、２通りに用いることができる。１つは、演奏指示装置において手表示情報として用いることができる。もう１つは、ＭＩＤＩ規格に従って、自動演奏装置等においてノートオフベロシティデータ６として解釈される。元来のノートオフベロシティデータ６（図１（Ａ））は、手表示情報７（図１（Ｂ））に書き換えられてしまうが、ノートオフベロシティデータが使用されない自動演奏装置等では影響がない。ノートオフベロシティデータを使用する自動演奏装置等であっても、演奏データのフォーマットは崩れていないので、誤動作することはない。
【００２６】
ノートオフベロシティ３ｃ中に手表示情報７を設定すれば、データ量を増加させずに、手表示情報７を付加したのと同様の効果が得られる。また、手表示情報７を設定しても、演奏データとしてのフォーマットは変化しないので、演奏データとしての汎用性は維持される。
【００２７】
次に、手表示情報７の詳細を説明する。手表示情報７は、手の前後位置情報７ａ（第６および５ビット）と手の種類情報７ｂ（第４および３ビット）と指情報７ｃ（第２、１、０ビット）を有する。
【００２８】
（１）手の前後位置情報（ＰｏｓＹ）
手の前後位置情報７ａは、２ビット（第６および５ビット）の情報であり、レジスタＰｏｓＹに格納される。レジスタＰｏｓＹの値は、以下の手の前後位置（Ｙ軸座標）を示す。
【００２９】
ＰｏｓＹ＝０：最手前
ＰｏｓＹ＝１：手前
ＰｏｓＹ＝２：奥
ＰｏｓＹ＝３：最奥
例えば、黒鍵を押鍵するときには手を奥に置き、白鍵を押鍵するときには手を手前に置くのが好ましい。また、押鍵する音の音高（鍵）と時間的に前後する音の音高（鍵）に応じて、適正な手の前後位置が決まる。
【００３０】
（２）手の種類（ＨｎｄＰａｔ）
手の種類情報７ｂは、手の開き加減（手の形状）を表す２ビット（第４および３ビット）の情報であり、レジスタＨｎｄＰａｔに格納される。レジスタＨｎｄＰａｔの値は、以下の手の種類を示す。
【００３１】
ＨｎｄＰａｔ＝０：指くぐりまたは指かぶせ（図３（Ａ）参照）
ＨｎｄＰａｔ＝１：閉じる（図３（Ｂ）参照）
ＨｎｄＰａｔ＝２：小さく開く（図４（Ｃ）参照）
ＨｎｄＰａｔ＝３：大きく開く（図４（Ｄ）参照）
【００３２】
図３（Ａ）、図３（Ｂ）、図４（Ｃ）、図４（Ｄ）は、手（右手）の種類を示す。ただし、手の前後位置は全て最手前（ＰｏｓＹ＝０）として示す。例えば、時間的に前後する音の音高（鍵）が離れているときには大きく開き、時間的に前後する音の音高（鍵）が隣であるときには閉じる。指くぐりは、人差し指をくぐって親指で押鍵する演奏であり、指かぶせは、親指にかぶせて人差し指等で押鍵する演奏である。いずれも、親指が人差し指または手のひらに重なる。
【００３３】
（３）指情報（ＦｎｇＮｏ）
指情報７ｃは、押鍵すべき指を示す３ビット（第２、１、０ビット）の情報であり、レジスタＦｎｇＮｏに格納される。レジスタＦｎｇＮｏの値は、以下の指情報を示す。
【００３４】
ＦｎｇＮｏ＝０：未使用
ＦｎｇＮｏ＝１：親指
ＦｎｇＮｏ＝２：人差し指
ＦｎｇＮｏ＝３：中指
ＦｎｇＮｏ＝４：薬指
ＦｎｇＮｏ＝５：小指
ＦｎｇＮｏ＝６：グリッサンド右
ＦｎｇＮｏ＝７：グリッサンド左
【００３５】
指情報を用いることにより、演奏者は１本の指だけを使って演奏するのではなく、５本の指を使った演奏操作（指遣い）を練習することができる。グリッサンドは、ある音高の音から別の音高の音まで連続的に音高を変化させるものであり、鍵盤上で指を滑らせるように押鍵する演奏方法である。グリッサンド右は、右側方向すなわち、低音から高音へのグリッサンドであり、グリッサンド左は、左側方向すなわち高音から低音へのグリッサンドである。
【００３６】
上記の３種類の手表示情報は、演奏者に正しい演奏操作（手の模範形）を示す。また、手表示情報は、手の動きをスムーズに見せるための情報をも含み、手がごく自然に動くように表示することができる。
【００３７】
なお、キーオフベロシティに設定される手表示情報のビット配分を変えてもよい。例えば、手の前後位置情報（ＰｏｓＹ）を１ビットにし、手の種類情報（ＨｎｄＰａｔ）を３ビットにし、指情報（ＦｎｇＮｏ）を３ビットにしてもよい。
【００３８】
図５は、手表示情報７およびノートナンバ１ｂを基にして表示器に手４１の表示を行う例を示す。
【００３９】
手表示情報７は、手の前後位置情報７ａと手の種類情報７ｂと指情報７ｃを有する。ノートナンバ１ｂは、ノートオンイベント１（図２）に含まれているノートナンバである。
【００４０】
表示器には、鍵盤４５と手４１が表示される。手を表示するために必要なパラメータは、手の形状４１、押鍵すべき指４２、手の前後位置（Ｙ軸）４３、手の左右位置（Ｘ軸）４４である。
【００４１】
手の形状４１は、手の種類情報（ＨｎｄＰａｔ）７ｂに応じて、４つの形状（図３（Ａ）、図３（Ｂ）、図４（Ａ）、図４（Ｂ））の中から１つが選択される。
【００４２】
押鍵すべき指４２は、指情報（ＦｎｇＮｏ）に応じて、親指、人差し指、中指、薬指、小指、グリッサンド右、グリッサンド左のいずれかが選ばれ、他の指と異なる色で表示される。さらに、自然な指の動きを表現するため、押鍵する際には押鍵前に比べ指の長さを変えて表示する。具体的には、白鍵を押鍵する時は指を少し短く表示、黒鍵を押鍵する時は指を少し長く表示する。指の長さを変えることにより、自然な動きに近くなり、押鍵している様子を明瞭に確認できる。
【００４３】
手の前後位置４３は、手の前後位置情報（ＰｏｓＹ）に応じて、最手前、手前、奥、最奥のいずれかが選ばれる。
【００４４】
手の左右位置４４は、指情報（ＦｎｇＮｏ）７ｃとノートナンバ１ｂによって決まる。具体的には、押鍵する鍵４６の位置と押鍵すべき指４２の位置が一致するように手の位置を決める。
【００４５】
押鍵する鍵４６は、ノートオンのノートナンバ１ｂが示す鍵であり、他の鍵とは異なる色で表示される。
【００４６】
鍵盤４５上には、押鍵時の手４１を表示するだけでなく、押鍵準備状態の手をも表示する。具体的には、全ての鍵が離鍵状態になり、かつ次の押鍵まで空き時間があるときには、次に押鍵すべき鍵の位置で準備状態の手を表示する。演奏者は、この表示に基づいて次の押鍵の準備をすることができる。また、準備状態の手を表示してから、その後押鍵時の手を表示することにより、手の動きが滑らかになる。
【００４７】
手の模範形を表示器に表示することにより、各鍵に対応するＬＥＤを点灯する場合に比べ、演奏者は直感的に演奏操作方法を知ることができる。
【００４８】
次に、手表示情報を含む演奏データを用いて実際に表示を行った例を示す。演奏データには、ショパン作曲のノクターン第２番のデータを用いた。演奏データ中のノートオフベロシティには、手表示情報が設定されている。
【００４９】
図６（Ａ）、図６（Ｂ）、図７（Ｃ）、図７（Ｄ）、図８（Ｅ）、図８（Ｆ）は、ノクターン第２番の中から抜き出した６つの音符（ノート）Ｂ♭３、Ｇ４、Ｆ４、Ｇ４、Ｆ４、Ｅ♭４についての表示例を示す。
【００５０】
図６（Ａ）は、第１のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｂ♭３
ノートオフベロシティ
ＰｏｓＹ＝２（奥）
ＨｎｄＰａｔ＝２（開小）
ＦｎｇＮｏ＝１（親指）
【００５１】
ノートナンバ（Ｂ♭３）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｂ♭３）に対応する黒鍵の色を変えて表示する。
【００５２】
このＢ♭３の黒鍵を押鍵した後には高音側に白鍵５鍵半分離れたＧ４の白鍵を押鍵し、次に白鍵１鍵分低音側のＦ４の白鍵、再びＧ４の白鍵を押鍵することになる。このフレーズを滑らかに演奏するにはＢ♭３の黒鍵を親指で押鍵することが好ましい。
【００５３】
手の前後位置情報ＰｏｓＹ＝２は、黒鍵を押鍵する親指に対応し、奥の位置を示す。
【００５４】
手の種類ＨｎｄＰａｔ＝２は、親指と小指とがほぼ５鍵半分の間隔に対応する小さく開いた手の形状（図４（Ｃ））を示す。
【００５５】
指情報ＦｎｇＮｏ＝１は親指を示す。色を変えて親指を表示し、親指で押鍵すべきことを演奏者に知らせる。手は、鍵盤の上に重ねて表示される。
【００５６】
この表示を行うことにより、親指を用いてＢ♭３の鍵を押鍵すべきことを演奏者に知らせる。手の左右方向は、押鍵すべき親指を押鍵されるべきＢ♭３の鍵上に表示する位置に決められる。
【００５７】
このように鍵盤中の押鍵すべき鍵を色を変えること等によって表示し、押鍵に用いる指を押鍵すべき鍵に重ねて、かつ色を変えること等によって表示することにより、標準的な演奏形態を表示器上に明瞭に表示することができる。
【００５８】
押鍵すべき鍵が黒鍵（Ｂ♭３）であるので、押鍵すべき指（親指）を少し長くして表示する。図４（Ｃ）に示す手の形状において、親指のみ長めのものを差し換えて表示することができる。親指で黒鍵（Ｂ♭３）を押鍵するには、手を奥の位置（ＰｏｓＹ＝２）に置くのがよい。
【００５９】
なお、手の下の鍵盤は、透けるようにして表示される。例えば、手をハッチングで表示すれば、手を透かして鍵盤を表示することができる。さらに、押鍵する指についてはそのハッチングを反転させれば、他の指と区別することができる。
【００６０】
図６（Ｂ）は、第２のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｇ４
ノートオフベロシティ
ＰｏｓＹ＝１（手前）
ＨｎｄＰａｔ＝２（開小）
ＦｎｇＮｏ＝５（小指）
【００６１】
ノートナンバ（Ｇ４）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｇ４）に対応する白鍵の色を変えて表示する。前音、後音との関係から、この白鍵は小指で押鍵することが好ましい。すると、手の横方向位置は、ほとんど変化させないで演奏できる。
【００６２】
手の前後位置情報ＰｏｓＹ＝１は、白鍵を押鍵する小指に合わせて、手前の位置を示す。
【００６３】
手の種類ＨｎｄＰａｔ＝２は、低音側の隣の白鍵である次の音Ｆ４に合わせて、小さく開いた手の形状（図４（Ｃ））を示す。
【００６４】
指情報ＦｎｇＮｏ＝５は小指を示す。色を変えて小指を表示し、小指で押鍵すべきことを演奏者に知らせる。この小指がＧ４の鍵に重なるように手を表示する。
【００６５】
押鍵すべき鍵が白鍵（Ｇ４）であるので、押鍵すべき指（小指）を少し短くして表示する。小指で白鍵（Ｇ４）を押鍵するには、手を手前の位置（ＰｏｓＹ＝１）に置くのがよい。小指で押鍵することにより、先の押鍵（図６（Ａ））に対し、手の形状を変えず、かつ手を左右方向にほとんど動かさなくてよい。
【００６６】
図７（Ｃ）は、第３のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｆ４
ノートオフベロシティ
ＰｏｓＹ＝０（最手前）
ＨｎｄＰａｔ＝１（閉）
ＦｎｇＮｏ＝４（薬指）
【００６７】
ノートナンバ（Ｆ４）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｆ４）に対応する鍵の白色を変えて表示する。前後の音との関係から、この白鍵は薬指で押鍵することが好ましい。
【００６８】
手の前後位置情報ＰｏｓＹ＝０は、白鍵を押鍵する薬指に合わせて、最手前の位置を示す。
【００６９】
手の種類ＨｎｄＰａｔ＝１は、前後の音との関係から、閉じた手の形状（図３（Ｂ））を示す。
【００７０】
指情報ＦｎｇＮｏ＝４は薬指を示す。色を変えて薬指を表示し、薬指で押鍵すべきことを演奏者に知らせる。この薬指がＦ４の鍵に重なるように手を表示する。押鍵すべき鍵が白鍵（Ｆ４）であるので、押鍵すべき指（薬指）を少し短くして表示する。
【００７１】
図７（Ｄ）は、第４のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｇ４
ノートオフベロシティ
ＰｏｓＹ＝０（最手前）
ＨｎｄＰａｔ＝１（閉）
ＦｎｇＮｏ＝５（小指）
【００７２】
ノートナンバ（Ｇ４）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｇ４）に対応する白鍵の色を変えて表示する。前後の音との関係から、この白鍵は小指で押鍵することが好ましい。
【００７３】
手の前後位置情報ＰｏｓＹ＝０は、白鍵を押鍵する小指に合わせて、最手前の位置を示す。
【００７４】
手の種類ＨｎｄＰａｔ＝１は、前後の音との関係から、閉じた手の形状（図３（Ｂ））を示す。
【００７５】
指情報ＦｎｇＮｏ＝５は小指を示す。色を変えて小指を表示し、小指で押鍵すべきことを演奏者に知らせる。この小指がＧ４の鍵に重なるように手を表示する。押鍵すべき鍵が白鍵（Ｇ４）であるので、押鍵すべき指（小指）を少し短くして表示する。
【００７６】
小指でＧ４の鍵を押鍵する操作は図６（Ｂ）と同じであるが、手の形状が異なる。ここでの押鍵は、先の押鍵（図７（Ｃ））が隣の白鍵（Ｆ４）であるので、閉じた手の形状が最適である。
【００７７】
図８（Ｅ）は、第５のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｆ４
ノートオフベロシティ
ＰｏｓＹ＝０（最手前）
ＨｎｄＰａｔ＝１（閉）
ＦｎｇＮｏ＝４（薬指）
【００７８】
ノートナンバ（Ｆ４）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｆ４）に対応する白鍵の色を変えて表示する。前後の音との関係から、この白鍵は薬指で押鍵することが好ましい。
【００７９】
手の前後位置情報ＰｏｓＹ＝０は、白鍵を押鍵する薬指に合わせて、最手前の位置を示す。
【００８０】
手の種類ＨｎｄＰａｔ＝１は、前後の音との関係から、閉じた手の形状（図３（Ｂ））を示す。
【００８１】
指情報ＦｎｇＮｏ＝４は薬指を示す。色を変えて薬指を表示し、薬指で押鍵すべきことを演奏者に知らせる。この薬指がＦ４の鍵に重なるように手を表示する。押鍵すべき鍵が白鍵（Ｆ４）であるので、押鍵すべき指（薬指）を少し短くして表示する。
【００８２】
図８（Ｆ）は、第６のノートオンイベントに対応する表示例である。
ノートナンバ＝Ｅ♭４
ノートオフベロシティ
ＰｏｓＹ＝１（手前）
ＨｎｄＰａｔ＝１（閉）
ＦｎｇＮｏ＝３（中指）
【００８３】
ノートナンバ（Ｅ♭４）は押鍵すべき鍵の音高であるので、ノートナンバ（Ｅ♭４）に対応する黒鍵の色を変えて表示する。前後の音との関係から、この黒鍵は中指で押鍵することが好ましい。
【００８４】
手の前後位置情報ＰｏｓＹ＝１は、黒鍵を押鍵する中指に合わせて、手前の位置を示す。
【００８５】
手の種類ＨｎｄＰａｔ＝１は、前後の音との関係から、閉じた手の形状（図３（Ｂ））を示す。
【００８６】
指情報ＦｎｇＮｏ＝３は中指を示す。色を変えて中指を表示し、中指で押鍵すべきことを演奏者に知らせる。この中指がＥ♭４の鍵に重なるように手を表示する。押鍵すべき鍵が黒鍵（Ｅ♭４）であるので、押鍵すべき指（中指）を少し長くして表示する。
【００８７】
図９は、本実施例による演奏指示装置の構成を示すブロック図である。
押鍵検出回路１８は、鍵盤１７における鍵操作を検出し、キーオンまたはキーオフ信号等を生成する。スイッチ検出回路２０は、スイッチ１９におけるスイッチ操作を検出し、スイッチ信号を生成する。
【００８８】
バス２５には、押鍵検出回路１８およびスイッチ検出回路２０の他、表示回路２１、音源回路２２、効果回路２３、ＲＯＭ１１、ＲＡＭ１２、ＣＰＵ１３、タイマ１４、ＭＩＤＩインターフェース１５、フロッピディスク駆動装置（ＦＤＤ）１６、ハードディスクドライブ（ＨＤＤ）５２、ＣＤ−ＲＯＭ（コンパクトディスク−リード・オンリィ・メモリ）ドライブ５３、通信インターフェース５４が接続されている。
【００８９】
ＲＡＭ１２は、フラグまたはバッファ等を記憶するＣＰＵ１３用のワーキングエリアを有する。ＲＯＭ１１は、各種パラメータおよびコンピュータプログラムを記憶する。ＣＰＵ１３は、ＲＯＭ１１に記憶されているコンピュータプログラムに従い、演算または制御を行う。
【００９０】
ＨＤＤ（ハードディスクドライブ）５２は、動作プログラムや各種データを記憶しておく記憶装置である。ＲＯＭ１１に動作プログラムが記憶されていない場合、このＨＤＤ５２内のハードディスクに動作プログラムを記憶させておき、それをＲＡＭ１２に読み込むことにより、ＲＯＭ１１に動作プログラムを記憶している場合と同様の動作をＣＰＵ１３にさせることができる。このようにすると、動作プログラムの追加やバージョンアップ等が容易に行える。
【００９１】
ＣＤ−ＲＯＭ（コンパクトディスク−リード・オンリィ・メモリ）ドライブ５３は、ＣＤ−ＲＯＭに記憶されている動作プログラムや各種データを読み出す装置である。読み出した動作プログラムや各種データは、ＨＤＤ５２内のハードディスクにストアされる。動作プログラムの新規インストールやバージョンアップ等が容易に行える。なお、このＣＤ−ＲＯＭドライブ５３以外にも、外部記憶装置として、フロッピィディスク装置１６、光磁気ディスク（ＭＯ）装置等、様々な形態のメディアを利用するための装置を設けるようにしてもよい。
【００９２】
通信インターフェース５４はＬＡＮ（ローカルエリアネットワーク）やインターネット、電話回線等の通信ネットワーク５５に接続されており、該通信ネットワーク５５を介して、サーバコンピュータ５６と接続される。ハードディスク装置５２内に上記各プログラムや各種パラメータが記憶されていない場合、サーバコンピュータ５６からプログラムやパラメータをダウンロードするために用いられる。クライアントとなるコンピュータは、通信インターフェース５４及び通信ネットワーク５５を介してサーバコンピュータ５６へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータ５６は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク５５を介してコンピュータへと送信し、コンピュータが通信インターフェース５４を介して、これらプログラムやパラメータを受信してハードディスク装置５２に蓄積することにより、ダウンロードが完了する。
【００９３】
タイマ１４は、ＣＰＵ１３に接続される。ＣＰＵ１３は、タイマ１４から供給される時間情報に応じて、所定の時間間隔でタイマ割り込み処理を行う。ＭＩＤＩインターフェース１５は、他のＭＩＤＩ機器５１に対してＭＩＤＩデータを入出力することができる。
【００９４】
図２に示した演奏データは、フロッピディスク駆動装置１６またはＲＯＭ１１に記憶される。フロッピディスク駆動装置１６に演奏データが記憶されている場合には、フロッピディスク駆動装置１６からＲＡＭ１２に演奏データがロードされてから、演奏データの再生処理が行われる。
【００９５】
ＣＰＵ１３は、ＲＡＭ１２またはＲＯＭ１１に記憶されている演奏データを読み出し、楽音パラメータおよび効果パラメータをそれぞれ音源回路２２および効果回路２３に供給する。また、ＣＰＵ１３は、押鍵検出回路１８で生成されるキーオン信号等やスイッチ検出回路２０で生成されるスイッチ信号に応じて、楽音パラメータおよび効果パラメータを生成し、それぞれ音源回路２２および効果回路２３に供給する。
【００９６】
また、ＣＰＵ１３は、ＲＡＭ１２またはＲＯＭ１１に記憶されている演奏データと鍵盤１７における押鍵操作とを比較し、一致する場合には曲を進行し、一致しない場合には曲の進行を中断する。
【００９７】
さらに、ＣＰＵ１３は、上記により演奏データを読み出す際、演奏データ中のキーオフベロシティに設定されている手表示情報に応じて、表示回路２１に図６（Ａ）等に示したような手の模範形を表示し、鍵盤の演奏方法を指示する。
【００９８】
手の形状（図３（Ａ）、図３（Ｂ）、図４（Ｃ）、図４（Ｄ））および鍵盤の画像データは、フロッピディスク駆動装置１６またはＲＯＭ１１に記憶されている。表示回路２１は、例えば電子楽器本体に設けられる液晶表示器（ＬＣＤ）または電子楽器の外部に接続されるＣＲＴ（陰極線管）である。
【００９９】
音源回路２２は、供給される楽音パラメータに応じて楽音信号を生成する。効果回路２３は、供給される効果パラメータに応じて、音源回路２２で生成される楽音信号に、例えばディレイやリバーブ等の効果を付与し、サウンドシステム２４に供給する。サウンドシステム２４は、Ｄ／Ａ変換器およびスピーカを含み、供給されるデジタル形式の楽音信号をアナログ形式に変換し、発音する。
【０１００】
なお、音源回路２２は、波形メモリ方式、ＦＭ方式、物理モデル方式、高調波合成方式、フォルマント合成方式、ＶＣＯ＋ＶＣＦ＋ＶＣＡのアナログシンセサイザ方式等、どのような方式であってもよい。
【０１０１】
また、音源回路２２は、専用のハードを用いて構成するものに限らず、ＤＳＰ＋マイクロプログラムを用いて構成してもよいし、ＣＰＵ＋ソフトウェアのプログラムで構成するようにしてもよい。
【０１０２】
さらに、１つの音源回路を時分割で使用することにより複数の発音チャンネルを形成するようにしてもよいし、１つの発音チャンネルにつき１つの音源回路で複数の発音チャンネルを構成するようにしてもよい。
【０１０３】
次に、手表示情報の説明を行う。演奏データ中において、ノートオフベロシティに手表示情報を設定する。手表示情報は、演奏データ作成時に演奏データ中に予め設定しておくことができる。また、演奏者が手表示情報を設定または変更することができる。その場合は、表示回路２１に表示されるエディット画面を用いて、個々の音符（ノート）について設定または変更を行うことができる。当該エディット画面は、シーケンサ用のエディット画面を用いることができる。
【０１０４】
また、人間の手作業により手表示情報を設定する他、演奏データを所定のアルゴリズムによって解析することで手表示情報を設定してもよいし、演奏者の各指にセンサを装着した状態で演奏を収録し、どの指、どの形状の手で演奏したかを検出することができるようにして手表示情報を設定してもよい。
【０１０５】
図１０は、ＣＰＵが行う処理のメインルーチンのフローチャートである。
ステップＳＡ１では、フラグまたはレジスタ等のイニシャライズを行う。
【０１０６】
ステップＳＡ２では、一致進行処理を行う。一致進行処理は、演奏データ通りに押鍵が行われる間は曲を進行させるが、演奏データの次の音に対応する鍵を所定時間経過しても演奏者が押鍵しないときに曲の進行を中断する処理である。詳細な処理は、後に図１８を参照しながら説明する。
【０１０７】
ステップＳＡ３では、演奏データ読み出し処理を行う。演奏データ読み出し処理は、ＲＡＭまたはＲＯＭに記憶されている演奏データを読み出し、読み出した演奏データ中に含まれる手表示情報に応じて表示回路に手の模範形を表示する処理である。詳細な処理は、後に図１３、図１５を参照しながら説明する。
【０１０８】
ステップＳＡ４では、押鍵処理を行う。押鍵処理は、鍵盤における押鍵操作等を検出して、当該操作に応じた処理を行う。キーオンを検出したときには、発音処理を行い、キーオフを検出したときには消音処理を行う。演奏者が正しい押鍵操作を行わないために曲の進行が中断しているときにキーオンが検出されかつそのキーオンが演奏データの音に一致しているときには、曲の進行を再開する。詳細な処理は、後に図１９を参照しながら説明する。
【０１０９】
ステップＳＡ５では、その他処理を行う。その他処理は、例えば演奏練習のスタートを指示するための処理、テンポや音量の変更、各種モードの設定を行う。その後、ステップＳＡ２へ戻り、上記の処理を繰り返す。
【０１１０】
手表示情報は、押鍵開始を指示するノートオンイベントに対応する情報であるので、本来はノートオンベロシティ等に手表示情報を設定するのが好ましい。しかし、ノートオンベロシティは音量の情報として用いられるので、ノートオフベロシティに手表示情報を設定する必要がある。ノートオフベロシティは、演奏データとして何も処理されないことが多い。
【０１１１】
手表示情報をノートオンベロシティ１ｃ（図２）に設定するのではなく、その後に出現するノートオフベロシティ３ｃ（図２）に設定する場合には、押鍵開始を指示するためのノートオンに対応させることが困難である。これは、ノートオンイベント１とノートオフイベント３（図２）の間に種々のデータが入る可能性があるからである。このような不都合を解消するため、演奏練習の処理を行う前に、前処理として、ノートオフベロシティに含まれている手表示情報を読み出して、当該ノートオフに対応するノートオンの直後に格納する処理を行う。
【０１１２】
図１１は、処理前の演奏データ１０と処理後の演奏データ３０を示す。
処理前の演奏データ１０は、図２と同じスタンダードＭＩＤＩファイルの形式であり、ノートオンイベント１とそれに対応するタイミングデータ２とノートオフイベント３とそれに対応するタイミングデータ４を有する。ノートオフイベント３は、ノートオンイベント１によるノートオンをノートオフするためのイベントである。
【０１１３】
処理前の演奏データ１０は、ノートオフベロシティ３ｃ中に手表示情報を有する。処理後の演奏データ３０は、処理前の演奏データ１０に手表示情報３１を付加したものである。手表示情報３１は、処理前の演奏データ１０のノートオフベロシティ３ｃから読み出され、処理後の演奏データ３０中のノートオンイベント１とそのタイミングデータ２との間に格納される。ノートオフイベント３中のベロシティは手表示情報を含むものであるが、ＭＩＤＩファイルの形式を保つためにそのまま残されている。
【０１１４】
手表示情報３１をノートオンイベント１の直後に設けることにより、ノートオンイベント１を読み出した時点で、直ちに手表示情報３１を判断することができる。
【０１１５】
図１２は、演奏データ１０から演奏データ３０へのデータ変換の処理を示すフローチャートである。この処理は、図１０のメインルーチンのステップＳＡ５におけるその他処理において行われる。具体的には、演奏者が演奏練習のスタートスイッチを押した後に行われる。
【０１１６】
ステップＳＧ１では、演奏データ１０からイベントを読み出す。例えば、ノートオンイベント、ノートオフイベントまたはタイミングデータである。
【０１１７】
ステップＳＧ２では、読み出したイベントがノートオンイベントであるか否かをチェックする。ノートオンイベントであるときには、ステップＳＧ３で演奏データ３０を生成するためのバッファにノートオンイベントを転送する。
【０１１８】
ステップＳＧ４では、上記の演奏データ３０用のバッファにおいてノートオンイベントの後に１バイトの空白バイトを作成する。その後、ステップＳＧ１へ戻り、演奏データ１０から次のイベントを読み出す。
【０１１９】
ステップＳＧ２において読み出したイベントがノートオンイベントでないと判断されたときには、ステップＳＧ５へ進む。ステップＳＧ５では、読み出したイベントがノートオフイベントであるか否かをチェックする。ノートオフイベントであるときには、ステップＳＧ６へ進む。
【０１２０】
ステップＳＧ６では、当該ノートオフイベントに含まれるノートオフベロシティ中の手表示情報を演奏データ１０から読み出す。ステップＳＧ７では、当該手表示情報を対応ノートオンの空白バイトに書き込む。空白バイトは、ステップＳＧ４においてノートオンイベントの後に既に生成されている。
【０１２１】
ステップＳＧ８では、当該ノートオフイベントを演奏データ３０用のバッファに転送する。その後、ステップＳＧ１へ戻り、次のイベントについて処理を繰り返す。
【０１２２】
ステップＳＧ５において読み出したイベントがノートオフイベントでないと判断されたときには、タイミングデータ、エンドデータまたはコントロールチェンジ等であるので、ステップＳＧ９へ進み、当該イベントを演奏データ３０用のバッファに転送する。
【０１２３】
ステップＳＧ１０では、当該イベントがエンドデータであるか否かをチェックする。エンドデータでないときには、ステップＳＧ１へ戻り、次のイベントについて処理を繰り返す。エンドデータであるときには、演奏データの終了を意味するので、処理を終了する。
【０１２４】
なお、手表示情報３１をノートオンイベントと対応させて記憶する方式として、演奏データ１０からノートオフベロシティのみを抜き出してそれをノートオンイベント発生順に並べて演奏データ１０とは別の記憶領域に記憶させるような方式でもよい。この場合、演奏データ１０の読み出しと並行してノートオフベロシティの読み出しも行うようにすればよい。
【０１２５】
図１３は、図１０のステップＳＡ３における演奏データ読み出し処理の詳細を示すフローチャートである
ステップＳＢ１では、再生タイマが０以下であるか否かをチェックする。再生タイマが０以下であることは、次のイベントのタイミングに達していることを意味する。再生タイマは、タイミングデータによって設定され、次に示す再生タイマ割り込み処理によりカウントが行われる。
【０１２６】
図１４（Ａ）は、再生タイマ割り込み処理を示すフローチャートである。この割り込み処理は、例えば１０ｍｓの所定時間間隔で行われる。ステップＳＣ１では、再生タイマの値をデクリメントする。その後、割り込み前の処理に戻る。再生タイマは、演奏練習のスタートが指示されると０に初期設定され、その後例えば１０ｍｓ毎にデクリメントされる。
【０１２７】
図１３に戻り、ステップＳＢ１において、再生タイマが０以下であると判断されたときには、ステップＳＢ２へ進む。ステップＳＢ２では、ＲＡＭまたはＲＯＭに記憶されている演奏データからイベントを読み出す。１イベントとは、例えば図２に示すノートイベント１またはタイミングデータ２である。読み出されるイベントは、ノートイベントであれば３バイトであり、タイミングデータであれば１バイトである。イベントがノートオンイベントであるときには、その直後の手表示情報と共にノートオンイベントを読み出してもよい。
【０１２８】
ステップＳＢ３では、読み出したイベントがノートイベントであるか否かをチェックする。ノートイベントとは、ノートオン、ノートオフ等のイベントであり、例えば図２に示すノートイベント１または３である。ノートイベントであるときには、ステップＳＢ４へ進み、ノートイベント処理を行う。ノートイベント処理は、ノートオンイベントの直後に格納されている手表示情報の処理を含む。詳細な処理は、後に図１６を参照しながら説明する。その後、図１０のメインルーチンの処理へ戻る。
【０１２９】
ステップＳＢ３において、読み出したイベントがノートイベントでないと判断されたときには、ステップＳＢ５へ進む。ステップＳＢ５では、読み出したイベントがタイミングデータであるか否かをチェックする。タイミングデータとは、ノートイベントと次のノートイベントとの間の時間間隔を示し、例えば図２に示すタイミングデータ２または４である。読み出したイベントがタイミングデータであるときには、ステップＳＢ６へ進む。
【０１３０】
ステップＳＢ６では、該タイミングデータ×テンポ係数の値を、再生タイマに加算する。再生タイマは、図１３（Ａ）の割り込み処理により１０ｍｓ単位でデクリメントされている。テンポ係数は、タイミングデータの単位を再生タイマの単位（１０ｍｓ）に変換するための係数である。このようにして次のノートイベントまでの時間が再生タイマに設定される。その後、図１０のメインルーチンの処理へ戻る。
【０１３１】
再生タイマに上記の値が加算されると、その後１０ｍｓ間隔で再生タイマの値がデクリメントされる。ステップＳＢ１では、再生タイマが０よりも大きい間は、演奏データのイベントを読み出さずに、図１０のメインルーチンの処理へ戻る。再生タイマの値が０以下になったときには、次のイベントの読み出しタイミングがきたことを意味するので、ステップＳＢ２へ進み、次のイベントを読み出し、上記と同様の処理を繰り返す。
【０１３２】
なお、ステップＳＢ６において、再生タイマに所定の値を設定するのではなく、所定の値を加算している点に注意する必要がある。図１３に示す演奏データ読み出し処理は、タイマ割り込み処理ではないので、通常一定時間間隔では行われない。つまり、ステップＳＢ１において毎回再生タイマが０の時点でステップＳＢ２へ進むのであれば、ステップＳＢ６において再生タイマを所定の値に更新するようにしてもよいが、ステップＳＢ１において再生タイマの値が負の時にステップＳＢ２へ進む場合もあるので、ステップＳＢ６においては再生タイマに所定の値を加算する必要がある。
【０１３３】
読み出したイベントが、ステップＳＢ３においてノートイベントではないと判断され、かつステップＳＢ５においてタイミングデータでないと判断されたときには、その他イベントであるので、ステップＳＢ７へ進む。その他イベントは、例えばプログラムチェンジまたはコントロールチェンジ等である。
【０１３４】
ステップＳＢ７では、その他イベントの処理を行う。例えば、その他イベントがプログラムチェンジである場合は、音色変更の処理を行う。その後、図１０のメインルーチンの処理へ戻る。
【０１３５】
図１５（Ａ）、（Ｂ）は、ある音がノートオンするタイミングと他の音がノートオフするタイミングの組み合わせを２つ示す。
【０１３６】
図１５（Ａ）は、Ｃ４の音がノートオフした後、Ｇ４の音がノートオンする例を示す。Ｃ４の音は、時刻ｔ１にノートオンし、その後時刻ｔ２にノートオフする。さらに、その後、Ｇ４の音が、時刻ｔ３にノートオンし、その後時刻ｔ４にノートオフする。ここで、時刻ｔ２におけるＣ４の音のノートオフをノートオフ▲１▼とし、時刻ｔ３におけるＧ４の音のノートオンをノートオン▲２▼とする。
【０１３７】
図１５（Ｂ）は、Ｃ４の音がノートオン中に、Ｇ４の音がノートオンする例を示す。時刻ｔ１においてＣ４の音がノートオンし、その後時刻ｔ３においてＧ４の音がノートオンする。さらに、その後、時刻ｔ２においてＣ４の音がノートオフし、その後時刻ｔ４においてＧ４の音がノートオフする。ここで、時刻ｔ３におけるＧ４の音のノートオンをノートオン▲３▼とし、時刻ｔ２におけるＣ４の音のノートオフをノートオフ▲４▼とする。
【０１３８】
次に、上記のノートオフ▲１▼、ノートオン▲２▼、ノートオン▲３▼、ノートオフ▲４▼のそれぞれ場合のノートイベント処理を説明する。
【０１３９】
図１６は、図１３のステップＳＢ４におけるノートイベント処理の詳細を示すフローチャートである。
【０１４０】
まず、次の音のノートオン前のノートオフ▲１▼の場合を説明する。
ステップＳＤ１では、読み出したノートイベントがノートオンイベントであるか否かをチェックする。ノートイベントがノートオフ▲１▼の場合は、ステップＳＤ１１へ進む。ステップＳＤ１１では、他にノートオン中のものがないかをチェックする。ノートオフ▲１▼の時点（図１５（Ａ）の時刻ｔ２）において、他の音（Ｇ４）はノートオンしていないので、次の音（Ｇ４）を押鍵する準備段階の手を表示するため、ステップＳＤ１２へ進む。
【０１４１】
ステップＳＤ１２では、次の音（Ｇ４）のノートオンイベントをサーチし、そのノートオンイベントに対応する手表示情報を読み出す。手表示情報は、手の前後位置情報（ＰｏｓＹ）と手の種類情報（ＨｎｄＰａｔ）と指情報（ＦｎｇＮｏ）を含む。
【０１４２】
ステップＳＤ１３では、手の種類情報（ＨｎｄＰａｔ）に応じて、手の種類（図３（Ａ）、図３（Ｂ）、図４（Ｃ）、図４（Ｄ））を決定する。
【０１４３】
ステップＳＤ１４では、手表示情報およびノートナンバに応じて、手の前後位置および左右位置を決定する。手の前後位置（最手前、手前、奥、最奥）は、手の前後位置情報（ＰｏｓＹ）に応じて決まる。左右位置は、指情報（ＦｎｇＮｏ）が示す指がノートナンバが示す鍵の位置にくるようにする。
【０１４４】
ステップＳＤ１５では、上記で決定された手の種類と位置に従って、押鍵準備段階の手を描画する。押鍵準備段階の手は、押鍵していない状態であるので、押鍵すべき指および鍵の色を変える必要はない。
【０１４５】
ステップＳＤ１６では、ノートオフ▲１▼に応じて例えばＣ４の音の消音処理を行う。具体的には、ノートオフイベントに含まれるノートナンバ（Ｃ４）の消音のための楽音パラメータを音源回路に供給する。ただし、ノートオフベロシティは手表示情報に書き換えられてしまっているので、本来のベロシティデータとしての値は保証されない。その後、図１３、引き続き図１０の処理に戻る。
【０１４６】
次に、前の音のノートオフ後のノートオン▲２▼の場合を説明する。
ステップＳＤ１では、読み出したノートイベントがノートオンイベントであるか否かをチェックする。ノートイベントがノートオン▲２▼の場合は、ステップＳＤ２へ進む。
【０１４７】
ステップＳＤ２では、図１７（Ａ）に示す再生一致進行バッファにイベントを格納し、該イベントのタイマ値を０に設定する。例えば再生一致進行バッファに、読み出した演奏データのノートオンイベント１（図２）中のノートナンバ１ｂ（例えばＣ４またはＧ４）を格納し、タイマ値を０に設定する。このタイマ値は、先の再生タイマ（図１４（Ａ））とは無関係であり、再生一致進行バッファに当該イベントが格納されてからの時間を表す。
【０１４８】
ステップＳＤ３では、他にノートオン中のものがあるか否かをチェックする。具体的には、上記の再生一致進行バッファ（図１７（Ａ））に２以上のノートオンイベントが格納されているときには、自己以外に他のノートオンがあると判断することができる。ステップＳＤ１１においても、同様の判断により、他にノートオンがあるか否かを判断することができる。
【０１４９】
ノートオン▲２▼の時点（図１５（Ａ）の時刻ｔ３）においては、他の音（Ｃ４）はノートオンしていないので、ステップＳＤ４およびＳＤ５を飛び越し、ステップＳＤ６へ進む。
【０１５０】
ステップＳＤ６では、ノートオン▲２▼に対応する手表示情報中の指情報（ＦｎｇＮｏ）に応じて押鍵する指（親指、人差し指等）を決定する。なお、手の種類および手の位置は、既にステップＳＤ１３およびＳＤ１４で決定されている。さらに、ノートオン▲２▼の押鍵準備段階の手が既にステップＳＤ１５において表示器に描画されている。
【０１５１】
ステップＳＤ７では、上記で決定された押鍵する指（ステップＳＤ６）、手の種類（ステップＳＤ１３）、手の位置（ステップＳＤ１４）に従って、手の模範形を表示器に描画する。その際、押鍵する指の色を変えると共に、押鍵する指の長さを変える。白鍵を押鍵するときは押鍵する指を短めに描画し、黒鍵を押鍵するときには押鍵する指を長めに描画する。
【０１５２】
ステップＳＤ８では、ノートオン▲２▼のノートナンバ（Ｇ４）に対応する鍵の色を変える。この場合、Ｇ４の鍵が、演奏者が次に押鍵すべき鍵である。
【０１５３】
ステップＳＤ９では、ノートオン▲２▼の発音処理を行う。具体的には、ノートオンイベントに含まれるノートナンバ（音高）およびノートオンベロシティ（音量）に応じた楽音パラメータを音源回路に供給し、サウンドシステムにおいて発音させる。
【０１５４】
なお、この発音処理は、演奏者の押鍵処理により発音される音と区別するため、小さい音量で発音させたり、演奏者の押鍵による音色とは異なる音色で発音させることが望ましい。その後、図１３、引き続き図１０の処理に戻る。
【０１５５】
次に、前の音のノートオフ前のノートオン▲３▼の場合を説明する。
ステップＳＤ１では、読み出したノートイベントがノートオンイベントであるか否かをチェックする。ノートオン▲３▼の場合は、ステップＳＤ２へ進む。ステップＳＤ２では、図１７（Ａ）に示す再生一致進行バッファにイベントを格納し、該イベントのタイマ値を０に設定する。
【０１５６】
ステップＳＤ３では、他にノートオン中のものがあるか否かをチェックする。ノートオン▲３▼の時点（図１５（Ｂ）の時刻ｔ３）においては、他の音（Ｃ４）がノートオンしているので、ステップＳＤ４へ進む。この後は、現在押鍵中の音（Ｃ４）の手の表示を消去し、新たに押鍵を開始する音（Ｇ４）に対応する手を表示する。
【０１５７】
ステップＳＤ４では、ノートオン▲３▼の手の種類情報（ＨｎｄＰａｔ）に応じて、手の種類（図３（Ａ）、図３（Ｂ）、図４（Ｃ）、図４（Ｄ））を決定する。
【０１５８】
ステップＳＤ５では、ノートオン▲３▼の手表示情報およびノートナンバに応じて、手の前後位置および左右位置を決定する。手の前後位置（最手前、手前、奥、最奥）は、手の前後位置情報（ＰｏｓＹ）に応じて決まる。左右位置は、指情報（ＦｎｇＮｏ）が示す指がノートナンバが示す鍵の位置にくるようにする。
【０１５９】
ステップＳＤ６では、ノートオン▲３▼の指情報（ＦｎｇＮｏ）に応じて押鍵する指（親指、人差し指等）を決定する。
【０１６０】
ステップＳＤ７では、上記で決定された押鍵する指、手の種類、手の位置に従って、手の模範形を表示器に描画する。その際、押鍵する指の色を変えると共に、押鍵する指の長さを変える。
【０１６１】
ステップＳＤ８では、ノートオン▲３▼のノートナンバ（Ｇ４）に対応する鍵の色を変える。
【０１６２】
ステップＳＤ９では、ノートオン▲２▼の発音処理を行う。その後、図１３、引き続き図１０の処理に戻る
次に、次の音のノートオン後のノートオフ▲４▼の場合を説明する。
【０１６３】
ステップＳＤ１では、読み出したノートイベントがノートオンイベントであるか否かをチェックする。ノートイベントがノートオフ▲４▼の場合は、ステップＳＤ１１へ進む。ステップＳＤ１１では、他にノートオン中のものがないかをチェックする。ノートオフ▲４▼の時点（図１５（Ｂ）の時刻ｔ２）においては、他の音（Ｇ４）がノートオンしているので、ノートオン中の音（Ｇ４）に対応する手の模範形の表示を維持するため、ステップＳＤ１６へ進む。
【０１６４】
ステップＳＤ１６では、ノートオフ▲４▼に応じて例えばＣ４の音の消音処理を行う。その後、図１３、引き続き図１０の処理に戻る。
【０１６５】
図１８は、図１０のステップＳＡ２における一致進行処理の詳細を示すフローチャートである。
【０１６６】
ステップＳＥ１では、一致進行タイマが０より大きいか否かをチェックする。一致進行タイマは、次に示す一致進行タイマ割り込み処理によりカウントが行われる。
【０１６７】
図１４（Ｂ）は、一致進行タイマ割り込み処理を示すフローチャートである。この割り込み処理は、例えば１０ｍｓの所定時間間隔で行われる。ステップＳＣ２では、一致進行タイマの値をインクリメントする。その後、割り込み前の処理に戻る。一致進行タイマは、演奏練習のスタートが指示されると０に初期設定され、その後例えば１０ｍｓ毎にインクリメントされる。
【０１６８】
図１８に戻り、ステップＳＥ１において、一致進行タイマが０より大きいと判断されたときには、一致進行制御を行うため、ステップＳＥ２へ進む。一致進行タイマが０以下であるときには、一致進行処理を行わずに、図１０のメインルーチンの処理へ戻る。このように、一致進行タイマを用いて一致進行制御のための負荷を軽減し、かつほぼ一定時間毎に一致進行制御を行わせる。
【０１６９】
ステップＳＥ２では、一致進行タイマを０にリセットする。一致進行タイマは、次のインクリメント（図１４（Ｂ））まで０となる。ステップＳＥ２の処理は、後により詳しく説明するように、平均して一致進行タイマの単位時間（例えば１０ｍｓ）間隔で通過することになる。
【０１７０】
ステップＳＥ３では、ステップＳＥ１およびＳＥ２で述べた一致進行タイマとは別に、再生一致進行バッファ（図１７（Ａ））と手弾き一致進行バッファ（図１７（Ｂ））の両方の全てのイベントについてのタイマ値をインクリメントする。
【０１７１】
既に述べたように、演奏データのイベントを格納するための再生一致進行バッファは、図１６のステップＳＤ２においてイベントを格納する。後に説明するが、手弾き一致進行バッファは、鍵盤における押鍵操作によるイベントを格納するバッファである。
【０１７２】
両バッファのタイマ値は、共に平均して１０ｍｓ間隔でインクリメントされる。
【０１７３】
ステップＳＥ４では、ポーズ判定を行い、ポーズ条件を満たしているか否かをチェックする。再生一致進行バッファ（図１７（Ａ））の中のイベントにおいて、タイマ値が所定値（例えば５０）以上のものがあるときにはポーズ条件を満たすと判断する。
【０１７４】
バッファのタイマ値はステップＳＥ３において約１０ｍｓ毎にインクリメントされるので、タイマ値の１は１０ｍｓに相当する。所定値が例えば５０である場合は、５００ｍｓ経過したイベントがバッファに残っているときにポーズ条件を満たすことになる。演奏者が、演奏データに対応する適切な鍵を５００ｍｓ経過しても押鍵しないときには、ポーズ条件を満たし、ステップＳＥ５へ進む。
【０１７５】
ステップＳＥ５では、ポーズ設定を行う。具体的には、ポーズフラグを１にセットし、図１４（Ａ）に示す割り込み処理による再生タイマのデクリメントを停止する。その後、図１０のメインルーチンの処理へ戻る。再生タイマのデクリメントを停止すれば、図１３のステップＳＢ１において、再生タイマが０以下にならないので、ステップＳＢ２における演奏データの次のイベントの読み出しが停止され、曲の進行が停止する。
【０１７６】
すなわち、演奏データが読み出されてから例えば５００ｍｓ経過しても、演奏者が当該演奏データに対応する鍵を押鍵しないときには、ポーズ設定により曲の進行が中断し、演奏者の適正な押鍵操作を待つ。
【０１７７】
ステップＳＥ４において、ポーズ条件を満たさないと判断されたときには、ポーズ設定を行わずに、図１０のメインルーチンの処理へ戻る。
【０１７８】
次に、ステップＳＥ１において平均して１０ｍｓ毎にＹＥＳ（ステップＳＥ２）へ進む理由を説明する。一致進行タイマ（図１４（Ｂ））は、例えば１０ｍｓ毎にインクリメントされる。
【０１７９】
図１８の一致進行処理は、タイマ割り込み処理ではないので、一定時間間隔では行われないが、平均して１ｍｓ間隔でステップＳＥ１の判断が行われる場合を考える。その場合、一致進行タイマを０から１にインクリメントした後、次のインクリメントまで平均１０回ステップＳＥ１を通る。最初のステップＳＥ１では、一致進行タイマが１なので、ＹＥＳ（ステップＳＥ２〜ＳＥ５）へ進む。残り９回のステップＳＥ１では、一致進行タイマが０にリセットされているため一致進行処理はスルーする。このようにして、ステップＳＥ２〜ＳＥ５の処理は、約１０ｍｓに１回行われることになる。
【０１８０】
図１９は、図１０のステップＳＡ４における押鍵処理の詳細を示すフローチャートである。
【０１８１】
ステップＳＦ１では、鍵盤上における鍵操作により生じたキーイベントがあるか否かをチェックする。キーイベントがあるときには、キーイベントの処理を行うため、ステップＳＦ２へ進む。キーイベントがないときには、キーイベントの処理を行わずに、図１０のメインルーチンの処理へ戻る。
【０１８２】
ステップＳＦ２では、上記のキーイベントがキーオンイベントであるか否かをチェックする。キーオンイベントであるときには、ステップＳＦ３へ進む。
【０１８３】
ステップＳＦ３では、当該キーオンイベントに対応する発音処理を行う。具体的には、キーオンイベントおよびそれに対応するパラメータを音源回路２２および効果回路２３（図３）に供給する。サウンドシステム２４では、当該キーオンイベントに応じた発音がされる。その後、ステップＳＦ４へ進む。
【０１８４】
ステップＳＦ４では、図１７（Ｂ）に示す手弾き一致進行バッファに上記のイベントを格納し、該イベントのタイマ値を０に設定する。手弾き一致進行バッファには、ノートナンバとして例えばＡ３を格納し、タイマ値を０に設定する。このタイマ値は、当該バッファにイベントが格納されてからの時間を表すものであり、図１８のステップＳＥ３においてインクリメントされる。
【０１８５】
ステップＳＦ５では、再生一致進行バッファ（図１７（Ａ））と手弾き一致進行バッファ（図１７（Ｂ））の両イベントを比較する。再生一致進行バッファには、演奏データのイベントが格納され、手弾き一致進行バッファには演奏者の鍵盤操作によるイベントが格納される。
【０１８６】
ステップＳＦ６では、両バッファに一致するイベントがあるか否か、すなわち同じノートナンバのイベントがあるか否かをチェックする。一致するイベントがあるときには、演奏者が正しい鍵を押鍵したことを意味するので、ステップＳＦ７へ進む。
【０１８７】
ステップＳＦ７では、演奏者の正押鍵に対してインタラクティブな反応を示すため、「うまい！」等の誉めるメッセージを表示器に表示する。処理の詳細は、後に図２０のフローチャートを参照しながら説明する。
【０１８８】
ステップＳＦ８では、一致するイベントを再生一致進行バッファと手弾き一致進行バッファの両バッファから削除する。
【０１８９】
ステップＳＦ９では、現在ポーズ中であるか否かをチェックする。ポーズ中でないときには、図１０のメインルーチンの処理へ戻る。ポーズ設定は、図１８のステップＳＥ５において行われる。ポーズフラグが１にセットされているときには、ポーズ中であると判断する。ポーズ中であるときはポーズを解除するため、ステップＳＦ１０へ進む。
【０１９０】
ステップＳＦ１０では、再生一致進行バッファ（図１７（Ａ））に残っているタイマ値の最大値が所定値（例えば５０）以下であるか否かをチェックする。演奏者の正押鍵により、ステップＳＦ８において両バッファから削除されたイベントは、タイマ値が所定値を越えたものであるとは限らない。当該イベントの他にも所定値を越えたタイマ値を有するイベントが再生一致進行バッファに格納されている場合には、ポーズ状態を継続するため、図１０のメインルーチンの処理へ戻る。
【０１９１】
再生一致進行バッファに当該イベントの他に、タイマ値が所定値を越えたイベントがない場合には、ポーズを解除するため、ステップＳＦ１１へ進む。
【０１９２】
ステップＳＦ１１では、ポーズ解除を行う。具体的には、ポーズフラグを０にリセットする。そして、図１８のステップＳＥ５で停止された再生タイマのデクリメントを再開する。再生タイマのデクリメントを再開すれば、再び演奏データの読み出しが再開し（図１３のステップＳＢ２）、曲が進行する。その後、図１０のメインルーチンの処理へ戻る。
【０１９３】
ステップＳＦ６において両バッファに一致するイベントがないと判断されたときには、演奏者が誤った鍵を押鍵したことを意味するので、ステップＳＦ２１へ進む。
【０１９４】
ステップＳＦ２１では、演奏者の誤押鍵に対してインタラクティブな反応を示すため、「がんばって！」等の励ましのメッセージを表示器に表示する。処理の詳細は、後に図２１のフローチャートを参照しながら説明する。
【０１９５】
ステップＳＦ２２では、現在ポーズ中であるか否かをチェックする。ポーズ中でないときには、図１０のメインルーチンの処理へ戻る。ポーズ中であるときには、誤押鍵した鍵が正しい鍵とどの位離れているかを表示するため、ステップＳＦ２３へ進む。
【０１９６】
ステップＳＦ２３では、再生一致進行バッファ（図１７（Ａ））中のタイマ値が最大のノートオンイベントのノートナンバと、演奏者が押鍵した鍵のノートナンバの差に応じたメッセージを表示または発声する。表示器に表示する場合は、手の模範形の下の領域にメッセージを表示する。例えば、以下の表示または発声を行う。
【０１９７】
隣の鍵を押鍵した場合は、「右の黒鍵です」、「右の白鍵です」、「左の黒鍵です」、または「左の白鍵です」と表示または発声する。
【０１９８】
隣の鍵より離れかつ６度以内の鍵を押鍵した場合は、「もう少し右です」、または「もう少し左です」と表示または発声する。
【０１９９】
７度から９度離れた鍵を押鍵した場合は、「１オクターブ右です」、または「１オクターブ左です」と表示または発声する。
【０２００】
ステップＳＦ２３の後は、図１０のメインルーチンの処理へ戻る。
ステップＳＦ２においてキーオフイベントが検出されたと判断されたときは、ステップＳＦ３１へ進む。ステップＳＦ３１では、当該キーオフイベントに対応する音の消音処理を行う。その後、ステップＳＦ３２へ進む。
【０２０１】
ステップＳＦ３２では、手弾き一致進行バッファ（図１７（Ｂ））から当該キーオフイベントに対応するキーオンイベントを削除する。すなわち、演奏者が誤った押鍵をしたときには、このステップで当該イベントを手弾き進行バッファから削除する。ただし、演奏者が正しい押鍵をしたときには、ステップＳＦ８で既に当該イベントが手弾き進行バッファおよび再生一致進行バッファから削除されているため、ステップＳＦ３２での処理は行われない。その後、図１０のメインルーチンの処理へ戻る。
【０２０２】
図２０は、図１９のステップＳＦ７に示す正押鍵処理の詳細を示すフローチャートである。
【０２０３】
ステップＳＨ１では、フラグＣＯＲＲＥＣＴが１であるか否かをチェックする。フラグＣＯＲＲＥＣＴは、演奏者が正押鍵をしたときに１が設定され、演奏者が誤押鍵をしたときに０が設定されるフラグである。
【０２０４】
フラグＣＯＲＲＥＣＴが１であるときには、今回の押鍵だけでなく前回の押鍵も正押鍵であったことを意味するので、ステップＳＨ２へ進む。
【０２０５】
ステップＳＨ２では、レジスタＣＲＣＴ＿ＮＵＭの値をインクリメントする。レジスタＣＲＣＴ＿ＮＵＭは、演奏者が連続して正押鍵した回数を格納するためのレジスタである。
【０２０６】
ステップＳＨ３では、レジスタＣＲＣＴ＿ＮＵＭが６であるか否かをチェックする。レジスタＣＲＣＴ＿ＮＵＭが６であるときには、演奏者が６回連続正押鍵をしたことを意味するので、ステップＳＨ６へ進み、「その調子」と表示または発声する。その後、図１９のフローチャートの処理に戻る。
【０２０７】
レジスタＣＲＣＴ＿ＮＵＭが６でないときには、ステップＳＨ４へ進み、レジスタＣＲＣＴ＿ＮＵＭが１２であるか否かをチェックする。レジスタＣＲＣＴ＿ＮＵＭが１２であるときには、演奏者が１２回連続正押鍵をしたことを意味するので、ステップＳＨ５へ進み、「うまいうまい」と表示または発声する。その後、図１９のフローチャートの処理に戻る。
【０２０８】
レジスタＣＲＣＴ＿ＮＵＭが６でも１２でもないときには、何も表示または発声せずに、図１９のフローチャートの処理に戻る。
【０２０９】
ステップＳＨ１においてフラグＣＯＲＲＥＣＴが０であると判断されたときは、今回は正押鍵であるが前回は誤押鍵であることを意味するので、ステップＳＨ７へ進む。
【０２１０】
ステップＳＨ７では、今回の押鍵が正押鍵であることを記録しておくため、フラグＣＯＲＲＥＣＴに１をセットする。
【０２１１】
ステップＳＨ８では、レジスタＣＲＣＴ＿ＮＵＭに１を格納し、正押鍵の連続回数を１に設定する。その後、図１９のフローチャートの処理に戻る。
【０２１２】
図２１は、図１９のステップＳＦ２１に示す誤押鍵処理の詳細を示すフローチャートである。
【０２１３】
ステップＳＩ１では、フラグＣＯＲＲＥＣＴが０であるか否かをチェックする。フラグＣＯＲＲＥＣＴは、演奏者が正押鍵をしたときに１が設定され、演奏者が誤押鍵をしたときに０が設定されるフラグである。
【０２１４】
フラグＣＯＲＲＥＣＴが０であるときは、今回の押鍵だけでなく前回の押鍵も誤押鍵であったことを意味するので、ステップＳＩ２へ進む。
【０２１５】
ステップＳＩ２では、レジスタＷＲＮＧ＿ＮＵＭの値をインクリメントする。レジスタＷＲＮＧ＿ＮＵＭは、演奏者が連続して誤押鍵した回数を格納するためのレジスタである。
【０２１６】
ステップＳＩ３では、レジスタＷＲＮＧ＿ＮＵＭが３であるか否かをチェックする。レジスタＷＲＮＧ＿ＮＵＭが３であるときには、演奏者が３回連続誤押鍵をしたことを意味するので、ステップＳＩ６へ進み、「がんばって」と表示または発声する。その後、図１９のフローチャートの処理に戻る。
【０２１７】
レジスタＷＲＮＧ＿ＮＵＭが３でないときには、ステップＳＩ４へ進み、レジスタＷＲＮＧ＿ＮＵＭが６であるか否かをチェックする。レジスタＷＲＮＧ＿ＮＵＭが６であるときには、演奏者が６回連続誤押鍵をしたことを意味するので、ステップＳＩ５へ進み、「落ちついて」と表示または発声する。その後、図１９のフローチャートの処理に戻る。
【０２１８】
レジスタＷＲＮＧ＿ＮＵＭが３でも６でもないときには、何も表示または発声せずに、図１９のフローチャートの処理に戻る。
【０２１９】
ステップＳＩ１においてフラグＣＯＲＲＥＣＴが１であると判断されたときは、今回の押鍵が誤押鍵であり前回の押鍵が正押鍵であることを意味するので、ステップＳＩ７へ進む。
【０２２０】
ステップＳＩ７では、今回の押鍵が誤押鍵であることを記録しておくため、フラグＣＯＲＲＥＣＴを０にリセットする。
【０２２１】
ステップＳＩ８では、レジスタＷＲＮＧ＿ＮＵＭに１を格納し、誤押鍵の連続回数を１に設定する。その後、図１９のフローチャートの処理に戻る。
【０２２２】
演奏者が正押鍵または誤押鍵を行ったときには、それに応じたメッセージを表示または発声することにより、インタラクティブな対応が可能になり、人間の教師から教育を受けているような感覚を受けることができ、効果的な演奏練習を行うことができる。
【０２２３】
手表示情報は、手の前後位置情報と手の種類情報と指情報を含む。手の前後位置情報は、鍵盤上に置く手の前後方向（手前または奥等）の位置を示す。手の前後位置は、押す指および押鍵する鍵等により適正な位置が決まる。また、黒鍵から白鍵へ移行する場合、または白鍵から黒鍵へ移行する場合等に応じて、次の音に移行しやすい位置が決まる。
【０２２４】
手の種類（形状）情報は、親指が人差し指または手のひらに重なった第１の手の形状と、親指が人差し指または手のひらに重なっていない第２の手の形状の両方を有する。第２の手の形状は、手の開き加減により複数種類用意する。手の開き加減に応じて、手の位置を動かさずに、次の音に移行できる場合がある。手の動きを少なくすることにより、スムーズな演奏を行うことができる。
【０２２５】
指情報は、押鍵する指の種類を示す。押鍵する指の色を変えて表示すると共に、押鍵する指の長さを変えて表示する。例えば、黒鍵は鍵の高さが高いので、黒鍵を押鍵する場合には押鍵する指の長さを長くし、白鍵は鍵の高さが低いので、白鍵を押鍵する場合には押鍵する指の長さを短くする。押鍵する指の長さを変えることにより、自然な指の動きを表現することができる。
【０２２６】
手の模範形を表示する際、ノートオンのタイミングまたはノートオフのタイミングに応じて、押鍵準備段階の手の模範形または押鍵時の手の模範形を表示する。演奏者は、押鍵準備段階の手の模範形をお手本にすることにより、押鍵する前から手の置く位置を知ることができる。
【０２２７】
手の模範形を表示すれば、各鍵に対応するＬＥＤを点灯する場合に比べ、演奏者は直感的に演奏方法を知ることができる。また、演奏者は、教師がそばでお手本を示しているような感覚で練習することができる。
【０２２８】
なお、手の模範形の表示は、右手に限定されず左手でもよい。右手の画像データをＲＯＭまたはフロッピディスクに記憶する場合、そのまま表示すれば右手を表示することができる。左手を表示するときは、左右方向（Ｘ軸）を対称に右手用画像データを折り返し表示すればよい。右手と左手の両方を表示することもできる。手表示情報には、右手と左手を識別するための情報を含めてもよい。
【０２２９】
なお、図１１に示すデータ変換により、スタンダードＭＩＤＩファイル形式の演奏データ１０を、別の形式の演奏データ４０に変換し、その後に演奏練習の処理を行う場合について説明したが、スタンダードＭＩＤＩファイル形式の演奏データ１０について直接演奏練習の処理を行うこともできる。
【０２３０】
その場合、ノートオンイベントを読み出した（図１６のステップＳＤ１）後、直接手表示情報を読み出す代わりに、対応するノートオフベロシティをサーチし当該ノートオフベロシティに設定されている手表示情報を読み出すようにすればよい。
【０２３１】
手表示情報は、ノートオフベロシティに設定する場合に限定されない。その他、ノートオンベロシティ、エクスクルーシブメッセージ（ＭＩＤＩ規格）、またはボリュームやエフェクトの制御情報等に手表示情報を設定してもよい。また、ノートオフベロシティとノートオンベロシティ等の複数の情報エリアに手表示情報を設定してもよい。
【０２３２】
複数の情報エリアに手表示情報を設定すれば、８ビット以上の手表示情報を設定することができる。手表示情報は、上記の７ビットの情報（手の前後位置情報、手の種類、指情報）に限定されない。その他、大人用の手または子供用の手を識別するための情報を含むことができる。同じ曲を演奏する場合であっても、大人用の手に比べ子供用の手は全体的に大きく広げる必要がある。また、大人用の手であれば動かさなくても届く鍵であっても、子供用の手では動かさなくては届かない鍵がある。
【０２３３】
その他、手表示情報は、各指毎の開き方や、手首の回転方向等の情報を含めることができる。
【０２３４】
ノートオフベロシティは、ベロシティデータ（演奏情報）としては使われないことが多いので、全ビット（７ビット）に手表示情報を設定することができる。それに対し、ノートオンベロシティは、一般的に音量情報として使われるので、ノートオンベロシティデータの精度を考慮し下位１または２ビットに設定するのが好ましい。ノートオフベロシティとノートオンベロシティを用いれば、９ビットの手表示情報を設定することができる。
【０２３５】
表示器に手の模範形の表示を行う場合、表示用の２次元画像データ（動画）そのものを曲全体にわたって記憶し、表示器に表示する方法も考えられるが、当該画像データのデータ量は大量のものとなってしまう。本実施例における７〜９ビットの手表示情報は、２次元画像のデータ量と比較すれば、ごく少ないデータ量である。
【０２３６】
また、ノートオフベロシティ等に手表示情報を設定することにより、スタンダードＭＩＤＩファイル形式の演奏データと同じデータ量でありながら、演奏データに手表示情報を持たせることができる。
【０２３７】
本実施例では、演奏データ中に手表示情報独自のデータ領域を新たに設けるのではなく、ノートオフベロシティ等に設定することにより、演奏データのデータ量を増加させることなく、手表示情報を用いた演奏指示機能を付加することができる。もちろん、図１１の演奏データ３０のように、手表示情報専用のデータ領域を確保するようにしてもよい。
【０２３８】
演奏データは、汎用の演奏データ（例えばスタンダードＭＩＤＩファイル）との互換性を保っているので、演奏指示機能を有しない一般の自動演奏装置にも広く活用することができる。本実施例による演奏指示装置を用いた場合には、自動演奏の他、さらに手の模範形を表示器に表示させることができる。
【０２３９】
演奏指示装置は、電子楽器の形態に限らず、パソコンとアプリケーションソフトウエアとによる形態でもよい。また、演奏指示装置は、音源装置や自動演奏装置等と共に電子楽器に内蔵されている場合に限らず、それぞれが別体の装置であり、ＭＩＤＩや各種ネットワーク等の通信手段を用いて各装置を接続するようなものであってもよい。さらに、自動演奏ピアノに適用することもできる。
【０２４０】
演奏データのフォーマットは、スタンダードＭＩＤＩファイルの他、「イベント＋相対時間」、「イベント＋絶対時間」、「音高＋符長」、「ベタ方式」等の形式でもよい。
【０２４１】
自動演奏のテンポを変更する方法は、テンポクロックの周期を変更するものや、テンポクロックの周期をそのままにしてタイミングデータの値を修正するものや、１回の処理においてタイミングデータをカウントする値を変更するものであってもよい。
【０２４２】
自動演奏データは、複数のチャンネルのデータが混在した形式であってもよいし、各チャンネルのデータがトラック毎に別れているような形式であってもよい。
【０２４３】
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組み合わせ等が可能なことは当業者に自明であろう。
【０２４４】
【発明の効果】
以上説明したように、本発明によれば、押鍵すべき鍵の他、例えば手の種類（形状）や手の位置や押鍵すべき指の種類を演奏者に指示することができるので、演奏者は詳細な演奏方法を知ることができる。また、演奏方法を示す手の画像を表示することが可能であるので、各鍵に対応するＬＥＤを点灯する場合に比べ、演奏者は直感的に演奏方法を知ることができる。
【図面の簡単な説明】
【図１】  図１（Ａ）はＭＩＤＩ規格のノートオフベロシティの構成を示す図であり、図１（Ｂ）は本発明の実施例による手表示情報を埋め込んだノートオフベロシティの構成を示す図である。
【図２】  本実施例による演奏指示装置に用いる演奏データのフォーマット例を示す図である。
【図３】  図３（Ａ）は指くぐりの手の形状を示す図であり、図３（Ｂ）は閉じた手の形状を示す図である。
【図４】  図４（Ｃ）は小さく開いた手の形状を示す図であり、図４（Ｄ）は大きく開いた手の形状を示す図である。
【図５】  手表示情報およびノートナンバを基にして手の表示を行う例を示す図である。
【図６】  図６（Ａ）は第１のノートオンイベントに対応する手の表示例を示す図であり、図６（Ｂ）は第２のノートオンイベントに対応する手の表示例を示す図である。
【図７】  図７（Ｃ）は第３のノートオンイベントに対応する手の表示例を示す図であり、図７（Ｄ）は第４のノートオンイベントに対応する手の表示例を示す図である。
【図８】  図８（Ｅ）は第５のノートオンイベントに対応する手の表示例を示す図であり、図８（Ｆ）は第６のノートオンイベントに対応する手の表示例を示す図である。
【図９】  本実施例による演奏指示装置の構成を示すブロック図である。
【図１０】  ＣＰＵが処理するメインルーチンのフローチャートである。
【図１１】  演奏データのデータ変換により手表示情報を新たなメモリ領域に格納する例を示す図である。
【図１２】  演奏データのデータ変換処理を示すフローチャートである。
【図１３】  図１０のステップＳＡ３における演奏データ読み出し処理の詳細を示すフローチャートである
【図１４】  図１４（Ａ）は再生タイマ割り込み処理を示すフローチャートであり、図１４（Ｂ）は一致進行タイマ割り込み処理を示すフローチャートである。
【図１５】  図１５（Ａ）と（Ｂ）はある音のノートオフと他の音のノートオンのタイミングを２種類示す図である。
【図１６】  図１３のステップＳＢ４におけるノートイベント処理の詳細を示すフローチャートである。
【図１７】  図１７（Ａ）は再生一致進行バッファの構成を示す図であり、図１７（Ｂ）は手弾き一致進行バッファの構成を示す図である。
【図１８】  図１０のステップＳＡ２における一致進行処理の詳細を示すフローチャートである。
【図１９】  図１０のステップＳＡ４における押鍵処理の詳細を示すフローチャートである。
【図２０】  図１９のステップＳＦ７における正押鍵処理の詳細を示すフローチャートである。
【図２１】  図１９のステップＳＦ２１における誤押鍵処理の詳細を示すフローチャートである。
【符号の説明】
１  ノートオンイベント、    ２，４  タイミングデータ、    ３  ノートオフイベント、    ５  エンドデータ、    ６  ベロシティデータ、    ７  手表示情報、    １０  演奏データ、    １１  ＲＯＭ、    １２  ＲＡＭ、    １３  ＣＰＵ、    １４  タイマ、    １５  ＭＩＤＩインターフェース、    １６  フロッピディスク駆動装置、    １７  鍵盤、    １８  鍵盤検出回路、  １９  スイッチ、    ２０  スイッチ検出回路、    ２１  表示回路、    ２２  音源回路、    ２３  効果回路、    ２４  サウンドシステム、    ２５  バス、    ３０  演奏データ、    ３１  手表示情報、    ５１  他のＭＩＤＩ機器、    ５２  ハードディスクドライブ、    ５３  ＣＤ−ＲＯＭドライブ、５４  通信インターフェース、    ５５  通信ネットワーク、    ５６  サーバコンピュータ
【図１】
0003684774.tif 000002
【図２】
0003684774.tif 000003
【図３】
0003684774.tif 000004
【図４】
0003684774.tif 000005
【図５】
0003684774.tif 000006
【図６】
0003684774.tif 000007
【図７】
0003684774.tif 000008
【図８】
0003684774.tif 000009
【図９】
0003684774.tif 000010
【図１０】
0003684774.tif 000011
【図１１】
0003684774.tif 000012
【図１２】
0003684774.tif 000013
【図１３】
0003684774.tif 000014
【図１４】
0003684774.tif 000015
【図１５】
0003684774.tif 000016
【図１６】
0003684774.tif 000017
【図１７】
0003684774.tif 000018
【図１８】
0003684774.tif 000019
【図１９】
0003684774.tif 000020
【図２０】
0003684774.tif 000021
【図２１】
0003684774.tif 000022