(57)【要約】【課題】鍵盤楽器における運指ガイド等の演奏動作のガイドを行う技術に関し、演奏情報に付加されている運指情報から演奏動作上のテクニックに関する動作情報を自動的に抽出可能とし、それにより運指とともに演奏動作上のテクニックも演奏ガイド可能とする。【解決手段】操作状態推定手段１０２は、演奏情報読み出し手段１０１によって記憶部１０４から読み出された演奏情報１０５夫々に基づいて、その演奏情報１０５における演奏者の演奏操作状態を推定する。演奏操作ガイド手段１０３は、操作状態推定手段１０２により推定された第１の演奏操作状態１０６と、第１の演奏操作状態１０６より後に推定された第２の演奏操作状態１０７とに基づいて、演奏者の演奏操作に関するガイドを行う。【選択図】図１
2015069170.tif 000002
【特許請求の範囲】
【請求項１】
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出し手段と、
前記演奏情報読み出し手段によって読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、
前記操作状態推定手段により推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、
を備えることを特徴とする演奏操作ガイド装置。
【請求項２】
前記演奏情報は、複数のパートに分割され、
前記操作状態推定手段は、前記パート毎に前記演奏操作状態を推定し、
前記演奏操作ガイド手段は、前記パート毎に前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする請求項１に記載の演奏操作ガイド装置。
【請求項３】
前記演奏ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段は、前記演奏者の第１及び第２の演奏操作状態として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行い、
前記演奏操作ガイド手段は、当該推定された演奏者の手の位置に応じて前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする請求項１または２のいずれかに記載の演奏操作ガイド装置。
【請求項４】
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第１及び第２の演奏操作状態として、親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で前記親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指が演奏を行うべき指としてガイドするとともに、前記親指以外の指を演奏の準備を行うべき指としてガイドし、
前記親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で押鍵中に前記親指で前記親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指以外の指を演奏を行うべき指としてガイドするとともに、前記親指を演奏の準備を行うべき指としてガイドする、
ことを特徴とする請求項１から３のいずれかに記載の演奏操作ガイド装置。
【請求項５】
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第１及び第２の演奏操作状態として、鍵盤の所定の鍵が押鍵されている状態及び当該押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定した場合に、前記演奏操作ガイド手段は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドする、
ことを特徴とする請求項１から４のいずれかに記載の楽器演奏のための演奏操作ガイド装置。
【請求項６】
演奏操作ガイド装置に用いられる演奏操作ガイド方法であって、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出し、
前記読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定し、
前記推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う、
ことを特徴とする演奏操作ガイド方法。
【請求項７】
演奏操作ガイド装置として用いられるコンピュータに、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出しステップと、
前記読み出された前記演奏情報夫々に基づいて、当該各演奏情報における演奏者の演奏操作状態を推定する操作状態推定ステップと、
前記推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイドステップと、
を実行させる演奏操作ガイドプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵盤楽器における運指ガイド等の演奏動作のガイドを行う技術に関する。
【背景技術】
【０００２】
例えば鍵盤楽器における演奏動作を視覚的にガイドするために、従来、鍵盤楽器の画像上で演奏における指の運指をガイドする技術が知られている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３５２１８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、例えば鍵盤楽器を演奏する場合には、さまざまな演奏動作上のテクニック(指越え・くぐり、手を移動させる、手を広げる・狭めるなど)が存在する。従って、運指を習得するだけでなく、これらの演奏動作上のテクニックを習得することも望まれる。また、鍵盤楽器等の演奏に際しては、現在だけでなく、次以降の音形によって、どのように指や手の位置を準備させるかといった準備動作も重要なテクニックの一つであった。
【０００５】
しかし、従来の運指ガイド技術は、単にあるタイミングで押鍵すべき鍵盤の位置とその鍵盤を押鍵する指を指示するだけであり、演奏動作上のテクニックを習得することは困難であるという問題点を有していた。
【０００６】
本発明は、演奏情報に付加されている運指情報から演奏動作上のテクニックに関する動作情報を自動的に抽出可能とし、それにより運指とともに演奏動作上のテクニックも演奏ガイド可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
態様の一例では、曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出し手段と、演奏情報読み出し手段によって読み出された演奏情報夫々に基づいて、その演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、操作状態推定手段により推定された第１の演奏操作状態と、その第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、を備える。
【発明の効果】
【０００８】
本発明によれば、演奏情報に付加されている運指情報から演奏動作上のテクニックに関する動作情報を自動的に抽出することが可能となり、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明による演奏操作ガイド装置の実施形態を示すブロック図である。
【図２】演奏操作ガイド装置の実施形態を組み込んだ演奏ガイド装置のハードウェア構成の一例を示す図である。
【図３】演奏情報のデータ構成例を示す図である。
【図４】動作データのデータ構成例を示す図である。
【図５】準備指示データのデータ構成例を示す図である。
【図６】本実施形態の全体動作処理の例を示すフローチャートである。
【図７】動作情報生成の処理の例を示すフローチャート（その１）である。
【図８】次鍵の検索の処理の例を示すフローチャートである。
【図９】Ｎｅｘｔバッファ更新の処理の例を示すフローチャートである。
【図１０】離鍵確認の処理の例を示すフローチャートである。
【図１１】押鍵検索の処理の例を示すフローチャートである。
【図１２】準備確認の処理の例を示すフローチャート（その１）である。
【図１３】準備確認の処理の例を示すフローチャート（その２）である。
【図１４】準備確認の処理の例を示すフローチャート（その３）である。
【図１５】準備確認の処理の例を示すフローチャート（その４）である。
【図１６】鍵盤距離の取得の処理の例を示すフローチャートである。
【図１７】動作データ出力の処理の例を示すフローチャート（その１）である。
【図１８】動作データ出力の処理の例を示すフローチャート（その２）である。
【図１９】奥行き位置計算の処理の例を示すフローチャートである。
【図２０】次回開始時刻の計算の処理の例を示すフローチャートである。
【図２１】演奏情報の記憶例を示す図である。
【図２２】準備動作を考慮しないときの動作データの出力例を示す図である。
【図２３】準備動作を考慮したときの動作データの出力例を示す図である。
【図２４】演奏ガイドの表示例を示す図（その１）である。
【図２５】動作情報生成の処理の例を示すフローチャート（その２）である。
【図２６】準備指示データ出力の処理の例を示すフローチャートである。
【図２７】準備指示データの出力例を示す図である。
【図２８】演奏ガイドの表示例を示す図（その２）である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１は、本発明による演奏操作ガイド装置１００の実施形態を示すブロック図である。この演奏操作ガイド装置１００は、演奏情報読み出し手段１０１、操作状態推定手段１０２、演奏動作ガイド手段１０３を備える。また、内部または外部に、記憶部１０４が具備される。
【００１１】
演奏情報読み出し手段１０１は、曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報１０５を記憶部１０４から読み出す。
【００１２】
操作状態推定手段１０２は、演奏情報読み出し手段１０１によって読み出された演奏情報１０５夫々に基づいて、その演奏情報１０５における演奏者の演奏操作状態を推定する。
【００１３】
演奏操作ガイド手段１０３は、操作状態推定手段１０２により推定された第１の演奏操作状態１０６と、第１の演奏操作状態１０６より後に推定された第２の演奏操作状態１０７とに基づいて、演奏者の演奏操作に関するガイドを行う。
【００１４】
上述の構成において、演奏操作ガイド装置１００は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。このとき、操作状態推定手段１０２は、演奏者の第１及び第２の演奏操作状態１０６，１０７として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行う。また、演奏操作ガイド手段１０３は、その推定された演奏者の手の位置に応じて演奏者の演奏操作に関するガイドを行う。
【００１５】
ここまでの構成において、演奏操作ガイド装置１００は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。
【００１６】
このとき、操作状態推定手段１０２は、演奏者の第１及び第２の演奏操作状態１０６，１０７として、親指で鍵盤を押鍵中の状態及びこの状態から親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定してよい。この場合に、演奏操作ガイド手段１０３は、親指が演奏を行うべき指としてガイドするとともに、親指以外の指を演奏の準備を行うべき指としてガイドしてよい。
【００１７】
また、操作状態推定手段１０２が、演奏者の第１及び第２の演奏操作状態１０６，１０７として、親指で鍵盤を押鍵中の状態及びこの状態から親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定してよい。この場合に、１０３演奏操作ガイド手段は、親指以外の指を演奏を行うべき指としてガイドするとともに、親指を演奏の準備を行うべき指としてガイドしてよい。
【００１８】
ここまでの構成において、演奏操作ガイド装置１００は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。
【００１９】
この場合、操作状態推定手段１０２は、演奏者の第１及び第２の演奏操作状態１０６，１０７として、鍵盤の所定の鍵が押鍵されている状態及びその押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定してよい。この場合に、演奏操作ガイド手段１０３は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドしてよい。
【００２０】
以上の実施形態の構成により、操作状態推定手段１０２が、演奏情報読み出し手段１０１によって読み出された演奏情報１０５夫々に基づいて、演奏情報１０５における演奏者の演奏操作状態を、第１および第２の演奏操作状態１０６，１０７として推定することができる。これらの第１および第２の演奏操作状態１０６，１０７を用いて、演奏操作ガイド手段１０３が演奏ガイドを行うことにより、各動作タイミングにおいて、演奏を行うべき指の運指ガイドだけでなく、それ以降の演奏の準備を行うべき指のガイドも行うことができる。演奏の準備の動作としては、他の指による親指超えや、親指による指くぐり、広範囲での指の移動などの動作を含むことができ、これにより演奏動作のテクニックに関するガイドを行うことが可能となる。
【００２１】
図２は、図１の機能構成を有する演奏操作ガイド装置１００の実施形態のハードウェア構成の一例を示す図である。この装置１００は、ＣＰＵ（中央演算処理装置）２０１、ＲＯＭ（リードオンリーメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、入力部２０４、表示部２０５、およびＭＩＤＩインタフェース部（以下「ＭＩＤＩ  Ｉ／Ｆ」と表記する）２０６が、バス２０７によって相互に接続された構成を備える。ＭＩＤＩ  Ｉ／Ｆ２０６は、外部（内蔵でもよい）の電子楽器２０８（図１の楽器１０４に対応）に接続される。
【００２２】
ＣＰＵ２０１は、ＲＯＭ２０２に記憶された制御プログラムに従って、当該演奏操作ガイド装置１００の全体の制御を行う。
【００２３】
ＲＯＭ２０２は、後述する各フローチャートで示される制御動作を実行する制御プログラムを記憶する。また、ＲＯＭ２０２は、複数の楽曲の図１に示される演奏情報１０５などを記憶する。
【００２４】
ＲＡＭ２０３は、制御プログラムの実行に必要な、後述する図３、図４、図５に示される、演奏情報、動作データ、準備指示データなどの各種情報を、一時的に記憶する。
【００２５】
入力部２０４は、ユーザによるキーボード、マウス、各種スイッチ等による入力操作を検出し、その検出結果をＣＰＵ２０１に通知する。
【００２６】
表示部２０５は、ＣＰＵ２０１の制御によって送られてくるデータを液晶ディスプレイなどに出力する。例えば、表示部２０５は、後述する図２４または図２８のような表示形式で、演奏動作ガイドを表示する。
【００２７】
ＭＩＤＩ  Ｉ／Ｆ２０６は、ＣＰＵ２０１が、ＲＯＭ２０２またはＲＡＭ２０３上の演奏情報を、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）のデータフォーマットで、電子楽器２０８に順次転送することにより、演奏動作ガイドを行う楽曲を自動演奏させることができる。
【００２８】
本実施形態による演奏動作ガイド装置１００の動作は、後述する各フローチャート等で実現される図１の各部の機能処理を搭載した制御プログラムを、ＣＰＵ２０１がＲＯＭ２０２から読み出して順次実行することで実現される。そのプログラムは、特には図示しない可搬型記録媒体を介して提供されてもよく、或いは特には図示しないネットワーク接続装置によりネットワークから取得できるようにしてもよい。
【００２９】
以下、図１の機能構成と図２のハードウェア構成を有する本実施形態による演奏動作ガイド装置１００の動作について、以下に詳細に説明する。
【００３０】
図３は、演奏動作ガイドを行う曲の演奏情報Ｎｏｔｅ［０］、Ｎｏｔｅ［１］、・・・、Ｎｏｔｅ［Ｎ−１］のデータ構成例を示す図であり、図１の演奏情報１０４に対応する。演奏情報は、図２において、ＣＰＵ２０１が電子楽器２０８に対して自動演奏をさせるにあたって必要な、インデックス番号（０、１、・・・、Ｎ−１）（Ｎは１曲分の演奏情報の数）、発音を開始する発音開始時刻Ｔｉｍｅと発音継続時間Ｇａｔｅ（図１の「発音タイミングに関する情報」に対応）、音高Ｐｉｔｃｈ（図１の「音高に関する情報」に対応）、右手または左手を示すトラック番号Ｈａｎｄ（図１の「パートに関する情報」に対応）、および指番号Ｆｉｎｇｅｒ（図１の「演奏する指に関する情報」に対応）の各情報を記憶する。演奏情報Ｎｏｔｅ［０］、Ｎｏｔｅ［１］、・・・、Ｎｏｔｅ［Ｎ−１］は、図２において、ＣＰＵ２０１によってＲＯＭ２０２からＲＡＭ２０３に転送された後に、順次読み出されて処理されるが、発音開始時刻Ｔｉｍｅの順に並ぶように、インデックス番号（０、１、・・・、Ｎ−１）が付与されている。
【００３１】
図４は、図２のＣＰＵ２０１による後述する制御処理によってＲＡＭ２０３上に生成される動作データｆｒａｍｅ［０］、ｆｒａｍｅ［１］、・・・、ｆｒａｍｅ［ＦｒａｍｅＣｏｕｎｔ−１］のデータ構成例を示す図であり、図１の動作情報１０５に対応する。ＦｒａｍｅＣｏｕｎｔは、ＲＡＭ２０３上に生成される動作データの総数を示す。動作データは、図２において、ＣＰＵ２０１が表示部２０５に演奏動作ガイドを表示させるにあたって必要な、右手（値「１」）または左手（値「０」）を示すトラック番号「Ｈａｎｄ」、５本の各指の演奏位置「ｐｏｓｉｔｉｏｎ［０］〜ｐｏｓｉｔｉｏｎ［４］」(指を置くべき鍵盤番号)（図１の「各指の演奏位置に関する情報」に対応）、そこへ動くにあたっての動作を開始・終了する時刻である動作開始時間「ｓｔａｒｔ」と動作終了時間「ｔｅｒｍ」（図１の「動作タイミングに関する情報」に対応）、各指の状態「ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］」（それぞれ、値「−１」が準備動作、値「１」が押鍵、値「０」は特に指定無し）（図１の「各指の演奏のガイド／演奏準備のガイドを指示する情報」に対応）、奥行き方向の位置「Ｚｐｏｓ」（図１の「奥行き方向の位置に関する情報」に対応）などの情報を記憶する。
【００３２】
図５は、図２のＣＰＵ２０１による後述する制御処理によってＲＡＭ２０３上に生成される準備指示データＰｒｅＭｏｔｉｏｎ［０］、ＰｒｅＭｏｔｉｏｎ［１］、・・・、ＰｒｅＭｏｔｉｏｎ［ＰｒｅＭｏｔｉｏｎＣｏｕｎｔ−１］のデータ構成例を示す図であり、図１の準備指示情報１０７に対応する。ＰｒｅＭｏｔｉｏｎＣｏｕｎｔは、ＲＡＭ２０３上に生成される準備指示データの総数を示す。準備指示データは、図２において、ＣＰＵ２０１が表示部２０５に演奏動作ガイドを表示する際に、ユーザに対し演奏動作（指づかい）上の注意を喚起させるような表示をするためのデータである。準備指示データは、トラック番号(右手・左手)、準備(意識)を開始・終了する時刻である準備開始時刻と準備終了時刻、準備(意識)のタイプである準備タイプ（１がＰａｓｓｉｎｇ、２がＭｏｖｉｎｇ）、各指に対応する演奏情報のインデックス番号（図３参照）などの情報（図１の「準備指示情報１０７」に対応）を記憶する。
【００３３】
以下、本実施形態における演奏準備動作情報生成処理について、フローチャートを用いて説明する。以下の説明において、図１の各機能部分と図２の各ハードウェア部分を随時参照するものとする。また、図３で説明した演奏情報Ｎｏｔｅ［０］〜Ｎｏｔｅ［Ｎ−１］、図４で説明した動作データｆｒａｍｅ［０］〜ｆｒａｍｅ［ＦｒａｍｅＣｏｕｎｔ］、および図５で説明した準備指示データＰｒｅｐＭｏｔｉｏｎ［０］〜ＰｒｅｐＭｏｔｉｏｎ［ＰｒｅｐＭｏｔｉｏｎＣｏｕｎｔ］は、ＲＡＭ２０３に記憶されるものとする。さらに、以下の説明で用いる各変数も、ＲＡＭ２０３に記憶されるものとする。また、以下の説明では、ある変数の名称が、その変数が記憶している値を指す場合がある。
【００３４】
図６は、本実施形態における演奏準備動作情報生成処理を示すメインフローチャートである。この処理は、図２において、ＣＰＵ２０１が、ＲＯＭ２０２に記憶された演奏準備動作情報生成処理プログラムを実行する動作として実現される。
【００３５】
本実施形態では、ユーザが入力部２０４から楽曲を選択することにより、ＣＰＵ２０１が、その楽曲１曲分の演奏情報Ｎｏｔｅ［ｉ］（０≦ｉ≦Ｎ−１）（図３参照）をＲＯＭ２０２からＲＡＭ２０３に読み出し、その読み出した各演奏情報Ｎｏｔｅ［ｉ］に対して順次、動作情報生成処理を一括して生成する。
【００３６】
処理が起動すると、ＣＰＵ２０１は、ＲＡＭ２０３上の演奏情報や各種変数を初期化し（ステップＳ６０１）、ＲＡＭ２０３から図３に例示される構成の演奏情報を読み込み（ステップＳ６０２）、ＲＡＭ２０３上に図４に例示されるデータフォーマットで動作データと準備指示データを生成し（ステップＳ６０３）、プログラムを終了する。
【００３７】
図７は、図６のステップＳ６０３の動作情報生成処理の例を示すフローチャートである。
【００３８】
ＣＰＵ２０１はまず、パート検索用変数ｉＨに値１を設定する（ステップＳ７０１）。パート検索用変数ｉＨは、右手または左手のうちどちらを処理するかを示す情報であり、その値が１なら右手、２なら左手を示す。その後、ＣＰＵ２０１は、ステップＳ７１２でパート検索用変数ｉＨの値を＋１しながら、ステップＳ７０２で変数ｉＨの値が２を超えたと判定するまで、変数ｉＨが示す右手および左手の各パート毎に、以下のステップＳ７０３からＳ７１１の一連の処理を実行して、動作データ（図４参照）および準備指示データ（図５参照）を一括して生成する。
【００３９】
まず、ＣＰＵ２０１は、各変数を初期化する（ステップＳ７０３）。まず、演奏情報検索用変数ｉＮには、０が設定される。演奏情報検索用変数ｉＮの値は、図３に例示した演奏情報Ｎｏｔｅ［０］〜Ｎｏｔｅ［Ｎ−１］の各インデックス番号０〜Ｎ（０≦ｉ≦Ｎ−１、Ｎは演奏情報の最大数）を示す。動作開始時刻変数ｓｔａｒｔには、時刻０が設定される。この変数は、ステップＳ７１０の動作データ出力の処理で使用される。現在のパート検索用変数ｉＨの値に対して各指において押鍵中とされるべき演奏情報へのポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］（親指から小指に対応）には、未定義値ＮＵＬＬが設定される。以降、この変数を、「押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］」と呼ぶ。また、現在のパート検索用変数ｉＨの値に対してガイド対象（押鍵または準備動作）とされる演奏情報を出力して動作データ（図４参照）を生成するための各指のガイド対象の演奏情報へのポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］（親指から小指に対応）にも、未定義値ＮＵＬＬが設定される。以降、この変数を「出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］」と呼ぶ。さらに、図４の動作データの総数を示す変数ＦｒａｍｅＣｏｕｎｔの値が「０」に初期設定される。この変数は、図７のステップＳ７１０の動作データ出力の処理で操作される。
【００４０】
次に、ＣＰＵ２０１は、次鍵の検索の処理を実行する（ステップＳ７０４）。この処理は、各指の次に押鍵する演奏情報へのポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］（親指から小指に対応）の各値を算出する処理である。以降、この変数を、「次タイミング演奏情報ポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］」と呼ぶ。ステップＳ７０４は、最初の実行であって、ステップＳ７０３により演奏情報検索用変数ｉＮ＝０とされている。このため、ステップＳ７０４での次鍵の検索の処理により、現在のパートｉＨにおいて、曲の先頭の発音タイミングに対して、各指においてその次のタイミングで押鍵されるべき現在のパートｉＨに属する各演奏情報へのポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］が予め取得されることになる。この次タイミング演奏情報ポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］は、ステップＳ７０９の準備確認の処理で参照される。
【００４１】
次に、ＣＰＵ２０１は、ステップＳ７１１で演奏情報検索用変数ｉＮの値を＋１ずつしながら、ステップＳ７０５で変数ｉＮの値が演奏情報の最大数（図３の例では、演奏情報の最大数＝Ｎ）に達したと判定するまで、各演奏情報Ｎｏｔｅ［ｉＮ］（０≦ｉＮ≦Ｎ−１）毎に、以下のステップＳ７０６からＳ７１０までの一連の処理を実行する。この繰返し処理により、ＣＰＵ２０１は、現在のパートｉＨについて、指定された曲の全ての演奏情報Ｎｏｔｅ［０］、Ｎｏｔｅ［１］、・・・、Ｎｏｔｅ［Ｎ−１］について処理を実行することにより、曲全体の演奏ガイド用の動作データを、一括して算出する。
【００４２】
ＣＰＵ２０１は、演奏情報検索用変数ｉＮが示す現在処理中の演奏情報Ｎｏｔｅ［ｉＮ］のトラック番号Ｈａｎｄ（図３参照）（「Ｎｏｔｅ［ｉＮ］．Ｈａｎｄ」と表記する）が、現在のパート検索用変数ｉＨが示す現在処理中のパートｉＨに等しいか否か、すなわち音符Ｎｏｔｅ［ｉＮ］を演奏する手（右手、左手の別）が、現在調査中の、ｉＨで指定される手に等しいか否か、を判定する（ステップＳ７０６）。
【００４３】
ＣＰＵ２０１は、ステップＳ７０６の判定がＮＯ、すなわち、音符Ｎｏｔｅ［ｉＮ］が、現在調査中の手で演奏する音でないならば、演奏情報検索用変数ｉＮを＋１（ステップＳ７１１中では「ｉＮ＋＋」と記載）して、次の演奏情報の処理に移行する。
【００４４】
ＣＰＵ２０１は、ステップＳ７０６の判定がＹＥＳならば、まず、離鍵確認の処理を実行する（ステップＳ７０７）。離鍵確認の処理では、現在のパートｉＨに属する演奏情報Ｎｏｔｅ［ｉＮ］の鍵が押鍵された場合に、現在のパートｉＨの押鍵対応となっている５本の指の演奏情報を示す押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］のうち、発音期間（発音開始時刻＋発音継続時間）が演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻よりも前に終了する指があればその指の発音が終了させられる。
【００４５】
次に、ＣＰＵ２０１は、押鍵検索の処理を実行する（ステップＳ７０８）。押鍵検索の処理では、現在のパートｉＨに属する処理対象の演奏情報Ｎｏｔｅ［ｉＮ］と同時に発音開始すべき現在のパートｉＨに属する演奏情報が検索される。そして、その検索された演奏情報が演奏情報Ｎｏｔｅ［ｉＮ］とともに、各演奏情報に登録されている指に対応する押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］にセットされる。また、次タイミング演奏情報ポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］のうち、上記セットが行われた指に対応するポインタの内容が、そのセットが行われた指においてその次のタイミングで押鍵されるべき現在のパートｉＨに属する演奏情報へのポインタ値に更新される。なお、同じパートに属し同時に発音開始される演奏情報はＲＡＭ２０３上では連続して記憶されている。このため、上記押鍵検索の処理により同時に発音開始される演奏情報が検索された後は、次の演奏情報検索用変数ｉＮの値がその検索された演奏情報の数だけジャンプして設定される。
【００４６】
続いて、ＣＰＵ２０１は、準備確認の処理を実行する（ステップＳ７０９）。準備確認の処理では、演奏情報が順次読み込まれながら、曲の各再生時点において、再生時点における演奏情報に対応する演奏状態とその再生時点以降における演奏情報に対応する演奏状態とが比較される。この結果、例えば、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第１の状態が検出される。または、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第２の状態が検出される。また、第１および第２のいずれの状態でもなく、任意の指で押鍵中の鍵から所定の基準値に比較して近い位置の異なる鍵を次以降のタイミングにてその任意の指以外の指で押鍵する第３の状態が検出される。あるいは、任意の指で押鍵中の鍵と同じ鍵を次のタイミングにてその任意の指以外の指で押鍵する第４の状態が検出される。さらには、現在押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態が検出される。
【００４７】
以上のステップＳ７０７の離鍵確認の処理、ステップＳ７０８の押鍵検索の処理、ステップＳ７０９の準備確認の処理は、図１の操作状態推定手段１０２の機能を実現する。
【００４８】
次に、ＣＰＵ２０１は、動作データ出力の処理を実行する。動作データ出力の処理では、図４で説明した動作データ（図１の「演奏の動作情報１０５」に対応）が出力される。
【００４９】
前述したように、ステップＳ７０９の準備確認の処理で、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第１の状態が検出された場合には、ステップＳ７１０の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、親指と親指以外の指の演奏位置（鍵盤番号）の情報が、親指に対応するｐｏｓｉｔｉｏｎ［０］とｐｏｓｉｔｉｏｎ［１］〜ｐｏｓｉｔｉｏｎ［４］のうちの各指に対応するいずれかとして得られる。また、親指と親指以外の指を含む押鍵動作の動作開始時間と動作終了時間がｓｔａｒｔおよびｔｅｒｍとして得られる。さらに、親指については、押鍵（演奏を行うべき指としてガイドする）を示す値「１」が、ｓｔａｔｕｓ［０］として得られる。また、親指以外の指については、準備動作（演奏の準備を行うべき指としてガイドする）を示す値「−１」が、ｓｔａｔｕｓ［１］〜ｓｔａｔｕｓ［４］のうちの各指に対応するいずれかとして得られる。
【００５０】
また、前述したように、ステップＳ７０９の準備確認の処理で、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第２の状態が検出された場合には、ステップＳ７１０の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、親指以外の指と親指の演奏位置（鍵盤番号）の情報が、ｐｏｓｉｔｉｏｎ［１］〜ｐｏｓｉｔｉｏｎ［４］のうちの各指に対応するいずれかと親指に対応するｐｏｓｉｔｉｏｎ［０］として得られる。また、親指以外の指と親指を含む押鍵動作の動作開始時間と動作終了時間がｓｔａｒｔおよびｔｅｒｍとして得られる。さらに、親指以外の指については、押鍵（演奏を行うべき指としてガイドする）を示す値「１」が、ｓｔａｔｕｓ［１］〜ｓｔａｔｕｓ［４］のうちの各指に対応するいずれかとして得られる。また、親指については、準備動作（演奏の準備を行うべき指としてガイドする）を示す値「−１」が、ｓｔａｔｕｓ［０］として得られる。
【００５１】
さらに、前述したように、ステップＳ７０９の準備確認の処理で、第１および第２のいずれの状態でもなく、任意の指で押鍵中の鍵から所定の基準値に比較して近い位置の異なる鍵を次以降のタイミングにてその任意の指以外の指で押鍵する第３の状態が検出された場合には、ステップＳ７１０の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、上記任意の指とその任意の指以外の指の演奏位置（鍵盤番号）の情報が、ｐｏｓｉｔｉｏｎ［０］〜ｐｏｓｉｔｉｏｎ［４］のうちの各指に対応するいずれかとして得られる。また、上記任意の指とその任意の指以外の指を含む押鍵動作の動作開始時間と動作終了時間がｓｔａｒｔおよびｔｅｒｍとして得られる。さらに、上記任意の指については、押鍵（演奏を行うべき指としてガイドする）を示す値「１」が、また、上記任意の指以外の指については、準備動作（演奏の準備を行うべき指としてガイドする）を示す値「−１」が、それぞれ、ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］のうちの各指に対応するいずれかとして得られる。
【００５２】
以上のステップＳ７１０の動作データ出力の処理は、図１の操作状態推定手段１０２と演奏操作ガイド手段１０３の機能を実現する。
【００５３】
以上のステップＳ７０６からＳ７１０までの一連の処理が、ステップＳ７０２とＳ７１２で制御される繰返し制御により右手および左手のパート毎に、ステップＳ７０５とＳ７１１で制御される繰返し制御により図３で説明した各演奏情報Ｎｏｔｅ［ｉＮ］（０≦ｉＮ≦Ｎ−１）毎に実行される。これにより、図４で説明した動作データｆｒａｍｅ［０］〜ｆｒａｍｅ［ＦｒａｍｅＣｏｕｎｔ−１］が、ＲＡＭ２０３上に生成される。この動作データは、動作タイミング毎に、どの指を押鍵するかという情報のみならず、どの指を次の押鍵のために準備するかという情報も、各指の状態ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］として保有することが特徴である。このような動作データを用いることにより、ＣＰＵ２０１は、表示部２０５のディスプレイ上で、次のような演奏動作ガイドを実現することができる。
【００５４】
例えば、親指の状態を示すｓｔａｔｕｓ［０］に押鍵を示す値「１」がセットされ、親指以外の指の状態を示すｓｔａｔｕｓ［１］〜ｓｔａｔｕｓ［４］のうちのいずれかに準備動作を示す値「−１」がセットされている場合、ＣＰＵ２０１は、親指の位置ｐｏｓｉｔｉｏｎ［０］で表される鍵を親指で押鍵するとともに、親指以外の指の状態を示すｓｔａｔｕｓ［１］〜ｓｔａｔｕｓ［４］のうち準備動作を示す値「−１」がセットされている指について、その指に対応するｐｏｓｉｔｉｏｎ［１］〜ｐｏｓｉｔｉｏｎ［４］のいずれかで表される鍵の位置で、その指を準備（配置）させるように動作する。この場合において、親指の位置ｐｏｓｉｔｉｏｎ［０］と、準備すべき他の指の位置ｐｏｓｉｔｉｏｎ［１］〜ｐｏｓｉｔｉｏｎ［４］の鍵の位置との関係によっては、通常の指の左右の位置関係と逆転した位置関係になっている場合がある。このような場合、ＣＰＵ２０１は、「親指以外の指を親指の上を越えて次の押鍵位置まで移動させておきなさい」という準備動作をガイド表示させることが可能である。
【００５５】
また例えば、親指以外の指の状態を示すｓｔａｔｕｓ［１］〜ｓｔａｔｕｓ［４］のうちのいずれかに押鍵を示す値「１」がセットされ、親指の状態を示すｓｔａｔｕｓ［０］に準備動作を示す値「−１」がセットされている場合も同様に、押鍵を示す指の鍵の位置と、親指が準備動作を行うべき鍵の位置との位置関係によっては、ＣＰＵ２０１は、「親指を親指以外の指の下をくぐらせて次の押鍵位置まで移動させておきなさい」という準備動作をガイド表示させることが可能である。
【００５６】
これらの演奏ガイド表示は、演奏動作上のテクニックに関する動作情報であるということができる。このようにして、本実施形態における図７のフローチャートで示される図６のステップＳ６０３の動作情報生成処理によって、演奏情報に付加されている運指情報（図３の「指番号」）から演奏動作上のテクニックに関する動作情報を自動的に抽出することが可能となり、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。
【００５７】
図８は、図７のステップＳ７０４の次鍵の検索の処理の例を示すフローチャートである。
【００５８】
まず、ＣＰＵ２０１は、指番号指定変数ｉｆｉｇに値「０」を格納する（ステップＳ８０１）。
【００５９】
次に、ＣＰＵ２０１は、ステップＳ８０４で指番号指定変数ｉｆｉｇの値を＋１ずつしながら、ステップＳ８０２で変数ｉｆｉｇの値が片手の指の最大数「５」に達したと判定するまで、ステップ８０３で、変数ｉｆｉｇが示す指に対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］を更新する処理を実行する。ここで、ｉｆｉｇ＝０ならば親指、ｉｆｉｇ＝１ならば人差し指、ｉｆｉｇ＝２ならば中指、ｉｆｉｇ＝３ならば薬指、ｉｆｉｇ＝４ならば小指が、それぞれ指定されたことになる。
【００６０】
図９は、図８のステップＳ８０３のＮｅｘｔ［ｉｆｉｇ］の更新処理の例を示すフローチャートである。
【００６１】
まず、ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す指に対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］に未定義値ＮＵＬＬを格納する（ステップＳ９０１）。
【００６２】
次に、ＣＰＵ２０１は、演奏情報検索用変数ｉに、現在の演奏情報のカウンタ値（図７→図８の場合は演奏情報検索用変数ｉＮが示す値）に＋１した値を格納する（ステップＳ９０２）。これは、現在の演奏情報の次の演奏情報から検索が行われるという意味である。
【００６３】
次に、ＣＰＵ２０１は、ステップＳ９０６で演奏情報検索用変数ｉの値を＋１ずつしながら、ステップＳ９０３で変数ｉの値が演奏情報の最大数（図３の例では、演奏情報の最大数＝Ｎ）に達したと判定するまで、各演奏情報Ｎｏｔｅ［ｉ］（現在の演奏情報のインデックス番号＋１≦ｉ≦Ｎ−１）毎に、以下のステップＳ９０４とＳ９０５の判定処理を実行する。
【００６４】
すなわち、ＣＰＵ２０１はまず、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］中の右手または左手を示すトラック番号Ｈａｎｄ（図３参照）（図９中では「Ｎｏｔｅ［ｉ］．Ｈａｎｄ」と記載）が、パート検索用変数ｉＨの値が示す現在処理中のパート番号（図７のステップＳ７０１、Ｓ７０２、Ｓ７１２参照）に等しいか否かを判定する（ステップＳ９０４）。なお、図９中の「＝＝」は、その両辺の値同士が「等しい」ことを検査する演算子である。
【００６５】
ステップＳ９０４の判定がＮＯならば、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］は、現在処理中のパート（右手・左手の別）ではないので、ＣＰＵ２０１は、ステップＳ９０６の処理に移行して、次の演奏情報の検索に進む。
【００６６】
ステップＳ９０４の判定がＹＥＳならば、ＣＰＵ２０１はさらに、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］中の指番号Ｆｉｎｇｅｒ（図３参照）（図９中では「Ｎｏｔｅ［ｉ］．Ｆｉｎｇｅｒ」と記載）が、現在処理中の指番号ｉｆｉｇ（図８のステップＳ８０１、Ｓ８０２、Ｓ８０４参照）に等しいか否かを判定する（ステップＳ９０５）。
【００６７】
ステップＳ９０５の判定がＮＯならば、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］は、現在処理対象としている指以外で演奏する音符であるので、ＣＰＵ２０１は、ステップＳ９０６の処理に移行して、次の演奏情報の検索に進む。
【００６８】
ステップＳ９０５の判定がＹＥＳになると、ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す指に対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］に、トラック番号（パート番号）と指番号が一致した検索された演奏情報Ｎｏｔｅ［ｉ］へのポインタ値（記憶アドレス等）を格納して、次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］の更新処理を終了する。
【００６９】
ステップＳ９０４またはＳ９０５の判定がＮＯの状態が続き、やがて全ての演奏情報についての検索が終了してステップＳ９０３の判定がＮＯになると、ＣＰＵ２０１は、図９のフローチャートで示される、ｉｆｉｇで表される指に関しての次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］の内容がステップＳ９０１でＮＵＬＬに設定されたまま、その更新処理を終了する。そしてこの図９の処理は、図８で、ｉｆｉｇによる指の指示を順次変えながら繰り返して実行されて、現在処理中のパート（右手・左手）の全ての指について順次処理が行われる。
【００７０】
以上のようにして、図８と図９のフローチャートで示される処理の例によって、図７のステップＳ７０４の次鍵の検索の処理が実現される。
【００７１】
図１０は、図７のステップＳ７０７の離鍵確認の処理の例を示すフローチャートである。
【００７２】
まず、ＣＰＵ２０１は、指番号指定変数ｉｆｉｇに値「０」を格納する（ステップＳ１００１）。
【００７３】
次に、ＣＰＵ２０１は、ステップＳ１００６で指番号指定変数ｉｆｉｇの値を＋１ずつしながら、ステップＳ１００２で変数ｉｆｉｇの値が片手の指の最大数「５」に達したと判定するまで、ステップ１００３からＳ１００５の一連の処理を実行する。なお、変数ｉｆｉｇの各値の意味は、図８の場合と同じである。
【００７４】
ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］の値が未定義値でないか否かを判定する（ステップＳ１００３）。なお、図１０中の「！＝」は、その両辺の値同士が「等しくない」ことを検査する演算子である。前述のように、押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］は、ｉｆｉｇで表される指が押鍵中である場合の演奏情報へのポインタ変数であるので、このＨａｎｄ［ｉｆｉｇ］の値がＮｕｌｌでない場合は、その指が押鍵中であることを意味する。
【００７５】
ステップ  Ｓ１００３の判定がＮＯならば、その指は押鍵中では無いので、ＣＰＵ２０１は、ステップＳ１００６の処理に移行し、次の指の処理に移行する。
【００７６】
押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］の値が未定義値でなくステップＳ１００３の判定がＹＥＳならば、ＣＰＵ２０１は、ポインタ変数Ｈａｎｄ［ｉｆｉｇ］が指す演奏情報の発音開始時刻Ｔｉｍｅ（図３参照）にその演奏情報の発音継続時間Ｇａｔｅを加算することにより、その演奏情報の発音終了時刻を算出する。そして、ＣＰＵ２０１は、ポインタ変数Ｈａｎｄ［ｉｆｉｇ］が指す演奏情報の上記発音終了時刻が、演奏情報検索用変数ｉＮ（図７のステップＳ７０５、Ｓ７１１等参照）が示す現在処理対象となっている演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅよりも前である（小さい）か否かを判定する（ステップＳ１００４）。
【００７７】
ポインタ変数Ｈａｎｄ［ｉｆｉｇ］が指す演奏情報の発音終了時刻が処理対象の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅよりも前でステップＳ１００４の判定がＹＥＳならば、ＣＰＵ２０１は、ポインタ変数Ｈａｎｄ［ｉｆｉｇ］に未定義値ＮＵＬＬを格納して、現在の指番号ｉｆｉｇが示す指を離鍵状態にする（ステップＳ１００５）。
【００７８】
その後、ＣＰＵ２０１は、ステップＳ１００６の処理に移行し、次の指の処理に移行する。
【００７９】
５本全ての指についての確認が終了してステップＳ１００２の判定がＮＯになると、ＣＰＵ２０１は、図１０のフローチャートで示される図７のステップＳ７０７の離鍵確認の処理を終了する。
【００８０】
以上のようにして、図１０のフローチャートの処理の例で示される図７のステップＳ７０７の離鍵確認の処理によって、押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］が示す各指で押鍵中とされている演奏情報のうち、現在処理中の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻よりも発音終了時刻が前となる指について、離鍵状態とされる。
【００８１】
図１１は、図７のステップＳ７０８の押鍵検索の処理の例を示すフローチャートである。
【００８２】
ＣＰＵ２０１はまず、演奏情報検索用変数ｉに、現在の処理対象の演奏情報検索用変数ｉＮの値をセットする。つまり、同時発音を行う演奏情報を検索するための開始位置が、現在処理対象の演奏情報Ｎｏｔｅ［ｉＮ］自身とされる。また、ＣＰＵ２０１は、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数ｓｅｔにも、現在の処理対象の演奏情報検索用変数ｉＮの値をセットする。つまり、同時発音を行う最後に検索された演奏情報が、現在処理対象の演奏情報Ｎｏｔｅ［ｉＮ］自身とされる（以上、ステップＳ１１０１）。
【００８３】
次に、ＣＰＵ２０１は、ステップＳ１１０９で演奏情報検索用変数ｉの値を＋１ずつしながら、ステップＳ１１０２で変数ｉの値が演奏情報の最大数（図３の例では、演奏情報の最大数＝Ｎ）に達したと判定するまで、ステップＳ１１０３からＳ１１０８までの一連の処理を実行する。
【００８４】
ＣＰＵ２０１はまず、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］中の右手または左手を示すトラック番号Ｈａｎｄ（図３参照）（図９中では「Ｎｏｔｅ［ｉ］．Ｈａｎｄ」と記載）が、パート検索用変数ｉＨの値が示す現在処理中のパート番号（図７のステップＳ７０１、Ｓ７０２、Ｓ７１２参照）に等しいか否かを判定する（ステップＳ１１０３）。
【００８５】
ステップＳ１１０３の判定がＮＯならば、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］は、現在処理中のパート（右手・左手の別）ではないので、ＣＰＵ２０１は、ステップＳ１１０９の処理に移行して、次の演奏情報の検索に進む。
【００８６】
ステップＳ１１０３の判定がＹＥＳならば、ＣＰＵ２０１は、演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］中の発音開始時刻Ｔｉｍｅ（図３参照）（図１１中では「Ｎｏｔｅ［ｉ］．Ｔｉｍｅ」と記載）が、現在処理対象の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅ（図３参照）（図１１中では「Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ」と記載）と同時刻であるか否かを判定する（ステップＳ１１０４）。
【００８７】
同時刻の演奏情報が見つかりステップＳ１１０４の判定がＹＥＳならば、ＣＰＵ２０１は、指番号指定変数ｉｆｉｇに、現在検索されている演奏情報Ｎｏｔｅ［ｉ］中の指番号Ｆｉｎｇｅｒ（図１１中では「Ｎｏｔｅ［ｉ］．Ｆｉｎｔｅｒ」と記載）を格納する（ステップＳ１１０５）。
【００８８】
なお、最初の処理では、ｉ＝ｉＮであるから（ステップＳ１１０１参照）、ステップＳ１１０４の判定は、「Ｎｏｔｅ［ｉ］．Ｔｉｍｅ＝Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ＝＝Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ？」という自分自身を自分自身と比較する判定になる。このため、ステップＳ１１０４の判定は、必ずＹＥＳとなる。
【００８９】
次に、ＣＰＵ２０１は、検索された演奏情報Ｎｏｔｅ［ｉ］の指番号Ｆｉｎｇｅｒ（図３参照）を、現在の指番号ｉｆｉｇに格納する（ステップＳ１１０５）。
その後、ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］に、検索された演奏情報Ｎｏｔｅ［ｉ］へのポインタを格納する（ステップＳ１１０６）。すなわち、現在処理対象の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅ（図３参照）（図１１中では「Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ」と記載）と同時刻である演奏情報について、その音を弾くべき指についてのポインタ変数Ｈａｎｄ［ｉｆｉｇ］に、その各音符をセットする。前述したように、最初の処理では、ステップＳ１１０５の判定は必ずＹＥＳとなるため、現在処理対象の検索された演奏情報Ｎｏｔｅ［ｉ］へのポインタは、必ず押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］に登録されることになる。
【００９０】
さらに、ＣＰＵ２０１は、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数ｓｅｔに、検索された演奏情報Ｎｏｔｅ［ｉ］を示す演奏情報検索用変数ｉの値を格納する（ステップＳ１１０７）。この変数ｓｅｔは、ステップＳ１１０４で同時発音を行う音が見つかるたびに更新されていくので、最終的には、同時発音を行うものの中で最も大きい演奏情報検索用変数ｉがセットされることとなる。
【００９１】
最後に、ＣＰＵ２０１は、検索された演奏情報Ｎｏｔｅ［ｉ］に対応する指番号ｉｆｉｇ（ステップＳ１１０５参照）が示す指に対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］を更新する処理を実行する（ステップＳ１１０８）。この処理の例は、前述した図９のフローチャートで示される。ただし、図９のステップＳ９０２では、ＣＰＵ２０１は、演奏情報検索用変数ｉに、検索された現在の演奏情報のカウンタ値ｉに＋１した値を格納する。これは、検索された同時発音を行う現在の演奏情報Ｎｏｔｅ［ｉ］の次の演奏情報から、次に押鍵される演奏情報の検索が行われるという意味である。
【００９２】
ステップＳ１１０８の処理の後、ＣＰＵ２０１は、ステップＳ１１０９の処理に移行して、次の演奏情報の検索に進む。
【００９３】
ここで、図３で説明したように、演奏情報Ｎｏｔｅ［０］、Ｎｏｔｅ［１］、・・・、Ｎｏｔｅ［Ｎ］は、発音開始時刻Ｔｉｍｅの順に並ぶように、インデックス番号（０、１、・・・、Ｎ）が付与されている。従って、ステップＳ１１０４の判定で、現在の演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］中の発音開始時刻Ｔｉｍｅが、現在処理対象の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅと同時刻ではなく、判定結果がＮＯならば、現在の演奏情報検索用変数ｉが示す演奏情報Ｎｏｔｅ［ｉ］以降には同時刻の演奏情報は存在しない。そこでこの場合には、ＣＰＵ２０１は、押鍵検索の処理を終了する。この場合、同時発音を行うとして検索された演奏情報については、図７のステップＳ７０９およびＳ７１０では、現在の処理対象の演奏情報Ｎｏｔｅ［ｉＮ］とともに、押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］にセットされて一括して処理されるため、以降は図７のステップＳ７０６からＳ７１０までの処理ループを実行する必要はない。このため、ＣＰＵ２０１は、現在の処理対象の演奏情報検索用変数ｉＮの値に、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数ｓｅｔの値を設定して、次回の処理では、同時発音するとして既に検索された音符を飛ばして処理を続けるようにする。（ステップＳ１１１０）。
【００９４】
ステップＳ１１１０の処理の後、ＣＰＵ２０１は、図１１のフローチャートで示される図７のステップＳ７０８の押鍵検索の処理を終了する。
【００９５】
また、全ての演奏情報についての検索が終了してステップＳ１１０２の判定がＮＯになった場合も、ＣＰＵ２０１は、図１１のフローチャートで示される図７のステップＳ７０８の押鍵検索の処理を終了する。
【００９６】
図１２から図１５は、図７のステップＳ７０９の準備確認の処理の例を示すフローチャートである。
【００９７】
この図１２から図１５の準備確認の処理を通して、ｐｒｅｐ［０］〜ｐｒｅｐ［４］には、図７のステップＳ７１０の動作データ出力の処理において図４の動作データを出力するために対象となる各指の演奏情報が格納される。この場合の演奏情報には、対応する動作データの出力タイミングにおいて、押鍵されるべき演奏情報と、次の動作タイミングでの押鍵のために準備動作がされるべき演奏情報がある。まず、ＣＰＵ２０１は、図１２のステップＳ１２０１からＳ１２０８までの一連の処理によって、押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］の内容を、いったん出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］にコピーする。このコピー処理では、まずは押鍵対象となっている演奏情報が格納されているポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］の内容がｐｒｅｐ［０］〜ｐｒｅｐ［４］にコピーされる。その後、図１３から図１５のフローチャートでは、各指の次タイミング演奏情報ポインタＮｅｘｔ［０］〜Ｎｅｘｔ［４］の中から準備動作の対象となる演奏情報が判別される。そして、その判別された演奏情報が、後述する図１５のステップＳ１２４３で、ｐｒｅｐ［０］〜ｐｒｅｐ［４］に追加的に登録される。
【００９８】
ＣＰＵ２０１はまず、準備動作判定用変数Ｐｒｅｐａｒｅ、Ｍｏｖｉｎｇ、Ｐａｓｓｉｎｇに、共に値「０」を格納する（ステップＳ１２０１）。
【００９９】
次に、ＣＰＵ２０１は、指番号指定変数ｉｆｉｇと押鍵指数カウンタ変数ｆｉｇｕｓｅに、共に値「０」を格納する（ステップＳ１２０２）。
【０１００】
その後、ＣＰＵ２０１は、ステップＳ１２０８で指番号指定変数ｉｆｉｇの値を＋１ずつしながら、ステップＳ１２０３で変数ｉｆｉｇの値が片手の指の最大数「５」に達したと判定するまで、ステップＳ１２０４からＳ１２０７までの一連の処理を実行する。
【０１０１】
まず、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］と、一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ｉｆｉｇ］に、共に未定義値ＮＵＬＬを格納する。また、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］に値「−１」を格納する（以上、ステップＳ１２０４）。ここで、一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［０］〜ｐＬｉｓｔ［４］は、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］に登録される演奏情報のうち、指超えや指くぐり、手の移動等の特別な準備動作を行うべき演奏情報へのポインタを記憶する。これらのｐＬｉｓｔ［０］〜ｐＬｉｓｔ［４］は、図７のフローチャートの処理上では使用されないが、後述する図２５および図２６に示されるフローチャートにおける準備指示データ出力の処理で使用される。また、ステップデータｓｔｅｐ［ｉｆｉｇ］は、現在の指番号ｉｆｉｇに対応する指が、どの押鍵段階にあるかを示す。ｓｔｅｐ［ｉｆｉｇ］＝０ならばその指を今回押鍵すべきであることを示し、ｓｔｅｐ［ｉｆｉｇ］＝１，２，・・・ならばその指を次回、その次、・・・で押鍵すべきであることを示す。ステップＳ１２０４で設定されるｓｔｅｐ［ｉｆｉｇ］＝−１は、その指についてはまだ押鍵段階が決定されていないことを示す。
【０１０２】
次に、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応する押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］の内容を出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］にコピーする（ステップＳ１２０５）。
【０１０３】
次に、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の内容が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１２０６）。
【０１０４】
ｐｒｅｐ［ｉｆｉｇ］の内容が未定義値ＮＵＬＬでなくステップＳ１２０６の判定がＹＥＳならば、指番号ｉｆｉｇに対応する押鍵対象演奏情報ポインタ変数Ｈａｎｄ［ｉｆｉｇ］の内容がＮＵＬＬではなかったということなので、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］に今回押鍵を示す値「０」を格納する。さらに、ＣＰＵ２０１は、押鍵指数カウンタ変数ｆｉｇｕｓｅの値を＋１インクリメントする（図１２中では「＋＋」という演算子で記載）（以上、ステップＳ１２０７）。
【０１０５】
ｐｒｅｐ［ｉｆｉｇ］の内容が未定義値ＮＵＬＬであってステップＳ１２０６の判定がＮＯである場合、またはステップＳ１２０７の処理の後、ＣＰＵ２０１は、ステップＳ１２０８の処理に移行し、次の指に対する処理を実行する。
【０１０６】
以上のステップＳ１２０３からＳ１２０８までの一連の処理の後、５本の指についてのコピー処理が終了しステップＳ１２０８の判定がＮＯとなった時点で、押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］のうち押鍵を示す演奏情報へのポインタが出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］にコピーされている。この場合、ステップデータｓｔｅｐ［０］〜ｓｔｅｐ［４］のうち押鍵状態にある指に対応するデータには値「０」が格納され、それ以外の指に対応するデータには未定義状態を示す値「−１」が格納される状態となる。
【０１０７】
図１２のステップＳ１２０３の判定がＮＯとなった後、ＣＰＵ２０１は、図１３のステップＳ１２０９からＳ１２１９の一連の処理を実行する。ここでは、次タイミング演奏情報ポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］のうちから、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］において演奏情報へのポインタが定義されていない指に対応するデータであって、かつ発音開始時刻が最も早い演奏情報へのポインタとそれに対応する指番号が、それぞれ変数ＮｏｔｅＰｒｅとｆｉｇに取得される。
【０１０８】
すなわち、ＣＰＵ２０１はまず、押鍵指数カウンタ変数ｆｉｇｕｓｅの値が５より小さいか否かを判定する（ステップＳ１２０９）。
【０１０９】
もし、押鍵指数カウンタ変数ｆｉｇｕｓｅの値が５になっていると、５本全ての指が押鍵中を示していることになり（図１２のステップＳ１２０６とＳ１２０７参照）、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］において演奏情報へのポインタが定義されていない指はない。この場合には、図１３のステップＳ１２０９の判定がＮＯとなって、ＣＰＵ２０１は、図７のステップＳ７０９の準備確認の処理を終了する。この場合は、準備動作判定用変数Ｐｒｅｐａｒｅ、Ｍｏｖｉｎｇ、Ｐａｓｓｉｎｇの値は図１２のステップＳ１２０１で共に値「０」とされたままになる。そして、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］に設定されている５つの演奏情報は、全て押鍵対象演奏情報ポインタ変数Ｈａｎｄ［０］〜Ｈａｎｄ［４］に設定されていた、同時刻に発音開始する５つの演奏情報がそのまま格納される。この結果、後述する図７のステップＳ７１０の動作データ出力の処理（後述する図１８のステップＳ１７１２→Ｓ１７１３参照）において、各指の状態ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］（図４参照）として共に押鍵を示す値「１」が設定される。すなわち、後述する図１８のステップＳ１７１４→Ｓ１７１５の処理は一度も実行されず、各指の状態ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］（図４参照）のいずれにも、準備動作を示す値「−１」は設定されないことになる。
【０１１０】
押鍵指数カウンタ変数ｆｉｇｕｓｅの値が５より小さくステップＳ１２０９の判定がＹＥＳならば、ＣＰＵ２０１は、現在の押鍵比較段階変数ｓｔｅｐに初期値「１」を格納する（ステップＳ１２１０）。押鍵比較段階変数ｓｔｅｐの値は、現在押鍵中の演奏情報に対して何タイミング後に押鍵される演奏情報の比較が行われるかを示す。ｓｔｅｐ＝１であれば、現在押鍵中の演奏情報に対して次のタイミングにて押鍵される演奏情報の比較が行われることを示す。ｓｔｅｐ＝２であれば、現在押鍵中の演奏情報に対して次の次のタイミングにて押鍵される演奏情報の比較が行われることを示す。押鍵比較段階変数ｓｔｅｐの値は、ステップＳ１２０９で値「１」に初期設定された後、後述する図１５のステップＳ１２４４で＋１ずつインクリメントされ、ステップＳ１２１１からＳ１２１９の探索が繰り返し実行される。
【０１１１】
次に、ＣＰＵ２０１は、現在の押鍵比較段階ｓｔｅｐにおいて、まだ押鍵や準備動作が決定されていない指のうちで発音開始時刻が最も早い演奏情報へのポインタを格納する変数ＮｏｔｅＰｒｅに未定義値ＮＵＬＬを格納し、それに対応する指番号を格納する変数ｆｉｇにどの指でもないことを示す値「−１」を格納する（ステップＳ１２１１）。
【０１１２】
次に、ＣＰＵ２０１は、ステップＳ１２１２で指番号指定変数ｉｆｉｇに初期値「０」（親指）を設定した後、ステップＳ１２１９でｉｆｉｇの値を＋１ずつインクリメントしながら、ステップＳ１２１３で片手の指の最大数「５」に達したと判定するまで、以下のステップＳ１２１４からＳ１２１８の一連の処理を実行する。
【０１１３】
ＣＰＵ２０１はまず、現在の指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］の値が、指番号ｉｆｉｇの指についてはまだ押鍵段階が決定されていないことを示す値「−１」（図１２のステップＳ１２０４参照）であるか否かを判定する（ステップＳ１２１４）。
【０１１４】
現在の指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］の値が「−１」以外でありステップＳ１２１４の判定がＮＯならば、その指番号ｉｆｉｇの指は押鍵または準備動作をすることが決定済みであるため、ＣＰＵ２０１は、ステップＳ１２１９の処理に移行し、次の指番号の処理に進む。
【０１１５】
現在の指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］の値が「−１」でありステップＳ１２１４の判定がＹＥＳならば、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１２１５）。
【０１１６】
Ｎｅｘｔ［ｉｆｉｇ］の値が未定義値ＮＵＬＬであってステップＳ１２１５の判定がＮＯならば、その指番号ｉｆｉｇに対応する指について次以降のタイミングで押鍵されることはない。このため、ＣＰＵ２０１は、ステップＳ１２１９の処理に移行し、次の指番号の処理に進む。
【０１１７】
Ｎｅｘｔ［ｉｆｉｇ］の値が未定義値ＮＵＬＬではなくステップＳ１２１５の判定がＹＥＳならば、ＣＰＵ２０１は、まだ押鍵や準備動作が決定されていない指のうちで発音開始時刻が最も早い演奏情報へのポインタを格納する変数ＮｏｔｅＰｒｅの内容が未定義値ＮＵＬＬではなく、かつ変数ＮｏｔｅＰｒｅが示す演奏情報の発音開始時刻Ｔｉｍｅ（図１３中では「ＮｏｔｅＰｒｅ．Ｔｉｍｅ」と記載）が現在の指番号ｉｆｉｇに対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］が示す演奏情報の発音開始時刻Ｔｉｍｅ（図１３中では「Ｎｅｘｔ［ｉｆｉｇ］．Ｔｉｍｅ」と記載）よりも早い（小さい）か否かを判定する（ステップＳ１２１６）。
【０１１８】
ステップＳ１２１６の判定がＹＥＳならば、現在の変数ＮｏｔｅＰｒｅが示す演奏情報の発音開始時刻のほうが、現在の指番号ｉｆｉｇに対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］が示す演奏情報の発音開始時刻よりも早い。この場合には、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅの内容をそのまま維持し、ステップＳ１２１９の処理に移行し、次の指番号の処理に進む。
【０１１９】
ステップＳ１２１６の判定がＮＯならば、現在の変数ＮｏｔｅＰｒｅがまだ定義されていなかった（ＮＵＬＬ）か、または、現在の指番号ｉｆｉｇに対応する次タイミング演奏情報ポインタ変数Ｎｅｘｔ［ｉｆｉｇ］が示す演奏情報の発音開始時刻が、現在の変数ＮｏｔｅＰｒｅが示す演奏情報の発音開始時刻より早いことになる。そこでこの場合には、ＣＰＵ２０１は、Ｎｅｘｔ［ｉｆｉｇ］に格納されているポインタ値を変数ＮｏｔｅＰｒｅにコピーする（ステップＳ１２１７）。
【０１２０】
さらに、ＣＰＵ２０１は、現在の指番号指定変数ｉｆｉｇの値を変数ＮｏｔｅＰｒｅに対応する指番号を保持する変数ｆｉｇにコピーする（ステップＳ１２１８）。
【０１２１】
その後、ＣＰＵ２０１は、ステップＳ１２１９の処理に移行し、次の指番号ｉｆｉｇに対する処理に進む。
【０１２２】
以上のステップＳ１２１４からＳ１２１８までの一連の処理が、各指番号ｉｆｉｇについて繰り返し実行され、やがて指番号ｉｆｉｇの値が５になってステップＳ１２１３の判定がＮＯとなった時点で、変数ＮｏｔｅＰｒｅに、まだ押鍵や準備動作が決定されていない指のうちで、その指による次の押鍵が他の指と比べて、現在の押鍵比較段階ｓｔｅｐにおいて発音開始時刻が最も早い演奏情報へのポインタが得られる。また、変数ｆｉｇに、ＮｏｔｅＰｒｅが示す演奏情報に対応する指番号が得られる。最初は、押鍵比較段階ｓｔｅｐ＝１である（ステップＳ１２１０参照）。従って、変数ＮｏｔｅＰｒｅとｆｉｇには、現在の押鍵に対して次に押鍵されるべき、発音開始時刻が最も早い演奏情報へのポインタと、それに対応する指番号が得られる。
【０１２３】
ステップＳ１２１３の判定がＮＯになると、ＣＰＵ２０１は、図１４のフローチャートのステップＳ１２２０からＳ１２３９までの一連の処理を実行する。ここでは、上述の変数ＮｏｔｅＰｒｅに得られた演奏情報に対応する演奏状態が、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］のうち押鍵を示す演奏情報の演奏状態と比較される。
【０１２４】
まず、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅの内容が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１２２０）。図１３のステップＳ１２１３からＳ１２１９の実行状態によっては、変数ＮｏｔｅＰｒｅの内容が図１３のステップＳ１２１１で未定義値ＮＵＬＬに設定された後、全ての指番号ｉｆｉｇについて、図１３のステップＳ１２１６の判定がＹＥＳにならず、ステップＳ１２１３の判定がＮＯになる場合があり得る。この場合には、変数ＮｏｔｅＰｒｅには発音開始時刻が最も早い演奏情報へのポインタが得られない状態となり、ＮｏｔｅＰｒｅの値は未定義値ＮＵＬＬとなる。これによりステップＳ１２２０の判定がＮＯとなった場合には、ＣＰＵ２０１は、図７のステップＳ７０９の準備確認の処理を終了する。
【０１２５】
変数ＮｏｔｅＰｒｅの内容が未定義値ＮＵＬＬでなくステップＳ１２２０の判定がＹＥＳならば、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅの内容を出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］のいずれかへ登録するか否かを示すセット変数ｓｅｔに、登録を示す値「１」をひとまず格納する（ステップＳ１２２１）。このセット変数ｓｅｔの値は、後述する各種演奏状態の判断において非登録を示す値「０」にされ得る（図１４のステップＳ１２３１、Ｓ１２３３、Ｓ１２３８）。
【０１２６】
次に、ＣＰＵ２０１は、現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号ｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］に、現在の押鍵比較段階変数ｓｔｅｐの値（初回は値「１」）を格納する（ステップＳ１２２２）。これは、２回目以降に実行される図１３のステップＳ１２１４の判定において、すでに処理された指番号については再度その判定がＹＥＳとなって選択されてしまわないようにするための制御である。また、ステップデータｓｔｅｐ［０］〜ｓｔｅｐ［４］の各値を見れば、各指が現在の押鍵タイミング以降の何番目に押鍵されるべき演奏情報であるかを知ることができ、演奏ガイドの制御に活用することも可能になるというメリットも有する。
【０１２７】
次に、ＣＰＵ２０１は、ステップＳ１２２３で指番号指定変数ｉｆｉｇに初期値「０」（親指）をセットした後、ステップＳ１２３９でｉｆｉｇの値を＋１ずつインクリメントしながら、ステップＳ１２２４で指番号ｉｆｉｇの値が片手の指の最大数「５」に達したと判定するまで、以下のステップＳ１２２５からＳ１２３８までの一連の処理を実行する。この処理では、図１３のステップＳ１２１４からＳ１２１８の一連の処理で得られた、まだ押鍵や準備動作が決定されていない指による次の押鍵情報に対して、現在押鍵している指（音）との関係がチェックされる。
【０１２８】
ＣＰＵ２０１はまず、指番号ｉｆｉｇの値が現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号ｆｉｇに等しくなく、かつ指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の値が未定義値ＮＵＬＬでなく、かつ指番号ｉｆｉｇに対応するステップデータｓｔｅｐ［ｉｆｉｇ］が押鍵を示す値「０」に等しいか否か（図１２のステップＳ１２０７参照）を判定する（ステップＳ１２２５）。一番目の条件は、同じ指同士の関係は調べる必要が無いので、ｉｆｉｇとｆｉｇが異なっていることをチェックしている。二番目の条件は、調査対象とする指番号ｉｆｉｇの演奏情報がまだ決定されておらず、ｐｒｅｐ［ｉｆｉｇ］がＮＵＬＬの場合は、そのような指ｉｆｉｇとの関係を調べる必要が無いからである。三番目の条件は、調査対象とする指番号ｉｆｉｇが押鍵されている指かどうかを調べているものである。この判定は、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］が示す演奏情報が押鍵を示す演奏情報であるか否かの判定である。
【０１２９】
ステップＳ１２２５の判定がＮＯならば、ｐｒｅｐ［ｉｆｉｇ］は押鍵を示す演奏情報を示してはいないため、ステップＳ１２３９の処理に移行し、次の指番号の処理に進む。
【０１３０】
ｐｒｅｐ［ｉｆｉｇ］が示す演奏情報が押鍵を示す演奏情報であって、ステップＳ１２２５の判定がＹＥＳならば、ＣＰＵ２０１は、ｐｒｅｐ［ｉｆｉｇ］が示す押鍵の演奏情報と、変数ＮｏｔｅＰｒｅが示す、まだ押鍵や準備動作が決定されていない指のうちで現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報と、の鍵盤距離を取得する（ステップＳ１２２６）。鍵盤距離は、指番号が大きいほうの演奏情報の音高Ｐｉｔｃｈ（図３参照）を鍵盤番号に換算した値から、指番号が小さいほうの演奏情報の音高Ｐｉｔｃｈを鍵盤番号に換算した値を減算した結果として算出される。この処理の詳細は、図１６のフローチャートを用いて後述する。
【０１３１】
次に、ＣＰＵ２０１は、ステップＳ１２２６で取得した鍵盤距離が０よりも小さいか否かを判定する（ステップＳ１２２７）。
【０１３２】
鍵盤距離が０よりも小さくステップＳ１２２７の判定がＹＥＳならば、現在関係を調査している２つの指の位置関係が、正常な手の向きにおける指の位置と逆転していることを表している。そこでこの場合、ＣＰＵ２０１は、現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号ｆｉｇと現在の押鍵の指番号ｉｆｉｇのいずれかが親指の指番号「０」であるか否かを判定する（ステップＳ１２２８）。すなわち、現在関係を調査している２つの指のいずれかが、親指であるかを調べる。
【０１３３】
ステップＳ１２２８の判定がＹＥＳの場合には、ＣＰＵ２０１は、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第１の状態である、または、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第２の状態であると判定する。
【０１３４】
この場合には、ＣＰＵ２０１は、準備動作判定用変数の一つである指の交差を示す指交差変数Ｐａｓｓｉｎｇに値「１」を格納する（ステップＳ１２２９）。
【０１３５】
さらに、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅが示す演奏情報中の指番号Ｆｉｎｇｅｒ（図３参照）（図１４では「ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ」と記載）に対応する一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］に、変数ＮｏｔｅＰｒｅの値を格納する（ステップＳ１２３０）。すなわち、「ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ」で表される指に関して、指超えや指くぐり、手の移動等の特別な準備動作を行う必要がある音として、ＮｏｔｅＰｒｅが示す演奏情報を、ｐＬｉｓｔの該当する指番号のエリアに格納する。
【０１３６】
その後、ＣＰＵ２０１は、ステップＳ１２３９の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。
【０１３７】
ステップＳ１２２８の判定がＮＯの場合には、ＣＰＵ２０１は、親指以外の指同士の交差はあり得ないとして、変数ＮｏｔｅＰｒｅの内容を出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］のいずれかへ登録するか否かを示すセット変数ｓｅｔに、非登録を示す値「０」を格納する（ステップＳ１２３１）。すなわち、変数ＮｏｔｅＰｒｅが示す演奏情報は、現在押鍵している指との関係上、指を交差させないと準備ができない音であることが判ったので、この音については、準備動作をする演奏情報としては登録されない。
【０１３８】
その後、ＣＰＵ２０１は、ステップＳ１２３９の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。
【０１３９】
鍵盤距離が０よりも小さくなくステップＳ１２２７の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１２２６で取得した鍵盤距離が基準値よりも大きいか否かを判定する（ステップＳ１２３２）。基準値は例えば、指の間隔×半音での２〜４鍵分程度の値である。例えば、親指と小指の間隔としては、指の間隔（４−０）×２〜４半音で、８半音〜１６半音程度とすることができ、１２半音とすれば１オクターブを基準とすることとなる。
【０１４０】
鍵盤距離が基準値よりも大きくステップＳ１２３２の判定がＹＥＳならば、ＣＰＵ２０１は、鍵盤を弾く手の移動範囲が大きいと判断して、セット変数ｓｅｔに、非登録を示す値「０」を格納する。すなわち、変数ＮｏｔｅＰｒｅが示す演奏情報は、準備動作をする演奏情報としては登録されない。
【０１４１】
次に、ＣＰＵ２０１は、押鍵比較段階変数ｓｔｅｐの値が「１」であるか否かを判定する（ステップＳ１２３４）。
【０１４２】
ステップＳ１２３４の判定がＹＥＳ、すなわち鍵盤の移動が現在の押鍵の次の動作タイミングで実行されると判定された場合には、鍵盤距離が基準値よりも大きい音が、現在の押鍵のすぐ次の動作タイミングで実行されることから、指の跳躍が必要となる場合である。そこで、ＣＰＵ２０１は、準備動作判定用変数の一つである指の手の移動を示す移動変数Ｍｏｖｉｎｇに値「１」を格納する（ステップＳ１２３５）。
【０１４３】
さらに、ステップＳ１２３０と同様に、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅが示す演奏情報中の指番号Ｆｉｎｇｅｒに対応する一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］に、変数ＮｏｔｅＰｒｅの値を格納する（ステップＳ１２３６）。
【０１４４】
このように、変数ＮｏｔｅＰｒｅが示す演奏情報は、準備動作をする演奏情報としては登録されないが、移動変数Ｍｏｖｉｎｇと一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］へのセットが行われる。前述したように、ｐＬｉｓｔ［０］〜ｐＬｉｓｔ［４］は、図７のフローチャートの処理上では使用されないが、後述する図２５および図２６に示されるフローチャートにおける準備指示データ出力の処理で使用される。
【０１４５】
鍵盤距離が基準値よりも大きくはなくステップＳ１２３２の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１２２６で取得した鍵盤距離が０で、かつ押鍵比較段階変数ｓｔｅｐの値が「１」ではないか否かを判定する（ステップＳ１２３７）。この判定がＹＥＳとなる場合は、任意の指で押鍵中の鍵と同じ鍵を、現在押鍵中の指とは異なる指で、次ではない、より先のタイミングで押鍵することを表している。
【０１４６】
ステップＳ１２３７の判定がＮＯの場合には、ＣＰＵ２０１は、セット変数ｓｅｔに登録を示す値「１」が格納された状態を維持する。すなわち、変数ＮｏｔｅＰｒｅが示す演奏情報は、準備動作をする演奏情報として登録可能な状態にされる。その後、ＣＰＵ２０１は、ステップＳ１２３９の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。
【０１４７】
任意の指で押鍵中の鍵と同じ鍵を次の次以降のタイミングにてその任意の指以外の指で押鍵する状態であってステップＳ１２３７の判定がＹＥＳとなる場合は、ＣＰＵ２０１は、セット変数ｓｅｔに非登録を示す値「０」を格納する（ステップＳ１２３８）。すなわち、変数ＮｏｔｅＰｒｅが示す演奏情報は、準備動作をする演奏情報としては登録されない。
【０１４８】
その後、ＣＰＵ２０１は、ステップＳ１２３９の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。
【０１４９】
ＣＰＵ２０１は、以上のステップＳ１２２５からＳ１２３８までの一連の処理を、０から４までの指番号ｉｆｉｇについて実行する。これにより、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅに得られた演奏情報に対応する演奏状態を、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］のうち押鍵を示す演奏情報の演奏状態と比較する。そして、ＣＰＵ２０１は、ＮｏｔｅＰｒｅが示す演奏情報へのポインタを、準備動作をする演奏情報へのポインタとしてｐｒｅｐ［０］〜ｐｒｅｐ［４］に登録可能かどうかを判別し、セット変数ｓｅｔへの値のセットを行う。
【０１５０】
現在の変数ＮｏｔｅＰｒｅの演奏情報について、０から４までの全ての指番号ｉｆｉｇに対応する上述の制御動作が終了し、ステップＳ１２２４の判定がＮＯになると、ＣＰＵ２０１は、図１５のフローチャートの制御処理を実行する。
【０１５１】
図１５において、ＣＰＵ２０１は、移動変数Ｍｏｖｉｎｇに値「１」が格納されているか、または指交差変数Ｐａｓｓｉｎｇに値「１」が格納されているか否かを判定する（ステップＳ１２４０）。
【０１５２】
ステップＳ１２４０の判定がＹＥＳならば、ＣＰＵ２０１は、準備動作判定用変数の一つである準備実行指示変数Ｐｒｅｐａｒｅに値「１」を格納する（ステップＳ１２４１）。準備動作判定用変数Ｐｒｅｐａｒｅ、Ｍｏｖｉｎｇ、Ｐａｓｓｉｎｇは、図７のフローチャートの処理上では使用されないが、後述する図２５および図２６に示されるフローチャートにおける準備指示データ出力の処理で使用される。
【０１５３】
ステップＳ１２４０の判定がＮＯの場合またはステップＳ１２４１の処理の後、ＣＰＵ２０１は、セット変数ｓｅｔに値「１」がセットされているか否か、つまり登録可能であると判定されているか否かを判定する（ステップＳ１２４２）。
【０１５４】
ステップＳ１２４２の判定がＹＥＳならば、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅが示す演奏情報中の指番号Ｆｉｎｇｅｒ（図３参照）（図１５では「ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ」と記載）に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］に、変数ＮｏｔｅＰｒｅの値を格納する（ステップＳ１２４３）。このようにして、変数ＮｏｔｅＰｒｅが示す演奏情報へのポインタが、準備動作を行う演奏情報へのポインタとして、ｐｒｅｐ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］に登録される。
【０１５５】
セット変数ｓｅｔの値が「０」でステップＳ１２４２の判定がＮＯならば、ステップＳ１２４３の実行はスキップされ、変数ＮｏｔｅＰｒｅが示す演奏情報は、準備動作をする演奏情報としては出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］へは登録されない。
【０１５６】
ステップＳ１２４３の処理の後またはステップＳ１２４２の判定がＮＯならば、ＣＰＵ２０１は、押鍵比較段階変数ｓｔｅｐの値を＋１インクリメントする（ステップＳ１２４４）。いままで、ｓｔｅｐ＝１、すなわち現在の押鍵の動作タイミングの次の動作タイミングに対応する準備動作に関する処理であったなら、これ以降、ｓｔｅｐ＝２となることにより、現在の押鍵の動作タイミングの次の次の動作タイミングに対応する準備動作に関する処理が実行されることになる。
【０１５７】
ＣＰＵ２０１は、図１５のステップＳ１２４４の処理の後、図１３のステップＳ１２１１の処理に戻る。そして、ＣＰＵ２０１は、図１３のステップＳ１２１１からＳ１２１９までの一連の処理によって、次タイミング演奏情報ポインタ変数Ｎｅｘｔ［０］〜Ｎｅｘｔ［４］のうちから、出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］において演奏情報へのポインタが定義されていない指に対応するデータであって、かつ上述のように最初に変数ＮｏｔｅＰｒｅに得られた演奏情報の次に発音開始時刻が早い演奏情報へのポインタとそれに対応する指番号を、それぞれ変数ＮｏｔｅＰｒｅとｆｉｇに取得する。そして、ＣＰＵ２０１は、これらの変数ＮｏｔｅＰｒｅおよびｆｉｇについて、図１４および図１５のフローチャートの処理を再度実行する。この結果、ＣＰＵ２０１は、変数ＮｏｔｅＰｒｅが示す現在の押鍵に対して次の次のタイミングで押鍵されるべき発音開始時刻が最も早い演奏情報へのポインタが、準備動作を行う演奏情報へのポインタとして、ｐｒｅｐ［ＮｏｔｅＰｒｅ．Ｆｉｎｇｅｒ］に登録される。
【０１５８】
ＣＰＵ２０１は、以上の制御処理を繰り返し実行する結果、図１３のフローチャートの実行において変数ＮｏｔｅＰｒｅに演奏情報へのポインタが得られなくなり、図１４のステップＳ１２２０の判定がＮＯになると、図７において現在の演奏情報検索用変数ｉＮの値に対応するステップＳ７０９の準備確認の処理を終了する。
【０１５９】
図１６は、図１４のステップＳ１２２６の鍵盤距離の取得の処理の例を示すフローチャートである。
【０１６０】
ＣＰＵ２０１はまず、図１４の出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］が示す演奏情報と、変数ＮｏｔｅＰｒｅが示す演奏情報のうち、指番号Ｆｉｎｇｅｒ（図３参照）が大きいほうの演奏情報を変数ｎｏｔｅｆにセットし、指番号Ｆｉｎｇｅｒが小さいほうの演奏情報を変数ｎｏｔｅｔにセットする（ステップＳ１６０１）。
【０１６１】
次に、ＣＰＵ２０１は、演奏情報ｎｏｔｅｆの音高Ｐｉｔｃｈ（図３参照）（図１６中では「ｎｏｔｅｆ．Ｐｉｔｃｈ」と記載）をピッチ変数ｐｆに格納する。そして、ＣＰＵ２０１は、次式により鍵盤位置を算出し鍵盤位置変数ｋｅｙｆに格納する（ステップＳ１６０２）。
ｋｅｙｆ←ＯｃｔＤｉｓｔ×（ｐｆ／１２）＋ＫｅｙＤｉｓｔ［ｐｆ％１２］
・・・（１）
ここで、ＯｃｔＤｉｓｔは定数であり値「１４」を持つ。ＫｅｙＤｉｓｔ［］＝｛０，１，２，３，４，６，７，８，９，１０，１１，１２｝であり、ＫｅｙＤｉｓｔ［０］＝０、ＫｅｙＤｉｓｔ［１］＝１、ＫｅｙＤｉｓｔ［２］＝２、ＫｅｙＤｉｓｔ［３］＝３、ＫｅｙＤｉｓｔ［４］＝４、ＫｅｙＤｉｓｔ［５］＝６、ＫｅｙＤｉｓｔ［６］＝７、ＫｅｙＤｉｓｔ［７］＝８、ＫｅｙＤｉｓｔ［８］＝９、ＫｅｙＤｉｓｔ［９］＝１０、ＫｅｙＤｉｓｔ［１０］＝１１、ＫｅｙＤｉｓｔ［１１］＝１２という値を有する。上記（１）式において、ＫｅｙＤｉｓｔ［ｐｆ％１２］は、ピッチ変数ｐｆの値を１２で除算した剰余「ｐｆ％１２」（「％」は剰余演算を示す）をインデックスとするＫｅｙＤｉｓｔ［ｐｆ％１２］値である。なお、定数ＯｃｔＤｉｓｔは、１オクターブの鍵盤距離を表す定数である。１オクターブ間は１２半音であり、ＯｃｔＤｉｓｔも１２とすることも可能であるが、ここでは、便宜上、全ての白鍵−白鍵間の鍵盤距離を２とみなして、つまり、ミ−ファ間、シ−ド間も２半音であるとみなして、ＯｃｔＤｉｓｔとして１４という値を用いている。
【０１６２】
続いて、ＣＰＵ２０１は、ステップＳ１６０２と同様に、演奏情報ｎｏｔｅｔについても、その音高Ｐｉｔｃｈ（図１６中では「ｎｏｔｅｔ．Ｐｉｔｃｈ」と記載）をピッチ変数ｐｔに格納する。そして、ＣＰＵ２０１は、次式により鍵盤位置を算出し鍵盤位置変数ｋｅｙｔに格納する（ステップＳ１６０３）。
ｋｅｙｔ←ＯｃｔＤｉｓｔ×（ｐｔ／１２）＋ＫｅｙＤｉｓｔ［ｐｔ％１２］
・・・（２）
【０１６３】
その後、ＣＰＵ２０１は、ステップＳ１６０２で算出した鍵盤位置変数ｋｅｙｆの値からステップＳ１６０３で算出した鍵盤位置変数ｋｅｙｔの値を減算し、その減算結果を鍵盤距離変数ｄｉｓｔに格納する（ステップＳ１６０４）。
【０１６４】
次に、ＣＰＵ２０１は、現在のパート検索用変数ｉＨ（図７のステップＳ７０２とＳ７１２参照）の値が２であるか否か、すなわち、現在のパートが左手であるか否かを判定する（ステップＳ１６０５）。
【０１６５】
ＣＰＵ２０１は、現在のパートが左手でステップＳ１６０５の判定がＹＥＳならば、鍵盤距離変数ｄｉｓｔの値を−１倍する、すなわち符号を逆にする（ステップＳ１６０６）。
【０１６６】
ＣＰＵ２０１は、ステップＳ１６０６の処理の後、またはステップＳ１６０５の判定がＮＯの場合に、図１６のフローチャートで示される図１４のステップＳ１２２６の鍵盤距離の取得の処理を終了する。
【０１６７】
鍵盤距離の取得においては、指番号が大きい指の鍵盤位置から指番号が小さい指の鍵盤位置を減算して鍵盤距離ｄｉｓｔを算出している。従って、右手の場合、例えば人差し指の鍵盤位置が親指の鍵盤位置よりも大きな音高の位置にあれば、鍵盤距離ｄｉｓｔは正の値となる。また、右手において、親指で押鍵中に人差し指を親指の上を越えて親指の左側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離ｄｉｓｔは０より小さい値となる。同様に、人差し指で押鍵中に親指を人差し指の下をくぐって人差し指の右側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離ｄｉｓｔはやはり０より小さい値となる。
【０１６８】
左手については、得られた鍵盤距離ｄｉｓｔの値を−１倍することにより、右手と全く同じ関係にすることができる。すなわち、左手の場合、普通に左手を鍵盤上に置くと、人差し指の鍵盤位置は親指の鍵盤位置よりも小さい音高の位置になるため、その場合、指番号の大きな人差し指の鍵盤位置から親指の鍵盤位置を減算するとマイナスになってしまう。これを右手と同じ関係にするために、−１を乗算することによりプラス値にしている。この状態で、左手において、親指で押鍵中に人差し指を親指の上を越えて親指の右側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離ｄｉｓｔは０より大きな値となり、これを−１倍することにより、最終的な鍵盤距離ｄｉｓｔはマイナス値となる。同様に、人差し指で押鍵中に親指を人差し指の下をくぐって人差し指の左側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離ｄｉｓｔはやはり０より大きな値となり、これを−１倍することにより、最終的な鍵盤距離ｄｉｓｔはマイナス値となる。
【０１６９】
以上のようにして、親指がからんだ指超えまたは指くぐりが行われたときだけ、図１６のフローチャートにより算出される鍵盤距離変数ｄｉｓｔの値が０より小さい値となるようにすることができる。この状態が、図１４のステップＳ１２２７で判定される。
【０１７０】
図１７および図１８は、図７のステップＳ７１０の動作データ出力の処理の例を示すフローチャートである。
【０１７１】
始めに、ＣＰＵ２０１は、図１７のステップＳ１７０１からＳ１７０７の一連の処理を実行する。ここでは、変数の初期設定と、動作データのための今回の動作開始時間ｓｔａｒｔ、動作終了時間ｔｅｒｍ、トラック番号Ｈａｎｄの算出と設定が行われる。
【０１７２】
まず、ＣＰＵ２０１は、動作データ（図４）の各フレームｆｒａｍｅ［ｉ］を指示するためのフレームカウント用変数ｉに、現時点におけるフレームの総数ＦｒａｍｅＣｏｕｎｔの値を格納する（ステップＳ１７０１）。このフレームの総数ＦｒａｍｅＣｏｕｎｔは、図７のステップＳ７０３で値「０」に初期化され、後述する図１８のステップＳ１７２１で＋１ずつインクリメントされる。これにより、動作データの数が順次増やされてゆく。
【０１７３】
次に、ＣＰＵ２０１は、ステップＳ１７０２からＳ１７０７で、今回の動作タイミングにおける動作データを生成するときの、トラック番号Ｈａｎｄ、動作開始時間ｓｔａｒｔと動作終了時間ｔｅｒｍ（図４参照）を決定する。今回の演奏情報検索用変数ｉＮの値（図７のステップＳ７０５とＳ７１１参照）に対応する演奏情報Ｎｏｔｅ［ｉＮ］、およびそれと同時に押鍵または準備動作される出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］〜ｐｒｅｐ［４］が示す各演奏情報に対して、演奏ガイドを行うためには、次のような制御が必要となる。すなわち、その演奏ガイドは、演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅより前からガイド表示を開始し、発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅでガイドを終了（実際に押鍵）する必要がある。
【０１７４】
そこで、ＣＰＵ２０１はまず、動作開始時間ｓｔａｒｔ（同名の変数に格納されている）が、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅよりも大きいか否かを判定する。動作開始時間ｓｔａｒｔは、一番最初は図７のステップＳ７０３で値「０」に初期設定されている。また、動作途中では、一つ前の演奏情報検索用変数ｉＮの値における動作データ出力の処理の最後の図１８のステップＳ１７２２で、次の演奏情報検索用変数ｉＮの値のための動作開始時間ｓｔａｒｔが算出されている。
【０１７５】
上述のようにして算出されている今回の動作開始時間ｓｔａｒｔが今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅよりも後（大きい値）になっているときは、演奏ガイドは今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅよりも前になければならないので、動作開始時間ｓｔａｒｔの修正が必要となる。
【０１７６】
ＣＰＵ２０１は、ステップＳ１７０２の判定がＹＥＳならばさらに、前回の演奏情報の発音開始時刻ｌａｓｔｏｎ（同名の変数に格納されている）が、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅよりも小さいか否かを判定する（ステップＳ１７０３）。
【０１７７】
ステップＳ１７０３の判定がＹＥＳならば、ＣＰＵ２０１は、前回発音開始時刻ｌａｓｔｏｎから、前回発音開始時刻ｌａｓｔｏｎから今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅまでの経過時間に所定の比率ＲＡＴＩＯ（例えば８０％＝０．８）を乗算して得られる時間だけ経過した時点を、動作開始時間ｓｔａｒｔとして設定する。すなわち、
ｓｔａｒｔ←ｌａｓｔｏｎ＋（Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ−ｌａｓｔｏｎ）
×ＲＡＴＩＯ      ・・・（３）
これにより、前回の音の発音開始時刻から、今回の音の発音開始時刻までの時間の、例えば８０％（ＲＡＴＩＯで表される比率）だけ経過した時点を、動作開始時間ｓｔａｒｔとして設定することとなる。 
【０１７８】
一方、前回発音開始時刻ｌａｓｔｏｎがＮｏｔｅ［ｉＮ］．Ｔｉｍｅよりも小さくなくステップＳ１７０３の判定がＮＯの場合には、仕方がないので、前回発音開始時刻ｌａｓｔｏｎを今回の動作開始時間ｓｔａｒｔにセットする（ステップＳ１７０４）。
【０１７９】
算出されている動作開始時間ｓｔａｒｔが今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅよりも大きくはなくステップＳ１７０２の判定がＮＯの場合には、ＣＰＵ２０１は、その算出されている動作開始時間ｓｔａｒｔをそのまま使用する。
【０１８０】
以上のようにして今回の動作開始時間ｓｔａｒｔが決定した後、ＣＰＵ２０１は、演奏情報検索用変数ｉＮの次の値による次回の処理のために、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅを前回発音開始時刻ｌａｓｔｏｎとしてセットする（ステップＳ１７０６）。
【０１８１】
その後、ＣＰＵ２０１は、フレームカウント用変数ｉの値に対応する動作データｆｒａｍｅ［ｉ］のトラック番号Ｈａｎｄ（図１７では「ｆｒａｍｅ［ｉ］．Ｈａｎｄ」と記載）に、現在のパート検索用変数ｉＨの値（図７のステップＳ７０２，Ｓ７１２参照）を格納する。また、ＣＰＵ２０１は、動作データｆｒａｍｅ［ｉ］の動作開始時間ｓｔａｒｔ（図１７では「ｆｒａｍｅ［ｉ］．ｓｔａｒｔ」と記載）に、上述のように算出した今回の動作開始時間ｓｔａｒｔを格納する。さらに、ＣＰＵ２０１は、動作データｆｒａｍｅ［ｉ］の動作終了時間ｔｅｒｍ（図１７では「ｆｒａｍｅ［ｉ］．ｔｅｒｍ」と記載）に、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅを格納する（以上、ステップＳ１７０７）。
【０１８２】
ステップＳ１７０７の後、ＣＰＵ２０１は、図１８のステップＳ１７０８からＳ１７２２までの一連の処理を実行する。ここでは、今回の動作データのための５本の各指の演奏位置「ｐｏｓｉｔｉｏｎ［０］〜ｐｏｓｉｔｉｏｎ［４］」(指を置くべき鍵盤番号)、各指の状態「ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］」（それぞれ、値「−１」が準備動作、値「１」が押鍵）、奥行き方向の位置「Ｚｐｏｓ」などの情報の生成と設定が行われる。
【０１８３】
ＣＰＵ２０１は、ステップＳ１７０８で指番号指定変数ｉｆｉｇに初期値「０」（親指）を設定した後、ステップＳ１７１８でｉｆｉｇの値を＋１ずつインクリメントしながら、ステップＳ１７０９で片手の指の最大数「５」に達したと判定するまで、以下のステップＳ１７１０からＳ１７１７の一連の処理を実行する。
【０１８４】
まず、ＣＰＵ２０１は、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１７１０）。
【０１８５】
ステップＳ１７１０の判定がＹＥＳならば、現在処理中の指ｉｆｉｇについて、出力用の演奏情報ｐｒｅｐ［ｉｆｉｇ］が決定されているので、ＣＰＵ２０１は、ｐｒｅｐ［ｉｆｉｇ］の音高Ｐｉｔｃｈ（図３参照）（図１８中では「ｐｒｅｐ［ｉｆｉｇ］．Ｐｉｔｃｈ」と記載）を、今回の動作データｆｒａｍｅ［ｉ］の指番号ｉｆｉｇに対応する演奏位置ｐｏｓｉｔｉｏｎ［ｉｆｉｇ］（図１８中では「ｆｒａｍｅ［ｉ］．ｐｏｓｉｔｉｏｎ［ｉｆｉｇ］」と記載）に格納する（ステップＳ１７１１）。すなわち、現在処理中の指ｉｆｉｇに関しての指位置（ｐｏｓｉｔｉｏｎ）のデータとして、ｐｒｅｐ［ｉｆｉｇ］で決定されている演奏情報の音高を格納する。
【０１８６】
次に、ＣＰＵ２０１は、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］が示す演奏情報の発音開始時刻Ｔｉｍｅ（図１８中では「ｐｒｅｐ［ｉｆｉｇ］．Ｔｉｍｅ」と記載）が、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅと等しいか否か、すなわちｐｒｅｐ［ｉｆｉｇ］とＮｏｔｅ［ｉＮ］の各発音開始時刻Ｔｉｍｅが等しいか否かを判定する（ステップＳ１７１２）。これは、指番号ｉｆｉｇの押鍵がＮｏｔｅ［ｉＮ］．Ｔｉｍｅの押鍵と同時であるか否かを判定することとなる。
【０１８７】
ステップＳ１７１２の判定がＹＥＳならば、ＣＰＵ２０１は、今回の動作データｆｒａｍｅ［ｉ］の指番号ｉｆｉｇに対応する状態ｓｔａｔｕｓ［ｉｆｉｇ］（図１８中では「ｆｒａｍｅ［ｉ］．ｓｔａｔｕｓ［ｉｆｉｇ］」と記載）に、押鍵を示す値「１」を格納する（ステップＳ１７１３）。
【０１８８】
その後、ＣＰＵ２０１は、ステップＳ１７１８の処理に移行し、次の指番号の処理に進む。
【０１８９】
ステップＳ１７１２で、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の発音開始時刻Ｔｉｍｅが、今回の演奏情報Ｎｏｔｅ［ｉＮ］の発音開始時刻Ｔｉｍｅと等しくなく、ステップＳ１７１２の判定がＮＯならば、ＣＰＵ２０１は、ｐｒｅｐ［ｉｆｉｇ］＞Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅであるか否かを判定する（ステップＳ１７１４）。
【０１９０】
ステップＳ１７１４の判定がＹＥＳならば、現在の指番号ｉｆｉｇに対応するｐｒｅｐ［ｉｆｉｇ］が示す演奏情報は、準備動作を行うべきものである。このため、ＣＰＵ２０１は、今回の動作データの指番号ｉｆｉｇに対応する状態ｆｒａｍｅ［ｉ］．ｓｔａｔｕｓ［ｉｆｉｇ］に、準備動作を示す値「−１」を格納する（ステップＳ１７１５）。
【０１９１】
その後、ＣＰＵ２０１は、ステップＳ１７１８の処理に移行し、次の指番号の処理に進む。
【０１９２】
ステップＳ１７１４の判定がＮＯならば、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］には演奏情報へのポインタが格納されていないことを意味する。この場合には、ＣＰＵ２０１は、今回の動作データの指番号ｉｆｉｇに対応する状態ｆｒａｍｅ［ｉ］．ｓｔａｔｕｓ［ｉｆｉｇ］に、データ無しを示す値「０」を格納する（ステップＳ１７１６）。
【０１９３】
その後、ＣＰＵ２０１は、ステップＳ１７１８の処理に移行し、次の指番号の処理に進む。
【０１９４】
ステップＳ１７１０に戻って、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の値が未定義値ＮＵＬＬであって、ステップＳ１７１０の判定がＮＯならば、ＣＰＵ２０１は、今回の動作データの指番号ｉｆｉｇに対応する演奏位置ｆｒａｍｅ［ｉ］．ｐｏｓｉｔｉｏｎ［ｉｆｉｇ］に、データ無しを示す値「−１」を格納し、また、状態ｆｒａｍｅ［ｉ］．ｓｔａｔｕｓ［ｉｆｉｇ］に、データ無しを示す値「０」を格納する（ステップＳ１７１７）。
【０１９５】
その後、ＣＰＵ２０１は、ステップＳ１７１８の処理に移行し、次の指番号の処理に進む。
【０１９６】
以上のステップＳ１７１０からＳ１７１７までの一連の処理が、５本の全ての指番号ｉｆｉｇについて実行されると、ステップＳ１７０９の判定がＮＯとなる。
【０１９７】
この結果、ＣＰＵ２０１は、奥行き位置計算の処理を実行し、その結果得られる奥行き方向の位置を、変数Ｚｐｏｓに得る（ステップＳ１７１９）。
【０１９８】
ＣＰＵ２０１は、変数Ｚｐｏｓに得た奥行き方向の位置を、現在の動作データにｆｒａｍｅ［ｉ］．Ｚｐｏｓ（図４参照）として格納する（ステップＳ１７２０）。
【０１９９】
ＣＰＵ２０１は、動作データｆｒａｍｅ［ｉ］のフレームの総数ＦｒａｍｅＣｏｕｎｔを＋１インクリメントする（ステップＳ１７２１）。
【０２００】
最後に、ＣＰＵ２０１は、次回開始時刻の計算の処理を実行し、次の演奏情報検索用変数ｉＮの値のための動作開始時間ｓｔａｒｔを算出する（ステップＳ１７２２）。
【０２０１】
その後、ＣＰＵ２０１は、図１７および図１８のフローチャートで示される図７のステップＳ７１０の動作データ出力の処理を終了する。
【０２０２】
図１９は、図１８のステップＳ１７１９の奥行き位置計算の処理の例を示すフローチャートである。この処理では、現在の各指の押鍵や準備動作の状態から、手を鍵盤の奥行き方向に対して、どの位置に置くのが相応しいかを判定する。ここでは、鍵盤奥行き方向の手の位置として、ｚｐｏｓ＝１〜４の４段階で手の位置を定義し、このいずれの奥行き位置が相応しいかを判断している。
【０２０３】
まず、ＣＰＵ２０１は、奥行き位置変数ｚｐｏｓに暫定的に値「１」を格納する（ステップＳ１９０１）。この値は、鍵盤上の手前側に手を置き、全部白鍵を押鍵する位置にあることを指示する。
【０２０４】
次に、ＣＰＵ２０１は、親指に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１９０２）。
【０２０５】
ステップＳ１９０２の判定がＹＥＳならば、親指に対応する演奏情報が存在することになるので、ＣＰＵ２０１は、ｐｒｅｐ［０］が示す演奏情報の音高データｐｒｅｐ［０］．Ｐｉｔｃｈを、ピッチ変数ｐに格納する（ステップＳ１９０３）。
【０２０６】
さらに、ＣＰＵ２０１は、ピッチ変数ｐの値に対応する黒鍵判定定数ＢｌａｃｋＫｅｙ［ｐ］の値が「１」であるか否か、すなわち親指に対応する演奏情報が示す音高Ｐｉｔｃｈが黒鍵であるか否かを判定する（ステップＳ１９０４）。いま、黒鍵判定定数ＢｌａｃｋＫｅｙ［］＝｛０，１，０，１，０，０，１，０，１，０，１，０｝である。値「０」は白鍵を示し、値「１」は黒鍵を示す。この配列の並びは、実際の鍵盤楽器における白鍵と黒鍵の一般的な並びに対応している。この配列値を、ピッチ変数ｐをキー値として調べることにより、演奏情報が示す音高Ｐｉｔｃｈが黒鍵であるか否かを判定することができる。実際には、音高データｐｒｅｐ［０］．Ｐｉｔｃｈの値を、１２で除した余りの値を用いる等して、オクターブ内での音高を算出して判定を行う。
【０２０７】
ステップＳ１９０４の判定がＹＥＳならば、親指に対応する演奏情報が黒鍵であることになるので、ＣＰＵ２０１は、奥行き位置変数ｚｐｏｓに値「４」を格納する（ステップＳ１９０５）。この値は、片手の５本の指全てを鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、親指が黒鍵上に置かれるということは、５本の全ての指が自然に黒鍵上に置かれることを意味する。
【０２０８】
ステップＳ１９０５の処理の後、ＣＰＵ２０１は、図１９のフローチャートで示される図１８のステップＳ１７１９の奥行き位置計算の処理を終了する。
【０２０９】
一方、ステップＳ１９０２に戻って、親指に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［０］の値が未定義値ＮＵＬＬになっておりステップＳ１９０２の判定がＮＯならば、ＣＰＵ２０１は、小指に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［４］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１９０６）。
【０２１０】
ステップＳ１９０６の判定がＹＥＳならば、小指に対応する演奏情報が存在することになるので、ＣＰＵ２０１は、ｐｒｅｐ［４］が示す演奏情報の音高データｐｒｅｐ［４］．Ｐｉｔｃｈを、ピッチ変数ｐに格納する（ステップＳ１９０７）。
【０２１１】
さらに、ＣＰＵ２０１は、ピッチ変数ｐの値に対応する黒鍵判定定数ＢｌａｃｋＫｅｙ［ｐ］の値が「１」であるか否か、すなわち小指に対応する演奏情報が示す音高Ｐｉｔｃｈが黒鍵であるか否かを判定する（ステップＳ１９０８）。
【０２１２】
ステップＳ１９０８の判定がＹＥＳならば、小指に対応する演奏情報が黒鍵であることになるので、ＣＰＵ２０１は、奥行き位置変数ｚｐｏｓに値「３」を格納する（ステップＳ１９０９）。この値は、人差し指、中指、薬指、小指の４本の指を鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、小指が黒鍵上に置かれるということは、上記４本の指が自然に黒鍵上に置かれることを意味する。
【０２１３】
ステップＳ１９０９の処理の後、ＣＰＵ２０１は、図１９のフローチャートで示される図１８のステップＳ１７１９の奥行き位置計算の処理を終了する。
【０２１４】
親指に加えて、小指に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［４］の値が未定義値ＮＵＬＬになっておりステップＳ１９０６の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１９１０で変数ｉに値「１」を設定した後、ステップＳ１９１６で変数ｉの値を＋１ずつインクリメントしながら、ステップＳ１９１１で変数ｉの値が４に達したと判定するまで、以下のステップＳ１９１２からＳ１９１５までの一連の処理を実行する。
【０２１５】
まずＣＰＵ２０１は、変数ｉの値が示す指（「１」なら人差し指、「２」なら中指、「３」なら薬指）に対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉ］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ１９１２）。
【０２１６】
ステップＳ１９１２の判定がＹＥＳならば、ＣＰＵ２０１は、ｐｒｅｐ［ｉ］が示す演奏情報の音高データｐｒｅｐ［ｉ］．Ｐｉｔｃｈを、ピッチ変数ｐに格納する（ステップＳ１９１３）。
【０２１７】
さらに、ＣＰＵ２０１は、ピッチ変数ｐの値に対応する黒鍵判定定数ＢｌａｃｋＫｅｙ［ｐ］の値が「１」であるか否か、すなわち変数ｉの値に対応する指の演奏情報が示す音高Ｐｉｔｃｈが黒鍵であるか否かを判定する（ステップＳ１９１４）。
【０２１８】
ステップＳ１９１４の判定がＹＥＳならば、ＣＰＵ２０１は、奥行き位置変数ｚｐｏｓに値「２」を格納する（ステップＳ１９１５）。この値は、人差し指、中指、薬指の３本の指を鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、上記３本の何れかの指が黒鍵上に置かれるということは、上記３本の指が自然に黒鍵上に置かれることを意味する。
【０２１９】
ステップＳ１９１５の処理の後、ＣＰＵ２０１は、図１９のフローチャートで示される図１８のステップＳ１７１９の奥行き位置計算の処理を終了する。
【０２２０】
変数ｉの値が４になりステップＳ１９１１の判定がＮＯになった場合も、ＣＰＵ２０１は、図１９のフローチャートで示される図１８のステップＳ１７１９の奥行き位置計算の処理を終了するが、この場合は、いずれの指も黒鍵ではない場合に相当するので、奥行き位置変数ｚｐｏｓの値は、ステップＳ１９０１で初期設定された値「１」となっている。
【０２２１】
以上の奥行き位置計算の処理では、各指が押鍵をするのか準備動作をするのかにかかわらず、手を置く位置が計算される。
【０２２２】
図２０は、図１８のステップＳ１７２２の次回開始時刻の計算の処理の例を示すフローチャートである。
【０２２３】
ＣＰＵ２０１はまず、共に過去の動作開始時間を記憶する変数値である２回前動作開始時間ｓｔａｒｔＬａｓｔ［１］の値を３回前動作開始時間ｓｔａｒｔＬａｓｔ［２］に退避させ、１回前動作開始時間ｓｔａｒｔＬａｓｔ［０］の値を２回前動作開始時間ｓｔａｒｔＬａｓｔ［１］に退避させ、今回の動作開始時間ｓｔａｒｔを１回前動作開始時間ｓｔａｒｔＬａｓｔ［０］に退避させる（ステップＳ２００１）。３回前動作開始時間ｓｔａｒｔＬａｓｔ［２］は、図７のフローチャートの処理上では使用されないが、後述する図２５および図２６に示されるフローチャートにおける準備指示データ出力の処理で使用される。
【０２２４】
次に、ＣＰＵ２０１は、以下のステップＳ２００２からＳ２０１３の一連の処理によって、演奏情報検索用変数ｉＮの次の値に対応する次回の図１７および図１８の動作データ出力の処理のために、次回の動作開始時間ｓｔａｒｔを算出する。ここでは、現在発音されている演奏情報のうち、最も早く離鍵される音の演奏情報を基に、次回の動作開始時間ｓｔａｒｔが設定される。
【０２２５】
まず、ＣＰＵ２０１は、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅを暫定的に次回の動作開始時間ｓｔａｒｔに設定する（ステップＳ２００２）。
【０２２６】
次に、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅに今回の演奏情報の発音継続時間Ｎｏｔｅ［ｉＮ］．Ｇａｔｅ（図３参照）を加算した値が、その演奏情報のノートオフ時刻ＮｏｔｅＯｆｆ（同名の変数に格納される）として設定される。
【０２２７】
次に、ＣＰＵ２０１は、ステップＳ２００４で指番号指定変数ｉｆｉｇに初期値「０」（親指）を設定した後、ステップＳ２０１１でｉｆｉｇの値を＋１ずつインクリメントしながら、ステップＳ２００５で片手の指の最大数「５」に達したと判定するまで、以下のステップＳ２００６からＳ２０１０までの一連の処理を実行する。
【０２２８】
まず、ＣＰＵ２０１は、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ２００６）。
【０２２９】
ステップＳ２００６の判定がＹＥＳならば、ＣＰＵ２０１は、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数が示す演奏情報の、発音開始時刻ｐｒｅｐ［ｉｆｉｇ］．Ｔｉｍｅが、今回の演奏情報の発音開始時刻Ｎｏｔｅ［ｉＮ］．Ｔｉｍｅ以下か否か、すなわち指番号ｉｆｉｇの押鍵がＮｏｔｅ［ｉＮ］．Ｔｉｍｅの押鍵と同時若しくは、ｐｒｅｐ［ｉｆｉｇ］に入っている音が、今回の演奏情報Ｎｏｔｅ［ｉＮ］よりも前に押鍵されて、まだ押鍵持続中である音のいずれかであるか否かを判定する（ステップＳ２００７）。
【０２３０】
ステップＳ２００７の判定がＹＥＳならば、ＣＰＵ２０１は、現在の指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数が示す演奏情報の発音開始時刻ｐｒｅｐ［ｉｆｉｇ］．Ｔｉｍｅに、同じ演奏情報の発音継続時間ｐｒｅｐ［ｉｆｉｇ］．Ｇａｔｅに比率ＲＡＴＩＯ（例えば８０％＝０．８）を乗算して得た値を加算し、その加算結果を、現在調査中の演奏情報ｐｒｅｐ［ｉｆｉｇ］の動作終了時間として、ｔｅｒｍに設定する（ステップＳ２００８）。
【０２３１】
その後、ＣＰＵ２０１は、次回の動作開始時間ｓｔａｒｔが、現在調査中の演奏情報ｐｒｅｐ［ｉｆｉｇ］の動作終了時間ｔｅｒｍよりも小さく、かつ、現在調査中の演奏情報ｐｒｅｐ［ｉｆｉｇ］の動作終了時間ｔｅｒｍがノートオフ時刻ＮｏｔｅＯｆｆよりも小さいか否かを判定する（ステップＳ２００９）。
【０２３２】
ステップＳ２００９の判定がＹＥＳならば、ステップＳ２００８で算出した動作終了時間ｔｅｒｍが、現在発音されている演奏情報の中で、ここまでに調べた音のうち暫定的に最も早く離鍵するものである。この場合、ＣＰＵ２０１は、その動作終了時間ｔｅｒｍを新たなノートオフ時刻ＮｏｔｅＯｆｆとして設定する（ステップＳ２０１０）。
【０２３３】
ステップＳ２００９の判定がＮＯならば、ＣＰＵ２０１は、現在のノートオフ時刻ＮｏｔｅＯｆｆを維持する。
【０２３４】
ステップＳ２０１０の処理の後、またはステップＳ２００９の処理の判定がＮＯである場合、または、指番号ｉｆｉｇに対応する出力バッファ用演奏情報ポインタ変数ｐｒｅｐ［ｉｆｉｇ］が示す演奏情報が、同時若しくはそれ以前に押鍵されるものではなくステップＳ２００７の判定がＮＯの場合、あるいはｐｒｅｐ［ｉｆｉｇ］が未定義値ＮＵＬＬでステップＳ２００６の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ２０１１の処理に移行し、次の指番号の処理に進む。
【０２３５】
全ての指番号ｉｆｉｇに対する処理が終了しステップＳ２００５の判定がＮＯになると、ＣＰＵ２０１は、次回の動作開始時間ｓｔａｒｔがノートオフ時刻ＮｏｔｅＯｆｆよりも前（小さい）か否かを判定する（ステップＳ２０１２）。
【０２３６】
ステップＳ２０１２の判定がＹＥＳならば、ＣＰＵ２０１は、ノートオフ時刻ＮｏｔｅＯｆｆを次回の動作開始時間ｓｔａｒｔに設定し、ＮＯならば、現在の動作開始時間ｓｔａｒｔの値を維持して、図２０のフローチャートで示される図１８のステップＳ１７２２の次回開始時刻の計算の処理を終了する。
【０２３７】
図２１は、演奏情報の記憶例を示す図、図２２は、図２１の演奏情報に対応して、準備動作を考慮しないときの動作データの出力例を示す図、図２３は、図２１の演奏情報に対応して、図７から図２０のフローチャートで示される制御処理により、準備動作を考慮したときの動作データの出力例を示す図（その１）、図２４は、演奏ガイドの表示例を示す図（その１）である。
【０２３８】
図２１の演奏情報は、図３で説明したデータ構成例に従って、１行に１組の演奏情報、すなわち１行につき１音のデータが並んでいる。
【０２３９】
この演奏データに対して、準備動作を考慮しない場合には、図２２に例示されるように、各指の演奏位置ｐｏｓｉｔｉｏｎ［０］〜ｐｏｓｉｔｉｏｎ［４］毎に、音高が設定されると共に（値「−１」は音高設定無しを示す）、該当する状態ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］に、押鍵を行う場合は値「１」が、行わない場合は値「０」が設定されるだけである。従って、このような動作データに基づいて、演奏ガイドの表示が行われる場合には、図２２の例えば＊の位置では、音高６７の鍵がｐｏｓｉｔｉｏｎ［０］の親指で押鍵された後に音高「６７」の鍵の左隣りの音高「６６」の鍵がｐｏｓｉｔｉｏｎ［１］の人差し指で押鍵される。これは、親指の押鍵に対して人差し指によって指超えを行って次の押鍵を行う演奏テクニックを必要とする例である。しかし、図２２に例示される準備動作を考慮しない動作データでは、現在の押鍵に対して次にどのような押鍵がなされるかは知ることができないため、単純な演奏ガイド表示しか行うことができない。
【０２４０】
これに対して、図２１に例示される演奏データに対して、本実施形態の制御処理により準備動作を考慮した場合には、図２３に例示されるように、各指の演奏位置ｐｏｓｉｔｉｏｎ［０］〜ｐｏｓｉｔｉｏｎ［４］毎に、押鍵を行う指の音高と準備動作を行う指の音高が設定されると共に（値「−１」は音高設定無しを示す）、該当する状態ｓｔａｔｕｓ［０］〜ｓｔａｔｕｓ［４］に、押鍵を行う場合は値「１」が、準備動作を行う場合は値「−１」が、どちらも行わない場合は値「０」を設定することが可能となる。従って、このような動作データに基づいて、演奏ガイドの表示が行われる場合には、図２３の例えば＊の位置に示されるように、音高「６７」の鍵がｐｏｓｉｔｉｏｎ［０］の親指で押鍵されるときに、音高「６７」の鍵の左隣りの音高「６６」の鍵をｐｏｓｉｔｉｏｎ［１］の人差し指で押鍵する準備動作に入るべきことを、ｓｔａｔｕｓ［１］に設定される値「−１」と、ｐｏｓｉｔｉｏｎ［１］に設定される音高「６６」とで指定することができる。そして、親指が関係していることが認識されることによって、演奏ガイドの表示においては、現在の親指の押鍵に対して人差し指が指超えを行って次の押鍵を行う準備に入ることを表示させることが可能となる。これにより、ユーザは、押鍵時の演奏テクニックを習得することが可能となる。この場合、演奏情報としては、図２１に例示されるように、演奏テクニックのための特別な情報を持たせる必要はなく、指番号Ｆｉｎｇｅｒの情報から、準備動作の情報を自動的に生成することが可能となる。
【０２４１】
図２４は、演奏ガイドの表示例を示す図（その１）であり、右手の演奏ガイド表示を示している。鍵盤上の５個の丸い印は、右手の各指のポジションを示しており、左端の少し大きい丸印は親指を示し、右に向かって人差し指、中指、薬指、小指にそれぞれ対応する小さい丸印が示されている。左手の場合は、方向が逆になる。また、押鍵状態のときは、鍵盤が濃い色になる。
【０２４２】
図２４（ａ）の例では、親指が押鍵状態で、その他の指は準備状態であることが示されている。このとき、図１９のフローチャートで示した奥行き位置計算処理によって、図２４（ａ）の演奏ガイド例では、ｚｐｏｓに値「１」が格納されることにより、全ての指を白鍵上に置く指示が表示される。
【０２４３】
図２４（ｂ）の例も、親指が押鍵状態で、その他の指は準備状態であることが示されているが、図１９のフローチャートで示した奥行き位置計算処理によって、図２４（ｂ）の演奏ガイド例では、ｚｐｏｓに値「２」が格納されることにより、人差し指、中指、薬指の３本を黒鍵上に置き、親指と小指を白鍵上に置く指示が表示される。そして、人差し指は親指よりも半音低い黒鍵上に置いて準備する指示が表示されるため、演奏者は、自然に親指超えをして人差し指をＦ＃の黒鍵上に置いて準備する状態をとることができる。
【０２４４】
なお、指超えや指くぐりが発生したときに、それらを明示的に示すような表示がなされてもよい。
【０２４５】
図２５は、動作情報生成の処理の例を示すフローチャート（その２）である。図２５において、図７のフローチャートと同じ処理を実行する部分には、同じステップ番号を付してある。また、それぞれのステップの詳細なフローチャートは、図８から図２０で説明したものと同じである。図２５の処理が、図７のフローチャートで示される処理と異なる点は、ステップＳ２５０１の準備指示データ出力の処理が加わった点である。また、図２５のステップＳ７０３では、準備指示データの総数を示す変数ＰｒｅＭｏｔｉｏｎＣｏｕｎｔの値が「０」に初期設定される処理が追加されている。
【０２４６】
図２６は、図２５のステップＳ２５０１の準備指示データ出力の処理の例を示すフローチャートである。
【０２４７】
まず、ＣＰＵ２０１は、準備動作判定用変数の一つである準備実行指示変数Ｐｒｅｐａｒｅの値が「１」であるか否かを判定する（ステップＳ２６０１）。この準備実行指示変数Ｐｒｅｐａｒｅは、図２５のステップＳ７０９の準備確認の処理における図１５のステップＳ１２４１において、セットされている。
【０２４８】
ステップＳ２６０１の判定がＮＯならば、ＣＰＵ２０１は、図２６のフローチャートで示される図２５のステップＳ２５０１の準備指示データ出力の処理を、実質的に行わずに終了する。
【０２４９】
ステップＳ２６０１の判定がＹＥＳならば、ＣＰＵ２０１は、準備指示データ（図５）の各データＰｒｅｐＭｏｔｉｏｎ［ｉ］を指示するためのデータカウント用変数ｉに、現時点における準備指示データの総数ＰｒｅｐＭｏｔｉｏｎＣｏｕｎｔの値を格納する。その後、ＣＰＵ２０１は、ＰｒｅｐＭｏｔｉｏｎＣｏｕｎｔの値を＋１インクリメントする（以上、ステップＳ２６０２）。すなわち、配列ＰｒｅｐＭｏｔｉｏｎにおいて、今回データを記録すべき配列番号をｉにセットすると共に、その次の記録で用いる配列番号として、ＰｒｅｐＭｏｔｉｏｎＣｏｕｎｔの値を＋１インクリメントしておく。この準備指示データの総数ＰｒｅｐＭｏｔｉｏｎＣｏｕｎｔは、図２５のステップＳ７０３で値「０」に初期化された後、順次＋１ずつインクリメントされる。これにより、準備指示データの数が順次増やされてゆく。
【０２５０】
次に、ＣＰＵ２０１は、データカウント用変数ｉの値に対応する準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］のトラック番号Ｈａｎｄ（図２６では「ＰｒｅｐＭｏｔｉｏｎ［ｉ］．Ｈａｎｄ」と記載）に、現在のパート検索用変数ｉＨの値（右手・左手の別）（図２５のステップＳ７０２，Ｓ７１２参照）を格納する。
【０２５１】
次に、ＣＰＵ２０１は、準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］の準備開始時刻ｓｔａｒｔ（図２６では「ＰｒｅｐＭｏｔｉｏｎ［ｉ］．ｓｔａｒｔ」と記載）に、３回前動作開始時間ｓｔａｒｔＬａｓｔ［２］を格納する。この３回前動作開始時間ｓｔａｒｔＬａｓｔ［２］は、図２５のステップＳ７１０の動作データ出力の処理中の図１８のステップＳ１５２２の次回開始時刻の計算の処理における図２０のステップＳ２００１で設定されるデータ値である。この設定により、準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］は、早めの時間から準備指示表示されることになる。
【０２５２】
次に、ＣＰＵ２０１は、タイプ変数ｔｙｐｅに値「０」を初期設定する。
【０２５３】
その後、ＣＰＵ２０１は、指交差変数Ｐａｓｓｉｎｇの値が「１」であるか否かを判定する（ステップＳ２６０６）。指交差変数Ｐａｓｓｉｎｇは、親指に対する指超えまたは親指による指くぐりの状態が発生したときに、図２５のステップＳ７０９の準備確認の処理中の図１４のステップＳ１２２９によってセットされる。
【０２５４】
ステップＳ２６０６の判定がＹＥＳならば、ＣＰＵ２０１は、タイプ変数ｔｙｐｅに値「１」をセットする（ステップＳ２６０９）。
【０２５５】
ステップＳ２６０６の判定がＮＯならば、ＣＰＵ２０１は、移動変数Ｍｏｖｉｎｇの値が「１」であるか否かを判定する（ステップＳ２６０８）。移動変数Ｍｏｖｉｎｇは、基準値を超える鍵盤距離の移動（跳躍を伴う音形の演奏）が発生したときに、図２５のステップＳ７０９の準備確認の処理中の図１４のステップＳ１２３５によってセットされる。
【０２５６】
ステップＳ２６０８の判定がＹＥＳならば、ＣＰＵ２０１は、タイプ変数ｔｙｐｅに値「２」をセットする（ステップＳ２６０９）。
【０２５７】
ステップＳ２６０７、またはＳ２６０９の処理の後、あるいは、ステップＳ２６０８の判定がＮＯであった場合に、ＣＰＵ２０１は、準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］の準備タイプｔｙｐｅ（図２６では「ＰｒｅｐＭｏｔｉｏｎ［ｉ］．ｔｙｐｅ」と記載）に、タイプ変数ｔｙｐｅの値を格納する。
【０２５８】
その後、ＣＰＵ２０１は、ステップＳ２６１１からＳ２６１９の一連の処理で、準備終了時刻ｔｅｒｍを算出して設定する。
【０２５９】
まず、ＣＰＵ２０１は、準備開始時刻ｓｔａｒｔを準備終了時刻ｔｅｒｍに暫定的にセットする（ステップＳ２６１１）。
【０２６０】
次に、ＣＰＵ２０１は、ステップＳ２６１２で指番号指定変数ｉｆｉｇに初期値「０」（親指）を設定した後、ステップＳ２６１８でｉｆｉｇの値を＋１ずつインクリメントしながら、ステップＳ２６１３で片手の指の最大数「５」に達したと判定するまで、以下のステップＳ２６１４からＳ２６１７までの一連の処理を実行する。
【０２６１】
まず、ＣＰＵ２０１は、指番号ｉｆｉｇに対応する一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ｉｆｉｇ］の値が未定義値ＮＵＬＬでないか否かを判定する（ステップＳ２６１４）。
【０２６２】
ステップＳ２６１４の判定がＹＥＳならば、ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ｉｆｉｇ］が示す演奏情報のインデックス番号ｉｎｄｅｘ（図２６中では「ｐＬｉｓｔ［ｉｆｉｇ］．ｉｎｄｅｘ」と記載）を、現在の準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］の指番号ｉｆｉｇが示すインデックス番号ｉｎｄｅｘ［ｉｆｉｇ］（図２６中では「ＰｒｅｐＭｏｔｉｏｎ［ｉ］．ｉｎｄｅｘ［ｉｆｉｇ］」と記載）に格納する（ステップＳ２６１６）。一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［０］〜ｐＬｉｓｔ［４］は、図２５のステップＳ７１０の動作データ出力の処理中の図１８のステップＳ１５２２の次回開始時刻の計算の処理における図１４のステップＳ１２３０またはステップＳ１２３６で設定されている。
【０２６３】
さらに、ＣＰＵ２０１は、現在の指番号ｉｆｉｇが示す一時バッファ用演奏情報ポインタ変数ｐＬｉｓｔ［ｉｆｉｇ］が示す演奏情報の発音開始時刻Ｔｉｍｅ（図２６中では「ｐＬｉｓｔ［ｉｆｉｇ］．Ｔｉｍｅ」と記載）を、準備終了時刻ｔｅｒｍに格納する（ステップＳ２６１７）。すなわち、準備指示データによる演奏ガイドは、ｐＬｉｓｔ［ｉｆｉｇ］が示す演奏情報が発音を開始した時点で、終了する。
【０２６４】
全ての指番号ｉｆｉｇについての処理が終了しステップＳ２６１３の判定がＮＯになると、ＣＰＵ２０１は、現在の準備指示データＰｒｅｐＭｏｔｉｏｎ［ｉ］の準備終了時刻ｔｅｒｍに、準備終了時刻変数ｔｅｒｍの値を格納する（ステップＳ２６１９）。
【０２６５】
その後、ＣＰＵ２０１は、図２６のフローチャートで示される図２５のステップＳ２５０１の準備指示データ出力の処理を終了する。
【０２６６】
図２７は、準備指示データの出力例を示す図であり、図２８は、演奏ガイドの表示例を示す図（その２）である。
【０２６７】
これらの例に対応する演奏情報は、前述した図２１に例示されるものと同じである。また、出力される動作データは、前述した図２３に例示されるものと同じである。
【０２６８】
図２５および図２６のフローチャートの処理によって、図２７に示されるような準備指示データを出力することが可能となる。ここでは、押鍵位置の大きな移動を準備指示する準備タイプｔｙｐｅ＝２すなわち「Ｍｏｖｉｎｇ」の準備指示データと、指交差を準備指示する準備タイプｔｙｐｅ＝１すなわち「Ｐａｓｓｉｎｇ」の準備指示データが示されている。このような準備指示データを用いることにより、図２８に例示されるように、手の移動方向を準備指示する三角の黒い矢印を必要時間だけ表示させることが可能となる。
【０２６９】
以上説明したように、本実施形態によれば、演奏情報と運指情報のみから、押鍵のための情報にとどまらない演奏動作を遂行する上でのテクニックに相当する情報を生成することが可能となるため、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。また、準備に必要な箇所についてのユーザへの注意を喚起する情報を自動で生成できるなどの、楽器演奏の練習についての有用な情報の提供が可能になる。さらに、演奏情報に、熟達者による付加情報をつける必要がなくなるというメリットも生まれる。
以上の各実施形態に関して、更に以下の付記を開示する。
【０２７０】
（付記１）
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出し手段と、
前記演奏情報読み出し手段によって読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、
前記操作状態推定手段により推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、
を備えることを特徴とする演奏操作ガイド装置。
（付記２）
前記演奏情報は、複数のパートに分割され、
前記操作状態推定手段は、前記パート毎に前記演奏操作状態を推定し、
前記演奏操作ガイド手段は、前記パート毎に前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする付記１に記載の演奏操作ガイド装置。
（付記３）
前記演奏ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段は、前記演奏者の第１及び第２の演奏操作状態として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行い、
前記演奏操作ガイド手段は、当該推定された演奏者の手の位置に応じて前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする付記１または２のいずれかに記載の演奏操作ガイド装置。
（付記４）
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第１及び第２の演奏操作状態として、親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で前記親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指が演奏を行うべき指としてガイドするとともに、前記親指以外の指を演奏の準備を行うべき指としてガイドし、
前記親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で押鍵中に前記親指で前記親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指以外の指を演奏を行うべき指としてガイドするとともに、前記親指を演奏の準備を行うべき指としてガイドする、
ことを特徴とする付記１から３のいずれかに記載の演奏操作ガイド装置。
（付記５）
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第１及び第２の演奏操作状態として、鍵盤の所定の鍵が押鍵されている状態及び当該押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定した場合に、前記演奏操作ガイド手段は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドする、
ことを特徴とする付記１から４のいずれかに記載の楽器演奏のための演奏操作ガイド装置。
（付記６）
演奏操作ガイド装置に用いられる演奏操作ガイド方法であって、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出し、
前記読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定し、
前記推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う、
ことを特徴とする演奏操作ガイド方法。
（付記７）
演奏操作ガイド装置として用いられるコンピュータに、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出しステップと、
前記読み出された前記演奏情報夫々に基づいて、当該各演奏情報における演奏者の演奏操作状態を推定する操作状態推定ステップと、
前記推定された第１の演奏操作状態と、当該第１の演奏操作状態より後に推定された第２の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイドステップと、
を実行させる演奏操作ガイドプログラム。
【符号の説明】
【０２７１】
１００  演奏操作ガイド装置
１０１  演奏情報読み出し手段
１０２  操作状態推定手段
１０３  演奏動作ガイド手段
１０４  記憶部
１０５  演奏情報
１０６  第１の演奏操作状態
１０７  第２の演奏操作状態
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  入力部
２０５  表示部
２０６  ＭＩＤＩ  Ｉ／Ｆ（ＭＩＤＩインタフェース部）
２０７  バス
２０８  電子楽器
【図１】
2015069170.tif 000003
【図２】
2015069170.tif 000004
【図３】
2015069170.tif 000005
【図４】
2015069170.tif 000006
【図５】
2015069170.tif 000007
【図６】
2015069170.tif 000008
【図７】
2015069170.tif 000009
【図８】
2015069170.tif 000010
【図９】
2015069170.tif 000011
【図１０】
2015069170.tif 000012
【図１１】
2015069170.tif 000013
【図１２】
2015069170.tif 000014
【図１３】
2015069170.tif 000015
【図１４】
2015069170.tif 000016
【図１５】
2015069170.tif 000017
【図１６】
2015069170.tif 000018
【図１７】
2015069170.tif 000019
【図１８】
2015069170.tif 000020
【図１９】
2015069170.tif 000021
【図２０】
2015069170.tif 000022
【図２１】
2015069170.tif 000023
【図２２】
2015069170.tif 000024
【図２５】
2015069170.tif 000025
【図２６】
2015069170.tif 000026
【図２７】
2015069170.tif 000027
【図２３】
2015069170.tif 000028
【図２４】
2015069170.tif 000029
【図２８】
2015069170.tif 000030
【手続補正書】
【提出日】平成25年10月3日(2013.10.3)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2015069170.tif 000031