"少なくとも曲を構成する各音およびそれら各音を弾く指を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段から各音毎の曲データを読み出し、読み出した曲データの音を押鍵する指の位置を表す押鍵指位置座標を生成する押鍵指位置発生手段と、前記曲データ記憶手段から各音毎の曲データを読み出し、読み出した曲データの音を押鍵しない指の位置を表す無押鍵指位置座標を生成する無押鍵指位置発生手段と、前記押鍵指位置発生手段により生成された押鍵指位置座標と、前記無押鍵指位置発生手段により生成された無押鍵指位置座標とを参照して曲データを演奏する際の各指の位置変化を表示する指位置表示手段とを具備することを特徴とする演奏支援情報生成装置。前記押鍵指位置発生手段は、読み出した曲データの音の音高と弾くべき指とに応じて、押鍵する指の鍵盤上での位置を表す押鍵指位置座標を生成することを特徴とする請求項1記載の演奏支援情報生成装置。前記押鍵指位置発生手段は、読み出した曲データの音が和音を構成する場合、当該曲データの音を除く他の和音構成音にそれぞれ割当てられる各指の押鍵状態を表す押鍵情報と、それら和音構成音を押鍵する各指の位置を表す和音押鍵指位置情報とを生成して当該曲データに登録することを特徴とする請求項1記載の演奏支援情報生成装置。前記無押鍵指位置発生手段は、読み出した曲データの音と同時刻に押鍵される指の位置と、読み出した曲データの音以前に押鍵していた指の位置と、読み出した曲データの音以降に押鍵する指の位置とを勘案して、読み出した曲データの音を押鍵しない指の鍵盤上での位置を表す無押鍵指位置座標を生成することを特徴とする請求項1記載の演奏支援情報生成装置。前記押鍵指位置発生手段によって生成された押鍵指位置座標と、前記無押鍵指位置発生手段によって生成された無押鍵指位置座標とを対応する曲データに登録する指位置座標登録手段を更に具備することを特徴とする請求項1記載の演奏支援情報生成装置。前記読み出した曲データの音に対して親指から小指までの全ての指が取り得る位置範囲から手の位置を表す手位置座標を生成する手位置発生手段と、前記手位置発生手段により生成された手位置座標を参照して曲データを演奏する際の手の位置変化を表示する手位置表示手段とを更に具備することを特徴とする請求項1記載の演奏支援情報生成装置。少なくとも曲を構成する各音およびそれら各音を弾く指を表す曲データを各音毎に読み出す読み出し処理と、前記読み出し処理により読み出される曲データの音を押鍵する指の位置を表す押鍵指位置座標を生成する押鍵指位置発生処理と、前記読み出し処理により読み出される曲データの音を押鍵しない指の位置を表す無押鍵指位置座標を生成する無押鍵指位置発生処理と、前記押鍵指位置発生処理により生成された押鍵指位置座標と、前記無押鍵指位置発生処理により生成された無押鍵指位置座標とを参照して曲データを演奏する際の各指の位置変化を表示する指位置表示処理とをコンピュータで実行させることを特徴とする演奏支援情報生成プログラム。前記押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音の音高と弾くべき指とに応じて、押鍵する指の鍵盤上での位置を表す押鍵指位置座標を生成することを特徴とする請求項5記載の演奏支援情報生成プログラム。前記押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音が和音を構成する場合、当該曲データの音を除く他の和音構成音にそれぞれ割当てられる各指の押鍵状態を表す押鍵情報と、それら和音構成音を押鍵する各指の位置を表す和音押鍵指位置情報とを生成して当該曲データに登録することを特徴とする請求項5記載の演奏支援情報生成プログラム。前記無押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音と同時刻に押鍵される指の位置と、読み出される曲データの音以前に押鍵していた指の位置と、読み出される曲データの音以降に押鍵する指の位置とを勘案して、読み出される曲データの音を押鍵しない指の鍵盤上での位置を表す無押鍵指位置座標を生成することを特徴とする請求項5記載の演奏支援情報生成プログラム。前記押鍵指位置発生処理によって生成された押鍵指位置座標と、前記無押鍵指位置発生処理によって生成された無押鍵指位置座標とを対応する曲データに登録する登録処理をさらにコンピュータで実行させることを特徴とする請求項7記載の演奏支援情報生成プログラム。前記読み出した曲データの音に対して親指から小指までの全ての指が取り得る位置範囲から手の位置を表す手位置座標を生成する手位置発生処理と、前記手位置発生処理により生成された手位置座標を参照して曲データを演奏する際の手の位置変化を表示する手位置表示処理をさらにコンピュータで実行させることを特徴とする請求項7記載の演奏支援情報生成プログラム。ところで、鍵盤操作に不慣れな初心者ユーザでは、押鍵時の手の位置や姿勢あるいは指替えの仕方はもとより、それ以前に押鍵しない指をどの位置に置いておけばよいのかも判らないことが多い。したがって、上記特許文献1,2に開示の技術のように、押鍵時の手の位置や姿勢あるいは指替えの仕方などをユーザに教示しても、その教示に通りに行うには、押鍵しない指を適正な位置において鍵操作に備える必要がある。つまり、換言すれば、上記特許文献1,2に開示の技術では、押鍵しない指をどの位置に置いておけばよいのかを教示することができない、という問題が生じる。本発明は、このような事情に鑑みてなされたもので、押鍵しない指をどの位置に置いておけばよいのかを教示することができる演奏支援情報生成装置および演奏支援情報生成プログラムを提供することを目的としている。上記目的を達成するため、請求項1に記載の発明では、少なくとも曲を構成する各音およびそれら各音を弾く指を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段から各音毎の曲データを読み出し、読み出した曲データの音を押鍵する指の位置を表す押鍵指位置座標を生成する押鍵指位置発生手段と、前記曲データ記憶手段から各音毎の曲データを読み出し、読み出した曲データの音を押鍵しない指の位置を表す無押鍵指位置座標を生成する無押鍵指位置発生手段と、前記押鍵指位置発生手段により生成された押鍵指位置座標と、前記無押鍵指位置発生手段により生成された無押鍵指位置座標とを参照して曲データを演奏する際の各指の位置変化を表示する指位置表示手段とを具備することを特徴とする。上記請求項1に従属する請求項2に記載の発明では、前記押鍵指位置発生手段は、読み出した曲データの音の音高と弾くべき指とに応じて、押鍵する指の鍵盤上での位置を表す押鍵指位置座標を生成することを特徴とする。上記請求項1に従属する請求項3に記載の発明では、前記押鍵指位置発生手段は、読み出した曲データの音が和音を構成する場合、当該曲データの音を除く他の和音構成音にそれぞれ割当てられる各指の押鍵状態を表す押鍵情報と、それら和音構成音を押鍵する各指の位置を表す和音押鍵指位置情報とを生成して当該曲データに登録することを特徴とする。上記請求項1に従属する請求項4に記載の発明では、前記無押鍵指位置発生手段は、読み出した曲データの音と同時刻に押鍵される指の位置と、読み出した曲データの音以前に押鍵していた指の位置と、読み出した曲データの音以降に押鍵する指の位置とを勘案して、読み出した曲データの音を押鍵しない指の鍵盤上での位置を表す無押鍵指位置座標を生成することを特徴とする。上記請求項1に従属する請求項5に記載の発明では、前記押鍵指位置発生手段によって生成された押鍵指位置座標と、前記無押鍵指位置発生手段によって生成された無押鍵指位置座標とを対応する曲データに登録する指位置座標登録手段を更に具備することを特徴とする。上記請求項1に従属する請求項6に記載の発明では、前記読み出した曲データの音に対して親指から小指までの全ての指が取り得る位置範囲から手の位置を表す手位置座標を生成する手位置発生手段と、前記手位置発生手段により生成された手位置座標を参照して曲データを演奏する際の手の位置変化を表示する手位置表示手段とを更に具備することを特徴とする。請求項7に記載の発明では、少なくとも曲を構成する各音およびそれら各音を弾く指を表す曲データを各音毎に読み出す読み出し処理と、前記読み出し処理により読み出される曲データの音を押鍵する指の位置を表す押鍵指位置座標を生成する押鍵指位置発生処理と、前記読み出し処理により読み出される曲データの音を押鍵しない指の位置を表す無押鍵指位置座標を生成する無押鍵指位置発生処理と、前記押鍵指位置発生処理により生成された押鍵指位置座標と、前記無押鍵指位置発生処理により生成された無押鍵指位置座標とを参照して曲データを演奏する際の各指の位置変化を表示する指位置表示処理とをコンピュータで実行させることを特徴とする。上記請求項7に従属する請求項8に記載の発明では、前記押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音の音高と弾くべき指とに応じて、押鍵する指の鍵盤上での位置を表す押鍵指位置座標を生成することを特徴とする。上記請求項7に従属する請求項9に記載の発明では、前記押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音が和音を構成する場合、当該曲データの音を除く他の和音構成音にそれぞれ割当てられる各指の押鍵状態を表す押鍵情報と、それら和音構成音を押鍵する各指の位置を表す和音押鍵指位置情報とを生成して当該曲データに登録することを特徴とする。上記請求項7に従属する請求項10に記載の発明では、前記無押鍵指位置発生処理は、前記読み出し処理により読み出される曲データの音と同時刻に押鍵される指の位置と、読み出される曲データの音以前に押鍵していた指の位置と、読み出される曲データの音以降に押鍵する指の位置とを勘案して、読み出される曲データの音を押鍵しない指の鍵盤上での位置を表す無押鍵指位置座標を生成することを特徴とする。上記請求項7に従属する請求項11に記載の発明では、前記押鍵指位置発生処理によって生成された押鍵指位置座標と、前記無押鍵指位置発生処理によって生成された無押鍵指位置座標とを対応する曲データに登録する登録処理をさらにコンピュータで実行させることを特徴とする。上記請求項7に従属する請求項12に記載の発明では、前記読み出した曲データの音に対して親指から小指までの全ての指が取り得る位置範囲から手の位置を表す手位置座標を生成する手位置発生処理と、前記手位置発生処理により生成された手位置座標を参照して曲データを演奏する際の手の位置変化を表示する手位置表示処理をさらにコンピュータで実行させることを特徴とする。本発明では、少なくとも曲を構成する各音およびそれら各音を弾く指を表す曲データを各音毎に読み出し、読み出した曲データの音を押鍵する指の位置を表す押鍵指位置座標を生成して対応する曲データに登録すると共に、読み出した曲データの音を押鍵しない指の位置を表す無押鍵指位置座標と、その読み出した曲データの音に対して親指から小指までの全ての指が取り得る位置範囲から手の位置を表す手位置座標とを生成して対応する曲データに登録する。そして、曲データに登録された押鍵指位置座標、無押鍵指位置座標および手位置座標を参照して曲データを演奏する際の手および各指の位置変化を表示するので、押鍵しない指をどの位置に置いておけばよいのかを教示することができる。以下、図面を参照して本発明の実施の形態について説明する。A.構成1全体構成図1は、本発明による演奏支援情報生成装置を搭載した電子楽器の全体構成を示すブロック図である。この図において、鍵盤10は押離鍵操作演奏操作に応じたキーオン/キーオフイベント、鍵番号およびベロシティ等の演奏情報を発生する。スイッチ部11は、楽器パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。スイッチ部11に配設される主要なスイッチとしては、例えばパワーオンオフする電源スイッチの他、曲データを選択する曲選択スイッチや、動作モードを設定するモードスイッチ等がある。なお、本実施の形態では、モードスイッチ操作により演奏モード又は演奏支援情報発生モードが設定される。表示部12は、LCDパネル等から構成され、CPU13から供給される表示制御信号に応じて楽器全体の動作モードや各種設定状態を表示する。具体的には、演奏支援情報発生モードに設定されている場合、CPU13が後述する演奏支援処理を実行することにより、曲を構成する各音を演奏する際の手および各指の位置をグラフ化して表示部12に画面表示するようになっている。CPU13は、モードスイッチ操作で設定される動作モードで楽器各部を制御する。具体的には、演奏モードに設定されると、CPU13は押離鍵操作に応じて鍵盤10から出力される演奏情報に対応した各種楽音パラメータノートオン/ノートオフ等を発生し、これを音源16に供給して楽音発生を指示する。一方、演奏支援情報発生モードに設定された場合には、CPU13は後述する演奏支援処理を実行し、曲選択スイッチ操作で選択された曲データに基づき演奏支援情報を生成し、生成した演奏支援情報に基づき演奏時の手および各指の位置をグラフ化して表示部12に画面表示する。ROM14には、CPU13にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述する演奏支援処理を含む。RAM15は、ワークエリアおよびデータエリアを備える。RAM15のワークエリアには、CPU13の処理に使用される各種レジスタフラグデータが一時記憶される。RAM15のデータエリアには、複数曲の曲データが格納されており、そのデータ構成については追って述べる。音源16は、周知の波形メモリ読み出し方式によって構成され、時分割動作する複数の発音チャンネルを備える。この音源16は、各種音色の波形データを記憶しており、これらの内、CPU13から供給される楽音パラメータに応じた波形データを読み出して楽音波形を発生する。サウンドシステム17は、音源16から出力される楽音波形をアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。2曲データの構成図2は、RAM15のデータエリアに格納される曲データの構成を示す図である。1つの曲は、所謂MIDI形式で表現され、曲を構成する各音に対応する曲データME[0]~ME[N]から構成される。そして、1つの曲データMEは、発音開始時刻lTime、発音時間音長lGate、発音開始時間絶対時間lTimsec、ピッチ音高Pitch、鍵盤座標iPos、和音フラグclsHarm、ポインタpHTop、ポインタpHTail、ポインタpPHTop、ポインタpPHTail、ポインタpNHTop、ポインタpNHTailおよび運指cfigを備える。さらに、曲データMEには、押鍵の有無を各指毎に表す押鍵フラグiFigOn[1]~[5]、各指の位置を表す座標sfigPos[1]~[5]および手の位置座標sHandPosが後述の後述する演奏支援処理により生成されて登録される。なお、曲データMEを構成する上記各データが意図するところについては後述する動作の説明に交えて述べる。B.動作次に、図3~図12を参照して上記構成による実施形態におけるCPU13が実行する演奏支援処理の動作を説明する。1演奏支援処理の動作電源投入後のモードスイッチ操作に応じて、演奏支援情報発生モードに設定されると、CPU13は図3に図示する演奏支援処理を実行してステップSA1に処理を進める。ステップSA1では、曲選択スイッチ操作で選択された曲データME[0]~ME[N]を、RAM15のデータエリアから読み込み、ワークエリアに展開する。続いて、ステップSA2では、押鍵する指の座標設定処理を実行する。この処理では、後述するように、ポインタmeで指定される曲データME[me]毎に、鍵の位置鍵盤座標me.iPosを、押鍵する指の位置座標me.sfigPos[ifig]として登録したり、曲データME[me]が和音構成音であると、他の和音構成音にそれぞれ割当てられた各指の押鍵押鍵フラグiFigOn[cfigE]=1と、それら各指が押鍵する鍵盤座標座標me.sfigPos[cfigE]とを登録する。次いで、ステップSA3では、押鍵しない指の座標設定処理を実行する。この処理では、後述するように、ポインタmeで指定される曲データME[me]毎に、押鍵しない指の座標位置me.sfigPos[ifig]を登録すると共に、親指から小指までの全ての指が取り得る最大指座標sfMaxおよび最小指座標sfMinの平均値sfMaxsfMin/2から得られる手の位置座標sHandPosを登録する。そして、ステップSA4では、上記ステップSA2~SA3において、ポインタmeで指定される曲データME[me]毎に登録した押鍵する指の位置座標me.sfigPos[ifig]、押鍵しない指の座標位置me.sfigPos[ifig]および手の位置座標sHandPosに基づき、各曲データME[0]~[N]を演奏する際の手および各指の位置変化をグラフ化して表示部12に画面表示する。これにより、押鍵しない指をどの位置に置いておけばよいのかを教示し得るようになる。2押鍵する指の座標設定処理の動作次に、図4~図5を参照して、押鍵する指の座標設定処理の動作を説明する。上述した演奏支援処理のステップSA2図3参照を介して本処理が実行されると、CPU13は図4に図示するステップSB1に進み、先頭の曲データME[0]を指定するアドレスを、ポインタmeにストアする。次いで、ステップSB2では、歩進されたポインタmeがNULL、つまり全ての曲データMEについて処理し終えたかどうかを判断する。歩進されたポインタmeがNULLではなく、全ての曲データMEについて処理し終えていなければ、判断結果はNOになり、ステップSB3に進む。ステップSB3では、メロディパートを演奏する右手の各指を指定するポインタifigに初期値1をセットする。なお、ポインタifigは1の時に親指、2の時に人差し指、3の時に中指、4の時に薬指、5の時に小指をそれぞれ指定する。したがって、ステップSB3では、先ず親指を指定することになる。次いで、ステップSB4では、ポインタifigが6より小さいか否か、つまり親指から小指までの全ての指について処理し終えたかどうかを判断する。全ての指について処理し終えていなければ、判断結果はNOになり、ステップSB5に進む。ステップSB5では、ポインタifigと、ポインタmeで指定される曲データME[me]中の運指cfigme.cfigとが一致するか、すなわちポインタifigにより現在指定されている指が、運指me.cfigで表される押鍵すべき指の指番号に一致するかどうかを判断する。現在指定されている指が押鍵すべき指でなければ、判断結果がNOになり、ステップSB6に進み、ポインタifigをインクリメントして歩進させた後、上記ステップSB4に処理を戻す。歩進されたポインタifigの値が6より小さく、親指から小指までの全ての指について処理し終えていない場合には、上記ステップSB4の判断結果が再びNOになり、ステップSB5に進む。そして、ステップSB5において、歩進されたポインタifigと運指cfigとが一致し、現在指定されている指が押鍵すべき指になると、判断結果はYESになり、ステップSB7に進む。ステップSB7では、ポインタmeで指定される曲データME[me]中の鍵盤座標me.iPosを、当該曲データME[me]中の指座標me.sfigPos[ifig]に登録する。ここで、鍵盤座標me.iPosとは、曲データME[me]のピッチPitch音高に対応した鍵の位置を表す。したがって、このステップSB7では、曲データME[me]の音を押鍵する指の位置として、押鍵すべき鍵の位置を登録する。続いて、図5に図示するステップSB8に進み、ポインタmeで指定される曲データME[me]中の和音フラグme.clsHarmが0より大であるか否かを判断する。和音フラグme.clsHarmは、曲データME[me]の音が和音であるか否かを表すフラグであり、0の場合に非和音を、1の場合に和音であることを表す。したがって、このステップSB8では、曲データME[me]の音が和音であるかどうかを判断する。曲データME[me]の音が非和音であると、判断結果はNOになり、図4に図示するステップSB14に処理を進め、次の曲データME[me.next]を指定するようポインタmeを更新させた後、前述のステップSB2に処理を戻す。一方、曲データME[me]の音が和音ならば、上記ステップSB8の判断結果がYESになり、次のステップSB9に進む。ステップSB9では、ポインタmeで指定される曲データME[me]中のポインタme.pHTopを、ポインタmeeにストアする。ここで、ポインタme.pHTopとは、曲データME[me]の音を含む和音の内、音高が最も低い和音構成音以下、最低音と称すの曲データMEを指定する。次いで、ステップSB10では、ポインタmeeで指定される曲データME[mee]中の運指mee.cfigを、レジスタcfigEにストアする。つまり、レジスタcfigEには、最低音を押鍵する指を表す運指番号が格納される。そして、ステップSB11では、ポインタmeで指定される曲データME[me]中の押鍵フラグiFigOn[1]~[5]の内、レジスタcfigEに格納された運指番号で指定される指の押鍵フラグiFigOn[cfigE]に1をセットする。これにより、最低音に割当てられた指の押鍵が曲データME[me]中に登録される。また、ステップSB11では、ポインタmeeで指定される曲データME[mee]中の鍵盤座標mee.iPosを、ポインタmeで指定される曲データME[me]中の座標me.sfigPos[cfigE]にストアする。これにより、最低音の鍵盤座標が、レジスタcfigEに格納された運指番号で指定される指の座標me.sfigPos[cfigE]として曲データME[me]中に登録される。次いで、ステップSB12では、ポインタmeeと、ポインタmeで指定される曲データME[me]中のポインタme.pHTailとが一致するか否かを判断する。ここで、ポインタme.pHTailとは、曲データME[me]の音を含む和音の内、音高が最も高い和音構成音以下、最高音と称すの曲データMEを指定する。したがって、このステップSB12では、最低音から最高音までの各和音構成音について上記ステップSB11の処理を行ったかどうかを判断する。つまり、最低音から最高音までの各和音構成音にそれぞれ割当てられた各指の押鍵と、それら各指が押鍵する鍵盤座標とを曲データME[me]に登録し終えたか否かを判断する。そして、登録し終えていなければ、判断結果はNOになり、次のステップSB13に進む。ステップSB13では、曲データME[me]の音を含む和音の内、最低音の次に音高が低い和音構成音を指定するようポインタmeを更新させた後、前述のステップSB10に処理を戻す。以後、最高音に達する迄、上述したステップSB10~SB13を繰り返す。こうして、最低音から最高音までの各和音構成音にそれぞれ割当てられた各指の押鍵と、それら各指が押鍵する鍵盤座標とが曲データME[me]に登録されると、上記ステップSB12の判断結果がYESになり、図4に図示するステップSB14に進み、次の曲データME[me.next]を指定するようポインタmeを更新させた後、前述のステップSB2に処理を戻す。以後、上述したステップSB2以降を繰り返し、全ての曲データME[0]~[N]について処理し終えると、ステップSB2の判断結果がYESになり、本処理を完了させる。このように、押鍵する指の座標設定処理では、歩進されるポインタmeで指定される曲データME[me]において、鍵の位置鍵盤座標me.iPosを、押鍵する指の位置指座標me.sfigPos[ifig]として登録する。また、曲データME[me]の音が和音ならば、和音構成音の最低音から最高音にそれぞれ割当てられた各指の押鍵押鍵フラグiFigOn[cfigE]=1と、それら各指が押鍵する鍵盤座標座標me.sfigPos[cfigE]とを登録する。3押鍵しない指の座標設定処理の動作次に、図6を参照して、押鍵しない指の座標設定処理の動作を説明する。上述した演奏支援処理のステップSA3図3参照を介して本処理が実行されると、CPU13は図6に図示するステップSC1に進み、先頭の曲データME[0]を指定するアドレスを、ポインタmeにストアする。次いで、ステップSC2では、歩進されたポインタmeがNULL、つまり全ての曲データMEについて処理し終えたかどうかを判断する。歩進されたポインタmeがNULLではなく、全ての曲データMEについて処理し終えていなければ、判断結果はNOになり、ステップSC3に進む。ステップSC3では、メロディパートを演奏する右手の各指を指定するポインタifigに初期値1をセットする。なお、ポインタifigは1の時に親指、2の時に人差し指、3の時に中指、4の時に薬指、5の時に小指をそれぞれ指定する。したがって、ステップSC3では、先ず親指を指定することになる。次いで、ステップSC4では、ポインタifigが6より小さいか否か、つまり親指から小指までの全ての指について処理し終えたかどうかを判断する。全ての指について処理し終えていなければ、判断結果はNOになり、ステップSC5に進む。ステップSC5では、ポインタmeで指定される曲データME[me]において、ポインタifigで指定される指の押鍵フラグiFigOn[ifig]が0、つまり現在指定されている指は押鍵していないかどうかを判断する。現在指定されている指が押鍵している場合押鍵フラグiFigOn[ifig]=1には、判断結果がNOになり、後述するステップSC10に処理を進める。一方、現在指定されている指が押鍵していなければ、上記ステップSC5の判断結果はYESになり、ステップSC6に進む。ステップSC6では、座標候補取得処理を実行する。後述するように、座標候補取得処理では、上記ステップSC5で抽出された押鍵しない指の座標候補を取得するものであり、押鍵しない指より上側の指番号の指が押鍵する時には、その押鍵する指の指番号と押鍵しない指の指番号との差分に応じて定まる座標補正値を、押鍵する指の位置を表す座標me.sfigPos[ifg]から減算して押鍵しない指の座標候補sfigHを算出する。一方、押鍵しない指より下側の指番号の指が押鍵する時には、その押鍵する指の指番号と押鍵しない指の指番号との差分に応じて定まる座標補正値を、押鍵する指の位置を表す座標me.sfigPos[ifg]に加算して押鍵しない指の座標候補sfigLを算出する。次いで、ステップSC7では、座標取得[1]処理を実行する。後述するように、座標取得[1]処理では、ポインタmeで指定される曲データME[me]の音以前に存在する音において、ポインタifigで指定される押鍵しない指と同じ運指を有する音曲データME[mep]を探し出し、該当する音が存在する場合には、その音を押鍵した指の位置座標sfigPおよび押鍵時刻lTfigPを抽出する。続いて、ステップSC8では、座標取得[2]処理を実行する。後述するように、座標取得[2]処理では、座標取得[2]処理では、ポインタmeで指定される曲データME[me]の音以降に存在する音において、ポインタifigで指定される押鍵しない指と同じ運指を有する音曲データME[men]を探し出し、該当する音が存在する場合には、その音を押鍵する指の位置座標sfigNおよび押鍵時刻lTfigNを抽出する。そして、ステップSC9では、座標決定処理を実行する。後述するように、座標決定処理では、ステップSC6の座標候補取得処理で得られる押鍵しない指の座標候補sfigH、sfigLと、ステップSC7の座標取得[1]処理で得られる指の位置座標sfigP、押鍵時刻lTfigPと、ステップSC8の座標取得[2]処理で得られる指の位置座標sfigN、押鍵時刻lTfigNとを勘案して、ポインタmeで指定される曲データME[me]において、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]を登録する。次いで、ステップSC10では、ポインタifigで指定されている指の座標位置me.sfigPos[ifig]が最大指座標sfMaxより大きければ、それを新たに最大指座標sfMaxとして更新したり、ポインタifigで指定されている指の座標位置me.sfigPos[ifig]が最小指座標sfMinより小さければ、それを新たに最小指座標sfMinとして更新したりする。そして、ステップSC11では、ポインタifigを歩進させて次の指を指定した後、上述のステップSC4に処理を戻す。以後、歩進されたポインタifigが6に達するまで、つまり親指から小指までの全ての指について処理し終えるまで上述したステップSC4~SC11を繰り返し、ポインタmeで指定される曲データME[me]において、押鍵しない指の座標位置me.sfigPos[ifig]を登録すると共に、親指から小指までの全ての指が取り得る最大指座標sfMaxおよび最小指座標sfMinを検出する。そして、親指から小指までの全ての指について処理し終えると、上述したステップSC4の判断結果がYESになり、ステップSC12に進む。ステップSC12では、上記ステップSC10にて更新され、親指から小指までの全ての指で取り得る最大指座標sfMaxおよび最小指座標sfMinの平均値sfMaxsfMin/2を、ポインタmeで指定される曲データME[me]中の手の位置座標sHandPosとして登録する。続いて、ステップSC13に進み、次の曲データME[me.next]を指定するようポインタmeを更新させた後、前述のステップSC2に処理を戻す。そして、全ての曲データMEについて上述した処理をし終えると、ステップSC2の判断結果がYESになり、本処理を終える。このように、押鍵しない指の座標設定処理では、歩進されるポインタmeで指定される曲データME[me]において、押鍵しない指の座標位置me.sfigPos[ifig]を登録すると共に、親指から小指までの全ての指が取り得る最大指座標sfMaxおよび最小指座標sfMinの平均値sfMaxsfMin/2を、手の位置座標sHandPosとして登録する。4座標候補取得処理の動作次に、図7を参照して座標候補取得処理の動作を説明する。上述したステップSC6図6参照を介して本処理が実行されると、CPU13は図7に図示するステップSD1に進み、ポインタifigの指番号をインクリメントしてレジスタifgにストアする。レジスタifgの値を検索ポインタifgと記す。続いて、ステップSD2では、検索ポインタifgが6より小さいか否かを判断する。検索ポインタifgが6より小さければ、判断結果はYESになり、ステップSD3に進む。ステップSD3では、ポインタmeで指定される曲データME[me]において、検索ポインタifgで指定される指の押鍵フラグiFigOn[ifig]が1、つまり検索ポインタifgで指定されている指が押鍵しているかどうかを判断する。検索ポインタifgで指定されている指が押鍵していなければ、判断結果はNOになり、ステップSD4に進み、検索ポインタifgを歩進させた後、上述のステップSD2に処理を戻す。このように、ステップSD1~SD4では、例えば上述した押鍵しない指の座標設定処理において、ポインタifigで指定される押鍵しない指が中指指番号:3であったとすると、歩進される検索ポインタifgに応じて指定される薬指指番号:4および小指指番号:5の内から押鍵する指を検索する。押鍵する指が存在しなければ、上記ステップSD2の判断結果がNOになり、後述のステップSD6に処理を進める。これに対し、押鍵する指が見つかると、上記ステップSD3の判断結果がYESになり、ステップSD5に進む。ステップSD5では、上述の押鍵しない指の座標設定処理で処理対象とされている曲データME[me]において、検索ポインタifgで指定され、押鍵する指の位置を表す座標me.sfigPos[ifg]から座標補正値2×ifg-ifigを減算して、ポインタifigで指定される押鍵しない指の座標候補sfigHを算出する。なお、座標補正値2×ifg-ifigは、押鍵する指の指番号ifgと押鍵しない指の指番号ifigとの差を白鍵の数に換算した値である。また、鍵盤座標では、白鍵1つ分が2に相当する。例えばポインタifigで指定される押鍵しない指が中指指番号:3であって、検索ポインタifgで指定される押鍵する指が小指指番号:5の場合には、座標補正値は2×5-3=4となる。したがって、押鍵する指の位置を表す座標me.sfigPos[ifg]から座標補正値4を減算した座標値、つまり押鍵する指の位置を表す座標me.sfigPos[ifg]から白鍵2個分低い座標が、ポインタifigで指定される押鍵しない指の座標候補sfigHとなる。次に、ステップSD6では、検索ポインタifgをデクリメントする。続いて、ステップSD7では、デクリメントした検索ポインタifgの値が0以上であるか否かを判断する。検索ポインタifgが0以上であれば、判断結果はYESになり、ステップSD8に進む。ステップSD8では、ポインタmeで指定される曲データME[me]において、検索ポインタifgで指定される指の押鍵フラグiFigOn[ifig]が1、つまり検索ポインタifgで指定されている指が押鍵しているかどうかを判断する。検索ポインタifgで指定されている指が押鍵していなければ、判断結果はNOになり、ステップSD9に進み、検索ポインタifgをデクリメントさせた後、上述のステップSD7に処理を戻す。このように、ステップSD6~SD9では、例えば上述した押鍵しない指の座標設定処理において、ポインタifigで指定される押鍵しない指が中指指番号:3であったとすると、デクリメントされる検索ポインタifgに応じて指定される人差し指指番号:2および親指指番号:1の内から押鍵する指を検索する。押鍵する指が存在しなければ、上記ステップSD7の判断結果がNOになり、本処理を完了させる。一方、押鍵する指が見つかると、上記ステップSD8の判断結果がYESになり、ステップSD10に進む。ステップSD10では、上述の押鍵しない指の座標設定処理で処理対象とされている曲データME[me]において、検索ポインタifgで指定され、押鍵する指の位置を表す座標me.sfigPos[ifg]から座標補正値2×ifg-ifigを減算して、ポインタifigで指定される押鍵しない指の座標候補sfigLを算出して本処理を終える。例えばポインタifigで指定される押鍵しない指が中指指番号:3であって、検索ポインタifgで指定される押鍵する指が親指指番号:1の場合には、座標補正値は2×1-3=-4となる。したがって、押鍵する指の位置を表す座標me.sfigPos[ifg]に座標補正値4を加算した座標値、つまり押鍵する指の位置を表す座標me.sfigPos[ifg]から白鍵2個分高い座標が、ポインタifigで指定される押鍵しない指の座標候補sfigLとなる。このように、座標候補取得処理では、押鍵しない指の座標設定処理で処理対象とされている曲データME[me]において、ポインタifigで指定される押鍵しない指の座標候補を取得するものであり、押鍵しない指より上側の指番号の指が押鍵する時には、その押鍵する指の指番号と押鍵しない指の指番号との差分に応じて定まる座標補正値を、押鍵する指の位置を表す座標me.sfigPos[ifg]から減算して押鍵しない指の座標候補sfigHを算出し、一方、押鍵しない指より下側の指番号の指が押鍵する時には、その押鍵する指の指番号と押鍵しない指の指番号との差分に応じて定まる座標補正値を、押鍵する指の位置を表す座標me.sfigPos[ifg]に加算して押鍵しない指の座標候補sfigLを算出する。5座標取得[1]処理の動作次に、図8を参照して座標取得[1]処理の動作を説明する。上述の押鍵しない指の座標設定処理のステップSC7図6参照を介して本処理が実行されると、CPU13は図8に図示するステップSE1に進み、ポインタmeで指定される曲データME[me]中のポインタme.pPHTailを、ポインタmepにセットする。ポインタme.pPHTailとは、ポインタmeで指定される曲データME[me]の音の前の音列群の和音の終端一番上の音へのポインタであり、音列群が単音であればその音自身を指すポインタである。つまり、ME[me]の直前の音を指し示すポインタである。続いて、ステップSE2では、ポインタmeで指定される曲データME[me]中の発音開始時間me.lTimsecからポインタmepで指定される曲データME[mep]中の発音開始時間mep.lTimsecを減算した時間差が所定値ForcastTimeより小さいか否かを判断する。つまり、曲データME[me]の直前の音が、現在時刻発音開始時間me.lTimsecより所定値ForcastTime遡った範囲内に存在するかどうかを判断する。そして、曲データME[me]の直前の音が、現在時刻発音開始時間me.lTimsecより所定値ForcastTime遡った範囲内に存在するならば、上記ステップSE2の判断結果はYESになり、ステップSE3に進む。ステップSE3では、ポインタmepで指定される曲データME[mep]中の運指mep.cfigと、ポインタifigで指定される押鍵しない指とが一致するか否かを判断する。一致しなければ、判断結果はNOになり、ステップSE4に進む。ステップSE4では、さらに一つ前の音を指定するようポインタmepを更新させた後、上述のステップSE2に処理を戻す。以後、ステップSE2~SE4を繰り返して現在時刻発音開始時間me.lTimsecより所定値ForcastTime遡った範囲内に、ポインタifigで指定される押鍵しない指と同じ運指を有し、曲データME[me]の音より前に存在する音を探し出す。そして、該当する音が見つからなければ、上記ステップSE2の判断結果がNOになり、本処理を終えるが、該当する音が見つかると、上記ステップSE3の判断結果がYESになり、ステップSE5に進む。ステップSE5では、ポインタmepで指定される曲データME[mep]該当する音においてポインタifigで指定される指の座標mep.sfigPos[ifig]をレジスタsfigPにストアすると共に、曲データME[mep]の発音開始時間mep.lTimsecをレジスタlTfigPにストアする。このように、座標取得[1]処理では、曲データME[me]の音以前に存在する音において、ポインタifigで指定される押鍵しない指と同じ運指を有する音曲データME[mep]を探し出し、該当する音が存在する場合には、その音を押鍵した指の位置座標sfigPおよび押鍵時刻lTfigPを抽出する。6座標取得[2]処理の動作次に、図9を参照して座標取得[2]処理の動作を説明する。上述の押鍵しない指の座標設定処理のステップSC8図6参照を介して本処理が実行されると、CPU13は図9に図示するステップSF1に進み、ポインタmeで指定される曲データME[me]中のポインタme.pNHTopを、ポインタmenにセットする。ポインタme.pNHTopとは、ポインタmeで指定される曲データME[me]の音の後の音列群の和音の先頭一番下の音へのポインタであり、音列群が単音であればその音自身を指すポインタである。つまり、ME[me]の直後の音を指し示すポインタである。続いて、ステップSF2では、ポインタmeで指定される曲データME[me]中の発音開始時間me.lTimsecからポインタmenで指定される曲データME[men]中の発音開始時間mep.lTimsecを減算した時間差が所定値ForcastTimeより小さいか否かを判断する。つまり、曲データME[me]の直後の音が、現在時刻発音開始時間me.lTimsecより所定値ForcastTime経過した範囲内に存在するかどうかを判断する。そして、曲データME[me]の直後の音が、現在時刻発音開始時間me.lTimsecより所定値ForcastTime経過した範囲内に存在するならば、上記ステップSF2の判断結果はYESになり、ステップSF3に進む。ステップSF3では、ポインタmenで指定される曲データME[men]中の運指men.cfigと、ポインタifigで指定される押鍵しない指とが一致するか否かを判断する。一致しなければ、判断結果はNOになり、ステップSF4に進む。ステップSF4では、さらに一つ後の音を指定するようポインタmenを更新させた後、上述のステップSF2に処理を戻す。以後、ステップSF2~SF4を繰り返して現在時刻発音開始時間me.lTimsecより所定値ForcastTime経過した範囲内に、ポインタifigで指定される押鍵しない指と同じ運指を有し、曲データME[me]の音以降に存在する音を探し出す。そして、該当する音が見つからなければ、上記ステップSF2の判断結果がNOになり、本処理を終えるが、該当する音が見つかると、上記ステップSF3の判断結果がYESになり、ステップSF5に進む。ステップSF5では、ポインタmenで指定される曲データME[men]該当する音においてポインタifigで指定される指の座標men.sfigPos[ifig]をレジスタsfigNにストアすると共に、曲データME[men]の発音開始時間men.lTimsecをレジスタlTfigNにストアする。このように、座標取得[2]処理では、曲データME[me]の音以降に存在する音において、ポインタifigで指定される押鍵しない指と同じ運指を有する音曲データME[men]を探し出し、該当する音が存在する場合には、その音を押鍵する指の位置座標sfigNおよび押鍵時刻lTfigNを抽出する。7座標決定処理の動作次に、図10を参照して座標決定処理の動作を説明する。上述の押鍵しない指の座標設定処理のステップSC9図6参照を介して本処理が実行されると、CPU13は図10に図示するステップSG1に進む。ステップSG1では、座標取得[1]処理で得られる指の位置座標sfigPと、座標取得[2]処理で得られる指の位置座標sfigNとの双方が存在するか否かを判断する。以下、指の位置座標sfigP,sfigNの双方が存在する場合、指の位置座標sfigPのみ存在する場合、指の位置座標sfigNのみ存在する場合、指の位置座標sfigP,sfigNいずれも存在しない場合に分けて動作説明を進める。a.指の位置座標sfigP,sfigNの双方が存在する場合この場合、ステップSG1の判断結果がYESになり、ステップSG2に進む。ステップSG2では、次式1に従い、上述した座標取得[1]処理で得られた指の位置座標sfigPおよび押鍵時刻lTfigPと、座標取得[2]処理で得られた指の位置座標sfigNおよび押鍵時刻lTfigNとに基づき内挿補間を行って、現在時刻発音開始時間me.lTimsecにおける押鍵しない指の位置座標sfigDを算出する。sfigD=sfigPlTfigN-me.lTimsecsfigNlTfigP-me.lTimsec/lTfigN-lTfigP...1なお、座標取得[1]処理で得られる指の位置座標sfigPは、曲データME[me]の音を押鍵しない指であって、その指が曲データME[me]の音以前の音を押鍵したときの指の位置を表し、押鍵時刻lTfigPはその時刻を表す。また、座標取得[2]処理で得られる指の位置座標sfigNは、曲データME[me]の音を押鍵しない指であって、その指が曲データME[me]の音以降の音を押鍵するときの指の位置を表し、押鍵時刻lTfigNはその時刻を表す。次いで、ステップSG3では、下記イ~ホの操作を行って、ポインタmeで指定される曲データME[me]において、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]を登録する。すなわち、イ上述した座標候補取得処理で求めた指の座標候補sfigH,sfigLの内、大きい方の座標候補MaxsfigH,sfigLを選択する。ロ上記イで選択したMaxsfigH,sfigLと、上記ステップSG2の内挿補間により算出した押鍵しない指の位置座標sfigDとを比較して大きい値の位置座標を選択する。ハ上述した座標候補取得処理で求めた指の座標候補sfigH,sfigLの内、小さい方の座標候補minsfigH,sfigLを選択する。ニ上記ハで選択したminsfigH,sfigLと、上記ステップSG2の内挿補間にて算出した押鍵しない指の位置座標sfigDとを比較して小さい値の位置座標を選択する。ホ上記ロで選択した位置座標と、上記ニで選択した位置座標との平均値を算出し、これをポインタmeで指定される曲データME[me]において、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]に登録して本処理を終える。b.指の位置座標sfigPのみ存在する場合この場合、上述したステップSG1の判断結果がNOとなり、ステップSG4に進む。ステップSG4では、指の位置座標sfigPのみ存在するか否かを判断する。そして、ステップSG4の判断結果はYESになり、ステップSG5に進む。ステップSG5では、指の位置座標sfigPを、押鍵しない指の位置座標sfigDに設定する。この後、上述したステップSG3に進み、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]を登録して本処理を終える。c.指の位置座標sfigNのみ存在する場合この場合、上述したステップSG1、SG4の各判断結果がいずれもNOとなり、ステップSG6に進む。ステップSG6では、指の位置座標sfigNのみ存在するか否かを判断する。そして、ステップSG6の判断結果はYESになり、ステップSG7に進む。ステップSG7では、指の位置座標sfigNを、押鍵しない指の位置座標sfigDに設定する。この後、上述したステップSG3に進み、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]を登録して本処理を終える。d.指の位置座標sfigP,sfigNいずれも存在しない場合この場合、上述したステップSG1、SG4、SG6の各判断結果がいずれもNOとなり、ステップSG8に進む。ステップSG8では、上述した座標候補取得処理で求めた指の座標候補sfigH,sfigLの平均値sfigHsfigL/2を、ポインタmeで指定される曲データME[me]において、ポインタifigで指定される押鍵しない指の座標位置me.sfigPos[ifig]を設定して本処理を終える。以上説明したように、本実施の形態では、曲を構成する各音を表すと共に、それら各音を弾くべき指を指定する曲データME[0]~[N]毎に、押鍵する指の位置座標me.sfigPos[ifig]、押鍵しない指の座標位置me.sfigPos[ifig]および手の位置座標sHandPosを生成して登録し、これらに基づき各音を演奏する際の手および各指の位置変化をグラフ化して表示部12に画面表示するので、押鍵しない指をどの位置に置いておけばよいのかを教示し得るようになる。したがって、例えば図11に図示する楽譜の曲データME[0]~[N]の場合、演奏する際の手および各指の位置は図12に図示するグラフとして表現される。なお、図11に図示した楽譜において各音符上に付与される数字は運指を表す指番号である。また、図12に図示したグラフにおいて、横軸は演奏開始時点を起点とした演奏時刻を、縦軸は鍵盤座標を表す。"