(57)【特許請求の範囲】
【請求項１】
複数の音符からなる楽譜の画像データ、当該楽譜を構成する各音符の表示位置ごとの複数の画像データで構成されるガイド用の画像データ、及び当該楽譜の楽音データを含む曲データを受信して記憶手段に記憶する受信手段と、
前記記憶手段から読み出した楽譜の画像データに基づいて楽譜の画像を所定の表示手段に表示するとともに、曲の進行に応じて次に演奏すべき音符の表示位置データに対応する演奏ガイド用の画像データを選択的に前記記憶手段から読み出して当該演奏ガイド用の画像を前記表示手段に表示する表示制御手段と、
次に演奏すべき操作子をガイドする演奏手段に対して前記演奏ガイド用の画像の位置に対応する音符の楽音データを前記記憶手段から読み出して出力する出力制御手段と、
を有することを特徴とする演奏教習装置。
【請求項２】
前記ガイド用の画像データは、当該楽譜を構成する複数の音符の表示位置データを含み、前記表示制御手段は、次に演奏すべき音符の表示位置データに基づいて前記演奏ガイド用の画像を表示することを特徴とする請求項１に記載の演奏教習装置。
【請求項３】
前記表示制御手段は、次に演奏すべき音符に対応する前記演奏ガイド用の画像の表示を点滅することを特徴とする請求項１及び２のいずれか１項に記載の演奏教習装置。
【請求項４】
前記表示制御手段は、前記演奏手段から受信した演奏結果のデータが前記出力制御手段によって出力された楽音データと一致しない場合には、当該演奏結果のデータを画像として表示することを特徴とする請求項１〜３のいずれか１項に記載の演奏教習装置。
【請求項５】
前記表示制御手段は、前記演奏結果のデータを当該演奏結果の音高を示す音符の画像として表示することを特徴とする請求項４に記載の演奏教習装置。
【請求項６】
前記表示制御手段は、前記音高を示す音符の画像を前記記憶手段から読み出した音符の画像とは異なる表示色で表示することを特徴とする請求項５に記載の演奏教習装置。
【請求項７】
前記表示制御手段は、前記演奏結果のデータを音符の画像とは異なる特異な画像として表示することを特徴とする請求項４に記載の演奏教習装置。
【請求項８】
複数の音符からなる楽譜の画像データ、ガイド用の画像データ、及び当該楽譜の楽音データを含む曲データを受信して記憶手段に記憶する受信手順と、
前記記憶手段から読み出した楽譜の画像データに基づいて楽譜の画像を所定の表示手段に表示するとともに、曲の進行に応じて次に演奏すべき音符の表示位置データに対応する演奏ガイド用の画像データを選択的に前記記憶手段から読み出して当該演奏ガイド用の画像を前記表示手段に表示する表示制御手順と、
次に演奏すべき操作子をガイドする演奏手段に対して前記演奏ガイド用の画像の位置に対応する音符の楽音データを前記記憶手段から読み出して出力する出力制御手順と、
を実行する演奏教習処理のプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演奏教習装置及び演奏教習処理のプログラムを記憶した記憶媒体に関する。
【０００２】
【従来の技術】
インターネット等の通信手段を介して曲データを受信してＲＡＭ等のメモリにダウンロードし、その曲データに基づいて演奏教習を行うことが提案されている。例えば、鍵盤楽器等で演奏教習を行う場合には、各鍵の下部に設けられた発光素子によって受信した曲データの音高データに対応する鍵を照光して、演奏すべき鍵のナビゲーションを行う構成になっている。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の提案においては、照光されている鍵を演奏することはできても、楽譜に合わせて演奏することはできなかった。このため、本来の演奏練習としての「目で見た楽譜を手の運動に結びつける（変換する）」イメージトレーニングをすることができなかった。
【０００４】
本発明の課題は、インターネット等の通信手段を介して受信した曲データに基づいて、楽譜に合わせて演奏教習を行えるようにすることである。
【０００５】
【課題を解決するための手段】
請求項１に記載の演奏教習装置は、複数の音符からなる楽譜の画像データ、ガイド用の画像データ、及び当該楽譜の楽音データを含む曲データを受信して記憶手段（実施形態においては、図３のＨＤ４２に対応する）に記憶する受信手段(実施形態においては、図３のＣＰＵ３１及びＭＯＤＥＭ４０に対応する)と、前記記憶手段から読み出した楽譜の画像データに基づいて楽譜の画像を所定の表示手段（実施形態においては、図３の表示部３９に対応する）に表示するとともに、曲の進行に応じて次に演奏すべき音符の表示位置データに対応する演奏ガイド用の画像データを選択的に前記記憶手段から読み出して当該演奏ガイド用の画像を前記表示手段に表示する表示制御手段(実施形態においては、図３のＣＰＵ３１に対応する)と、次に演奏すべき操作子（実施形態においては、図２の鍵盤１９に対応する）をガイドする演奏手段（実施形態においては、図１の楽器１に対応する）に対して前記演奏ガイド用の画像の位置に対応する音符の楽音データを前記記憶手段から読み出して出力する出力制御手段(実施形態においては、図３のＣＰＵ３１及びＭＩＤＩインターフェース３６に対応する)と、を有する構成になっている。
【０００６】
請求項８に記載の記憶媒体は、複数の音符からなる楽譜の画像データ、ガイド用の画像データ、及び当該楽譜の楽音データを含む曲データを受信して記憶手段に記憶する受信手順と、前記記憶手段から読み出した楽譜の画像データに基づいて楽譜の画像を所定の表示手段に表示するとともに、曲の進行に応じて次に演奏すべき音符の表示位置データに対応する演奏ガイド用の画像データを選択的に前記記憶手段から読み出して当該演奏ガイド用の画像を前記表示手段に表示する表示制御手順と、次に演奏すべき操作子をガイドする演奏手段に対して前記演奏ガイド用の画像の位置に対応する音符の楽音データを前記記憶手段から読み出して出力する出力制御手順と、を実行する楽音発生処理のプログラムを記憶している。
【０００７】
請求項１又は請求項９に記載の発明によれば、演奏ガイド用の楽音データを演奏手段に出力するとともに、音符の画像及び演奏ガイド用の画像を表示手段に表示し、曲の進行に応じて演奏ガイド用の画像を移動して出力する楽音データに対応する音符を指示する。
【０００８】
【発明の実施の形態】
以下、本発明による実施形態について図を参照して説明する。
図１は、本発明を適用する場合のシステム構成を示している。鍵盤を有する楽器１は、各鍵に対応してＬＥＤの発光素子が設けられている。また、ＲＳ２３２Ｃ等の通信ケーブルによってパソコン２に接続され、ＭＩＤＩ形式の曲データの授受を行っている。ネットワーク３は、インターネットやその他の通信回線であり、パソコン２と曲データサーバ４との間をオンライン接続する。曲データサーバ４は、多数の曲データのデータベースを備えており、パソコン２からの要求に応じて、曲データを配信する。
【０００９】
図２は、図１における楽器１の構成を示すブロック図である。ＣＰＵ１１には、システムバス１２を介して、ＲＯＭ１３、ＲＡＭ１４、キースキャンインターフェース１５、ＬＥＤＣ（ＬＥＤコントローラ）１６、音源１７、ＭＩＤＩインターフェース１８が接続され、これらと間でデータ及びコマンドの授受をおこなっている。ＲＯＭ１３は、ＣＰＵ１１が実行する制御プログラム、初期データ等を格納している。ＲＡＭ１４は、ＣＰＵ１１のワークエリアであり、システムバス１２を介して授受するデータを一時的に記憶する。
【００１０】
キースキャンインターフェース１５は、鍵盤１９に接続され、ＣＰＵ１１からのキースキャンコマンドに応じて各鍵のオン・オフ状態を走査して検出する。ＬＥＤＣ１６は、鍵盤１９の各鍵の下側に設けられている発光素子であるＬＥＤ２０に接続され、ＣＰＵ１１の点灯指令又は消灯指令に応じてＬＥＤ２０の駆動を制御する。音源１７は、Ａ／Ｄコンバータ、アンプ、スピーカ等からなるサウンドシステム２１に接続され、ＣＰＵ１１の発音指令又は消音指令に応じてサウンドシステム２１の発音又は消音を制御する。
【００１１】
ＭＩＤＩインターフェース１８は、ＭＩＤＩ形式の曲データのイベントをパソコン２から受信してＲＡＭ１４の曲データバッファにストアする。ＣＰＵ１１は、曲データに応じて演奏教習を行う。すなわち、ノートオンのイベントに応じて、その音高に対応する鍵のＬＥＤを点灯させる。また、そのイベントのベロシティについても演奏教習の機能をもっている場合には、ベロシティに応じて、例えばＬＥＤの点滅の速さを制御してもよい。
【００１２】
図３は、パソコン２のシステム構成を示している。ＣＰＵ３１には、システムバス３２を介して、ＲＯＭ３３、ＲＡＭ３４、ＶＲＡＭ３５、ＭＩＤＩインターフェース３６、キースキャンインターフェース３７、ＨＤＣ（ハードディスクコントローラ）３８、表示部３９、及びＭＯＤＥＭ４０が接続されている。ＣＰＵ３１は、これらと間でデータ及びコマンドの授受をおこなってパソコン２全体を制御している。
【００１３】
ＲＯＭ３３は、ＣＰＵ３１が実行する制御プログラム、初期データ等を格納している。ＲＡＭ３４は、ＣＰＵ３１のワークエリアであり、システムバス３２を介して授受するデータを一時的に記憶する。ＶＲＡＭ３５は、表示部３９に表示する１フィールド分の画像データ（ビットマップデータ）を記憶する。ＭＩＤＩインターフェース３６は、ＣＰＵ３１の指令に応じて、楽器１のＣＰＵ１１との間で通信制御を行い、ＭＩＤＩ形式の曲データを転送するとともに、楽器１の鍵盤１９の押鍵状態を受信する。
【００１４】
キースキャンインターフェース３７は、キーボード及びマウスからなる操作部４１に接続され、ＣＰＵ１１からのキースキャンコマンドに応じて各キーのオン・オフ及びマウスの移動及びクリックの状態を走査して検出する。ＨＤＣ３８は、外部記憶媒体であるＨＤ（ハードディスク）４２を収容し、ＣＰＵ３１の指令に応じて曲データサーバ４からダウンロードした曲データの書込み、及びダウンロードした曲データの読出しを制御する。表示部３９は、曲データのリスト画面、ダウンロード画面、曲データの再生画面等を表示する。ＭＯＤＥＭ４０は、ＣＰＵ３１の通信接続指令に応じてネットワーク３に接続する通信プロトコルを実行する。
【００１５】
次に、図１に示したシステム構成の動作について詳細に説明する。
まず、曲データサーバ４の動作について説明する。
図４〜図８は、サーバ内のメモリエリアマップを示す図である。図４に示すように、サーバのメモリエリアには、バッファエリア、ＲＧＢ（カラー表示楽譜）エリア、ＣＭＤ（演奏ガイド用コマンド）エリア、ＭＩＤ（曲データ）エリア、ＳＥＴ（再生情報）エリア、ＰＡＴ（伴奏パターン）エリアがある。
【００１６】
バッファエリアには、ヘッダデータとともに、他のエリアのデータ、すなわちＲＧＢデータ、ＣＭＤデータ、ＭＩＤデータ、ＳＥＴデータ、及びＰＡＴデータが一時的にストアされる。ヘッダデータは、バッファエリア内のすべてのファイル数、ＲＧＢ用、ＣＭＤ用、ＭＩＤ用、ＳＥＴ用、及びＰＡＴ用のヘッダデータがストアされる。例えば、ＲＧＢ用のヘッダデータとしては、ファイル名、スタートアドレス、エンドアドレスがある。他のヘッダデータも同様である。
【００１７】
図５は、ＲＧＢエリアの楽譜データのレイヤ構造を示している。最上位のレイヤは、複数（例えばＮ個）の曲に対応する楽譜データ、ＲＧＢ（１）、ＲＧＢ（２）、ＲＧＢ（３）、…  ＲＧＢ（Ｎ）で構成されている。その下位の各曲ごとのレイヤ、例えばＲＧＢ（１）の下位レイヤは、複数の楽器の機種に対応する楽譜データ、ＲＧＢ（１、１）、ＲＧＢ（１、２）、ＲＧＢ（１、３）、…  ＲＧＢ（１、Ｎ）で構成されている。さらにその下位の各機種ごとのレイヤ、例えばＲＧＢ（１、１）の下位レイヤは、複数のスキル（ユーザの熟練度）に対応する楽譜データ、ＲＧＢ（１、１、１）、ＲＧＢ（１、１、２）、ＲＧＢ（１、１、３）、…  ＲＧＢ（１、１、Ｎ）で構成されている。そして、各スキルのデータ、例えばＲＧＢ（１、１、１）のデータは、ファイル名及び楽譜データで構成されている。
【００１８】
図６は、ＰＡＴエリアの伴奏パターンデータのレイヤ構造を示している。最上位のレイヤは、複数（Ｎ個）の曲に対応する伴奏パターンデータ、ＰＡＴ（１）、ＰＡＴ（２）、ＰＡＴ（３）、…  ＰＡＴ（Ｎ）で構成されている。その下位の各曲ごとのレイヤ、例えばＰＡＴ（１）の下位レイヤは、複数の楽器の機種に対応する伴奏パターンデータ、ＰＡＴ（１、１）、ＰＡＴ（１、２）、ＰＡＴ（１、３）、…  ＰＡＴ（１、Ｎ）で構成されている。さらにその下位の各機種ごとのレイヤ、例えばＰＡＴ（１、１）の下位レイヤは、複数のスキル（ユーザの熟練度）に対応する伴奏パターンデータ、ＰＡＴ（１、１、１）、ＰＡＴ（１、１、２）、ＰＡＴ（１、１、３）、…  ＰＡＴ（１、１、Ｎ）で構成されている。そして、各スキルのデータ、例えばＰＡＴ（１、１、１）のデータは、ファイル名及び伴奏パターンデータで構成されている。
【００１９】
この伴奏パターンデータは、後述するように、パソコンを介して楽器にダウンロードされて、楽器のユーザーエリアにストアされるが、楽器の機種によってはユーザーエリアをもっていないものもある。例えば、図６におけるＰＡＴ（１、３）に対応する機種にはユーザーエリアがない。したがって、その伴奏パターンデータは「なし」となっている。
【００２０】
図７は、ＣＭＤエリアの描画コマンドデータのレイヤ構造を示している。最上位のレイヤは、複数（Ｎ個）の曲に対応する描画コマンド、ＣＭＤ（１）、ＣＭＤ（２）、ＣＭＤ（３）、…  ＣＭＤ（Ｎ）で構成されている。その下位の各曲ごとのレイヤ、例えばＣＭＤ（１）の下位レイヤは、複数の楽器の機種に対応する描画コマンド、ＣＭＤ（１、１）、ＣＭＤ（１、２）、ＣＭＤ（１、３）、…ＣＭＤ（１、Ｎ）で構成されている。さらにその下位の各機種ごとのレイヤ、例えばＣＭＤ（１、１）の下位レイヤは、複数のスキル（ユーザの熟練度）に対応する描画コマンド、ＣＭＤ（１、１、１）、ＣＭＤ（１、１、２）、ＣＭＤ（１、１、３）、…  ＣＭＤ（１、１、Ｎ）で構成されている。そして、各スキルのデータ、例えばＣＭＤ（１、１、１）のデータは、ファイル名及び描画コマンドで構成されている。
【００２１】
描画コマンドのデータは、楽譜を構成する複数の音符ごとに用意されており、図８に示すように、ＷＡＫＵ（０）、ＷＡＫＵ（１）、…、ＷＡＫＵ（Ｎ）からなる複数のデータで構成されている。そして各データは、表示位置を示す座標（ｘ，ｙ）、大きさ（形状が四角の場合には、高さ及び幅）、形状（四角、丸）、色、及び外枠線（幅、種類）のデータで構成されている。
【００２２】
次に、曲データサーバの動作についてフローチャートを参照して説明する。図９は、曲データサーバのメインフローである。パソコンから受信があるか否かを判別し（ステップＳＡ１）、受信があったときは曲番号を受信したか否かを判別する（ステップＳＡ２）。曲番号を受信したときは、レジスタＭＥＬＯＤＹにその受信データをセットする（ステップＳＡ３）。そして、メロディフラグＭＦに１をセットする（ステップＳＡ４）。ステップＳＡ２において、受信データが曲番号でない場合には、受信データが環境データであるか否かを判別する（ステップＳＡ５）。環境データである場合には、環境データの中の機種データをレジスタにセットし、環境データの中のスキルデータをレジスタＳＫＩＬＬにセットする（ステップＳＡ６）。そして、環境フラグＫＦに１をセットする（ステップＳＡ７）。
【００２３】
次に、ＭＦ及びＫＦがともに１であるか否かを判別する（ステップＳＡ８）。ともに１でない場合には、ステップＳＡ１に移行して、受信データの有無を判別する。ＭＦ及びＫＦがともに１である場合には、ファイル作成処理を実行する（ステップＳＡ９）。次に、その作成したファイルをパソコンに送信する送信処理を実行し（ステップＳＡ１０）、ＭＦ及びＫＦをともに「０」にリセットする（ステップＳＡ１１）。そして、ステップＳＡ１に移行して、受信データの有無を判別する。
【００２４】
図１０〜図１２は、図９のフローにおけるステップＳＡ９のファイル作成処理のフローである。図１０のフローにおいて、ＲＧＢエリア内でＲＧＢ（ＭＥＬＯＤＹ、ＫＩＳＨＵ、ＳＫＩＬＬ）のファイルを指定する（ステップＳＢ１）。次に、バッファ内に指定ファイルのデータをストアする（ステップＳＢ２）。さらに、ヘッダ部にファイル名、スタートアドレス、エンドアドレスを書込む（ステップＳＢ３）。また、ＣＭＤエリア内のＣＭＤ（ＭＥＬＯＤＹ、ＫＩＳＨＵ、ＳＫＩＬＬ）のファイルを指定する（ステップＳＢ４）。次に、バッファ内に指定ファイルのデータをストアする（ステップＳＢ５）。さらに、ヘッダ部にファイル名、スタートアドレス、エンドアドレスを書込む（ステップＳＢ６）。
【００２５】
次に、図１１のフローにおいて、ＭＩＤエリア内のＭＩＤ（ＭＥＬＯＤＹ、ＫＩＳＨＵ、ＳＫＩＬＬ）のファイルを指定する（ステップＳＢ７）。次に、バッファ内に指定ファイルのデータをストアする（ステップＳＢ８）。さらに、ヘッダ部にファイル名、スタートアドレス、エンドアドレスを書込む（ステップＳＢ９）。また、ＳＥＴエリア内のＳＥＴ（ＭＥＬＯＤＹ、ＫＩＳＨＵ、ＳＫＩＬＬ）のファイルを指定する（ステップＳＢ１０）。その指定したデータがあるか否かを判別し（ステップＳＢ１１）、データがある場合にはバッファ内に指定ファイルのデータをストアする（ステップＳＢ１２）。さらに、ヘッダ部にファイル名、スタートアドレス、エンドアドレスを書込む（ステップＳＢ１３）。データがない場合には当然、データのストア及びヘッダ部の書込みは行わない。
【００２６】
次に、図１２のフローにおいて、ＰＡＴエリア内のＰＡＴ（ＭＥＬＯＤＹ、ＫＩＳＨＵ、ＳＫＩＬＬ）のファイルを指定する（ステップＳＢ１４）。その指定したデータがあるか否かを判別し（ステップＳＢ１５）、データがある場合にはバッファ内に指定ファイルのデータをストアする（ステップＳＢ１６）。さらに、ヘッダ部にファイル名、スタートアドレス、エンドアドレスを書込む（ステップＳＢ１７）。データがない場合には当然、データのストア及びヘッダ部の書込みは行わない。この後、バッファ内に書込まれたファイル数Ｎをヘッダ部に書込み（ステップＳＡ１８）、図９のメインフローに戻る。
【００２７】
図１３は、図１に示したパソコン２のメモリエリアを示している。メモリエリアは、バッファエリア、楽譜エリア、描画コマンドエリア、ＭＩＤＩデータエリア、伴奏曲設定情報エリア、伴奏パターンエリアで構成されている。また各エリアは、ヘッダ部及びファイル部で構成されている。
【００２８】
次に、パソコンの動作について図３に示したＣＰＵ３１のフローチャート及び表示部３９の画面を参照して説明する。図１４は、ＣＰＵ３１のメインフローである。所定のイニシャライズ処理（ステップＰＡ１）の後、図１５に示すメニュー画面を表示する（ステップＰＡ２）この画面には、「曲ダウンロード」及び「曲再生」のアイコンスイッチが表示される。そして、アイコンスイッチがオンされたか否かを判別する（ステップＰＡ３）。
【００２９】
アイコンスイッチがオンされたときは、ダウンロードのアイコンスイッチがオンされたか、又は再生のアイコンスイッチがオンされたかを判別する（ステップＰＡ４）。ダウンロードのアイコンスイッチがオンされたときはダウンロード処理を実行し（ステップＰＡ５）、再生のアイコンスイッチがオンされたときは再生処理を実行する（ステップＰＡ６）。ダウンロード処理又は再生処理の後は、ステップＰＡ２に移行してメニュー画面を表示する。
【００３０】
図１６は、図１４のフローにおけるステップＰＡ５のダウンロード処理のフローである。まず、図１７に示すダウンロードメニュー画面を表示する（ステップＰＢ１）。すなわち、「曲リスト」、「環境設定」、「送信」、及び「戻る」のアイコンスイッチを表示する。そして、アイコンスイッチがオンされたか否かを判別する（ステップＰＢ２）。アイコンスイッチがオンされたときは、そのオンされたアイコンスイッチに応じた処理を行う。
【００３１】
曲リストアイコンスイッチがオンされたか否かを判別し（ステップＰＢ３）、オンされたときは曲選択処理を実行する（ステップＰＢ４）。環境設定アイコンスイッチがオンされたか否かを判別し（ステップＰＢ５）、このアイコンがオンされたときは環境設定処理を実行する（ステップＰＢ６）。曲選択処理又は環境設定処理を実行した後は、ステップＰＢ１に移行して図１７のメニュー画面を表示する。
【００３２】
曲リスト及び環境設定のアイコンスイッチがオンされない場合には、送信アイコンスイッチがオンされたか否かを判別し（ステップＰＢ７）、オンされたときは送受信処理を実行する（ステップＰＢ８）。この後は、設定内容をクリアして（ステップＰＢ９）、図１４のメインフローに戻る。送信アイコンスイッチがオンされない場合には、戻りアイコンスイッチがオンされたか否かを判別し（ステップＰＢ）、オンされたときは設定内容をクリアして（ステップＰＢ９）、図１４のメインフローに戻る。戻りアイコンがオンされない場合には、ステップＰＢ１に移行する。
【００３３】
図１８は、図１６のフローにおけるステップＰＢ４の曲選択処理のフローである。まず、図１９に示す曲リストを表示する（ステップＰＣ１）。この画面には、曲リストの他に「ＯＫ」アイコンスイッチ及び「戻る」アイコンスイッチが表示される。次に、いずれかの曲リストがオンされたか否かを判別し（ステップＰＣ２）、オンされたときはその曲番号をレジスタＭＥＬＯＤＹにセットする（ステップＰＣ３）。
【００３４】
曲リストがオンされない場合には、アイコンスイッチがオンされたか否かを判別する（ステップＰＣ４）。オンされたときは、戻りアイコンスイッチがオンされたのか、又はＯＫアイコンスイッチがオンされたかを判別する（ステップＰＣ５）。戻りアイコンスイッチがオンされたときは、ＭＥＬＯＤＹにセットされている曲番号をクリアして（ステップＰＣ６）、図１６のフローに戻る。ＯＫアイコンスイッチがオンされたときは、ＭＥＬＯＤＹにセットされている曲番号を保持した状態で、図１６のフローに戻る。
【００３５】
図２０は、図１６のフローにおけるステップＰＢ６の環境設定処理のフローである。まず、図２１に示す環境設定画面を表示する（ステップＰＤ１）。この画面には、楽器の機種名を表示するエリアと演奏者のスキルを表示するエリアがあり、「戻る」アイコンスイッチ及び「ＯＫ」アイコンスイッチが表示される。環境設定画面を表示した後、キーボードから文字等のデータ入力があるか否かを判別する（ステップＰＤ２）。
【００３６】
入力があったときは、そのデータが機種名であるか否かを判別する（ステップＰＤ３）。機種名である場合には、その機種名のデータをレジスタＫＩＳＨＵにセットする（ステップＰＤ４Ａ）。そして、ＫＩＳＨＵのデータを送信バッファにストアする（ステップＰＤ４Ｂ）。また、ＫＩＳＨＵにセットされた機種名を画面の対応するエリアに表示する（ステップＰＤ５）。入力されたデータが機種名でない場合すなわちそのデータが演奏レベル（スキル）である場合には、その演奏レベルのデータをレジスタＳＫＩＬＬにセットする（ステップＰＤ６Ａ）。そして、ＳＫＩＬＬのデータを送信バッファにストアする（ステップＰＤ６Ｂ）。また、ＳＫＩＬＬにセットされた演奏レベルを画面の対応するエリアに表示する（ステップＰＤ７）。機種名又は演奏レベルを表示した後は、ステップＰＤ２に移行してデータ入力を判別する。
【００３７】
キーボードからデータ入力がない場合には、アイコンスイッチがオンされたか否かを判別する（ステップＰＤ８）。アイコンスイッチがオンされたときは、オンされたのが戻りアイコンスイッチであるか、又はＯＫアイコンスイッチであるかを判別する（ステップＰＤ９）。オンされたのが戻りアイコンスイッチである場合には、設定内容をクリアして（ステップＰＤ１０）、図１６のフローに戻る。オンされたのがＯＫアイコンスイッチである場合には、設定内容を保持した状態で図１６のフローに戻る。
【００３８】
図２２及び図２３は、図１６のフローにおけるステップＰＢ８の送受信処理のフローである。図２２において、送信データがあるか否かを判別し（ステップＰＥ１）、送信データがある場合には送信処理を実行する（ステップＰＥ２）。送信バッファ内に楽器の機種名のデータやスキルのデータがある場合には、それを環境情報として曲データサーバに送信する。そして、送信が終了したか否かを判別する（ステップＰＥ３）。送信データが残っている場合には送信処理を続行するが、送信が終了したときは受信データがあるか否かを判別する（ステップＰＥ４）。
受信データがある場合には、その受信データを図１３に示した受信バッファへストアし（ステップＰＥ５）、図２４に示すダウンロード中の画面を表示する（ステップＰＥ６）。そして、受信データが終了したか否かを判別する（ステップＰＥ７）。終了していない場合には、ステップＰＥ４に移行して受信データの有無を判別する。
【００３９】
受信データが終了したときは、受信バッファ内のヘッダ部のファイル数をレジスタＮにセットする（ステップＰＥ８）。次に、ポインタｎを１にセットし（ステップＰＥ９）、ｎの値をインクリメントしながらｎに対応する受信バッファ内のデータを対応するエリアにストアする。
すなわち、ｎが１であるか否かを判別し（ステップＰＥ１０）、ｎが１である場合には、ヘッダ部のｎ番目のスタートアドレス及びエンドアドレスで指定されるデータを楽譜データエリアにストアする（ステップＰＥ１１）。
ｎが１でない場合には、図２３のフローにおいて、ｎが２であるか否かを判別し（ステップＰＥ１２）、ｎが２である場合には、ヘッダ部のｎ番目のスタートアドレス及びエンドアドレスで指定されるデータをＣＭＤデータエリアにストアする（ステップＰＥ１３）。
【００４０】
ｎが２でない場合には、ｎが３であるか否かを判別し（ステップＰＥ１４）、ｎが３である場合には、ヘッダ部のｎ番目のスタートアドレス及びエンドアドレスで指定されるデータをＭＩＤＩデータエリアにストアする（ステップＰＥ１５）。
ｎが３でない場合には、ｎが４であるか否かを判別し（ステップＰＥ１６）、ｎが４である場合には、ヘッダ部のｎ番目のスタートアドレス及びエンドアドレスで指定されるデータを伴奏設定情報データエリアにストアする（ステップＰＥ１７）。
ｎが４でない場合には、ｎが５であるか否かを判別し（ステップＰＥ１８）、ｎが５である場合には、ヘッダ部のｎ番目のスタートアドレス及びエンドアドレスで指定されるデータをパターン情報データエリアにストアする（ステップＰＥ１９）。
【００４１】
指定されるデータを対応するエリアにストアした後は、図２２のステップＰＥ２０においてｎの値をインクリメントする。そして、ｎの値がＮの値（この場合は、Ｎ＝５）より大きくなったか否かを判別する（ステップＰＥ２１）。ｎの値がＮの値以下である場合には、ステップＰＥ１０に移行する。ｎの値がＮの値より大きい値（この場合は、ｎ＝６）になったときは、クオンタイズ処理を実行して（ステップＰＥ２２）、図１６のフローに戻る。
【００４２】
図２５及び図２６は、クオンタイズ処理のフローである。最初にアドレスレジスタＡＤにＭＩＤＩデータエリアのスタートアドレスをセットする（ステップＰＦ１）。そして、ＡＤのアドレスをインクリメントしながらＭＩＤＩデータエリアを検索する。
すなわち、ＭＩＤＩ（ＡＤ）のデータがガイドチャンネル（コードをナビゲートするチャンネル）のノートオンイベントであるか否かを判別する（ステップＰＦ２）。そのデータがガイドチャンネルのノートオンイベントでない場合には、ＡＤのアドレスをインクリメントする（ステップＰＦ３）。このインクリメントしたＡＤのアドレスがエンドアドレスより大きい値になったか否かを判別する（ステップＰＦ４）。エンドアドレス以下である場合には、ステップＰＦ２に移行してＭＩＤＩ（ＡＤ）のデータの内容を判別する。
【００４３】
ＭＩＤＩ（ＡＤ）のデータがガイドチャンネルのノートオンイベントである場合には、タイムレジスタＴの値を０にリセットする（ステップＰＦ５）。次に、ポインタｍの値を１にセットし（ステップＰＦ６）、ポインタｎの値を０にセットする（ステップＰＦ７）。そして、ノートオンイベントのノートデータをレジスタＮＯＴＥ（ｎ）にセットする（ステップＰＦ８）。次に、ＭＩＤＩ（ＡＤ＋ｍ）のデータの内容を判別する（ステップＰＦ９）。
【００４４】
このデータがタイムデータである場合には、Ｔの値にそのタイムデータすなわちＭＩＤＩ（ＡＤ＋ｍ）のデータを加算する（ステップＰＦ１０）。そして、Ｔの値が所定タイムより大きいか否かを判別する（ステップＰＦ１１）。所定タイムとは、複数のノートオンイベントがコードであるか否かを判別する閾値である。タイムデータが閾値より小さい複数のノートオンイベントがコードの候補となる。Ｔの値が所定タイム以下である場合には、ｍの値をインクリメントする（ステップＰＦ１２）。このときＡＤ＋ｍのアドレスがエンドアドレスより大きいか否かを判別する（ステップＰＦ１３）。エンドアドレス以下である場合には、ステップＰＦ９に移行して、ＭＩＤＩ（ＡＤ）のデータの内容を判別する。
【００４５】
ＭＩＤＩ（ＡＤ＋ｍ）のデータがイベントである場合には、さらにそのＭＩＤＩ（ＡＤ＋ｍ）のイベントがガイドチャンネルのノートオンイベントであるか否かを判別する（ステップＰＦ１４）。ガイドチャンネルのノートオンイベントである場合には、そのイベントは前のアドレスのイベントとコードを構成する可能性をもつコード候補である。そこで、ｎの値をインクリメントして（ステップＰＦ１５）、そのイベントのノートデータをＮＯＴＥ（ｎ）にセットする（ステップＰＦ１６）。次に、ステップＰＦ１２に移行してｍの値をインクリメントする。
【００４６】
ステップＰＦ１１においてＴの値が所定タイム以下であり、かつ、次のデータがガイドチャンネルのノートオンイベントである限り、上記ループ処理を繰り返す。次のデータがガイドチャンネルのノートオンイベントでない場合、例えば、コントロールチェンジ等の制御データである場合には、ステップＰＦ１２に移行してｍの値をインクリメントする。ステップＰＦ１１において、Ｔの値が所定タイムより大きくなった場合には、ＮＯＴＥ（０）〜ＮＯＴＥ（ｎ）にセットした複数のノートオンイベントでコードが成立するか否かを判別する（ステップＰＦ１７）。コードが成立しない場合には、ＮＯＴＥ（０）〜ＮＯＴＥ（ｎ）のデータをクリアして（ステップＰＦ１８）、ステップＰＦ３に移行してＡＤのアドレスをインクリメントする。
【００４７】
ステップＰＦ１７においてコードが成立した場合には、図２６のフローにおいて、ＭＩＤＩ（ＡＤ）のイベントをコードデータに変更する（ステップＰＦ１９）。次に、ＮＯＴＥ（１）〜（ｎ）に対するノートオフイベントを削除し（ステップＰＦ２０）、タイムデータを変更する（ステップＰＦ２１）。すなわち、コードを構成する複数のノートオンイベントを１つのコードデータに変更したので、そのコードイベント対応する１つのノートオフイベントのみを残して、他のノートオフイベントを削除し、その削除によってタイムデータ（デルタタイム）を変更する。また、コード化及びノートオフイベントの削除に応じて、ＡＤのアドレスにｍを加算して次のアドレスを指定する（ステップＰＦ２２）。そして、図２５のステップＰＦ３に移行してＡＤのアドレスをインクリメントする。ステップＰＦ４において、ＡＤのアドレスがエンドアドレスより大きくなった場合には、クオンタイズ処理のフローを終了する。
【００４８】
図２７は、図１４のメインフローにおけるステップＰＡ６の再生処理のフローである。まず、図２８に示す再生画面を表示する（ステップＰＧ１）。この画面には、「楽譜ナビ設定」、「楽譜表示」、及び「戻る」アイコンスイッチが表示される。次に、アイコンスイッチがオンされたか否かを判別する（ステップＰＧ２）。いずれかのアイコンスイッチがオンされたときは、そのアイコンに応じた処理を行う。
【００４９】
楽譜ナビ設定のアイコンスイッチがオンされたか否かを判別し（ステップＰＧ３）、このアイコンがオンされたときは楽譜ナビ設定処理を実行する（ステップＰＧ４）。あるいは楽譜表示のアイコンスイッチがオンされたか否かを判別し（ステップＰＧ５）、このアイコンがオンされたときは楽譜表示処理を実行する（ステップＰＧ６）。楽譜ナビ設定処理又は楽譜表示処理の後は、ステップＰＧ１に移行して再生画面を表示する。楽譜ナビ設定及び楽譜表示のアイコンスイッチがどちらもオンされない場合には、戻りのアイコンスイッチがオンされたか否かを判別し（ステップＰＧ７）、このアイコンがオンされたときは図１４のメインフローに戻る。
【００５０】
図２９は、図２７のフローにおけるステップＰＧ４の楽譜ナビ設定処理のフローである。まず、図３０（１）に示す楽譜ナビ設定画面を表示する（ステップＰＨ１）。この画面には、楽譜ナビゲーションを行うか否かを設定する楽譜ナビゲーション用のラジオボタン、次の音符を指示する画像を点滅するか否かを設定する音符点滅用のラジオボタン、及び、演奏結果の間違いを表示するか否かを設定する間違い表示用のラジオボタン、並びに戻りのアイコンスイッチが表示される。
【００５１】
そして、いずれかのラジオボタンが操作されたか否かを判別する（ステップＰＨ２）。いずれかのラジオボタンが操作された場合には、その操作されたラジオボタンに応じた処理を行う。すなわち、楽譜ナビゲーション用のラジオボタンが操作されたか否かを判別し（ステップＰＨ３）、このラジオボタンが操作されたときは、オン側の操作であるか又はオフ側の操作であるかを判別する（ステップＰＨ４）。オン側の操作である場合には、フラグＧＮＡＢＦを１（楽譜ナビオン）にセットする（ステップＰＨ５）。オフ側の操作である場合には、ＧＮＡＢＦを０（楽譜ナビオフ）にセットする（ステップＰＨ６）。
【００５２】
操作されたのが楽譜ナビゲーション用のラジオボタンでない場合には、音符点滅用のラジオボタンが操作されたか否かを判別する（ステップＰＨ７）。このラジオボタンが操作されたときは、オン側の操作であるか又はオフ側の操作であるかを判別する（ステップＰＨ８）。オン側の操作である場合には、フラグＢＬＩＮＫＦを１（点滅オン）にセットする（ステップＰＨ９）。オフ側の操作である場合には、ＢＬＩＮＫＦを０（点滅オフ）にセットする（ステップＰＨ１０）。点滅オンに設定された場合には、図３０（２）の（ａ）、（ｂ）に示すように、演奏ガイドの音符の画像５１を囲む演奏ガイド用の画像５２が点灯と消灯とを交互に繰り返す点滅表示になる。
【００５３】
操作されたのが音符点滅用のラジオボタンでない場合には、間違い表示用のラジオボタンが操作されたか否かを判別する（ステップＰＨ１１）。このラジオボタンが操作されたときは、オン側の操作であるか又はオフ側の操作であるかを判別する（ステップＰＨ１２）。オン側の操作である場合には、フラグＭＩＳＦを１（間違い表示オン）にセットする（ステップＰＨ１３）。オフ側の操作である場合には、ＭＩＳＦを０（間違い表示オフ）にセットする（ステップＰＨ１４）。
【００５４】
間違い表示オンに設定された場合には、図３０（３）の（ａ）に示すように、演奏ガイドの音符に対応して間違った演奏の音符の画像５３を表示する。あるいは、図３０（３）の（ｂ）に示すように、間違った演奏の音符の画像５４を音符５１とは異なる表示色で表示する。あるいはまた、図３０（３）の（ｃ）に示すように、間違った演奏の画像５５を音符５１とは異なる特異な画像で表示する。
【００５５】
図２９のフローにおいていずれかのフラグをセットした後は、対応するラジオボタンを点灯し、対応しないラジオボタンを消灯する（ステップＰＨ１５）。次に、戻りのアイコンスイッチがオンされたか否かを判別する（ステップＰＨ１６）。ステップＰＨ２においてラジオボタンが操作されない場合も、ステップＰＨ１６に移行して戻りのアイコンスイッチがオンされたか否かを判別する。このアイコンがオンされない場合には、ステップＰＨ２に移行してラジオボタンの操作の有無を判別する。戻りのアイコンがオンされたときは、図２７のフローに戻る。
【００５６】
図３１〜図３３は、図２７のフローにおけるステップＰＧ６の楽譜表示処理のフローである。図３１のフローにおいて、楽譜データエリアのデータに基づき楽譜を表示する（ステップＰＪ１）。次に、フラグＧＮＡＢＦが１（楽譜ナビオン）であるか否かを判別し（ステップＰＪ２）、このフラグが１である場合には、音符を指定するポインタｎを０（楽譜の先頭の音符）にセットする（ステップＰＪ３）。次に、ＷＡＫＵ（ｎ）の内容に基づき枠を表示する（ステップＰＪ４）。この結果、図３４に示すように、複数の音符、コード記号等からなる楽譜が表示されるとともに、先頭の音符を囲む枠画像（演奏ガイド用の画像）５２が表示される。また、楽譜表示の下側には、「スタート」、「ストップ」、及び「戻り」のアイコンスイッチが表示される。
【００５７】
ステップＰＪ４の後、又は、ステップＰＪ２においてＧＮＡＢＦが０（楽譜ナビオフ）の場合には枠画像５２を表示することなく、アイコンスイッチがオンされたか否かを判別する（ステップＰＪ５）。いずれかのアイコンスイッチがオンされた場合には、そのアイコンに応じた処理を行う。
スタートのアイコンスイッチがオンされたか否かを判別し（ステップＰＪ６）、このアイコンがオンされたときは、伴奏情報データエリアにデータがあるか否かを判別する（ステップＰＪ７）。データがある場合には、そのデータを楽器に転送する（ステップＰＪ８）。
また、パターン情報データエリアにデータがあるか否かを判別し（ステップＰＪ９）、データがある場合には、そのデータを楽器に転送する（ステップＰＪ１０）。そして、スタートフラグＳＴＦを１（再生実行）にセットする（ステップＰＪ１１）。
【００５８】
ステップＰＪ６において、スタートのアイコンがオンでない場合には、ストップのアイコンスイッチがオンされたか否かを判別し（ステップＰＪ１２）、このアイコンがオンされたときは、全ての音を消音し（ステップＰＪ１３）、枠画像の表示をクリアする（ステップＰＪ１４）。また、ＳＴＦを０（再生停止）にセットする（ステップＰＪ１５）。
【００５９】
ステップＰＪ１１においてＳＴＦに１をセットした後は、図３２のフローにおいて、アドレスレジスタＡＤにＭＩＤＩデータエリアのスタートアドレスをセットする（ステップＰＪ１６）。次に、レッスンモードを示すレジスタＳＴＡＴＵＳに１をセットし（ステップＰＪ１７）、タイムレジスタＳＴに現在時間をセットする（ステップＰＪ１８）。さらに、タイムレジスタＴに０をセットする（ステップＰＪ１９）。
ＳＴＡＴＵＳの値は押鍵状態によって設定され、１〜３のいずれかの値となる。この値が１の場合には、演奏ガイドの楽音の発音開始タイミングと押鍵タイミングとが合っている状態である。この値が２の場合には、演奏ガイドの楽音の発音開始タイミングに押鍵タイミングが遅れている状態である。この値が３の場合には、演奏ガイドの楽音の発音開始タイミングよりも押鍵タイミングが早い状態である。
【００６０】
次に、ＭＥＭ［ＡＤ］のデータがイベントデータであるかタイムデータであるかを判別する（ステップＰＪ２０）。すなわち、曲の最初のデータがイベントデータであるか又はタイムデータであるかを判別する。データがイベントデータである場合には、レジスタΔＴに最小時間をセットし（ステップＰＪ２１）、ＡＤをデクリメントする（ステップＰＪ２２）。ＭＥＭ［ＡＤ］のデータがタイムデータである場合には、そのタイムデータＭＥＭ［ＡＤ］をΔＴにセットする（ステップＰＪ２３）。したがって、図３０（１）の画面でスタートのアイコンがオンされた瞬間にいきなり再生開始にならず、ΔＴにセットされたタイムデータの時間経過後に再生が開始する。
【００６１】
ステップＰＪ２２又はステップＰＪ２３の後は、Ｔの値にΔＴの値を加算する（ステップＰＪ２４）。次に、ガイド処理（ステップＰＪ２５）、ＭＩＤＩ  ＩＮ処理（ステップＰＪ２６）、ＭＩＤＩ  ＯＵＴ処理（ステップＰＪ２７）、楽譜ナビ処理（ステップＰＪ２８）を実行して、図３１のステップＰＪ５に移行する。ステップＰＪ５においてアイコンスイッチがオンでない場合には、図３２のステップＰＪ２５に移行する。
【００６２】
図３１のステップＰＪ１２において、ストップのアイコンスイッチがオンでない場合には、図３３のフローにおいて、戻りのアイコンスイッチがオンされたか否かを判別する（ステップＰＪ２９）。このアイコンがオンされたときは、全ての音の消音処理を行い（ステップＰＪ３０）、ＳＴＦを０（再生停止）にセットする（ステップＰＪ３１）。そして、図２７のフローに戻る。
【００６３】
図３５〜図３８は、図３２のフローにおけるステップＰＪ２５のガイド処理のフローである。図３５のフローにおいて、ＳＴＦが１（再生実行）であるか否かを判別し（ステップＰＫ１）、このフラグが１である場合には、現在時刻がＳＴ＋Ｔのタイムデータに達したか否かを判別する（ステップＰＫ２）。このタイムデータに達している場合には、ＡＤのアドレスをインクリメントする（ステップＰＫ３）。そして、ＡＤのアドレスがエンドアドレスでないか否かを判別する（ステップＰＫ４）。
【００６４】
エンドアドレスでない場合には、ＭＥＭ［ＡＤ］のデータがタイムデータであるか否かを判別する（ステップＰＫ５）。タイムデータである場合には、ＳＴＡＴＵＳの値が３であるか否かを判別する（ステップＰＫ６）。この値が３である場合には、早送りをするためΔＴに最小時間をセットする（ステップＰＫ７）。この値が３でなく１又は２である場合には、ＭＥＭ［ＡＤ］をΔＴにセットする（ステップＰＫ８）。ΔＴにタイムデータをセットした後は、そのΔＴのタイムデータをＴのタイムデータに加算する（ステップＰＫ９）。そして図３２のフローに戻る。
ステップＰＫ４においてＡＤのアドレスがエンドアドレスである場合には、ＳＴＦに０（再生停止）をセットして（ステップＰＫ１０）、図３２のフローに戻る。ステップＰＫ１においてＳＴＦが０である場合、又は、ステップＰＫ２において現在時刻がＳＴ＋Ｔのタイムデータに達していない場合には、直ちに図３２のフローに戻る。
【００６５】
ステップＰＫ５において、ＭＥＭ［ＡＤ］のデータがタイムデータでない場合には、図３６のフローにおいて、ＭＥＭ［ＡＤ］のデータはイベントデータであるか否かを判別する（ステップＰＫ１１）。イベントデータである場合には、チャンネルデータがガイドチャンネルであるか否かを判別する（ステップＰＫ１２）。ガイドチャンネルである場合には、さらにイベントデータがノートイベント又はコードイベントであるか否かを判別する（ステップＰＫ１３）。ノートイベント又はコードイベントである場合には、ＡＤのアドレスをインクリメントして、ベロシティデータをレジスタＶＥＬにセットする（ステップＰＫ１４）。そして、ＶＥＬの値が０でないか否かを判別する（ステップＰＫ１５）。この値が０でない場合には、ＭＩＤＩデータのノート又はコードをレジスタＮＯＴＥにセットする（ステップＰＫ１６）。
【００６６】
次に、ポインタｎを０にセットして（ステップＰＫ１７）、ｎの値をインクリメントしながらＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。すなわち、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別し（ステップＰＫ１８）、空きでない場合にはｎの値をインクリメントする（ステップＰＫ１９）。このときｎが所定数を超えたか否かを判別し（ステップＰＫ２０）、超えていない場合には、ステップＰＫ１８に移行してＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のイベントエリアにＭＩＤＩデータをストアする（ステップＰＫ２１）。次に、現在時刻をレジスタＷＴＩＭＥにセットし（ステップＰＫ２２）、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のタイムエリアにＷＴＩＭＥのデータをストアする（ステップＰＫ２３）。
【００６７】
データをストアした後、又はステップＰＫ２０においてｎが所定数を超えたときは、図３７のフローにおいて、ＳＴＡＴＵＳの値が３であるか否かを判別する（ステップＰＫ２４）。ＳＴＡＴＵＳの値が３である場合には、ＳＴＡＴＵＳの値を１に変更する（ステップＰＫ２５）。そして、チャンネルセットＣＨＳＥＴ及びボリュームＶＯＬＵＭＥの値に基づきＭＩＤＩデータを作成する（ステップＰＫ２６）。
【００６８】
図３６のフローにおけるステップＰＫ１３において、イベントがノートイベント及びコードイベントのいずれでもない場合には、図３７のフローにおいて、そのイベントがボリュームイベントであるか否かを判別する（ステップＰＫ２７）。ボリュームイベントである場合には、ＡＤのアドレスをインクリメントして、ボリュームの値をレジスタＶＯＬＵＭＥに取り込む（ステップＰＫ２８）。次に、ＳＴＡＴＵＳの値が３であるか否かを判別する（ステップＰＫ２９）。この値が３である場合には、早送り時の音を消すためにＭＩＤＩデータのボリュームの値を最小の値に変更する（ステップＰＫ３０）。
【００６９】
ボリューム値を最小に変更した後、若しくはステップＰＫ２６においてＭＩＤＩデータを作成した後、又は、図３６のステップＰＫ１２においてチャンネルデータがガイドチャンネルでない場合、若しくはステップＰＫ１５においてＶＥＬの値が０である場合には、図３７のステップＰＫ３１に移行して、ポインタｎを０にセットする。そして、ｎの値をインクリメントしながらＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。
【００７０】
すなわち、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別し（ステップＰＫ３２）、空きでない場合にはｎの値をインクリメントする（ステップＰＫ３３）。このときｎが所定数を超えたか否かを判別し（ステップＰＫ３４）、超えていない場合には、ステップＰＫ３２に移行してＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のイベントエリアにＭＩＤＩデータをストアする（ステップＰＫ３５）。次に、現在時刻をレジスタＷＴＩＭＥにセットし（ステップＰＫ３６）、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のタイムエリアにＷＴＩＭＥのデータをストアする（ステップＰＫ３７）。
【００７１】
データをストアした後、若しくはステップＰＫ３４においてｎが所定数を超えた場合、又は、図３６のステップＰＫ１１においてＭＥＭ［ＡＤ］がイベントデータでない場合には、図３５のステップＰＫ３に移行してＡＤをインクリメントする。
【００７２】
図３７のステップＰＫ２４においてＳＴＡＴＵＳの値が３でない場合、すなわちこの値が１である場合には、図３８のフローにおいて、ＳＴＡＴＵＳの値を２に変更する（ステップＰＫ３８）。次に、ポインタｎを０にセットして（ステップＰＫ３９）、ｎの値をインクリメントしながらＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。
すなわち、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別し（ステップＰＫ４０）、空きでない場合にはｎの値をインクリメントする（ステップＰＫ４１）。このときｎが所定数を超えたか否かを判別し（ステップＰＫ４２）、超えていない場合には、ステップＰＫ４０に移行してＭＩＤＩ  ＯＵＴバッファ（ｎ）を検索する。
【００７３】
ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のイベントエリアににＭＩＤＩデータをストアする（ステップＰＫ４３）。次に、現在時刻をレジスタＷＴＩＭＥにセットし（ステップＰＫ４４）、ＭＩＤＩ  ＯＵＴバッファ（ｎ）のタイムエリアににＷＴＩＭＥのデータをストアする（ステップＰＫ４５）。各エリアにデータをストアした後、又はステップＰＫ４２においてｎが所定数を超えた後は、図３２のフローのステップＰＪ２６に移行する。
【００７４】
図３９は、ステップＰＪ２６のＭＩＤＩ  ＩＮ処理のフローである。まず、フラグＳＴＦが１（再生実行）であるか否かを判別する（ステップＰＬ１）。このフラグが１である場合には、ＭＩＤＩ入力があるか否かを判別する（ステップＰＬ２）。入力がある場合には、そのＭＩＤＩデータがガイドチャンネルのデータであるか否かを判別する（ステップＰＬ３）。ガイドチャンネルのデータである場合には、さらにそのＭＩＤＩデータがノートオン又はコードのイベントであるか否かを判別する（ステップＰＬ４）。ノートオン又はコードのイベントである場合には、次のステップＰＬ５に移行する。上記条件を１つでも満たさない場合には、直ちにこのフローを終了する。
【００７５】
ステップＰＬ５においては、ＭＩＤＩデータのノート又はコードをレジスタＫＥＹにセットする。次に、ＫＥＹのデータとＮＯＴＥのデータとが一致しているか否かを判別する（ステップＰＬ６）。すなわち、演奏ガイド用として楽器に送信した音高データと、楽器から受信した演奏結果の鍵番号データとが一致しているか否かを判別する。データが一致している場合には、フラグＯＫＦを１（押鍵正解）にセットする（ステップＰＬ７）。次に、現在時刻がＳＴ＋Ｔのタイムデータに達していないかを判別する（ステップＰＬ８）。
【００７６】
現在時刻がそのタイムデータに達していない場合には、早送りをする必要があるので、ＳＴＡＴＵＳの値を３にセットする（ステップＰＬ９）。ステップＰＬ８において、現在時刻がＳＴ＋Ｔのタイムデータに達している場合には、ＳＴＡＴＵＳの値を１にセットし（ステップＰＬ１０）、現在時刻からＳＴ＋Ｔのタイムデータを減算した値をレジスタＳにセットする（ステップＰＬ１１）。そして、ＳＴのタイムデータにＳのタイムデータを加算して更新する（ステップＰＬ１２）。すなわち、押鍵の遅れによる時間差を補正する。
【００７７】
ステップＰＬ６において、ＫＥＹのデータとＮＯＴＥのデータとが一致しない場合には、フラグＮＯＦに１をセットする（ステップＰＬ１３）。フラグをセットした後、又は、ステップＰＬ９においてＳＴＡＴＵＳの値をセットした後、若しくはステップＰＬ１２においてＳＴのタイムデータを更新した後は、図３２のステップＰＪ２７に移行する。
【００７８】
図４０は、ステップＰＪ２７のＭＩＤＩ  ＯＵＴ処理のフローである。まず、ポインタｎを０にセットして（ステップＰＭ１）、ｎの値をインクリメントしながら以下のループ処理を実行する。ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きでないか否かを判別し（ステップＰＭ２）、空きでなくデータがある場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）からＭＩＤＩデータとＷＴＩＭＥのデータを読み出す（ステップＰＭ３）。
【００７９】
次に、その読み出したＭＩＤＩデータのチャンネルがＣＨＳＥＴのチャンネルと異なっているかを判別する（ステップＰＭ４）。チャンネルが異なっている場合には、現在時刻からＷＴＩＭＥのタイムデータを減算した値をレジスタＤにセットする（ステップＰＭ５）。そして、Ｄの値が所定時間に達しているか否かを判別する（ステップＰＭ６）。所定時間に達している場合、又はステップＰＭ４においてチャンネルが同じである場合には、ステップＰＭ３において読み出したＭＩＤＩデータを楽器に出力する（ステップＰＭ７）。そしてＭＩＤＩ  ＯＵＴバッファ（ｎ）をクリアする（ステップＰＭ８）。
【００８０】
この後、ｎの値をインクリメントする（ステップＰＭ９）。ステップＰＭ２においてＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合、又はステップＰＭ６においてＤの値が所定時間に満たない場合にも、ステップＰＭ９に移行してｎの値をインクリメントする。次に、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＰＭ１０）。超えていない場合には、ステップＰＭ２に移行してステップＰＭ１０までのループ処理を繰り返す。ｎの値が所定数を超えたときは、図３２のステップＰＪ２８に移行する。
【００８１】
図４１及び図４２は、ステップＰＪ２８の楽譜ナビ処理のフローである。まず、フラグＳＴＦが１（再生実行）であるか否かを判別する（ステップＰＮ１）。このフラグが０である場合には直ちにこのフローを終了するが、このフラグが１である場合には、フラグＭＩＳＦが１（間違い表示）であるか否かを判別する（ステップＰＮ２）。このフラグが１である場合にはさらに、ＮＯＦが１（押鍵誤り）であるか否かを判別する（ステップＰＮ３）。
【００８２】
このフラグが１である場合には、演奏ガイドの枠画像であるＷＡＫＵ（ｎ）の座標とＫＥＹの内容に基づき、ＫＥＹの音符に対応するオブジェクトを表示する（ステップＰＮ４）。すなわち、図３０（３）の（ｃ）に示すような特異な画像５５を表示する。次に、ＮＯＦを０にリセットして（ステップＰＮ５）、このフローを終了して図３１のステップＰＪ５に移行する。
【００８３】
図４１のステップＰＮ２においてＭＩＳＦが０である場合、又はステップＰＮ３においてＮＯＦが０である場合には、フラグＯＫＦが１（押鍵正解）であるか否かを判別する（ステップＰＮ６）。このフラグが１である場合には、ＷＡＫＵ（ｎ）に対応する演奏ガイドの枠画像の表示を消去するとともに、オブジェクトが表示されていればその画像も消去する（ステップＰＮ７）。次に、ｎの値をインクリメントする（ステップＰＮ８）。そして、インクリメントしたｎの値が最大数以下であるか否かを判別する（ステップＰＮ９）。この値が最大数を超えている場合には、このフローを終了して図３１のステップＰＪ５に移行する。
【００８４】
ｎの値が最大数以下である場合には、図４２のフローにおいて、ＷＡＫＵ（ｎ）に対応する枠画像を表示する（ステップＰＮ１０）。次に、ポインタＱに０をセットし（ステップＰＮ１１）、ＯＫＦを０にリセットする（ステップＰＮ１２）。このリセットの後、又は図４１のステップＰＮ６においてＯＫＦが０である場合には、フラグＢＬＩＮＫＦが１（点滅表示）であるか否かを判別する（ステップＰＮ１３）。このフラグが０である場合には直ちにこのフローを終了するが、このフラグが１である場合には、Ｑの値をインクリメントする（ステップＰＮ１４）。そして、Ｑの値が所定値を超えたか否かを判別する（ステップＰＮ１５）。
【００８５】
この値が所定値を超えたときは、枠画像の表示又は消去を指定するフラグＢＦを反転し（ステップＰＮ１６）、Ｑの値を０にセットする（ステップＰＮ１７）。このセットの後、又はステップＰＮ１５においてＱの値が所定値を超えない場合には、ステップＰＮ１８においてＢＦが１であるか否かを判別する。ＢＦが１である場合には、ＷＡＫＵ（ｎ）の画像を表示する（ステップＰＮ１９）。ＢＦが０である場合には、ＷＡＫＵ（ｎ）の画像を消去する（ステップＰＮ２０）。枠画像の表示又は消去の後は、図３１のステップＰＪ５に移行する。すなわち、演奏ガイド用の画像である枠画像が所定値のインターバルで点滅表示される。
【００８６】
図４３は、図２に示した楽器のＣＰＵ１１のメモリエリアＭＥＭを示している。ＭＥＭにはユーザーエリア（ＲＡＭエリア）と固定エリア（ＲＯＭエリア）があり、複数種類の伴奏情報のデータを格納するための複数のエリアＭＥＭ（０）、ＭＥＭ（１）、…、ＭＥＭ（Ｎ）がある。各エリアＭＥＭ（  ）には、イベントデータ及びタイムデータが交互に格納される。
【００８７】
次に、楽器の動作についてＣＰＵ１１のフローチャートに基づいて説明する。図４４は楽器のメインフローである。所定のイニシャライズ処理（ステップＧＡ１）の後、ＭＩＤＩ処理（ステップＧＡ２）、伴奏処理（ステップＧＡ３）、スイッチ処理（ステップＧＡ４）、鍵ガイド処理（ステップＧＡ５）、押鍵処理（ステップＧＡ６）、伴奏処理（ステップＧＡ７）、発音指示処理（ステップＧＡ８）、その他の処理（ステップＧＡ９）、を繰り返し実行する。
【００８８】
図４５は、図４４のフローにおけるＭＩＤＩ処理のフローである。この処理ではＭＩＤＩ  ＩＮ処理（ステップＧＢ１）、ＭＩＤＩ  ＯＵＴ処理（ステップＧＢ２）を実行する。
ＭＩＤＩ  ＩＮ処理では、図４６に示すように、ＭＩＤＩ  ＩＮがあるか否かを判別する（ステップＧＣ１）。ＭＩＤＩ  ＩＮがない場合には直ちにこのフローを終了するが、ＭＩＤＩ  ＩＮがあったときは、ポインタｎに０をセットし（ステップＧＣ２）、ｎをインクリメントしながらＭＩＤＩ  ＩＮバッファ（ｎ）が空きであるか否かを判別する（ステップＧＣ３）。
【００８９】
ＭＩＤＩ  ＩＮバッファ（ｎ）が空きでない場合には、ｎの値をインクリメントする（ステップＧＣ４）。このときｎの値が所定数を超えたか否かを判別する（ステップＧＣ５）。所定数以内である場合には、ステップＧＣ３に移行して、ＭＩＤＩ  ＩＮバッファ（ｎ）が空きであるか否かを判別する。空きである場合には、ＭＩＤＩ  ＩＮバッファ（ｎ）のエリアにＭＩＤＩデータをストアする（ステップＧＣ６）。そして、ステップＧＣ１に移行してＭＩＤＩ  ＩＮの有無を判別する。ステップＧＣ５においてｎの値が所定数を超えたときは、図４５のフローに戻り、ステップＧＢ２のＭＩＤＩ  ＯＵＴ処理に移行する。
【００９０】
ＭＩＤＩ  ＯＵＴ処理では、図４７に示すように、ポインタｎに０をセットし（ステップＧＤ１）、ｎの値をインクリメントしながら以下のループ処理を実行する。すなわち、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きでないか否かを判別し（ステップＧＤ２）、空きでなくデータがある場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）からＭＩＤＩデータを読み出してパソコンに出力する（ステップＧＤ３）。そしてＭＩＤＩ  ＯＵＴバッファ（ｎ）をクリアする（ステップＧＤ４）。この後、ｎの値をインクリメントする（ステップＧＤ５）。ステップＧＤ２においてＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合にも、ステップＧＤ５に移行してｎの値をインクリメントする。次に、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＤ６）。超えていない場合には、ステップＧＤ２に移行してステップＧＤ６までのループ処理を繰り返す。ｎの値が所定数を超えたときは、図４４のメインフローに戻り、ステップＧＡ３に移行する。
【００９１】
図４８は、メインフローにおけるステップＧＡ３の伴奏情報設定処理のフローである。この処理では、ポインタｎに０をセットし（ステップＧＥ１）、ｎの値をインクリメントしながら以下のループ処理を実行する。すなわち、ＭＩＤＩ  ＩＮバッファ（ｎ）のデータが伴奏情報であるか否かを判別し（ステップＧＥ２）、伴奏情報である場合には、その伴奏情報に基づき楽器設定を行う（ステップＧＥ３）。ステップＧＥ２においてＭＩＤＩ  ＩＮバッファ（ｎ）のデータが伴奏パターンである場合には、楽器のパターン作成エリアに転送する（ステップＧＥ５）。この転送の後、又はステップＧＥ３における楽器設定の後は、ＭＩＤＩＯＵＴバッファ（ｎ）をクリアする（ステップＧＥ６）。この後、ｎの値をインクリメントする（ステップＧＥ７）。ステップＧＥ４においてＭＩＤＩ  ＩＮバッファ（ｎ）のデータが伴奏パターンでない場合にも、ステップＧＥ７に移行してｎの値をインクリメントする。次に、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＥ８）。超えていない場合には、ステップＧＥ２に移行してステップＧＥ８までのループ処理を繰り返す。ｎの値が所定数を超えたときは、図４４のメインフローに戻り、ステップＧＡ４に移行する。
【００９２】
図４９は、メインフローにおけるステップＧＡ４のスイッチ処理のフローである。まず、伴奏パターンを選択するＳＥＬスイッチが操作されたか否かを判別する（ステップＧＦ１）。操作されたときは、選択された伴奏パターンの番号をレジスタＢＡＮＳＯにセットする（ステップＧＦ２）。このセットの後、又はステップＧＦ１においてＳＥＬスイッチが操作されない場合には、スタートスイッチがオンされたか否かを判別する（ステップＧＦ３）。このスイッチがオンされない場合には、直ちにこのフローを終了する。
【００９３】
このスイッチがオンされたときは、スタートフラグＳＴＦを反転する（ステップＧＦ４）。そして、ＳＴＦが１（伴奏演奏実行）であるか否かを判別し（ステップＧＦ５）、このフラグが１である場合には、ＢＡＮＳＯの番号に対応する伴奏パターンエリアのスタートアドレスをアドレスレジスタＡＤにセットする（ステップＧＦ６）。次に、初期タイムのデータをタイムレジスタＴにセットし（ステップＧＦ７）、タイマインタラプトを禁止解除にする（ステップＧＦ８）。
ステップＧＦ５において、ＳＴＦが０（伴奏演奏停止）である場合には、消音処理をして（ステップＧＦ９）、タイマインタラプトを禁止する（ステップＧＦ１０）。ステップＧＦ８におけるタイマインタラプト禁止解除の後、又はステップＧＦ１０におけるタイマインタラプト禁止の後は、図４４のメインフローに戻り、ステップＧＡ５に移行する。
【００９４】
図５０は、メインフローにおけるステップＧＡ５の鍵ガイド処理のフローである。この処理では、ポインタｎに０をセットし（ステップＧＫ１）、ｎの値をインクリメントしながら以下のループ処理を実行する。すなわち、ＭＩＤＩ  ＩＮバッファ（ｎ）が空きでないか否かを判別し（ステップＧＫ２）、空きでない場合には、そのＭＩＤＩデータがノート又はコードのイベントであるか否かを判別する（ステップＧＫ３）。ノート又はコードのイベントである場合には、さらにそのイベントのチャンネルアがガイドチャンネルであるか否かを判別する（ステップＧＫ４）。
【００９５】
ガイドチャンネルである場合には、ＭＩＤＩデータのベロシティが０でないか否かを判別する（ステップＧＫ５）。ベロシティが０でない場合には、そのベロシティの値をレジスタＶＥＬにセットする（ステップＧＫ６）。次に、ＶＥＬの値にＶＳＥＴの値を乗算して、その乗算値に１を加算しその値をＶＥＬの値として更新する（ステップＧＫ７）。ＶＳＥＴの値はユーザーによって所望の値に設定することができる。したがって、この値を０に設定することも考えられる。この場合には、上記演算の結果が０になりノートオフになるので、この状態を回避するため１を加算する。ＶＥＬの更新の後、ＭＩＤＩデータのベロシティをＶＥＬの値に変更する（ステップＧＫ８）。また、ＭＩＤＩデータのノートに対応する鍵内のＬＥＤを点灯する（ステップＧＫ９）。
【００９６】
次に、ｎの値をインクリメントする（ステップＧＫ１０）。そして、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＫ１１）。超えていない場合には、ステップＧＫ２に移行してステップＧＫ１１までのループ処理を繰り返す。ステップＧＫ５において、ＭＩＤＩデータのベロシティが０である場合には、ＭＩＤＩデータのノートに対応するＬＥＤを消灯する（ステップＧＫ１２）。次に、ｎの値をインクリメントする（ステップＧＫ１０）。そして、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＫ１１）。超えていない場合には、ステップＧＫ２に移行してステップＧＫ１１までのループ処理を繰り返す。ｎの値が所定数を超えたときは、図４４のメインフローに戻り、ステップＧＡ６に移行する。
【００９７】
図５１は、メインフローにおけるステップＧＡ６の押鍵処理のフローである。この処理では最初に鍵盤を走査し（ステップＧＧ１）、鍵変化があるか否かを判別する（ステップＧＧ２）。鍵変化がオンすなわち押鍵である場合には、その鍵のチャンネル、ノート、及びベロシティでＭＩＤＩデータを作成する（ステップＧＧ３）。一方、鍵変化がオフすなわち離鍵である場合には、その鍵のチャンネル、ノート、及び値が０のベロシティでＭＩＤＩデータを作成する（ステップＧＧ４）。
【００９８】
次に、ポインタｎに０をセットし（ステップＧＧ５）、ｎの値をインクリメントしながらＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別する（ステップＧＤ２）。空きでない場合には、ｎの値をインクリメントする（ステップＧＧ７）。そして、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＧ８）。超えていない場合には、ステップＧＧ２に移行してＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別する。空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）にＭＩＤＩデータをストアする（ステップＧＧ９）。
【００９９】
ＭＩＤＩデータをストアした後、又はステップＧＧ８においてｎの値が所定値を超えた場合、若しくはステップＧＧ２において鍵変化がない場合には、鍵盤の走査が終了したか否かを判別する（ステップＧＧ１０）。走査が終了していない場合には、ステップＧＧ１に移行して走査を続行する。走査が終了した場合には、ＭＩＤＩ  ＯＵＴのバッファの内容からコードが成立しているか否かを判別する（ステップＧＧ１１）。成立している場合には、コードの根音をレジスタＲＯＯＴにセットし、コード種をレジスタＣＯＤＥにセットする（ステップＧＧ１２）。根音及びコード種をセットした後、又はコードが成立しない場合には、図４４のメインフローに戻り、ステップＧＡ７に移行する。
【０１００】
図５２は、メインフローにおけるステップＧＡ７の伴奏処理のフローである。まず、スタートフラグＳＴＦが１（伴奏演奏実行）であるか否かを判別し（ステップＧＨ１）、このフラグが１である場合には、タイマレジスタＴの値が０であるか否かを判別する（ステップＧＨ２）。ＳＴＦが０（伴奏演奏停止）である場合、又はＴの値が０でない場合には、直ちにこのフローを終了する。
【０１０１】
Ｔの値が０である場合には、ＭＥＭ（ＡＤ）からＭＩＤＩイベントを読み出す（ステップＧＨ３）。そしてそのＭＩＤＩイベントがコードトデータであるか否かを判別する（ステップＧＨ４）。コードデータである場合には、ＣＯＤＥのコード種及びＲＯＯＴの根音で複数の音高データに変換する（ステップＧＨ５）。音高変換の後、又はＭＩＤＩイベントがコードデータでなくノートデータである場合には、ポインタｎに０をセットして（ステップＧＨ６）、ｎをインクリメントしながら、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別する（ステップＧＨ７）。空きでない場合には、ｎの値をインクリメントする（ステップＧＨ８）。そして、インクリメントしたｎの値が所定数を超えたか否かを判別する（ステップＧＨ９）。超えていない場合には、ステップＧＨ７に移行してＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きであるか否かを判別する。空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）にＭＩＤＩデータをストアする（ステップＧＨ１０）。
【０１０２】
ＭＩＤＩデータをストアした後、又はステップＧＨ９においてｎの値が所定値を超えた場合には、ＡＤのアドレスをインクリメントする（ステップＧＨ１１）。そして、インクリメントしたＡＤのアドレスがエンドアドレスを超えたか否かを判別する（ステップＧＨ１２）。超えた場合には、ＡＤのアドレスをスタートアドレスに変更する（ステップＧＨ１３）。ＡＤのアドレスがエンドアドレスを超えない場合、又はスタートアドレスに変更した場合には、ＭＥＭ（ＡＤ）のデータがタイムデータであるか否かを判別する（ステップＧＨ１４）。タイムデータである場合には、ＭＥＭ（ＡＤ）のタイムデータをＴにセットして（ステップＧＨ１５）、ステップＧＨ１１に移行してステップＧＨ１４までのループを繰り返す。ＭＥＭ（ＡＤ）がタイムデータでない場合には、図４４のメインフローに戻り、ステップＧＡ８に移行する。
【０１０３】
図５３は、メインフローにおける発音指示処理のフローである。まず、ポインタｎに０をセットして（ステップＧＪ１）、ｎをインクリメントしながら以下のループ処理を繰り返す。すなわち、ＭＩＤＩ  ＩＮバッファ（ｎ）が空きでないか否かを判別し（ステップＧＪ２）、空きでない場合には、そのＭＩＤＩデータを音源へ送付する（ステップＧＪ３）。そしてＭＩＤＩ  ＩＮバッファ（ｎ）をクリアする（ステップＧＪ４）。
【０１０４】
バッファをクリアした後、又はステップＧＪ２においてＭＩＤＩ  ＩＮバッファ（ｎ）が空きである場合には、ＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きでないか否かを判別し（ステップＧＪ２）、空きでない場合には、そのＭＩＤＩデータを音源へ送付する（ステップＧＪ６）。そしてＭＩＤＩ  ＯＵＴバッファ（ｎ）をクリアする（ステップＧＪ７）。
バッファをクリアした後、又はステップＧＪ５においてＭＩＤＩ  ＯＵＴバッファ（ｎ）が空きである場合には、ｎの値をインクリメントする（ステップＧＪ８）。そしてｎの値が所定数を超えたか否かを判別する（ステップＧＪ９）。超えていない場合には、ステップＧＪ２に移行して上記ループ処理を繰り返す。ｎの値が所定数を超えた場合には、図４４のメインフローに戻り、ステップＧＡ９のその他の処理を実行する。
【０１０５】
このように上記実施形態によれば、パソコン２は、演奏ガイド用の楽音データを楽器１に出力するとともに、音符の画像及び演奏ガイド用の画像を表示部３９に表示し、曲の進行に応じて演奏ガイド用の画像を移動して出力する楽音データに対応する音符を指示する。
したがって、インターネット等の通信手段を介して受信した曲データに基づいて、楽譜に合わせて演奏教習を行うことができる。
【０１０６】
この場合において、楽譜の画像データは、その楽譜を構成する複数の音符の表示位置データを含み、ＣＰＵ３１は、次に演奏すべき音符の表示位置データに基づいて演奏ガイド用の画像を表示する。
さらに、演奏ガイド用の画像データは、楽譜を構成する各音符の表示位置ごとの複数の画像データで構成され、ＣＰＵ３１は、次に演奏すべき音符の表示位置データに対応する演奏ガイド用の画像データを選択的にＨＤ４２から読み出して、その演奏ガイド用の画像を表示する。
【０１０７】
この場合において、ＣＰＵ３１は、次に演奏すべき音符に対応する演奏ガイド用の画像の表示を点滅することにより、楽譜に合わせた演奏練習をより効果的に行うことができる。
【０１０８】
またこの場合において、ＣＰＵ３１は、楽器１から受信した演奏結果のデータが出力された楽音データと一致しない場合には、その演奏結果のデータを画像として表示する。例えば、演奏結果のデータを演奏結果の音高を示す音符の画像として表示する。さらにこの場合、音高を示す音符の画像をＨＤ４２から読み出した音符の画像とは異なる表示色で表示する。あるいは、演奏結果のデータを音符の画像とは異なる特異な画像として表示する。
【０１０９】
したがってユーザーは、押鍵の誤りを目で確認できるので、楽譜に合わせた演奏練習をより一層効果的に行うことができる。
【０１１０】
なお、上記実施形態においては、パソコン２によって曲データサーバ４から楽譜の画像データと楽音のＭＩＤＩデータを受信する構成にしたが、楽器内にＭＯＤＥＭ及び表示部を収容し、ネットワークを介して直接曲データサーバにアクセスして、楽譜の画像データと楽音のＭＩＤＩデータを受信する構成にしてもよい。あるいは、楽器内にＭＯＤＥＭだけを装備して、表示部については、パソコンのディスプレイ装置やテレビの表示部に楽譜を表示させる構成にしてもよい。
【０１１１】
また、上記実施形態においては、パソコン２のＲＯＭ３３に格納されている演奏教習処理のプログラムによって、楽譜対応の演奏教習を行う構成にしたが、このプログラムをパソコンや楽器によって読み取り可能な汎用の記憶媒体、例えば、フロッピーディスク、ＣＤ、ＭＤその他に記憶して、上記フローチャートに示した演奏教習処理をパソコンや楽器に実行させる構成にしてもよい。この場合には、記憶媒体の発明を提供する。
あるいは、演奏教習処理のプログラムを曲データサーバ４からネットワーク３を介してダウンロードする構成にしてもよい。
【０１１２】
【発明の効果】
本発明によれば、演奏ガイド用の楽音データを演奏手段に出力するとともに、音符の画像及び演奏ガイド用の画像を表示手段に表示し、曲の進行に応じて演奏ガイド用の画像を移動して出力する楽音データに対応する音符を指示する。
したがって、インターネット等の通信手段を介して受信した曲データに基づいて、楽譜に合わせて演奏教習を行うことができる。
【図面の簡単な説明】
【図１】本発明の装置のシステム構成を示す図。
【図２】図１における楽器のシステム構成を示すブロック図。
【図３】図１におけるパソコンのシステム構成を示すブロック図。
【図４】図１における曲データサーバのメモリエリアを示す図。
【図５】図１における曲データサーバのメモリエリアを示す図。
【図６】図１における曲データサーバのメモリエリアを示す図。
【図７】図１における曲データサーバのメモリエリアを示す図。
【図８】図１における曲データサーバのメモリエリアを示す図。
【図９】図１における曲データサーバのメインフローチャート。
【図１０】図９におけるファイル作成処理のフローチャート。
【図１１】図１０に続くファイル作成処理のフローチャート。
【図１２】図１１に続くファイル作成処理のフローチャート。
【図１３】図１におけるパソコンのメモリエリアを示す図。
【図１４】図３におけるパソコンのＣＰＵのメインフローチャート。
【図１５】メニュー画面を示す図。
【図１６】図１４におけるダウンロード処理のフローチャート。
【図１７】ダウンロード画面を示す図。
【図１８】図１６における曲選択処理のフローチャート。
【図１９】曲リストの画面を示す図。
【図２０】図１６における環境設定処理のフローチャート。
【図２１】環境設定の画面を示す図。
【図２２】図１６における送受信処理のフローチャート。
【図２３】図２２に続く送受信処理のフローチャート。
【図２４】曲ダウンロード中の画面を示す図。
【図２５】図２２におけるクオンタイズ処理のフローチャート。
【図２６】図２５に続くクオンタイズ処理のフローチャート。
【図２７】図１４における再生処理のフローチャート。
【図２８】曲再生のメニュー画面を示す図。
【図２９】図２７における楽譜ナビ設定処理のフローチャート。
【図３０】（１）は楽譜ナビ設定の画面を示す図、（２）は演奏ガイド用の画像を点滅表示する例を示す図、（３）は押鍵誤りを表示する複数の例を示す図。
【図３１】図２７における楽譜表示処理のフローチャート。
【図３２】図３１に続く楽譜表示処理のフローチャート。
【図３３】図３１に続く楽譜表示処理のフローチャート。
【図３４】楽譜表示の画面を示す図。
【図３５】図３２におけるガイド処理のフローチャート。
【図３６】図３５に続くガイド処理のフローチャート。
【図３７】図３６に続くガイド処理のフローチャート。
【図３８】図３７に続くガイド処理のフローチャート。
【図３９】図３２におけるＭＩＤＩ  ＩＮ処理のフローチャート。
【図４０】図３２におけるＭＩＤＩ  ＯＵＴ処理のフローチャート。
【図４１】図３２における楽譜ナビ処理のフローチャート。
【図４２】図４１に続く楽譜ナビ処理のフローチャート。
【図４３】図１における楽器のメモリエリアを示す図。
【図４４】図２における楽器のＣＰＵのメインフローチャート。
【図４５】図４４におけるＭＩＤＩ処理のフローチャート。
【図４６】図４５におけるＭＩＤＩ  ＩＮ処理のフローチャート。
【図４７】図４５におけるＭＩＤＩ  ＯＵＴ処理のフローチャート。
【図４８】図４４における伴奏情報設定処理のフローチャート。
【図４９】図４４におけるスイッチ処理のフローチャート。
【図５０】図４４における鍵ガイド処理のフローチャート。
【図５１】図４４における押鍵処理のフローチャート。
【図５２】図４４における伴奏処理のフローチャート。
【図５３】図４４における発音指示処理のフローチャート。
【符号の説明】
１  楽器
２  パソコン
３  ネットワーク
４  曲データサーバ
【図１】
0003729016.tif 000002
【図２】
0003729016.tif 000003
【図３】
0003729016.tif 000004
【図４】
0003729016.tif 000005
【図５】
0003729016.tif 000006
【図６】
0003729016.tif 000007
【図７】
0003729016.tif 000008
【図８】
0003729016.tif 000009
【図９】
0003729016.tif 000010
【図１０】
0003729016.tif 000011
【図１１】
0003729016.tif 000012
【図１２】
0003729016.tif 000013
【図１３】
0003729016.tif 000014
【図１４】
0003729016.tif 000015
【図１５】
0003729016.tif 000016
【図１６】
0003729016.tif 000017
【図１７】
0003729016.tif 000018
【図１８】
0003729016.tif 000019
【図１９】
0003729016.tif 000020
【図２０】
0003729016.tif 000021
【図２１】
0003729016.tif 000022
【図２２】
0003729016.tif 000023
【図２３】
0003729016.tif 000024
【図２４】
0003729016.tif 000025
【図２５】
0003729016.tif 000026
【図２６】
0003729016.tif 000027
【図２７】
0003729016.tif 000028
【図２８】
0003729016.tif 000029
【図２９】
0003729016.tif 000030
【図３０】
0003729016.tif 000031
【図３１】
0003729016.tif 000032
【図３２】
0003729016.tif 000033
【図３３】
0003729016.tif 000034
【図３４】
0003729016.tif 000035
【図３５】
0003729016.tif 000036
【図３６】
0003729016.tif 000037
【図３７】
0003729016.tif 000038
【図３８】
0003729016.tif 000039
【図３９】
0003729016.tif 000040
【図４０】
0003729016.tif 000041
【図４１】
0003729016.tif 000042
【図４２】
0003729016.tif 000043
【図４３】
0003729016.tif 000044
【図４４】
0003729016.tif 000045
【図４５】
0003729016.tif 000046
【図４６】
0003729016.tif 000047
【図４７】
0003729016.tif 000048
【図４８】
0003729016.tif 000049
【図４９】
0003729016.tif 000050
【図５０】
0003729016.tif 000051
【図５１】
0003729016.tif 000052
【図５２】
0003729016.tif 000053
【図５３】
0003729016.tif 000054