(57)【要約】【課題】音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理をより少ないデータで実現するための技術を提供する。【解決手段】ＣＰＵ１０１は、映像メモリ１０４に格納された映像データを再生して表示部１０５に動画を表示させることにより演奏ガイドを行う。その演奏ガイドでは、映像データからユーザーが行うべき演奏操作を示す演奏情報を抽出することにより、その演奏情報を用いた自動演奏や、鍵盤１０６に対するユーザーの演奏操作を監視して、押鍵を教示した鍵をユーザーが押鍵したか否か確認し、その確認結果を演奏ガイドの進行に反映させることを行う。【選択図】            図１
2004347879.tif 000002
【特許請求の範囲】
【請求項１】
音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行う装置であって、
前記音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する映像データ取得手段と、
前記映像データ取得手段が取得した映像データから、ユーザーが演奏中に行うべき前記演奏操作の内容を示す演奏情報を生成する演奏情報生成手段と、
前記演奏情報生成手段が生成した演奏情報を用いて、前記映像データが演奏操作を表す演奏に係わる演奏処理を実行する演奏処理手段と、
を具備することを特徴とする演奏処理装置。
【請求項２】
前記演奏処理手段は、前記演奏処理として、前記演奏情報に従って楽音を随時、楽音発生装置により発音させながら、前記映像データを表示装置上に再生して動画を表示させる処理を実行する、
ことを特徴とする請求項１記載の演奏処理装置。
【請求項３】
前記音高操作子群に対してユーザーが行った演奏操作を検出する操作検出手段を具備していた場合に、前記演奏処理手段は、前記演奏処理として、前記演奏情報を参照して該操作検出手段が検出した演奏操作が発音させるべき楽音を発音させるためのものか否か判定し、該判定結果を前記映像データの再生に反映させる処理を実行できる、
ことを特徴とする請求項１、または２記載の演奏処理装置。
【請求項４】
前記演奏処理手段は、前記発音させるべき楽音を発音させるための演奏操作を前記操作検出手段が検出していないと判定した場合に、前記映像データ中で該楽音を発音させるための演奏操作を動画表示する部分を再度、再生させることにより、該判定結果を該映像データの再生に反映できる、
ことを特徴とする請求項３記載の演奏処理装置。
【請求項５】
音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行う装置であって、
前記音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する映像データ取得手段と、
前記映像データ取得手段が取得した映像データを表示装置上に再生して動画を表示させる表示再生手段と、
前記音高操作子群に対してユーザーが行った演奏操作を検出する操作検出手段と、
前記表示再生手段が再生中の前記映像データが表す演奏操作を前記操作検出手段が検出していないと判定した場合に、該映像データ中で該演奏操作を動画表示する部分を再度、再生させる再生制御手段と、
を具備することを特徴とする演奏処理装置。
【請求項６】
音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行う装置に実行させるプログラムであって、
前記音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する機能と、
前記取得する機能により取得した映像データから、ユーザーが演奏中に行うべき前記演奏操作の内容を示す演奏情報を生成する機能と、
前記生成する機能により生成した演奏情報を用いて、前記映像データが演奏操作を表す演奏に係わる演奏処理を実行する機能と、
を実現させるためのプログラム。
【請求項７】
音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行う装置に実行させるプログラムであって、
前記音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する機能と、
前記取得する機能により取得した映像データを表示装置上に再生して動画を表示させる機能と、
前記音高操作子群に対してユーザーが行った演奏操作を検出する機能と、
前記表示させる機能により再生中の前記映像データが表す演奏操作を前記検出する機能により検出していないと判定した場合に、該映像データ中で該演奏操作を動画表示する部分を再度、再生させる機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行うための技術に関する。
【０００２】
【従来の技術】
楽器の演奏は、発音させるべき楽音を順次、発音させていくことで行われる。その演奏を適切に行えるように支援するために、現在では、発音させるべき楽音を順次、教示する演奏ガイドを行う機能（演奏ガイド機能）が電子楽器などの楽音発生装置に幅広く搭載されている。
【０００３】
楽音は、その音高を指定して発音される。このことから、発音させるべき楽音は、その楽音を発音させるために鍵盤などの音高操作子群のなかで操作すべき音高操作子を示す形で、つまり行うべき演奏操作を示す形で教示するのが普通である。
【０００４】
演奏操作の教示は、分かり易さなどの面から映像（動画）で行うことが望ましいと言える。その演奏ガイド自体は、ユーザーの習熟度（演奏技術、等）に応じて行うことが望ましい。このことから、ユーザーが行うべき演奏操作を行ったか否か判断して、その判断結果に応じて一時停止させたり、或いはその再生速度を低下させるといった形でインタラクティブに映像データを再生することが行われている。
【０００５】
【特許文献１】
特開２０００−２６７６６２号公報
【特許文献２】
特開２０００−２７６１４７号公報
【特許文献３】
特開平０４−１５５３９０号公報
【特許文献４】
特開平０４−１７２３９０号公報
【特許文献５】
特開平０４−１７２３８９号公報
【０００６】
【発明が解決しようとする課題】
ユーザーが行うべき演奏操作を行ったか否かの判断は、従来、ユーザーが演奏中に行うべき演奏操作の内容を示す演奏情報を映像データとは別に予め用意し、その演奏情報を参照することで行っていた。演奏情報中に示される演奏操作と映像データ中の再生位置との対応関係は、その対応関係がまとめられたコントロールファイルを参照するか、或いは例えばその先頭からの経過時間に着目して特定していた。
【０００７】
映像データは比較的に大きなデータ量である。その映像データの他に演奏情報を予め用意するのであれば、データ量はより大きくなる。それらの管理はより面倒となる。このことから、より少ないデータでインタラクティブな演奏ガイドを行えるようにすることが望ましいと考えられる。これは、演奏ガイド以外の演奏処理、例えばガイドで示す演奏操作を行うことで発音される楽音を発音させる自動演奏処理を行う場合にも同様に言えることであると考えられる。
【０００８】
本発明の課題は、音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理をより少ないデータで実現するための技術を提供することにある。
【０００９】
【課題を解決するための手段】
本発明の第１、及び第２の態様の演奏処理装置は共に、音高操作子群に対する演奏操作により行われる演奏に係わる演奏処理を行うものであり、それぞれ以下の手段を具備する。
【００１０】
第１の態様の演奏処理装置は、音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する映像データ取得手段と、映像データ取得手段が取得した映像データから、ユーザーが演奏中に行うべき演奏操作の内容を示す演奏情報を生成する演奏情報生成手段と、演奏情報生成手段が生成した演奏情報を用いて、映像データが演奏操作を表す演奏に係わる演奏処理を実行する演奏処理手段と、を具備する。
【００１１】
なお、上記演奏処理手段は、演奏処理として、演奏情報に従って楽音を随時、楽音発生装置により発音させながら、映像データを表示装置上に再生して動画を表示させる処理を実行できる、ことが望ましい。
また、音高操作子群に対してユーザーが行った演奏操作を検出する操作検出手段を具備していた場合に、演奏処理手段は、演奏処理として、演奏情報を参照して該操作検出手段が検出した演奏操作が発音させるべき楽音を発音させるためのものか否か判定し、該判定結果を映像データの再生に反映させる処理を実行できる、ことが望ましい。このとき、演奏処理手段は、発音させるべき楽音を発音させるための演奏操作を操作検出手段が検出していないと判定した場合に、映像データ中で該楽音を発音させるための演奏操作を動画表示する部分を再度、再生させることにより、該判定結果を該映像データの再生に反映できる、ことが望ましい。
【００１２】
第２の態様の演奏処理装置は、音高操作子群に対してユーザーが行うべき演奏操作を表す動画を表示するための映像データを取得する映像データ取得手段と、映像データ取得手段が取得した映像データを表示装置上に再生して動画を表示させる表示再生手段と、音高操作子群に対してユーザーが行った演奏操作を検出する操作検出手段と、表示再生手段が再生中の映像データが表す演奏操作を操作検出手段が検出していないと判定した場合に、該映像データ中で該演奏操作を動画表示する部分を再度、再生させる再生制御手段と、を具備する。
【００１３】
本発明の第１、及び第２の態様のプログラムは、それぞれ上記第１、及び第２の態様の演奏処理装置を実現させるための機能を具備する。
本発明では、取得した映像データから、ユーザーが演奏中に行うべき演奏操作の内容を示す演奏情報を自動的に抽出・生成し、その演奏情報を用いて、映像データが演奏操作を表す演奏に係わる演奏処理、例えばその演奏を再生する自動演奏、或いは発音させるべき楽音を発音させる演奏操作をユーザーが行ったか否か判定した結果を映像データの再生に反映させた演奏ガイドを行う。
【００１４】
そのように、映像データから演奏情報を自動的に抽出・生成する結果、映像データを用意することにより、自動演奏や、演奏データの再生をユーザーの演奏操作に応じてインタラクティブに行うといったより様々な演奏処理が行えることとなる。
【００１５】
本発明では、映像データの再生により新たに教示した演奏操作をユーザーが行っていない場合に、その演奏操作を動画表示する部分、つまりそれより遡った時点からその演奏操作を教示する時点までを少なくとも含む部分を再度、再生させる。
【００１６】
その再度の再生により、既に行った演奏操作から新たに教示の演奏操作を行うまでの動作をユーザーは再確認することが可能となる。それにより、新たに教示の演奏操作をより容易に行えることとなる。
【００１７】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態につき詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態による演奏処理装置を搭載した電子楽器の構成図である。
【００１８】
その電子楽器は、図１に示すように、楽器全体の制御を行うＣＰＵ１０１と、そのＣＰＵ１０１が実行するプログラムや各種データ等を格納したプログラムＲＯＭ１０２と、ＣＰＵ１０１がワーク用に使用するワークＲＡＭ１０３と、演奏ガイドを行うための映像データを格納した映像メモリ１０４と、例えば液晶表示器である表示部１０５と、演奏操作の対象となる鍵盤１０６と、各種スイッチを有するスイッチ（ＳＷ）群１０７と、ＣＰＵ１０１の指示に従って、発音させるべき楽音の波形データを生成する音源１０８と、その音源１０８が出力する波形データを用いて楽音を発音させる発音回路１０９と、を備えて構成されている。本実施の形態による演奏処理装置は、表示部１０５に動画を表示して演奏ガイドを行ったり、更にはそのガイドで教示する演奏操作により発音される楽音を発音させるといった演奏処理を行えるものとして実現されている。
【００１９】
上記スイッチ群１０７は、例えば各種のスイッチやボタンなどの操作子と、それらの操作子への操作を検出する検出用回路と、から構成されている。その操作子としては、演奏ガイドの開始、或いは終了を指示するためのスタート／ストップスイッチ、テンキー、演奏ガイドを行う際のモードを選択するためのモード選択スイッチ、演奏ガイドの対象とする楽曲を選択するためのソングスイッチ、などがある。演奏ガイドの対象とする楽曲は、ソングスイッチを操作した後、所望の楽曲に割り当てられた番号（楽曲番号）をテンキーにより指定することで行うようになっている。
【００２０】
なお、表示部１０５、鍵盤１０６、音源１０８、及び発音回路１０９は何れも、必ずしも搭載させる必要はなく、外部装置として接続させても良い。それにより、演奏処理装置は専用の装置として実現させても良い。映像メモリ１０４に格納された映像データ等は、外部から受信、或いは記録媒体にアクセスするなどして随時、取得するようにしても良い。
【００２１】
以上の構成において、その動作を説明する。
不図示の電源がオンされると、ＣＰＵ１０１はプログラムＲＯＭ１０２に格納されたプログラムを読み出して実行することにより、楽器全体の制御を開始する。その後は、ワークＲＡＭ１０３を作業用に使用しながら、スイッチ群１０７や鍵盤１０６からそれぞれ受け取る操作子の状態を表す信号に応じた各部の制御を行う。なお、スイッチ群１０７を構成する検出用回路は、各スイッチの状態（操作の有無を含む）の変化を、例えば走査することで検出する。一部のスイッチ等は、その状態に応じて変化する電圧値から検出する。鍵盤１０６（を構成する検出用回路）は、各鍵の状態、及び押鍵時の速さを、例えば走査することで検出する。
【００２２】
ＣＰＵ１０１は、鍵盤１０６から各鍵の状態を表す信号を受け取ると、前回に検出されたその状態と比較することにより、状態が変化した鍵を特定する。そのような鍵を特定できた場合には、その特定した鍵、それの状態の変化、その変化が押鍵によるものであれば更にその速さ（ベロシティ）に応じて音源１０８に送出すべきコマンド（例えばＭＩＤＩデータ）を生成し、それを送出する。
【００２３】
音源１０８は、その制御コマンドに従い、楽音の波形データを生成して発音回路１０９に送出する。発音回路１０９は、例えばその波形データをアナログのオーディオ信号に変換し、そのオーディオ信号を増幅し、増幅後のオーディオ信号をスピーカに入力して楽音を放音する。それにより、ユーザ（演奏者）が鍵盤１０６を操作すると、その操作内容に応じた楽音が放音される。
【００２４】
一方、ＣＰＵ１０１は、スイッチ群１０７から受け取った信号から各スイッチの状態の変化を特定し、その状態の変化に応じて、その状態が変化したスイッチに割り当てた機能を実現させるための処理を行う。その処理を行うことにより、演奏ガイドの対象とする楽曲の設定を含む各種の設定や、その演奏ガイドなどが実現される。その演奏ガイドは、上記スタート／ストップスイッチへの操作に応答して開始し、それが終了するか、或いはそのスイッチを再度、操作するまで行う。その演奏ガイド自体は、映像メモリ１０４に格納された映像データを表示部１０５上で再生することで行う。
【００２５】
図２、及び図３は、映像メモリ１０４に格納されたデータを説明する図である。
その映像メモリ１０４には、図２に示すように、映像データ、及びテーブル（ＴＡＢＬＥ）群が格納されている。その映像データは、演奏ガイド用の動画を表示させるためのものであり、多数の画像データから構成されている。それにより、演奏ガイドのための動画の表示は、図中「（０）」を付した画像データから順に、予め定められた周期で表示させていくことで行われる。
【００２６】
なお、映像データは、所定の圧縮方式で圧縮されているような場合、必ずしも１画像データ毎に分けて格納されているわけではないが、ここでは説明上、便宜的に、図２に示すように格納されていることとする。映像メモリ１０４には複数の映像データが格納されているが、ここでは１つの映像データにのみ着目して説明することとする。映像データを構成する画像データの表示は、それを表示部１０５に送出することで行われる。
【００２７】
映像データを再生すると、表示部１０５には図４に示すような画像（画面）が表示される。
その画像には、ｘ軸に沿って鍵盤１０６を表す鍵盤画像が配置されている。鍵盤１０６上の押鍵すべき鍵は、そのｙ軸上に「○」を配置することで示すようになっている。そのｙ軸上の位置は、鍵を押鍵する際の速さを示している。それにより、演奏の進行に応じて行うべき演奏操作は、押鍵しているべき期間、その押鍵の対象とすべき鍵のｙ軸上の押鍵すべき速さに応じた位置に「○」を配置（表示）することで教示していくようになっている。以降、「○」については、押鍵を教示するマークであることから、「押鍵マーク」と呼ぶことにする。その押鍵マークは、それを正確に認識できるように、他に使われていない表示色で配置される。
【００２８】
上記テーブル群としては、図３に示すように、Ｘテーブル（Ｘ  ＴＡＢＬＥ）、ＶＥＬテーブル（ＶＥＬ  ＴＡＢＬＥ）、及びＺＡＨＹＯテーブル（ＺＡＨＹＯ  ＴＡＢＬＥ）が格納されている。
Ｘテーブルは、押鍵マークが配置されているｘ軸上の位置、つまり発音させるべき楽音の音高を特定するために用意したものである。ＶＥＬテーブルは、その押鍵マークが配置されているｙ軸上の位置、つまり発音させるべき楽音の音量を特定するために用意したものである。ＺＡＨＹＯテーブルは、ｘｙ平面上の任意の位置に配置される押鍵マークを検出するために用意したものである。以降、各テーブル中の要素を指定する場合には、配列変数と同様に、例えばＸテーブルでは「要素Ｘ  ＴＡＢＬＥ（０）」等と表記することにする。
【００２９】
上述の各テーブルを用意することにより、本実施の形態では、それらのテーブルを随時、参照して、映像データからユーザーが行うべき演奏操作の内容を示す演奏情報を抽出し、抽出した演奏情報を楽音の発音、更にはインタラクティブな映像データの再生、つまりインタラクティブな演奏ガイドの実現に用いている。そのように、演奏情報を映像データから抽出（生成）すると、その演奏情報をファイルなどの形で予め用意しなくとも済むようになる。このため、自動演奏のようにして行う楽音の発音や、インタラクティブな映像データの再生といった演奏処理をより少ないデータで実現させることができる。
【００３０】
上述の各テーブルは、映像データから演奏情報を抽出するうえでの規則といえるデータである。その規則に従って作成されていれば、他の映像データからも演奏情報を抽出することができる。これは、そのような映像データを用意するだけで各種の演奏処理を行わせられるということを意味する。このことから、他の演奏に係る演奏処理を行わせることもより容易となる。
【００３１】
次に、上述したように映像データから演奏情報を抽出して演奏処理を実現させるＣＰＵ１０１の動作について、図５〜図２３に示す各種フローチャートを参照して詳細に説明する。
図５は、ＣＰＵ１０１が実行する全体処理のフローチャートである。始めに図５を参照して、全体処理について詳細に説明する。その全体処理は、プログラムＲＯＭ１０２に格納されたプログラムを実行することで実現される。
【００３２】
電源がオンされた後、最初に実行するステップ５０１では、楽器を予め定めた状態に設定するイニシャライズを行う。続くステップ５０２では、スイッチ群１０７への操作に対応するためのスイッチ（ＳＷ）処理を実行する。その後はステップ５０３に移行する。
【００３３】
ステップ５０３では、表示部１０５に表示させる内容を更新するための表示処理を実行する。次のステップ５０４では、鍵盤１０６への操作に対応するための鍵盤処理を実行する。その次に移行するステップ５０５では、例えば不図示のＭＩＤＩインターフェースを介して外部装置とＭＩＤＩデータの送受信を行うといったその他の処理を実行する。それを実行した後に上記ステップ５０２に戻る。それにより、電源がオンしている間、ステップ５０２〜５０５で形成される処理ループを繰り返し実行することにより、ユーザの鍵盤１０６やスイッチ群１０７への操作に対応する。
【００３４】
次に、上記全体処理で実行されるサブルーチン処理について説明する。
図６は、上記ステップ５０２として実行されるスイッチ処理のフローチャートである。全体処理で実行されるサブルーチン処理では、始めに図６を参照して、スイッチ処理について詳細に説明する。
【００３５】
スイッチ処理では、スイッチ群１０７の検出用回路に走査等を行わせ、その走査結果等を受け取ってその解析を行い、各スイッチ毎にその状態の変化を特定する。図６に示すスイッチ処理は、その特定後に行われる処理を抜粋してその流れを示したものである。
【００３６】
先ず、ステップ６０１では、モード選択スイッチが操作されたか否か判定する。そのスイッチをユーザーがオンした場合、判定はＹＥＳとなってステップ６０２に移行し、その操作に対応するためのモード選択処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ６０３に移行する。
【００３７】
ステップ６０３では、スタート／ストップスイッチが操作されたか否か判定する。そのスイッチをユーザーがオンした場合、判定はＹＥＳとなってステップ６０４に移行し、その操作に対応するためのスタート／ストップ処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ６０５に移行する。
【００３８】
ステップ６０５では、その他のスイッチが操作されたか否か判定する。モード選択スイッチ、及びスタート／ストップスイッチ以外のスイッチをユーザーがオンした場合、判定はＹＥＳとなってステップ６０６に移行し、そのスイッチへの操作に対応するためにその他のスイッチ処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００３９】
上記スイッチ処理でサブルーチン処理として実行されるモード選択処理、及びスタート／ストップ処理では、以下のような処理が行われる。それらのサブルーチン処理、及びそれらの処理で更に実行されるサブルーチン処理等を含め、図７〜図１４に示す各種フローチャートを参照して詳細に説明する。
【００４０】
図７は、上記ステップ６０２として実行されるモード選択処理のフローチャートである。始めに図７を参照して、その選択処理について詳細に説明する。
モード選択スイッチは、例えばスライド式のスイッチであり、そのつまみの位置により、演奏ガイドのために用意した２つのモードのうちの何れかを選択するようになっている。一方のモードは、ユーザーが鍵盤１０６に対して行った演奏操作を監視して、インタラクティブに演奏をガイドするもの（以下、便宜的に「インタラクティブモード」と呼ぶ）であり、他方のモードは、単に演奏をガイドするもの（以下、便宜的に「通常モード」と呼ぶ）である。
【００４１】
先ず、ステップ７０１では、演奏ガイドの実行を管理するための変数ＳＴＦの値が、それを実行していないことを示す値の０か否か判定する。演奏ガイドを実行している場合、変数ＳＴＦにはそのことを示す値の１が代入されていることから、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ７０２に移行し、変数ＭＯＤＥに、モード選択スイッチへの操作によりユーザーが選択したモードの番号を代入した後、一連の処理を終了する。
【００４２】
変数ＭＯＤＥに代入する値は、例えば通常モードの選択時は０、インタラクティブモードの選択時は１である。そのような値の代入を変数ＳＴＦの値が０のときだけ行うことにより、演奏ガイド中のモード切り換えを禁止させている。
図８は、上記ステップ６０４として実行されるスタート／ストップ処理のフローチャートである。次にそのスタート／ストップ処理について、図８を参照して詳細に説明する。
【００４３】
先ず、ステップ８０１では、変数ＭＯＤＥの値が０か否か判定する。通常モードが選択されている場合、０が代入されていることから、判定はＹＥＳとなってステップ８０２に移行し、通常モード用のスタート／ストップ（０）処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ８０３に移行し、インタラクティブモード用のスタート／ストップ（１）処理を実行した後に、一連の処理を終了する。
【００４４】
次に、上記スタート／ストップ処理内で実行されるサブルーチン処理について詳細に説明する。
図９は、上記ステップ８０２として実行されるスタート／ストップ（０）処理のフローチャートである。始めに図９を参照して、スタート／ストップ（０）処理について詳細に説明する。
【００４５】
先ず、ステップ９０１では、変数ＳＴＦの値を反転させ、その値が１であれば０、０であれば１に変更する。その次に移行するステップ９０２では、変数ＳＴＦの値が１か否か判定する。演奏ガイドを開始させるためにスタート／ストップスイッチをユーザーが操作した場合、ステップ９０１の処理を実行することで変数ＳＴＦには１が代入されることから、判定はＹＥＳとなってステップ９０３に移行し、そうでない場合には、判定はＮＯとなってステップ９０５に移行する。
【００４６】
ステップ９０３では、映像メモリ１０４に格納された映像データのなかで先頭に位置する画像データを表示部１０５に転送して表示させる。続くステップ９０４では、その表示更新用のタイマインタラプト処理の実行禁止を解除させる。一連の処理はその後に終了する。
【００４７】
そのタイマインタラプト処理は、例えばＣＰＵ１０１に搭載されたタイマによって発生される割り込み信号により起動されるものである。このことから、その実行禁止の解除は、その割り込み信号を有効とさせる設定を行うことで実現される。その割り込み信号の発生周期は、タイマへの設定により調整される。
【００４８】
一方、ステップ９０５では、発音中の全楽音の消音を指示するコマンドを生成して音源１０８に送出する消音処理を実行する。次のステップ９０６では、表示部１０５が表示させている演奏ガイド用の画像の消去を指示し、その次に移行するステップ９０７では、上記タイマインタラプト処理の実行を禁止させる。その後に一連の処理を終了する。
【００４９】
上記スタート／ストップ（０）処理の実行により実行が禁止、或いはその禁止が解除されるタイマインタラプト処理では、以下のような処理が行われる。図１０〜図１２を参照して詳細に説明する。
図１０は、そのタイマインタラプト処理のフローチャートである。そのインタラプト処理は、表示部１０５に表示された画像の更新周期で実行される。
【００５０】
先ず、ステップ１００１では、変数ＭＯＤＥの値が０か否か判定する。その値が０であった場合、判定はＹＥＳとなってステップ１００２に移行し、通常モード用のタイマインタラプト（０）処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１００３に移行し、インタラクティブモード用のタイマインタラプト（１）処理を実行した後に、一連の処理を終了する。
【００５１】
図１１は、上記ステップ１００２として実行されるタイマインタラプト（０）処理のフローチャートである。次にそのサブルーチン処理について、図１１を参照して詳細に説明する。
先ず、ステップ１１０１では、映像データに次に表示させるべき画像データが存在するか否か判定する。映像データを構成する全ての画像データを表示させた場合、次に表示させるべき画像データは存在しないことから、判定はＹＥＳとなってステップ１１０２に移行し、そうでない場合には、判定はＮＯとなってステップ１１０４に移行する。
【００５２】
ステップ１１０２では、次に表示させるべき画像データを映像メモリ１０４から読み出し、表示部１０５に転送することにより、その表示内容を更新させる。次のステップ１１０３では、その更新を行ったことの認識用の変数ＣＨＡＮＧＥＦに、その更新を行ったことを示す値の１を代入し、変数Ｇの値はインクリメントする。その後、一連の処理を終了する。
【００５３】
次に表示させるべき画像データは、変数Ｇで管理している。このことから、変数Ｇの値で指定される画像データが存在しない場合に、ステップ１２０１の判定はＮＯとなる。ステップ１１０３で変数Ｇの値をインクリメントするのもこのためである。
【００５４】
一方のステップ１１０４では、変数ＳＴＦに０を代入する。その次に移行するステップ１１０５では、演奏ガイド用の表示を表示部１１０５から消去させる。一連の処理をその後に終了する。
このように、本実施の形態では、通常モードが選択されて行う演奏ガイドでは、映像データを構成する画像データの表示が終了すると、それに合わせて演奏ガイド自体を終了させている。
【００５５】
次に、上記タイマインタラプト処理内でステップ１００３として実行されるタイマインタラプト（１）処理について、図１２に示すそのフローチャートを参照して詳細に説明する。
このサブルーチン処理が対象とするインタラクティブモードでは、押鍵を教示した鍵をユーザーが押鍵できなかった場合、その鍵を押鍵するまで、それより遡った時点からその時点までの部分の映像データを繰り返し再生するようにしている。それにより、その鍵を押鍵するまでの間、その鍵を押鍵するまでの過程を含めて演奏ガイドを繰り返し行うようにしている。
【００５６】
このとき、ユーザーの多くは、その鍵を押鍵できなかったことから、その直前に押鍵を教示した鍵を押鍵している状態か、或いはそれに近い状態であると考えられる。このことから、本実施の形態では、基本的に、直前に押鍵すべき鍵の押鍵を教示している時点（以降「直前押鍵時点」と呼ぶ）から現在、押鍵すべき鍵の押鍵を教示している時点（以降「現在押鍵時点」と呼ぶ）までの部分（以降「再生繰り返し部分」と呼ぶ）を繰り返し再生の対象としている。それにより、ユーザーにとっては、そのときの状況に合った演奏ガイドが繰り返し行われることから、行っていない正しい演奏操作をより容易に行えるようになる。
【００５７】
上述したような繰り返し再生を行うためには、直前押鍵時点、現在押鍵時点を把握しておく必要がある。押鍵すべきタイミングより早いタイミングの押鍵に対応するには、次に押鍵すべき鍵を別に把握しておく必要がある。このようなことから、本実施の形態では、変数ＦＯＲＭＥＲＧ、ＣＵＲＲＥＮＴＧ、及びＮＥＸＴＧを用意し、それぞれ、直前押鍵時点の画像データを指定する値、現在押鍵時点の画像データを指定する値、及び次に押鍵すべき鍵の押鍵を教示する画像データを指定する値、を代入させている。押鍵すべき鍵を押鍵したか否かの認識用には変数ＷＡＩＴＦを用意している。それに代入される１は押鍵していないことを示し、０は押鍵している、或いは現在、押鍵すべき鍵が存在していないことを示す。
【００５８】
タイマインタラプト（１）処理には、それらのうちの幾つかの変数の値が引数で少なくとも渡される。ここでは便宜的に、変数と引数の違いは区別せず、変数名に統一して説明することとする。これは以降においても同様である。
先ず、ステップ１２０１では、映像データに次に表示させるべき画像データ、つまり変数Ｇの値で指定される画像データが存在するか否か判定する。その画像データが存在しない場合、判定はＮＯとなってステップ１２０２に移行し、映像データの先頭に位置する画像データを映像メモリ１０４から読み出し、表示部１０５に転送した後、一連の処理を終了する。それにより、映像データの再生が終了すると、その再生を最初から行う。一方、そうでない場合には、判定はＹＥＳとなってステップ１２０３に移行する。
【００５９】
ステップ１２０３では、変数Ｇの値で指定される画像データを映像メモリ１０４から読み出し、表示部１０５に転送することにより、その表示内容を更新させる。その後は、変数ＣＨＡＮＧＥＦに１を代入し（ステップ１２０４）、変数Ｇの値をインクリメントしてから（ステップ１２０５）、ステップ１２０６に移行する。
【００６０】
ステップ１２０６では、変数ＷＡＩＴＦの値が１か否か判定する。上述したように、ユーザーが押鍵すべき鍵を押鍵していない場合、それには１が代入されることから、判定はＹＥＳとなってステップ１２０７に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００６１】
ステップ１２０７では、変数Ｇの値が変数ＣＵＲＲＥＮＴＧの値より大きいか否か判定する。再生繰り返し部分の再生が終了した場合、その関係が満たされることから、判定はＹＥＳとなってステップ１２０８に移行し、変数Ｇに変数ＦＯＲＭＥＲＧの値を代入して、再生繰り返し部分の先頭に位置する画像データ（直前押鍵時点に対応する画像データ）を現時点での次に表示すべき画像データとして指定した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００６２】
タイマインタラプト処理では、上述したようなサブルーチン処理が実行される。それにより、設定されたモードに応じて、表示部１０５の表示内容を随時、更新する形で演奏ガイドが行われることになる。
図８に示すスタート／ストップ処理で実行されるサブルーチン処理の説明に戻る。
【００６３】
図１３は、上記ステップ８０３として実行されるスタート／ストップ（１）処理のフローチャートである。次に図１３を参照して、その処理について詳細に説明する。
先ず、ステップ１３０１では、変数ＳＴＦの値を反転させる。続くステップ１３０２では、変数ＳＴＦの値が１か否か判定する。それに１が代入されていなかった場合、判定はＮＯとなってステップ１３１４に移行し、そうでない場合には、判定はＹＥＳとなってステップ１３０３に移行する。
【００６４】
ステップ１３０３では、映像データの先頭に位置する画像データを映像メモリ１０４から読み出して表示部１０５に転送する。その後は、変数Ｇに０を代入し（ステップ１３０４）、変数ＮＥＸＴＧに変数Ｇの値を代入してから（ステップ１３０５）、ステップ１３０６に移行する。
【００６５】
上述したように、変数ＮＥＸＴＧには、次の押鍵を教示する画像データを指定する値を保持させるようにしている。このことから、ステップ１３０６〜１３０９で形成される処理ループでは、その値を変数ＮＥＸＴＧに代入して保持させるための処理が行われる。
【００６６】
先ず、ステップ１３０６では、変数ＮＥＸＴＧの値で指定される画像データを映像メモリ１０４から読み出す。次のステップ１３０７では、その画像データで押鍵が教示されている鍵の音高を検出するためのＮＯＴＥ検出処理を実行する。そのＮＯＴＥ検出処理を実行すると、押鍵が教示されている鍵の音高を示す音高番号（ノート番号）が変数（引数）ＮＯＴＥに代入される。
【００６７】
ステップ１３０７の次に実行するステップ１３０８では、変数ＮＯＴＥに代入された値が該当する鍵のないことを示す値か否か判定する。対象とする画像データが押鍵を教示しているものでなかった場合、つまり押鍵マークが配置されたものでなかった場合、判定はＹＥＳとなり、次にステップ１３０９で変数ＮＥＸＴＧの値をインクリメントした後、上記ステップ１３０６に戻る。一方、そうでない場合には、判定はＮＯとなってステップ１３１０に移行する。それにより、次の押鍵を教示する画像データを指定する値が変数ＮＥＸＴＧに代入されるまで、上記処理ループは繰り返し実行されることになる。
【００６８】
ステップ１３１０では、変数ＮＥＸＴＮＯＴＥに、変数ＮＯＴＥの値を代入する。その後は、変数ＮＥＸＴＦに０を代入し（ステップ１３１１）、上述のタイマインタラプト処理の実行禁止を解除してから（ステップ１３１２）、一連の処理を終了する。
【００６９】
押鍵／離鍵は、押鍵マークが表示されている期間で教示される。表示開始が押鍵、その消去が離鍵を教示する。そのようにして教示する場合、１音毎に発音させていく楽曲の演奏では、発音タイミングが連続する２つの楽音の発音を教示する間に、押鍵マークが表示されない期間が存在、つまりその間に表示させる画像データのなかに押鍵マークを表示させない画像データが存在することになる。本実施の形態では、その画像データを連続する２つの楽音間の識別に用いている。上記変数ＮＥＸＴＦは、その識別のために用意したものである。押鍵マークのない画像データを探し出せたときには１を代入する。
【００７０】
上記ステップ１３０２の判定がＮＯとなって移行するステップ１３１４では、発音中の全楽音の消音を音源１０８に指示する消音処理を実行する。その後は、演奏ガイド用の表示を表示部１０５に消去させ（ステップ１３１５）、更にタイマインタラプト処理の実行を禁止させてから（ステップ１３１６）、一連の処理を終了する。
【００７１】
次に、上記ステップ１３０８として実行されるＮＯＴＥ検出処理について、図１４に示すそのフローチャートを参照して詳細に説明する。
図３に示すＺＡＨＹＯテーブルは、押鍵マーク検出用である。特定の表示色（以下「特定色」）で表示される押鍵マークは、そのテーブル中で注目する要素を随時、変更しながら、その要素が示す位置（範囲）に存在するか否か確認していくことで行われる。そのために、要素を指定する添字の値は楽音のノート番号と一致させている。各要素には、ｘ軸上の値と、ｙ軸上で押鍵マークを探す値の範囲、或いはその範囲を示す値と、がパックされて格納されている。ここでは、後者は値で範囲を示すものとする。
【００７２】
先ず、ステップ１４０１では、変数ＮＯＴＥに０を代入する。次のステップ１４０２では、ＺＡＨＹＯテーブル中で変数ＮＯＴＥの値で指定される要素ＺＡＨＹＯＴＡＢＬＥ（ＮＯＴＥ）の値を映像メモリ１０４から読み出し、その値をデパックして、ｘ軸上の値、及びｙ軸上の範囲を示す値をそれぞれ変数Ｘ、Ｙに代入する。その後に移行するステップ１４０３では、変数Ｘ、Ｙの各値で指定される範囲に押鍵マークの存在を示す特定色が配置されているか否か判定する。その特定色が配置されていた場合、判定はＹＥＳとなり、ここで一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１４０４に移行する。
【００７３】
ステップ１４０４では、変数ＮＯＴＥの値をインクリメントする。続くステップ１４０５では、変数ＮＯＴＥの値がノート番号中で最大の数より大きいか否か判定する。その値が最大数よりも大きい場合、判定はＹＥＳとなってステップ１４０６に移行し、押鍵マークが存在しない、つまり注目する画像データが押鍵を教示するものではないことを示す値（図中では「データなし」と表記）を変数ＮＯＴＥに代入した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなって上記ステップ１４０２に戻る。それにより、探す範囲を変えて押鍵マークの存在の有無の確認を行う。
【００７４】
図５に示す全体処理内で実行されるサブルーチン処理の説明に戻る。
図１５は、その全体処理内でステップ５０３として実行される表示処理のフローチャートである。
その表示処理では、先ず、変数ＭＯＤＥの値が０か否か判定する（ステップ１５０１）。その値が０であった場合、判定はＹＥＳとなってステップ１５０２に移行し、通常モード用の表示（０）処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１５０３に移行し、インタラクティブモード用の表示（１）処理を実行した後、一連の処理を終了する。
【００７５】
ここで、図１６〜図１９を参照して、上記表示処理内で実行されるサブルーチン処理について詳細に説明する。
図１６は、上記ステップ１５０２として実行される表示（０）処理のフローチャートである。始めに図１６を参照して、その処理について詳細に説明する。
【００７６】
先ず、ステップ１６０１では、変数ＳＴＦの値が１か否か判定する。その値が１であった場合、つまり演奏ガイドを行っている場合、判定はＹＥＳとなってステップ１６０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７７】
ステップ１６０２では、変数ＣＨＡＮＧＥＦの値が１か否か、即ち表示部１０５の表示内容を更新したか否か判定する。その更新を行った場合、判定はＹＥＳとなり、変数ＣＨＡＮＧＥＦに０を代入し（ステップ１６０３）、更に現在、表示部１０５に表示されている画像データで教示している演奏操作に応じて楽音を発音させるための検出処理を実行してから（ステップ１６０４）、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７８】
次に、上記ステップ１６０４として実行される検出処理について、図１７に示すそのフローチャートを参照して詳細に説明する。
図３に示すＸテーブルは、押鍵マークが押鍵を教示する鍵の音高（ノート番号）検出用であり、ＶＥＬテーブルは、押鍵マークが教示する押鍵時の速さ検出用である。このことから、検出処理では、それらのテーブルを参照して、表示部１０５に表示されている画像データで教示している演奏操作から音源１０８に指示すべき内容を特定し、その内容の指示を現在の状況に応じて行うことにより、楽音を発音させるための処理が行われる。
【００７９】
先ず、ステップ１７０１では、変数ＮＯＴＥに０を代入する。続くステップ１７０２では、変数ｘに、Ｘテーブル中で変数ＮＯＴＥの値により指定される要素ＸＴＡＢＬＥ（ＮＯＴＥ）（図３参照）の値を代入する。その次に移行するステップ１７０３では、変数ｙに０を代入する。ステップ１７０４には、その代入後に移行する。
【００８０】
ステップ１７０４では、変数ｘ、ｙの各値で指定される位置の表示色が押鍵マークに使われている特定色か否か判定する。その表示色が特定色でなかった場合、判定はＮＯとなってステップ１７１１に移行し、そうでない場合には、判定はＹＥＳとなり、ＶＥＬテーブル中の変数ｙの値で指定される要素ＶＥＬＴＡＢＬＥ（ｙ）の値を変数ＶＥＬに代入した（ステップ１７０５）後、ステップ１７０６に移行する。
【００８１】
ステップ１７０６では、変数ＮＯＴＥの値をノート番号とする楽音が消音中か否か判定する。そのノート番号の楽音が発音されていない場合、判定はＹＥＳとなり、変数ＮＯＴＥ、ＶＥＬの各値で指定される楽音の発音を指示するコマンド（ノートオンコマンド）を生成し（ステップ１７０７）、そのコマンドを音源１０８に送出した（ステップ１７０８）後、ステップ１７０９に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、そのステップ１７０９に移行する。
【００８２】
押鍵マークは、鍵を押鍵させているべき間、表示される。鍵の押鍵を教示する前にその鍵をユーザーが押鍵することもありえる。このようなことから、ステップ１７０６の判定処理を行い、その判定結果に応じてノートオンコマンドを音源１０８に送出することにより、同じノートオンコマンドを繰り返し音源１０８に送出するようなことを回避している。これは、鍵の離鍵を教示する場合も同様である。
【００８３】
ステップ１７０９では、変数ＮＯＴＥの値をインクリメントする。次のステップ１７１０では、変数ＮＯＴＥの値がノート番号の最大数より大きいか否か判定する。その値が最大数より大きい場合、判定はＹＥＳとなり、ここで一連の処理を終了する。そうでない場合には、判定はＮＯとなって上記ステップ１７０２に戻る。それにより、着目する鍵を変えて、それ以降の処理を同様に実行する。
【００８４】
上記ステップ１７０４の判定がＮＯとなって移行するステップ１７１１では、変数ｙの値をインクリメントする。続くステップ１７１２では、変数ｙの値がｙ軸上の探索範囲の最大値（上限値）より大きいか否か判定する。その値が最大値より大きい場合、判定はＹＥＳとなってステップ１７１３に移行する。そうでない場合には、判定はＮＯとなって上記ステップ１７０４に戻る。それにより、ｙ軸上の位置をずらして、変数ｘの値でｘ軸上の位置が指定された探索範囲内に存在する押鍵マークの確認を行う。
【００８５】
ステップ１７１３では、変数ＮＯＴＥの値をノート番号とする楽音が発音中か否か判定する。その楽音を発音させていた場合、判定はＹＥＳとなり、ベロシティ値を０としてそのノート番号をもつ楽音の消音を指示するノートオフコマンドを生成し（ステップ１７１４）、そのコマンドを音源１０８に送出してから（ステップ１７１５）、ステップ１７０９に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、そのステップ１７０９に移行する。
【００８６】
最後に、図１８、及び図１９に示すフローチャートを参照して、図１５に示す表示処理内でステップ１５０３として実行される表示（１）処理について詳細に説明する。
先ず、ステップ１８０１では、変数ＳＴＦの値が１か否か判定する。その値が１であった場合、つまり演奏ガイドを行っている場合、判定はＹＥＳとなってステップ１８０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００８７】
ステップ１８０２では、変数ＣＨＡＮＧＥＦの値が１か否か、即ち表示部１０５の表示内容を更新したか否か判定する。その更新を行った場合、判定はＹＥＳとなり、変数ＣＨＡＮＧＥＦに０を代入し（ステップ１８０３）、上述の検出処理を実行し（ステップ１８０４）、更に上述のＮＯＴＥ検出処理を実行した（ステップ１８０５）後、ステップ１８０６に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００８８】
ステップ１８０６では、変数ＮＯＴＥの値が、押鍵マークが存在しないことを示す値（図中では「データなし」と表記）か否か判定する。その値が代入されていた場合、判定はＹＥＳとなり、ステップ１８０７で変数ＯＮＦに０を代入した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１８０８に移行する。
【００８９】
行うべき演奏操作（ここでは押鍵）をユーザーが行ったか否かに応じて演奏ガイドの進行を制御する場合、その有無を把握できるようにしておく必要がある。変数ＯＮＦは、そのために用意したものである。それに代入した０は、その演奏操作を行っていないことを示し、それに代入される１は、その演奏操作を行ったことを示す。
【００９０】
ステップ１８０８では、変数ＷＡＩＴＦの値が０か否か判定する。それまで押鍵すべき鍵が存在していなかった場合、つまり、新たに押鍵すべき鍵が生じた場合、それには０が代入されていることから、判定はＹＥＳとなってステップ１８０９に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００９１】
ステップ１８０９では、変数ＯＮＦの値が０か否か判定する。変数ＷＡＩＴＦと同様に、新たに押鍵すべき鍵が生じた場合、それには０が代入されることから、判定はＹＥＳとなってステップ１８１０に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００９２】
このように、ステップ１８１０には、新たに押鍵すべき鍵が生じた場合に移行する。そのステップ１８１０以降では、その鍵をユーザーが押鍵するまでの間、再生繰り返し部分を繰り返し再生できるように、更にはその次に押鍵すべき鍵への押鍵に対応できるようにするための処理が行われる。
【００９３】
先ず、ステップ１８１０では、変数ＣＵＲＲＥＮＴＮＯＴＥに、ステップ１８０５のＮＯＴＥ検出処理を実行することで更新された変数ＮＯＴＥの値を代入する。その代入を行った後は、変数ＷＡＩＴＦに１、変数ＣＵＲＲＥＮＴＧに変数Ｇの値をそれぞれ代入した（ステップ１８１１、１８１２）後、ステップ１８１３に移行する。
【００９４】
ステップ１８１３では、変数ＮＥＸＴＧの値で指定される画像データの次に位置する画像データが存在するか否か判定する。その画像データが存在しない場合、判定はＮＯとなってステップ１８１９に移行し、そうでない場合には、判定はＹＥＳとなってステップ１８１４に移行する。
【００９５】
ステップ１８１４では、変数ＮＥＸＴＧの値をインクリメントする。次のステップ１８１５では、そのインクリメント後の値で指定される次の画像データを映像メモリ１０４から読み出す。その次のステップ１８１６では、読み出した画像データを対象にしたＮＯＴＥ検出処理を実行する。ステップ１８１７にはその後に移行する。
【００９６】
ステップ１８１７では、変数ＮＯＴＥの値が、押鍵マークが存在しないことを示す値（図中では「データなし」と表記）か否か判定する。その値が代入されていた場合、判定はＹＥＳとなり、ステップ１８１８で変数ＮＥＸＴＦに１を代入した後、上記ステップ１８１３に戻る。そうでない場合には、判定はＮＯとなって図１９のステップ１８２０に移行する。
【００９７】
そのステップ１８２０では、変数ＮＥＸＴＦの値が１か否か判定する。その値が１でなかった場合、判定はＮＯとなって図１８のステップ１８１３に戻る。それにより、次に押鍵すべき鍵の押鍵を教示する画像データを指定する値が変数ＮＥＸＴＧに代入されるまで、或いはその画像データが存在しないことが確認されるまで、ステップ１８１３〜１８２０で形成される処理ループを繰り返し実行する。一方、そうでない場合には、判定はＹＥＳとなり、変数ＮＥＸＴＮＯＴＥに変数ＮＯＴＥの値（ステップ１８１６の処理で更新される）、変数ＮＥＸＴＦに０、変数ＦＯＲＭＥＲＧに変数Ｇの値をそれぞれ代入した（ステップ１８２１〜１８２３）後、ステップ１８２４に移行する。
【００９８】
ステップ１８２４以降では、再生繰り返し部分を特定し、その部分を繰り返し再生できるようにするための処理が行われる。
先ず、ステップ１８２４では、変数ＦＯＲＭＥＲＧの値で指定される画像データの前に位置する画像データが存在するか否か判定する。その画像データが存在しない場合、判定はＮＯとなってステップ１８２９に移行し、変数Ｇに変数ＦＯＲＭＥＲＧの値を代入した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１８２５に移行する。なお、ステップ１８２４でのＮＯの判定は、実際には、現在、押鍵すべき鍵が最初に押鍵すべき鍵であった場合にのみ発生する。
【００９９】
ステップ１８２５では、変数ＦＯＲＭＥＲＧの値をデクリメントする。続くステップ１８２６では、そのデクリメント後の値で指定される画像データを映像メモリ１０４から読み出す。その次のステップ１８２７では、読み出した画像データを対象にした図１４に示すＮＯＴＥ検出処理を実行する。その実行後に移行するステップ１８２８では、変数ＮＯＴＥの値が、押鍵マークが存在しないことを示す値（図中では「データなし」と表記）か否か判定する。その値が代入されていた場合、判定はＹＥＳとなって上記ステップ１８２４に戻る。そうでない場合には、判定はＮＯとなって上述のステップ１８２９に移行し、変数Ｇに変数ＦＯＲＭＥＲＧの値を代入する。
【０１００】
図１８のステップ１８１０には、次に押鍵すべき鍵を教示する最初の画像データを表示させたときに移行する。このため、ステップ１８２８でのＮＯの判定は、その鍵の直前に押鍵すべき鍵を教示する最後の画像データを対象にノート検出処理を実行したときに行われる。
【０１０１】
図１８のステップ１８１３の判定がＮＯとなって移行するステップ１８１９では、変数ＮＥＸＴＮＯＴＥに、次に押鍵すべき鍵が存在しない（図中では「データなし」と表記）、つまり現在、押鍵すべき鍵が演奏の最後に押鍵すべき鍵であることを示す値を代入する。その代入後は、図１９のステップ１８２２に移行して、それ以降の処理を同様に実行する。
【０１０２】
図５に示す全体処理内で実行されるサブルーチン処理の説明に戻り、ステップ５０４として実行される鍵盤処理、及びその鍵盤処理内で実行されるサブルーチン処理について詳細に説明する。
図２０は、その鍵盤処理のフローチャートである。始めに図２０を参照して、その鍵盤処理について詳細に説明する。
【０１０３】
その鍵盤処理では、先ず、ステップ２００１で変数ＭＯＤＥの値が０か否か判定する。その値が０であった場合、判定はＹＥＳとなってステップ２００２に移行し、通常モード用の鍵盤（０）処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ２００３に移行し、インタラクティブモード用の鍵盤（１）処理を実行した後、一連の処理を終了する。
【０１０４】
図２１は、上記ステップ２００２として実行される鍵盤（０）処理のフローチャートである。次に図２１を参照して、そのサブルーチン処理について詳細に説明する。
先ず、ステップ２１０１では、鍵盤１０６に走査を行わせ、その走査結果を受け取って解析を行い、状態が変化した鍵、その変化の内容、その変化が押鍵によるものであればその速さ、をそれぞれ特定する。
【０１０５】
ステップ２１０１に続くステップ２１０２では、解析結果から、鍵の状態変化を判定する。鍵盤１０６上の鍵に状態が変化したものが存在しなかった場合、その旨が判定され、ここで一連の処理が終了する。押鍵（オン）による変化が生じた鍵が存在した場合には、その旨が判定されてステップ２１０３に移行する。
【０１０６】
ステップ２１０３では、変数ＫＥＹに、押鍵による変化が生じた鍵のノート番号（押鍵番号）を代入する。次のステップ２１０４では、変数ＴＯＵＣＨに、その押鍵時の速さを示す値を代入する。その後は、変数ＫＥＹ、ＴＯＵＣＨの値で指定される楽音の発音を指示するノートオンコマンドを生成し（ステップ２１０５）、そのコマンドを音源１０８に送出した（ステップ２１０６）後、一連の処理を終了する。
【０１０７】
一方、離鍵（オフ）による変化が生じた鍵が存在した場合には、上記ステップ２１０２でその旨が判定されてステップ２１０７に移行する。
そのステップ２１０７では、変数ＫＥＹに、離鍵による変化が生じた鍵のノート番号（押鍵番号）を代入する。次のステップ２１０８では、変数ＴＯＵＣＨに、消音を指示する値である０を代入する。その後は、変数ＫＥＹ、ＴＯＵＣＨの値で指定される楽音の消音を指示するノートオフコマンドを生成し（ステップ２１０９）、そのコマンドを音源１０８に送出した（ステップ２１０６）後、一連の処理を終了する。
【０１０８】
図２２、及び図２３は、図２０に示す鍵盤処理内でステップ２００３として実行される鍵盤（１）処理のフローチャートである。最後に図２２、及び図２３を参照して、そのサブルーチン処理について詳細に説明する。
その鍵盤（１）処理のステップ２２０１〜２２０６、及びステップ２２０７〜２２１０の処理内容は、上述の鍵盤（０）処理におけるステップ２１０１、２１０２、２１０７〜２１０９、及びステップ２１０３〜２１０６のそれと基本的に同じである。このことから、それら各ステップの処理の説明は省略し、ステップ２２１０の次に実行するステップ２２１１以降のステップの処理についてのみ説明する。
【０１０９】
そのステップ２２１１では、変数ＷＡＩＴＦの値が１か否か判定する。上述したように、それには押鍵すべき鍵が生じた際に１が代入される。このことから、そのような鍵が存在する場合、判定はＹＥＳとなってステップ２２１２に移行し、そうでない場合には、判定はＮＯとなって図２３のステップ２２１９に移行する。
【０１１０】
ステップ２２１２では、変数ＫＥＹの値が変数ＣＵＲＲＥＮＴＮＯＴＥの値と一致するか否か、つまりユーザーが押鍵した鍵（のノート番号）が押鍵すべき鍵（のノート番号）と一致するか否か判定する。それらが一致しなかった場合、判定はＮＯとなってステップ２２１３に移行し、図１０に示すタイマインタラプト処理の実行周期をこれまでより長くさせる、つまり映像データの再生速度をより低下させる設定を行った後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ２２１４に移行する。
【０１１１】
ステップ２２１４では、上記実行周期を基準に戻す設定を行う。その後は、変数ＷＡＩＴＦには０、変数Ｇには変数ＣＵＲＲＥＮＴＧの値、変数ＯＮＦには１をそれぞれ設定してから（ステップ２２１５〜２２１７）、一連の処理を終了する。
【０１１２】
変数Ｇに変数ＣＵＲＲＥＮＴＧの値を代入することにより、ユーザーが押鍵した押鍵すべき鍵を教示する画像データが指定されて次に表示されることになる。そのようにして本実施の形態では、ユーザーが押鍵すべき鍵を押鍵すると、言い換えればその鍵の押鍵を教示した現在押鍵時点まで演奏を行うと、再生繰り返し部分の再生が途中であっても、その現在押鍵時点以降の再生に移行させている。それにより、現在押鍵時点まで演奏を行ったユーザーには、それ以降の演奏に直ちに移れるようにして、ガイドする演奏をより快適に行える環境を実現させている。
【０１１３】
上記ステップ２２１１の判定がＮＯとなって移行する図２３のステップ２２１９では、変数ＫＥＹの値が変数ＮＥＸＴＮＯＴＥの値と一致するか否か、即ちユーザーが押鍵した鍵が次に押鍵すべき鍵（押鍵すべきタイミングがきていない鍵）と一致するか否か判定する。それらが一致する場合、判定はＹＥＳとなってステップ２２２０に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１１４】
ステップ２２２０以降では、次に押鍵すべき鍵をユーザーが押鍵したことに対応するための処理が行われる。本実施の形態では、その鍵の押鍵を教示する画像データを表示するように映像データの再生を進行させることで対応している。それにより、押鍵すべき鍵をユーザーが押鍵したときと同様に、ユーザーが行った演奏操作に合わせる形で映像データの再生を進行させて、よりユーザーにとって適切と感じられるように演奏ガイドを行っている。
【０１１５】
先ず、ステップ２２２０では、変数Ｇに変数ＮＥＸＴＧの値を代入する。それにより、次に表示する画像データとして、次に押鍵すべき鍵の押鍵を教示する画像データを指定した後に移行するステップ２２２１では、変数ＯＮＦに１を代入する。その後は、ステップ２２２２で変数ＣＵＲＲＥＮＴＧに変数Ｇの値を代入してからステップ２２２３の処理に移行する。
【０１１６】
ステップ２２２３では、変数ＮＥＸＴＧの値で指定される画像データの次に位置する画像データが存在するか否か判定する。その画像データが存在する場合、判定はＹＥＳとなり、変数ＮＥＸＴＧの値をインクリメントし（ステップ２２２４）、インクリメント後の値で指定される次の画像データを映像メモリ１０４から読み出し（ステップ２２２５）、その画像データを対象にして図１４に示すＮＯＴＥ検出処理を実行した（ステップ２２２６）後、ステップ２２２７に移行する。そうでない場合には、判定はＮＯとなり、変数ＮＥＸＴＮＯＴＥに次の画像データが存在しないことを示す値（図中「データなし」と表記）を代入し（ステップ２２３３）、変数ＮＥＸＴＦに０を代入した（ステップ２２３１）後、一連の処理を終了する。
【０１１７】
ステップ２２２７では、変数ＮＯＴＥの値が、押鍵が教示された鍵を検出できなかったことを示す値か否か判定する。そのような値が代入されていた場合、判定はＹＥＳとなり、ステップ２２２８で変数ＮＥＸＴＦに１を代入した後、上記ステップ２２２３に戻る。そうでない場合には、判定はＮＯとなってステップ２２２９に移行する。
【０１１８】
ステップ２２２９では、変数ＮＥＸＴＦの値が１か否か判定する。その１が代入されていた場合、判定はＹＥＳとなり、変数ＮＥＸＴＮＯＴＥに変数ＮＯＴＥの値を代入し（ステップ２２３０）、更に変数ＮＥＸＴＦに０を代入した（ステップ２２３１）後、一連の処理を終了する。そうでない場合には、判定はＮＯとなって上記ステップ２２２３に戻る。
＜第２の実施の形態＞
上記第１の実施の形態では、押鍵すべき鍵の押鍵時の速さは押鍵マークのｙ軸上の位置で教示している。これに対し、第２の実施の形態は、その速さを押鍵マークの表示色で教示するようにしたものである。
【０１１９】
第２の実施の形態による演奏処理装置を搭載した電子鍵盤楽器の構成は、第１の実施の形態におけるそれと基本的に同じである。動作も大部分が共通している。このようなことから、第１の実施の形態と同じ、或いは基本的に同じものについては、第１の実施の形態で付した符号をそのまま用いて、第１の実施の形態から異なる部分のみ説明することとする。
【０１２０】
図２４は、第２の実施の形態における演奏ガイド方法を説明する図である。
第２の実施の形態では、図２４に示すように、押鍵マークを配置する位置は鍵盤画像の下側（ｙ座標値がより小さい側）として、その表示色を押鍵すべき速さに応じて異ならせている。そのようにして、第１の実施の形態と同様に、押鍵すべき鍵に加えて、押鍵すべき速さも教示する。
【０１２１】
なお、図２４中の「Ｆ３」は押鍵すべき鍵に割り当てられた音高を示している。「ｖｅｌ：」は、それに続く数値が速さを示していることを表すシンボルである。そのシンボルに続く「８０」は、０〜１２７の間の数値で押鍵すべき速さを表すと８０になることを示している。その数値が大きくなるほど、押鍵すべき速さは速くなる。
【０１２２】
図２４に示すような画像を表示させる映像データから押鍵すべき鍵、押鍵すべき速さを抽出するためのテーブル群（図３参照）の構成は、例えば第１の実施の形態からＶＥＬテーブルだけを除いたものである。動作については、押鍵すべき速さを表示色で示すようにしたことから、図１７に示す検出処理が第２の実施の形態では異なっている。このことから以降、図２５を参照して、第２の実施の形態における検出処理についてのみ詳細に説明することとする。
【０１２３】
先ず、ステップ２５０１では、変数ＮＯＴＥに０を代入する。続くステップ２５０２では、変数ｘに、Ｘテーブル中で変数ＮＯＴＥの値により指定される要素ＸＴＡＢＬＥ（ＮＯＴＥ）（図３参照）の値を代入する。その次に移行するステップ２５０３では、変数ｙに０を代入する。ステップ２５０４には、その代入後に移行する。
【０１２４】
ステップ２５０４では、変数ｘ、ｙの各値で指定される位置の表示色が押鍵マークに使われている特定色か否か判定する。その表示色が特定色でなかった場合、判定はＮＯとなってステップ２５１４に移行し、そうでない場合には、判定はＹＥＳとなってステップ２５０５に移行する。
【０１２５】
ステップ２５１４〜２５１８、２５１２、及び２５１３の各処理内容は、図１７に示す検出処理におけるステップ１７１１〜１７１５、１７０９、及び１７１０のそれと基本的に同じである。このことから、それら各ステップの処理説明は省略することとする。
【０１２６】
第２の実施の形態では、黄、橙、及び赤の３色を特定色として採用している。このことから、ステップ２５０５では、特定色の種類としてそれらのうちの何れかであるか判定する。その判定結果が黄であった場合、ステップ２５０６で変数ＶＥＬに所定値Ｖ１を代入した後、ステップ２５０９に移行する。同様に、判定結果が橙であった場合には、ステップ２５０７で変数ＶＥＬに所定値Ｖ２を代入した後、判定結果が赤であった場合には、ステップ２５０８で変数ＶＥＬに所定値Ｖ３を代入した後、そのステップ２５０９に移行する。ステップ２５０９〜２５１３の各処理内容は、図１７に示す検出処理におけるステップ１７０６〜１７１０のそれと基本的に同じであることから、それらの説明は省略する。
＜第３の実施の形態＞
上記第２の実施の形態では、押鍵すべき速さを押鍵マークの表示色、及びシンボルの表示で教示している。これに対し、第３の実施の形態は、その速さをシンボルの表示のみで教示するようにしたものである。
【０１２７】
第３の実施の形態による演奏処理装置を搭載した電子鍵盤楽器の構成は、第１の実施の形態におけるそれと基本的に同じである。動作も大部分が共通している。このようなことから、第２の実施の形態と同様に、第１の実施の形態と同じ、或いは基本的に同じものについては、第１の実施の形態で付した符号をそのまま用いて、第１の実施の形態、或いは第２の実施の形態から異なる部分のみ説明することとする。
【０１２８】
第３の実施の形態における演奏ガイドでは、図２４に示すようにして、押鍵すべき速さを数値で教示している。しかし、押鍵マークの表示色は１色としている。それにより、その速さをシンボルの表示のみで教示している。第１の実施の形態と同じく、各テーブル中の要素を指定する場合には、配列変数と同様の表記法を用いることとする。
【０１２９】
図２４に示すような画像から押鍵すべき鍵、押鍵すべき速さを抽出することから、第３の実施の形態では、そのためのテーブル群として、図２６に示すように、ＫＩＧＯテーブル（ＫＩＧＯＴＡＢＬＥ）、及びＳＵＪＩテーブル（ＳＵＪＩＴＡＢＬＥ）をそれぞれＸテーブル、及びＶＥＬテーブル（図３参照）の代わりに用意している。ＫＩＧＯテーブルは、音高を教示するシンボル（図２４中では「Ｆ３」が対応）からその音高を特定するためのものであり、ＳＵＪＩテーブルは、押鍵すべき速さを教示するシンボル（図２４中では「８０」が対応）からその速さを特定するためのものである。
【０１３０】
音高（ノート番号）の特定は、例えば画像データ中からそれを示すシンボルが配置される部分を切り出してコピーし、それをＫＩＧＯテーブル中の各要素のデータと照合していくことで行われる。これは、押鍵すべき速さの特定も同様である。
【０１３１】
演奏ガイド中の自動演奏は、そのようにして特定した音高、及び速さを用いて行う。それにより、図１７に示す検出処理が第３の実施の形態でも異なっている。このことから以降、図２７を参照して、第３の実施の形態における検出処理についてのみ詳細に説明することとする。
【０１３２】
先ず、ステップ２７０１では、画像データ中の特定位置の部分をコピーして、そこに配置される音高を示すシンボル（記号）の検出を行う。その次のステップ２７０２では、変数ＮＯＴＥに０を代入する。その後は、ステップ２７０３に移行して、ＫＩＧＯテーブル中で変数ＮＯＴＥの値により指定される要素ＫＩＧＯＴＡＢＬＥ（ＮＯＴＥ）のデータが示す形状が検出したシンボル（記号）のそれと一致するか否か判定する。それらが許容範囲内で一致した場合、判定はＹＥＳとなってステップ２７０４に移行し、そうでない場合には、判定はＮＯとなってステップ２７１４に移行する。
【０１３３】
ステップ２７１４〜２７１６、２７１２、及び２７１３の各処理内容は、図１７に示す検出処理におけるステップ１７１１〜１７１５、１７０９、及び１７１０のそれと基本的に同じである。このことから、それら各ステップの処理説明は省略する。ステップ２７１３の判定がＮＯとなった場合、上記ステップ２７０３に戻る。
【０１３４】
ステップ２７０４では、画像データ中の特定位置の部分（シンボル「ｖｅｌ：」に続く部分）をコピーして、そこに配置される押鍵時の速さを示すシンボル（数字）の検出を行う。次のステップ２７０５では、変数ＶＥＬに０を代入する。その後は、ステップ２７０６に移行して、ＳＵＪＩテーブル中で変数ＶＥＬの値により指定される要素ＳＵＪＩＴＡＢＬＥ（ＶＥＬ）のデータが示す形状が検出したシンボル（数字）のそれと一致するか否か判定する。それらが許容範囲内で一致した場合、判定はＹＥＳとなってステップ２７０９に移行し、そうでない場合には、判定はＮＯとなってステップ２７０７に移行する。
【０１３５】
ステップ２７０７では、変数ＶＥＬの値をインクリメントする。その次に実行するステップ２７０８では、変数ＶＥＬの値がＳＵＪＩテーブル中の要素を指定できる数の最大より大きいか否か判定する。その値が最大数より大きい場合、判定はＹＥＳとなって上記ステップ２７１４に移行し、そうでない場合には、判定はＮＯとなって上記ステップ２７０６に戻る。それにより、着目する要素を変えて、それ以降の処理を同様に実行する。ステップ２７０９〜２７１３の各処理内容は、図１７に示す検出処理におけるステップ１７０６〜１７１０のそれと基本的に同じであることから、それらの説明は省略する。
【０１３６】
第２、及び第３の実施の形態で説明したように、演奏操作の教示方法を変えても、テーブル群の構成を変えることでそれに対応させることができる。このことから明らかなように、テーブル群、或いはそれに代わるデータを用意することにより、様々な教示方法に対応させることができる。
【０１３７】
なお、本実施の形態（第１〜第３の実施の形態）では、演奏データ中の画像データが教示する演奏操作の内容（演奏情報）を随時、抽出しているが、その演奏情報は、演奏ガイドの開始時などに、映像データ（１演奏）分を一度に抽出するようにしても良い。その演奏情報は、演奏ガイド用ではなく、単に自動演奏を行うために用いても良い。
【０１３８】
再生繰り返し部分の再生中に押鍵すべき鍵をユーザーが押鍵すると、その部分の再生を直ちに終了させているが、その再生を直ちに終了させるのではなく、例えば再生速度を速くすることにより、その再生をより早く終了させるようにしても良い。
【０１３９】
上述したような演奏処理装置、或いはその変形例を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた演奏処理装置を実現させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【０１４０】
【発明の効果】
以上、説明したように本発明は、取得した映像データから、ユーザーが演奏中に行うべき演奏操作の内容を示す演奏情報を自動的に抽出・生成し、その演奏情報を用いて、映像データが演奏操作を表す演奏に係わる演奏処理、例えばその演奏を再生する自動演奏、或いは発音させるべき楽音を発音させる演奏操作をユーザーが行ったか否か判定した結果を映像データの再生に反映させた演奏ガイドを行う。
【０１４１】
そのように、映像データから演奏情報を自動的に抽出・生成するため、映像データを用意することにより、自動演奏や、演奏データの再生をユーザーの演奏操作に応じてインタラクティブに行うといったより様々な演奏処理を行うことができる。
【０１４２】
本発明は、映像データの再生により新たに教示した演奏操作をユーザーが行っていない場合に、その演奏操作を動画表示する部分、つまりそれより遡った時点からその演奏操作を教示する時点までを少なくとも含む部分を再度、再生させる。その再度の再生により、既に行った演奏操作から新たに教示の演奏操作を行うまでの動作をユーザーは再確認することができる。このためユーザーは、新たに教示の演奏操作をより容易に行えるようになる。
【図面の簡単な説明】
【図１】本実施の形態による演奏処理装置を搭載した電子楽器の構成図である。
【図２】映像メモリに格納されたデータを説明する図である。
【図３】映像メモリにデータとして格納されたテーブル群を説明する図である。
【図４】演奏ガイド方法を説明する図である。
【図５】全体処理のフローチャートである。
【図６】スイッチ処理のフローチャートである。
【図７】モード選択処理のフローチャートである。
【図８】スタート／ストップ処理のフローチャートである。
【図９】スタート／ストップ（０）処理のフローチャートである。
【図１０】タイマインタラプト処理のフローチャートである。
【図１１】タイマインタラプト（０）処理のフローチャートである。
【図１２】タイマインタラプト（１）処理のフローチャートである。
【図１３】スタート／ストップ（１）処理のフローチャートである。
【図１４】ＮＯＴＥ検出処理のフローチャートである。
【図１５】表示処理のフローチャートである。
【図１６】表示（０）処理のフローチャートである。
【図１７】検出処理のフローチャートである。
【図１８】表示（１）処理のフローチャートである。
【図１９】表示（１）処理のフローチャートである（続き）。
【図２０】鍵盤処理のフローチャートである。
【図２１】鍵盤（０）処理のフローチャートである。
【図２２】鍵盤（１）処理のフローチャートである。
【図２３】鍵盤（１）処理のフローチャートである（続き）。
【図２４】演奏ガイド方法を説明する図である（第２の実施の形態）。
【図２５】検出処理のフローチャートである（第２の実施の形態）。
【図２６】映像メモリにデータとして格納されたテーブル群を説明する図である（第３の実施の形態）。
【図２７】検出処理のフローチャートである（第３の実施の形態）。
【符号の説明】
１０１    ＣＰＵ
１０２    プログラムＲＯＭ
１０３    ワークＲＡＭ
１０４    映像メモリ
１０５    表示部
１０６    鍵盤
１０７    スイッチ（ＳＷ）群
１０８    音源
１０９    発音回路
【図１】
2004347879.tif 000003
【図２】
2004347879.tif 000004
【図３】
2004347879.tif 000005
【図４】
2004347879.tif 000006
【図５】
2004347879.tif 000007
【図６】
2004347879.tif 000008
【図７】
2004347879.tif 000009
【図８】
2004347879.tif 000010
【図９】
2004347879.tif 000011
【図１０】
2004347879.tif 000012
【図１１】
2004347879.tif 000013
【図１２】
2004347879.tif 000014
【図１３】
2004347879.tif 000015
【図１４】
2004347879.tif 000016
【図１５】
2004347879.tif 000017
【図１６】
2004347879.tif 000018
【図１７】
2004347879.tif 000019
【図１８】
2004347879.tif 000020
【図１９】
2004347879.tif 000021
【図２０】
2004347879.tif 000022
【図２１】
2004347879.tif 000023
【図２２】
2004347879.tif 000024
【図２３】
2004347879.tif 000025
【図２４】
2004347879.tif 000026
【図２５】
2004347879.tif 000027
【図２６】
2004347879.tif 000028
【図２７】
2004347879.tif 000029