(57)【要約】【課題】  演奏上で注意喚起すべき内容を事前にユーザに報知する演奏支援装置を実現する。【解決手段】  課題曲中で類似するエリア同士をグループ化し、グループ化された各エリア毎の支援データを記憶するエリア情報データベースａｒｅａ＿ｉｎｆｏを設け、ユーザの演奏操作に応じて電子楽器２０側から演奏データがＭＩＤＩ入力される毎に課題曲の演奏情報と比較し、その比較結果に基づきエリアの演奏を判定する。演奏判定されたエリアと同一グループに属する他のエリアをエリア情報データベースａｒｅａ＿ｉｎｆｏから検索し、該当するエリアの支援データを、演奏判定されたエリアの習熟段階に対応した支援データと同一のものに設定する。そして、エリア情報データベースａｒｅａ＿ｉｎｆｏを参照して支援対象箇所より早いタイミングで先行的に支援データを再生する。【選択図】  図１
2005031458.tif 000002
【特許請求の範囲】
【請求項１】
課題曲中の類似する類似区間同士をグループ化し、グループ化された各類似区間の支援データを記憶する区間情報記憶手段と、  
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定手段と、
前記支援データ指定手段が演奏判定した類似区間と同一グループの他の類似区間を前記区間情報記憶手段から検索し、該当する類似区間について、前記支援データ指定手段にて指定された種類の支援データを前記区間情報記憶手段に設定する支援データ設定手段と、
演奏進行に従い、前記区間情報記憶手段から対応する類似区間の支援データを読み出し、その類似区間の演奏タイミングより早い時期に支援データを再生して演奏支援する支援手段と
を具備することを特徴とする演奏支援装置。
【請求項２】
複数の演奏区間に区切られた課題曲の内で類似する演奏区間同士をグループ化し、グループ化された各演奏区間の属性および支援データを記憶する区間情報記憶手段と、  
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を、当該演奏情報に対応させて記憶する演奏結果記憶手段と、
前記演奏結果記憶手段に記憶される比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定手段と、
前記支援データ指定手段が演奏判定した演奏区間と同一グループに属する他の演奏区間を前記区間情報記憶手段から検索し、該当する全ての演奏区間について、前記支援データ指定手段にて指定された種類の支援データを前記区間情報記憶手段に設定する支援データ設定手段と、
演奏進行に従い、前記区間情報記憶手段から対応する演奏区間の属性および支援データを読み出し、その演奏区間の属性に含まれる支援対象箇所より早い時期に支援データを再生して演奏支援する支援手段と
を具備することを特徴とする演奏支援装置。
【請求項３】
前記支援データ指定手段は、演奏区間の正解率が所定以上の場合には不正解率に応じて完成期および安定期のいずれであるかを判定し、正解率が所定未満の場合にはどの程度演奏操作が行われたかを表す演奏率に応じて向上期および練習初期のいずれであるかを判定する判定手段と、
この判定手段によって完成期と判定された場合には再生不要を表す支援データを、安定期と判定された場合には正しく弾けた旨を表す支援データを、向上期と判定された場合には演奏上で注意喚起する点を表す支援データを、練習初期と判定された場合には正しく弾けていない旨を表す支援データをそれぞれ指定する指定手段と
を具備することを特徴とする請求項２に記載の演奏支援装置。
【請求項４】
課題曲中の類似する類似区間同士をグループ化し、グループ化された各類似区間の支援データを記憶する区間情報データベースを備え、
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定処理と、
前記支援データ指定処理にて演奏判定された類似区間と同一グループの他の類似区間を前記区間情報データベースから検索し、該当する類似区間について、前記支援データ指定処理にて指定された種類の支援データを前記区間情報データベースに設定する支援データ設定処理と、
演奏進行に従い、前記区間情報データベースから対応する類似区間の支援データを読み出し、その類似区間の演奏タイミングより早い時期に支援データを再生して演奏支援する支援処理と
をコンピュータで実行させることを特徴とする演奏支援プログラム。
【請求項５】
複数の演奏区間に区切られた課題曲の内で類似する演奏区間同士をグループ化し、グループ化された各演奏区間の属性および支援データを記憶する区間情報データベースを備え、  
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を、当該演奏情報に対応させて記憶する演奏結果記憶処理と、
前記演奏結果記憶処理にて記憶された比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定処理と、
前記支援データ指定処理にて演奏判定された演奏区間と同一グループに属する他の演奏区間を前記区間情報データベースから検索し、該当する全ての演奏区間について、前記支援データ指定処理にて指定された種類の支援データを前記区間情報データベースに設定する支援データ設定処理と、
演奏進行に従い、前記区間情報データベースから対応する演奏区間の属性および支援データを読み出し、その演奏区間の属性に含まれる支援対象箇所より早い時期に支援データを再生して演奏支援する支援処理と
をコンピュータで実行させることを特徴とする演奏支援プログラム。
【請求項６】
前記支援データ指定処理は、演奏区間の正解率が所定以上の場合には不正解率に応じて完成期および安定期のいずれであるかを判定し、正解率が所定未満の場合にはどの程度演奏操作が行われたかを表す演奏率に応じて向上期および練習初期のいずれであるかを判定する判定処理と、
この判定処理にて完成期と判定された場合には再生不要を表す支援データを、安定期と判定された場合には正しく弾けた旨を表す支援データを、向上期と判定された場合には演奏上で注意喚起する点を表す支援データを、練習初期と判定された場合には正しく弾けていない旨を表す支援データをそれぞれ指定する指定処理と
を具備することを特徴とする請求項５に記載の演奏支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏上で注意喚起すべき内容をユーザに報知して演奏操作を支援する演奏支援装置および演奏支援プログラムに関する。
【背景技術】
【０００２】
ユーザの演奏操作を支援する装置として、例えば特許文献１には、演奏入力された音高に応じて演奏曲中の演奏箇所を検出し、検出した演奏箇所に対応してディスプレイに表示される楽譜を更新したり、演奏入力された音高と演奏曲中の音符データとを比較した結果に基づいてユーザにテンポずれを指摘するようにした演奏支援装置が開示されている。
【０００３】
【特許文献１】特許公開２００１−３３７６７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上述した従来の演奏支援装置では、演奏入力した後にその適否を判定してから演奏支援するので、例えばこれから演奏しようとするフレーズに進行する前に、そのフレーズで演奏ミスし易い箇所などのワンポイントアドバイスをユーザに提供する等、演奏上で注意喚起すべき内容を事前にユーザに報知することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、演奏上で注意喚起すべき内容を事前にユーザに報知することができる演奏支援装置および演奏支援プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に記載の発明では、課題曲中の類似する類似区間同士をグループ化し、グループ化された各類似区間の支援データを記憶する区間情報記憶手段と、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定手段と、前記支援データ指定手段が演奏判定した類似区間と同一グループの他の類似区間を前記区間情報記憶手段から検索し、該当する類似区間について、前記支援データ指定手段にて指定された種類の支援データを前記区間情報記憶手段に設定する支援データ設定手段と、演奏進行に従い、前記区間情報記憶手段から対応する類似区間の支援データを読み出し、その類似区間の演奏タイミングより早い時期に支援データを再生して演奏支援する支援手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、複数の演奏区間に区切られた課題曲の内で類似する演奏区間同士をグループ化し、グループ化された各演奏区間の属性および支援データを記憶する区間情報記憶手段と、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を、当該演奏情報に対応させて記憶する演奏結果記憶手段と、前記演奏結果記憶手段に記憶される比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定手段と、前記支援データ指定手段が演奏判定した演奏区間と同一グループに属する他の演奏区間を前記区間情報記憶手段から検索し、該当する全ての演奏区間について、前記支援データ指定手段にて指定された種類の支援データを前記区間情報記憶手段に設定する支援データ設定手段と、演奏進行に従い、前記区間情報記憶手段から対応する演奏区間の属性および支援データを読み出し、その演奏区間の属性に含まれる支援対象箇所より早い時期に支援データを再生して演奏支援する支援手段とを具備することを特徴とする。
【０００７】
上記請求項２に従属する請求項３に記載の発明では、前記支援データ指定手段は、演奏区間の正解率が所定以上の場合には不正解率に応じて完成期および安定期のいずれであるかを判定し、正解率が所定未満の場合にはどの程度演奏操作が行われたかを表す演奏率に応じて向上期および練習初期のいずれであるかを判定する判定手段と、この判定手段によって完成期と判定された場合には再生不要を表す支援データを、安定期と判定された場合には正しく弾けた旨を表す支援データを、向上期と判定された場合には演奏上で注意喚起する点を表す支援データを、練習初期と判定された場合には正しく弾けていない旨を表す支援データをそれぞれ指定する指定手段とを具備することを特徴とする。
【０００８】
請求項４に記載の発明では、課題曲中の類似する類似区間同士をグループ化し、グループ化された各類似区間の支援データを記憶する区間情報データベースを備え、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定処理と、前記支援データ指定処理にて演奏判定された類似区間と同一グループの他の類似区間を前記区間情報データベースから検索し、該当する類似区間について、前記支援データ指定処理にて指定された種類の支援データを前記区間情報データベースに設定する支援データ設定処理と、演奏進行に従い、前記区間情報データベースから対応する類似区間の支援データを読み出し、その類似区間の演奏タイミングより早い時期に支援データを再生して演奏支援する支援処理とをコンピュータで実行させることを特徴とする。
【０００９】
請求項５に記載の発明では、複数の演奏区間に区切られた課題曲の内で類似する演奏区間同士をグループ化し、グループ化された各演奏区間の属性および支援データを記憶する区間情報データベースを備え、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を、当該演奏情報に対応させて記憶する演奏結果記憶処理と、前記演奏結果記憶処理にて記憶された比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定する支援データ指定処理と、前記支援データ指定処理にて演奏判定された演奏区間と同一グループに属する他の演奏区間を前記区間情報データベースから検索し、該当する全ての演奏区間について、前記支援データ指定処理にて指定された種類の支援データを前記区間情報データベースに設定する支援データ設定処理と、演奏進行に従い、前記区間情報データベースから対応する演奏区間の属性および支援データを読み出し、その演奏区間の属性に含まれる支援対象箇所より早い時期に支援データを再生して演奏支援する支援処理とをコンピュータで実行させることを特徴とする。
【００１０】
上記請求項５に従属する請求項６に記載の発明では、前記支援データ指定処理は、演奏区間の正解率が所定以上の場合には不正解率に応じて完成期および安定期のいずれであるかを判定し、正解率が所定未満の場合にはどの程度演奏操作が行われたかを表す演奏率に応じて向上期および練習初期のいずれであるかを判定する判定処理と、この判定処理にて完成期と判定された場合には再生不要を表す支援データを、安定期と判定された場合には正しく弾けた旨を表す支援データを、向上期と判定された場合には演奏上で注意喚起する点を表す支援データを、練習初期と判定された場合には正しく弾けていない旨を表す支援データをそれぞれ指定する指定処理とを具備することを特徴とする。
【発明の効果】
【００１１】
請求項１，４に記載の発明によれば、課題曲中の類似する類似区間同士をグループ化し、グループ化された各類似区間の支援データを記憶する区間情報記憶手段を設け、演奏操作に応じて発生する演奏データと課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定すると、演奏判定した類似区間と同一グループの他の類似区間を区間情報記憶手段から検索し、該当する類似区間について、指定された種類の支援データを区間情報記憶手段に設定する。そして、演奏進行に従い、区間情報記憶手段から対応する類似区間の支援データを読み出し、その類似区間の演奏タイミングより早い時期に支援データを再生して演奏支援するので、例えばこれから演奏しようとするフレーズに進行する前に、そのフレーズで演奏ミスし易い箇所などのワンポイントアドバイスをユーザに提供する等、演奏上で注意喚起すべき内容を事前にユーザに報知することができる。
【００１２】
請求項２，５に記載の発明によれば、複数の演奏区間に区切られた課題曲の内で類似する演奏区間同士をグループ化し、グループ化された各演奏区間の属性および支援データを記憶する区間情報記憶手段を設け、演奏操作に応じて発生する演奏データと課題曲を形成する各音符を表す演奏情報とを比較して得た比較結果を分析して演奏判定し、その判定結果に対応した種類の支援データを指定すると、演奏判定した演奏区間と同一グループに属する他の演奏区間を前記区間情報記憶手段から検索し、該当する全ての演奏区間について、指定された種類の支援データを区間情報記憶手段に設定する。そして、演奏進行に従い、区間情報記憶手段から対応する演奏区間の属性および支援データを読み出し、その演奏区間の属性に含まれる支援対象箇所より早い時期に支援データを再生して演奏支援するので、演奏上で注意喚起すべき内容などを事前にユーザに報知することができる。  
【００１３】
請求項３，６に記載の発明によれば、演奏区間の正解率が所定以上の場合には不正解率に応じて完成期および安定期のいずれであるかを判定し、正解率が所定未満の場合にはどの程度演奏操作が行われたかを表す演奏率に応じて向上期および練習初期のいずれであるかを判定する。そして、完成期と判定された場合には再生不要を表す支援データを、安定期と判定された場合には正しく弾けた旨を表す支援データを、向上期と判定された場合には演奏上で注意喚起する点を表す支援データを、練習初期と判定された場合には正しく弾けていない旨を表す支援データをそれぞれ指定するので、ユーザに演奏習熟レベルを報知し得るようにすることができる。
【発明を実施するための最良の形態】
【００１４】
本発明による演奏支援装置および演奏支援プログラムは、周知の電子楽器もしくはパーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置などに適用され得る。以下では、本発明を実施するための最良の形態によるＤＴＭ装置を実施例とし、これについて図面を参照して説明する。
【実施例１】
【００１５】
Ａ．実施例の構成
（１）全体構成
図１は実施例の構成を示すブロック図である。この図において、１０は構成要素１〜６からなるＤＴＭ装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。電子楽器２０は鍵盤を備え、この鍵盤を用いたユーザの演奏操作に応じて発生する演奏データをＭＩＤＩ出力する。ＤＴＭ装置１０は、電子楽器２０側から演奏データがＭＩＤＩ入力される毎に、課題曲の各音符を表す演奏情報と比較して演奏の適否を判定し、その比較結果を対応する演奏情報に関連付けて保存する。また、ＤＴＭ装置１０は、演奏情報に関連付けて保存された比較結果に基づき、ユーザの演奏が「完成期」、「安定期」、「向上期」および「練習初期」のいずれに該当するのかを演奏判定し、判定結果に対応した内容の支援データを選択する。
【００１６】
ＤＴＭ装置１０は、課題曲をフレーズ単位に区切った演奏区間（以後、エリアと称す）毎の支援データを記憶するエリア情報データベースａｒｅａ＿ｉｎｆｏ（後述する）を備える。各エリアはフレーズの類似性に対応してグループ化される。最初に演奏判定されるエリアの判定結果に従い、そのエリアと同一グループに属する他のエリアにおける支援データを設定する。例えば、最初に演奏判定されるエリアが「向上期」と判定された場合、そのエリアと同一グループに属する他のエリアに、演奏上で注意喚起すべき内容を表す支援データを設定する。ＤＴＭ装置１０はエリア情報データベースａｒｅａ＿ｉｎｆｏを参照し、楽譜上の支援対象箇所より早いタイミングで先行的に支援データを再生する。これにより、演奏上で注意喚起すべき内容を事前にユーザに報知し得るようになる。
【００１７】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１は装置各部を制御するＣＰＵである。ＣＰＵ１は、ＭＩＤＩ入力される演奏データと課題曲の演奏情報とを比較した比較結果に基づき、ユーザの演奏が「完成期」、「安定期」、「向上期」および「練習初期」のいずれに該当するのかを演奏判定し、判定結果に対応した内容の支援データを設定し、これに基づき演奏支援する。こうした本発明の要旨に係わるＣＰＵ１の処理動作は追って詳述する。
２はプログラムエリアおよびデータエリアを有するＲＯＭである。ＲＯＭ２のプログラムエリアには、後述するメインルーチン、再生開始処理、支援開始処理、支援終了処理、演奏結果判定処理および演奏情報検索保存処理を実行する各種制御プログラムが記憶される。ＲＯＭ２のデータエリアには、手本となる課題曲の演奏情報が複数曲分記憶されており、これら内から選曲指定される課題曲の演奏情報がＲＡＭ３のデータエリアに格納される。演奏情報のデータ構造については追って述べる。
【００１８】
３はワークエリアおよびデータエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには、ＣＰＵ１の処理に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータエリアには、演奏情報ｐｌａｙｄａｔ、エリア情報データベースａｒｅａ＿ｉｎｆｏおよび停止情報ｎｏｗｐｌａｙが格納される。これら情報のデータ構造については追って述べる。
ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、電子楽器２０側から送出される演奏データを取り込む一方、ＤＴＭ装置１０側で発生したノートオンイベントを電子楽器２０にＭＩＤＩ出力する。キーボード５はキー入力操作に応じたイベントを発生する。キーボード５では、後述する再生開始処理の開始を指示するスタートスイッチおよび再生開始処理の停止を指示するストップスイッチが所定のキースイッチに割り当てられている。表示部６はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて、演奏情報を楽譜表示したり、支援データを画面表示する。
【００１９】
（３）データ構造
次に、図２〜図４を参照して、ＲＡＭ３のデータエリアに格納される演奏情報ｐｌａｙｄａｔ、エリア情報データベースａｒｅａ＿ｉｎｆｏおよび停止情報ｎｏｗｐｌａｙのデータ構造を説明する。
【００２０】
図２は演奏情報ｐｌａｙｄａｔのデータ構造を示すメモリマップである。演奏情報ｐｌａｙｄａｔは、課題曲を形成する各音符に対応して曲進行順にアドレッシングされる演奏情報ｐｌａｙｄａｔ［０］〜［ｎ］から構成されている。演奏情報ｐｌａｙｄａｔ［ｉ］（ｉ＝０〜ｎ）は、課題曲中の音符を識別するノート識別番号ｎｏｔｅ＿ｉｄ（ｐｌａｙｄａｔ［ｉ］［０］）、音高を表すノート番号ｎｏｔｅ＃（ｐｌａｙｄａｔ［ｉ］［１］）、曲頭からの経過時間で表現される発音タイミングＴｉｃｋ（ｐｌａｙｄａｔ［ｉ］［２］）、曲頭からの経過時間で表現される消音タイミングＥｎｄＴｉｃｋ（ｐｌａｙｄａｔ［ｉ］［３］）、処理状態を表すステイタスｓｔａｔｕｓ（ｐｌａｙｄａｔ［ｉ］［４］）および演奏入力される演奏データとの比較結果Ｒｅｓｕｌｔ（ｐｌａｙｄａｔ［ｉ］［５］）から構成される。
【００２１】
演奏情報ｐｌａｙｄａｔ［ｉ］［４］のステイタスｓｔａｔｕｓは、未発音の時に「０」、発音中に「１」、発音済みの時に「２」となる。また、演奏情報ｐｌａｙｄａｔ［ｉ］［５］の比較結果Ｒｅｓｕｌｔは、「−１」〜「３」のいずれかの整数値に設定される。
各値が意味するところは次の通りである。「−１」は正しく弾けていないことを表す。「０」は演奏範囲に無いことを表す。「１」は正しく弾かれたことを表す。「２」は演奏データが課題曲のノートデータの発音タイミングより早く押鍵されたことを表す。「３」は演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたことを表す。
【００２２】
次に、図３を参照してエリア情報データベースａｒｅａ＿ｉｎｆｏのデータ構造を説明する。エリア情報データベースａｒｅａ＿ｉｎｆｏは、課題曲をフレーズ単位に区切ったエリア（演奏区間）毎のエリア情報ａｒｅａ＿ｉｎｆｏ［０］〜［ｎ］から構成される。各エリアはフレーズの類似性に対応してグループ化される。
一つの区間のエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］はａｒｅａ＿ｉｎｆｏ［ｉ］［０］〜ａｒｅａ＿ｉｎｆｏ［ｉ］［１６］を備える。ａｒｅａ＿ｉｎｆｏ［ｉ］［０］はエリア固有の識別番号ｉｄ、ａｒｅａ＿ｉｎｆｏ［ｉ］［１］は曲頭からの経過時間で表現されるエリア開始時刻ＳｔａｒｔＴｉｃｋ、ａｒｅａ＿ｉｎｆｏ［ｉ］［２］は曲頭からの経過時間で表現されるエリア終了時刻ＥｎｄＴｉｃｋ、ａｒｅａ＿ｉｎｆｏ［ｉ］［３］は本エリアが属するグループを表すグループ番号ＡｒｅａＧｒｏｕｐである。
【００２３】
ａｒｅａ＿ｉｎｆｏ［ｉ］［４］は、本エリアに設定される支援データ（後述する）の再生形態を指示する再生フラグＦｌｕｇである。再生フラグＦｌｕｇは「０」〜「３」の値をとり、各値が意図する意味は次の通りである。「０」の場合には支援データを再生しない旨を表す。「１」の場合には支援データＯＫＤａｔａの再生を指示する。支援データＯＫＤａｔａとは、ａｒｅａ＿ｉｎｆｏ［ｉ］［７］に格納され、本エリアを正しく弾けたことをユーザに報知するデータである。「２」の場合には支援データＣａｕｔＤａｔａの再生を指示する。支援データＣａｕｔＤａｔａとは、ａｒｅａ＿ｉｎｆｏ［ｉ］［９］に格納され、本エリアを演奏する上で注意喚起する点をユーザに報知するデータである。「３」の場合には支援データＮＧＤａｔａの再生を指示する。支援データＮＧＤａｔａとは、ａｒｅａ＿ｉｎｆｏ［ｉ］［１１］に格納され、本エリアが正しく弾けていないことをユーザに報知するデータである。
【００２４】
ａｒｅａ＿ｉｎｆｏ［ｉ］［５］は、本エリアの処理状態を表す状態フラグＳｔａｔｕｓである。状態フラグＳｔａｔｕｓは「０」の場合には未処理を表し、「１」の場合には実行中を表し、「２」の場合には完了を表す。ａｒｅａ＿ｉｎｆｏ［ｉ］［６］は、支援データＯＫＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［７］）の再生タイミングを表す時間データＯＫＧａｔｅＴｉｍｅである。ａｒｅａ＿ｉｎｆｏ［ｉ］［８］は、支援データＣａｕｔＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［９］）の再生タイミングを表す時間データＣａｕｔＧａｔｅＴｉｍｅである。ａｒｅａ＿ｉｎｆｏ［ｉ］［１０］は、支援データＮＧＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［１１］）の再生タイミングを表す時間データＮＧＧａｔｅＴｉｍｅである。
【００２５】
ａｒｅａ＿ｉｎｆｏ［ｉ］［１２］は、本エリアの判定結果を表す結果フラグＲｅｓｕｌｔであり、「１」の場合に練習初期、「２」の場合に向上期、「３」の場合に安定期および「４」の場合に完成期であることを表す。ａｒｅａ＿ｉｎｆｏ［ｉ］［１３］は、前エリアまで累算したミスタッチ回数ＭｉｓｓＴＣｎｔＢである。ａｒｅａ＿ｉｎｆｏ［ｉ］［１４］は、本エリアで発生したミスタッチ回数ＭｉｓｓＴＣｎｔである。ａｒｅａ＿ｉｎｆｏ［ｉ］［１５］は、曲頭からの経過時間で表現される支援開始時刻ｓｕｐＳｔａｒｔである。ａｒｅａ＿ｉｎｆｏ［ｉ］［１６］は、曲頭からの経過時間で表現される支援終了時刻ｓｕｐＥｎｄである。
【００２６】
次に、図４を参照して停止情報ｎｏｗｐｌａｙのデータ構造を説明する。停止情報ｎｏｗｐｌａｙは、課題曲の再生に応じて行われる演奏支援の内容を表すデータであり、停止情報ｎｏｗｐｌａｙ［０］〜［ｎ］から構成される。一つの停止情報ｎｏｗｐｌａｙ［ｉ］（ｉ＝０〜ｎ）は、ｎｏｗｐｌａｙ［ｉ］［０］〜［４］からなる。ｎｏｗｐｌａｙ［ｉ］［０］は支援されている処理内容を表す処理タイプｐｌａｙｔｙｐｅである。処理タイプｐｌａｙｔｙｐｅは「０」の場合に「ノート出力」を表し、「１」の場合に画面への文字出力を表し、「２」の場合に画面出力を表し、「３」の場合に音声出力を表す。ｎｏｗｐｌａｙ［ｉ］［１］は曲頭からの経過時間で表現される支援処理開始時刻Ｔｉｃｋである。ｎｏｗｐｌａｙ［ｉ］［２］は曲頭からの経過時間で表現される支援処理終了時刻ＴｉｃｋＥｎｄである。ｎｏｗｐｌａｙ［ｉ］［３］は支援対象となる演奏情報ｐｌａｙｄａｔを指し示すポインタＯｒｇＩｎｄｅｘである。ｎｏｗｐｌａｙ［ｉ］［４］は次の停止情報を指し示すポインタＮｅｘｔＰｔｒである。
【００２７】
なお、上述したエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］中の支援開始時刻ｓｕｐＳｔａｒｔ／支援終了時刻ｓｕｐＥｎｄと、停止情報ｎｏｗｐｌａｙ［ｉ］中の支援処理開始時刻Ｔｉｃｋ／支援処理終了時刻ＴｉｃｋＥｎｄとの関係は次の通りである。
エリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］中の支援開始時刻ｓｕｐＳｔａｒｔと支援終了時刻ｓｕｐＥｎｄとで指定される支援対象範囲に設定される支援データ（ＯＫＤａｔａ、ＣａｕｔＤａｔａ、ＮＧＤａｔａ）を、それに先立つ支援処理開始時刻Ｔｉｃｋおよび支援処理終了時刻ＴｉｃｋＥｎｄで指定されるタイミングで再生することによって、演奏に先立って注意喚起するなどの先行支援を実現している。
【００２８】
Ｂ．実施例の動作
次に、図５〜図１６を参照して実施例の動作について説明する。以下では、最初にメインルーチンの動作について説明し、続いて再生開始処理、支援開始処理、支援終了処理、演奏判定保存処理および演奏結果判定処理の各動作を順番に説明して行く。
【００２９】
（１）メインルーチンの動作
ＤＴＭ装置１０において、メインルーチンが実行されると、ＣＰＵ１は図５に示すステップＳ１に進み、装置各部を初期化するイニシャライズを行った後、ステップＳ２に進む。ステップＳ２では、停止フラグＴＦを「１」にセットしてホルト状態に設定する。次いで、ステップＳ３では、スタートスイッチのオン操作の有無を判断する。スタートスイッチがオン操作されなければ、判断結果は「ＮＯ」となり、再びステップＳ３に処理を戻す。
一方、スタートスイッチ５がオン操作されると、判断結果が「ＹＥＳ」となり、ステップＳ４に進み、停止フラグＴＦをゼロリセットしてホルト状態を解除する。この後、ステップＳ５に進み、エリア情報ａｒｅａ＿ｉｎｆｏおよび停止情報ｎｏｗｐｌａｙを参照して演奏支援を行う再生開始処理を実行した後、ステップＳ３に処理を戻す。
【００３０】
（２）再生開始処理、支援開始処理および支援終了処理の動作
次に、図６〜図１１を参照して再生開始処理、支援開始処理および支援終了処理の動作を説明する。上述したメインルーチンのステップＳ５（図５参照）を介して本処理が実行されると、ＣＰＵ１は図６に示すステップＳＡ１に進む。ステップＳＡ１では現時刻をレジスタＳｔａｒｔＴｉｃｋにストアし、続くステップＳＡ２ではポインタｉ、ｉＡＩ、ｉＬａｓｔおよびｉＰＤをそれぞれゼロリセットする。
そして、ステップＳＡ３では停止フラグＴＦが「０」、つまりスタートスイッチ５のオン操作によりホルト状態が解除されている否かを判断する。停止フラグＴＦが「１」のホルト状態であると、判断結果は「ＮＯ」になり、本処理を完了させて上述のメインルーチンに処理を戻す。一方、ホルト状態が解除されていれば、判断結果が「ＹＥＳ」となり、ステップＳＡ５に進む。
【００３１】
ステップＳＡ５では現時刻からレジスタＳｔａｒｔＴｉｃｋに格納される時刻を差し引いた時刻を、再生時刻としてレジスタＮｏｗＴｉｃｋにストアする。以降、レジスタＮｏｗＴｉｃｋを再生時刻ＮｏｗＴｉｃｋと記す。
次に、ステップＳＡ６では、ポインタｉとポインタｉＬａｓｔが一致するか否かを判断する。初期化された時点では、両ポインタは一致するので、判断結果は「ＹＥＳ」となり、図７のステップＳＡ１３以降に処理を進める。
【００３２】
以後、本処理では再生時刻ＮｏｗＴｉｃｋが「発音タイミングＴｉｃｋを過ぎた場合」、「エリア開始時刻ＳｔａｒｔＴｉｃｋを過ぎた場合」、「支援処理終了時刻ＴｉｃｋＥｎｄを過ぎた場合」および「支援終了時刻ｓｕｐＥｎｄを過ぎた場合」の処理を実行すると共に、ユーザの演奏操作に応じて「ＭＩＤＩイベントが発生した場合」の処理を実行するようになっており、これら各処理の動作を順次説明して行く。
【００３３】
ａ．発音タイミングＴｉｃｋを過ぎた場合
再生時刻ＮｏｗＴｉｃｋが演奏情報ｐｌａｙｄａｔの発音タイミングＴｉｃｋ（ｐｌａｙｄａｔ［ｉＰＤ］［２］）を過ぎていると、図７に示すステップＳＡ１３の判断結果が「ＹＥＳ」になり、ステップＳＡ１４に進む。ステップＳＡ１４では、演奏情報ｐｌａｙｄａｔ［ｉＰＤ］［１］（ノート番号Ｎｏｔｅ＃）で指定される音高の楽音を発音するよう電子楽器２０側に指示するノートオン処理を実行する。これにより、発音タイミングＴｉｃｋを過ぎても演奏されない演奏情報ｐｌａｙｄａｔ［ｉＰＤ］を再生する演奏支援が行われる。
【００３４】
次に、ステップＳＡ１５〜ＳＡ２２では、上記ステップＳＡ１４のノートオン処理の実行に伴い、停止情報ｎｏｗｐｌａｙ［ｉＳｅｔ］を更新登録すると共に、ポインタ歩進を実行する。すなわち、ステップＳＡ１５では、停止情報ｎｏｗｐｌａｙにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタｉＳｅｔにセットする。
次に、ステップＳＡ１６に進み、処理タイプｐｌａｙｔｙｐｅ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［０］）にノート出力を表す値「０」をストアする。続いて、ステップＳＡ１７では支援処理開始時刻Ｔｉｃｋ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［１］）に発音タイミングＴｉｃｋ（ｐｌａｙｄａｔ［ｉＰＤ］［２］）をストアする。
【００３５】
そして、ステップＳＡ１８では、支援処理終了時刻ＴｉｃｋＥｎｄ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［２］）に消音タイミングＥｎｄＴｉｃｋ（ｐｌａｙｄａｔ［ｉＰＤ］ ［３］）をストアする。ステップＳＡ１９では、支援対象となる演奏情報ｐｌａｙｄａｔを指し示すポインタＯｒｇＩｎｄｅｘ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［３］）にポインタｉＰＤをストアする。
次いで、ステップＳＡ２０では、一つ前の停止情報ｎｏｗｐｌａｙ［ｉＬａｓｔ］［４］のポインタＮｅｘｔＰｏｉｎｔｅｒにポインタｉＳｅｔをストアする。この後、ステップＳＡ２１にてポインタｉＬａｓｔをポインタｉＳｅｔに更新し、続くステップＳＡ２２ではポインタｉＰＤを歩進させた後、後述するステップＳＡ２３（図８参照）に処理を進める。
【００３６】
ｂ．エリア開始時刻ＳｔａｒｔＴｉｃｋを過ぎた場合
ポインタｉＡＩの歩進に応じてエリア情報データベースａｒｅａ＿ｉｎｆｏから読み出されるエリア開始時刻ＳｔａｒｔＴｉｃｋ（ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［１］）が、再生時刻ＮｏｗＴｉｃｋより小の場合、つまり再生時刻ＮｏｗＴｉｃｋがエリア開始時刻ＳｔａｒｔＴｉｃｋを過ぎると、図８に示すステップＳＡ２６の判断結果が「ＹＥＳ」になり、ステップＳＡ２７に進む。
ステップＳＡ２７では、ポインタｉＡＩで指定されるエリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［４］（再生フラグＦｌｕｇ）が「０」以外であるか、つまり支援データを再生するエリアであるかどうかを判断する。支援データを再生するエリアでない場合には、判断結果が「ＮＯ」となり、図９に示すステップＳＡ３７（後述する）に処理を進めるが、支援データを再生するエリアであると、判断結果は「ＹＥＳ」になり、ステップＳＡ２８を介して支援開始処理を実行する。  
【００３７】
支援開始処理が実行されると、ＣＰＵ１は図１０に示すステップＳＡ２８−１に処理を進め、ポインタｉＡＩで指定されるエリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［４］（再生フラグＦｌｕｇ）の値に応じた支援データ再生を指示する。  再生フラグＦｌｕｇが「１」であると、ステップＳＡ２８−２〜ＳＡ２８−４において、エリア情報データベースａｒｅａ＿ｉｎｆｏから支援データＯＫＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［７］）および時間データＯＫＧａｔｅＴｉｍｅ（ａｒｅａ＿ｉｎｆｏ［ｉ］［６］）を読み出し、時間データＯＫＧａｔｅＴｉｍｅが指定するタイミングで支援データＯＫＤａｔａを再生する。
【００３８】
再生フラグＦｌｕｇが「２」であると、ステップＳＡ２８−５〜ＳＡ２８−７において、エリア情報データベースａｒｅａ＿ｉｎｆｏから支援データＣａｕｔＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［９］）および時間データＣａｕｔＧａｔｅＴｉｍｅ（ａｒｅａ＿ｉｎｆｏ［ｉ］［８］）を読み出し、時間データＣａｕｔＧａｔｅＴｉｍｅが指定するタイミングで支援データＣａｕｔＤａｔａを再生する。
再生フラグＦｌｕｇが「３」であると、ステップＳＡ２８−８〜ＳＡ２８−１０において、エリア情報データベースａｒｅａ＿ｉｎｆｏから支援データＮＧＤａｔａ（ａｒｅａ＿ｉｎｆｏ［ｉ］［１１］）および時間データＮＧＧａｔｅＴｉｍｅ（ａｒｅａ＿ｉｎｆｏ［ｉ］［１０］）を読み出し、時間データＮＧＧａｔｅＴｉｍｅが指定するタイミングで支援データＮＧＤａｔａを再生する。
【００３９】
こうして、エリア情報データベースａｒｅａ＿ｉｎｆｏに登録された支援データを再生する演奏支援が完了すると、ＣＰＵ１は図８に示すステップＳＡ２９から図９に示すステップＳＡ３６において、上記支援開始処理の実行に伴い、停止情報ｎｏｗｐｌａｙ［ｉＳｅｔ］を更新登録すると共に、ポインタ歩進を実行する。
すなわち、ステップＳＡ２９では、停止情報ｎｏｗｐｌａｙにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタｉＳｅｔにセットし、続くステップＳＡ３０では、処理タイプｐｌａｙｔｙｐｅ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［０］）に、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［４］の再生フラグＦｌｕｇをストアする。
なお、本実施例では、支援データＯＫＤａｔａ再生は文字出力、支援データＣａｕｔＤａｔａ再生は画面出力、支援データＮＧＤａｔａ再生は音声出力するようになっており、処理タイプｐｌａｙｔｙｐｅと再生フラグＦｌｕｇとを対応付けている。
【００４０】
そして、ステップＳＡ３１に進み、支援処理開始時刻Ｔｉｃｋ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［１］）に、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［１］のエリア開始時刻ＳｔａｒｔＴｉｃｋをストアする。ステップＳＡ３２では、支援処理終了時刻ＴｉｃｋＥｎｄ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［２］）に、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［２］のエリア終了時刻ＥｎｄＴｉｃｋをストアする。ステップＳＡ３３では、支援対象となる演奏情報ｐｌａｙｄａｔを指し示すポインタＯｒｇＩｎｄｅｘ（ｎｏｗｐｌａｙ［ｉＳｅｔ］［３］）にポインタｉＡＩをストアする。ステップＳＡ３４では、一つ前の停止情報ｎｏｗｐｌａｙ［ｉＬａｓｔ］［４］のポインタＮｅｘｔＰｔｒにポインタｉＳｅｔをストアする。次いで、図９のステップＳＡ３５では、ポインタｉＬａｓｔをポインタｉＳｅｔに更新し、続くステップＳＡ３６にてポインタｉＡＩを歩進させた後、後述するステップＳＡ３７に処理を進める。
【００４１】
ｃ．支援処理終了時刻ＴｉｃｋＥｎｄを過ぎた場合
上記ａ項又はｂ項の処理にて停止情報ｎｏｗｐｌａｙ［ｉＳｅｔ］が更新されると、停止情報ｎｏｗｐｌａｙの空きエリアを指し示すポインタｉＳｅｔがポインタｉＬａｓｔにセットされる為、図６に示すステップＳＡ６の判断結果が「ＮＯ」となり、ステップＳＡ７に進む。
そして、再生時刻ＮｏｗＴｉｃｋが支援処理終了時刻ＴｉｃｋＥｎｄ（ｎｏｗｐｌａｙ［ｉ］［２］）を過ぎると、ステップＳＡ７の判断結果が「ＹＥＳ」になり、ステップＳＡ８に進む。ステップＳＡ８を介して支援終了処理が実行されると、ＣＰＵ１は図１１のステップＳＡ８−１に処理を進め、支援データ（ＯＫＤａｔａ、ＣａｕｔＤａｔａ、ＮＧＤａｔａのいずれか）が再生中であるか否かを判断する。再生していなければ、判断結果は「ＮＯ」になり、何も行わずに支援停止処理を完了させるが、再生中であると、判断結果が「ＹＥＳ」になり、ステップＳＡ８−２に進み、支援データｄａｔａの再生を強制終了してから本処理を完了させる。
【００４２】
支援終了処理が完了すると、ＣＰＵ１は図６のステップＳＡ９に進み、支援対象となる演奏情報ｐｌａｙｄａｔを指し示すポインタＯｒｇＩｎｄｅｘ（ｎｏｗｐｌａｙ［ｉ］［３］）をポインタｔｍｐＰＤにセットする。次いで、ステップＳＡ１０では、このポインタｔｍｐＰＤに対応した演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）の値が「０」であるか否かを判断する。
演奏範囲外を表す「０」でなければ、判断結果は「ＮＯ」になり、後述のステップＳＡ１２に進むが、「０」であると、判断結果が「ＹＥＳ」になり、ステップＳＡ１１に進み、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）に、正しく弾けなかった旨を表す判定値「−１」をセットする。そして、ステップＳＡ１２に進み、次の停止情報を指し示すポインタＮｅｘｔＰｔｒ（ｎｏｗｐｌａｙ［ｉ］［４］）をポインタｉにセットした後、上述のステップＳＡ６に処理を戻す。
【００４３】
ｄ．支援終了時刻ｓｕｐＥｎｄを過ぎた場合
ポインタｉＡＩの歩進に応じてエリア情報データベースａｒｅａ＿ｉｎｆｏから読み出される支援終了時刻ｓｕｐＥｎｄ（ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［１６］）が、再生時刻ＮｏｗＴｉｃｋより小の場合、つまり再生時刻ＮｏｗＴｉｃｋが支援終了時刻ｓｕｐＥｎｄを過ぎると、図８に示すステップＳＡ２３の判断結果が「ＹＥＳ」となり、ステップＳＡ２４に進み、演奏結果判定処理を実行する。
演奏結果判定処理では、後述するように、支援終了したエリアにおいてユーザが行った演奏を判定し、その判定結果に応じて、当該エリアと同一グループに分類されるエリアの支援内容を設定する。次いで、ステップＳＡ２５に進むと、ポインタｉＡＩに対応したエリア情報ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［５］（ステイタスＳｔａｔｕｓ）に、支援完了を表すフラグ値「２」をセットした後、前述したステップＳＡ２６に処理を進める。
【００４４】
ｅ．ＭＩＤＩイベントが発生した場合
ユーザの演奏操作に基づき、電子楽器２０側から演奏データがＭＩＤＩ入力されると、図９に示すステップＳＡ３７の判断結果が「ＹＥＳ」になり、ステップＳＡ３８に進み、演奏判定保存処理を実行する。
演奏判定保存処理では、後述するように、電子楽器２０側から演奏データがＭＩＤＩ入力される毎に、その演奏データと課題曲の各音符を表す演奏情報ｐｌａｙｄａｔとを比較して演奏の適否を判定すると共に、その結果を当該演奏情報ｐｌａｙｄａｔ中の比較結果Ｒｅｓｕｌｔ（ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］として記憶する。
【００４５】
演奏判定保存処理が完了すると、ステップＳＡ３９に進み、再生時刻ＮｏｗＴｉｃｋが曲終了時刻を過ぎたか否かを判断する。曲終了時刻を過ぎていれば、判断結果は「ＹＥＳ」になり、ステップＳＡ４１に進み、停止フラグＴＦを「１」にセットした後、図６のステップＳＡ３に処理を戻す。そして、停止フラグＴＦが「１」にセットされると、ステップＳＡ３の判断結果が「ＮＯ」となり、再生開始処理を完了させる。
一方、再生時刻ＮｏｗＴｉｃｋが曲終了時刻を過ぎていなければ、上記ステップＳＡ３９の判断結果は「ＮＯ」となり、ステップＳＡ４０に進む。ステップＳＡ４０では、ストップスイッチがオン操作されたかどうかを判断する。ストップスイッチがオン操作されていなければ、判断結果は「ＮＯ」となり、図６のステップＳＡ３に処理を戻すが、この場合、停止フラグＴＦは「０」のままなので、ステップＳＡ３の判断結果が「ＹＥＳ」となり、ステップＳＡ５以降を実行する。これに対し、ストップスイッチがオン操作されると、上記ステップＳＡ４０の判断結果は「ＹＥＳ」となり、ステップＳＡ４１に進み、停止フラグＴＦを「１」にして再生開始処理を完了させる。
【００４６】
（３）演奏判定保存処理の動作
次に、図１２〜図１３を参照して演奏判定保存処理の動作を説明する。前述した再生開始処理のステップＳＡ３８（図９参照）を介して本処理が実行されると、ＣＰＵ１は図１２のステップＳＢ１に進み、ＭＩＤＩ入力されたイベントがノートオンイベントであるか否かを判断する。ノートオンイベント以外のイベントであれば、判断結果は「ＮＯ」になり、本処理を完了させる。
一方、ノートオンイベントであると、判断結果が「ＹＥＳ」になり、次のステップＳＢ２に進み、ノートオンイベントに含まれるノート番号をレジスタｔｍｐＰｉｔｃｈにストアする。続いて、ステップＳＢ３では現時刻をレジスタＮｏｗＴｉｃｋにストアする。そして、ステップＳＢ４では、ＭＩＤＩ入力された演奏データ（ノートオンイベント）に対応した演奏情報ｐｌａｙｄａｔを指し示すポインタｉＰＤを取得する。
【００４７】
次いで、ステップＳＢ５では、現時点の演奏情報ｐｌａｙｄａｔを指し示すポインタｉＰＤから所定の検索範囲ｉＬｏｏｋＵｐを減算した結果をサーチポインタｔｍｐＰＤにストアする。ステップＳＢ６に進むと、サーチポインタｔｍｐＰＤがポインタｉＰＤと検索範囲ｉＬｏｏｋＵｐとの和を超えたか否か、つまり検索範囲を超えたかどうかを判断する。
サーチポインタｔｍｐＰＤが検索範囲を超えた場合、すなわちＭＩＤＩ入力された演奏データ（ノートオンイベント）と一致する演奏情報ｐｌａｙｄａｔが検索範囲（ｉＰＤ±ｉＬｏｏｋＵｐ）に存在しない状況であると、上記ステップＳＢ６の判断結果は「ＹＥＳ」となり、ステップＳＢ７に進み、押鍵ミスの回数をカウントするレジスタｉＭｉｓｓＴｏｕｃｈＣｎｔを歩進させてから本処理を完了させる。
【００４８】
一方、サーチポインタｔｍｐＰＤが検索範囲を超えていない場合には、上記ステップＳＢ６の判断結果が「ＮＯ」になり、図１３のステップＳＢ８に進む。ステップＳＢ８では、サーチポインタｔｍｐＰＤにて指定される演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［４］（ステイタスｓｔａｔｕｓ）が「０」、つまり未発音であるかどうかを判断する。未発音でなければ、判断結果は「ＮＯ」となり、ステップＳＢ９に進み、サーチポインタｔｍｐＰＤをインクリメントして歩進させた後、図１２のステップＳＢ６に処理を戻す。
【００４９】
これに対し、サーチポインタｔｍｐＰＤにて指定される演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］が未発音であると、上記ステップＳＢ８の判断結果が「ＹＥＳ」になり、ステップＳＢ１０に進む。ステップＳＢ１０では、サーチポインタｔｍｐＰＤにて指定される演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［１］のノート番号Ｎｏｔｅ＃と、レジスタｔｍｐＰｉｔｃｈに格納された演奏データのノート番号とが一致するか否かを判断する。一致しなければ、判断結果は「ＮＯ」となり、ステップＳＢ９にてサーチポインタｔｍｐＰＤを歩進させた後、図１２のステップＳＢ６に処理を戻す。
【００５０】
一方、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］のノート番号Ｎｏｔｅ＃と演奏データのノート番号とが一致すると、判断結果が「ＹＥＳ」になり、次のステップＳＢ１１に進む。ステップＳＢ１１では、レジスタＮｏｗＴｉｃｋに格納される時刻から演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［２］の発音タイミングＴｉｃｋを減算して得た押鍵タイミングをレジスタＩＴｉｃｋＤｉｓｔにストアする。次いで、ステップＳＢ１２では、レジスタＩＴｉｃｋＤｉｓｔに格納される押鍵タイミングが許容範囲ＩＯＫＯｆｆｓｅｔ以上であるかどうかを判断する。許容範囲ＩＯＫＯｆｆｓｅｔに収まる適正な押鍵タイミングであると、判断結果は「ＮＯ」になり、ステップＳＢ１３に進み、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）に、正しく弾けた旨を表す値「１」をストアした後、本処理を完了させる。
【００５１】
これに対し、許容範囲ＩＯＫＯｆｆｓｅｔを超えた押鍵タイミングであると、上記ステップＳＢ１２の判断結果が「ＹＥＳ」になり、ステップＳＢ１４に進み、許容範囲ＩＴＭＯｆｆｓｅｔ以下であるかどうかを判断する。許容範囲ＩＴＭＯｆｆｓｅｔを超えると、判断結果は「ＮＯ」になり、ステップＳＢ１５に進み、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）に、演奏範囲に無いことを表す値「０」をストアした後、本処理を完了させる。
【００５２】
一方、許容範囲ＩＴＭＯｆｆｓｅｔに収まれば、上記ステップＳＢ１４の判断結果は「ＹＥＳ」になり、ステップＳＢ１６に進む。ステップＳＢ１６では、レジスタＩＴｉｃｋＤｉｓｔに格納される押鍵タイミングが「０」より大であるか否か、つまり演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたかどうかを判断する。
【００５３】
遅く押鍵された場合には、判断結果が「ＹＥＳ」となり、ステップＳＢ１７に進み、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）に、課題曲のノートデータの発音タイミングより遅く押鍵された旨を表す値「３」をストアして本処理を完了させる。
これに対し、早く押鍵された場合には、上記ステップＳＢ１６の判断結果が「ＮＯ」になり、ステップＳＢ１８に進み、演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］（比較結果Ｒｅｓｕｌｔ）に、課題曲のノートデータの発音タイミングより早く押鍵された旨を表す値「２」をストアして本処理を完了させる。
【００５４】
以上のように、演奏判定保存処理では、ユーザの演奏操作に応じて電子楽器２０側から演奏データがＭＩＤＩ入力される毎に、課題曲の各音符を表す演奏情報ｐｌａｙｄａｔと比較して演奏の適否を判定し、その結果を比較結果Ｒｅｓｕｌｔとして対応する演奏情報ｐｌａｙｄａｔ［ｔｍｐＰＤ］［５］に保存するようになっている。
【００５５】
（４）演奏結果判定処理の動作
次に、図１４〜図１６を参照して演奏結果判定処理の動作を説明する。前述した再生開始処理のステップＳＡ２４（図８参照）を介して本処理が実行されると、ＣＰＵ１は図１４のステップＳＣ１に進み、演奏結果判定の対象となるエリアを指定するポインタｉＡＩをポインタｉＤＢに格納し直す。次いで、ステップＳＣ２では、ポインタｉＤＢで指定されるエリアの支援開始時刻ｓｕｐＳｔａｒｔ（ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［１５］）をレジスタＩＳｔに、支援終了時刻ｓｕｐＥｎｄ（ａｒｅａ＿ｉｎｆｏ［ｉＡＩ］［１６］）をレジスタＩＥｄにそれぞれストアする。以下、レジスタＩＳｔの内容を支援開始時刻ＩＳｔ、レジスタＩＥｄの内容を支援終了時刻ＩＥｄと記す。
【００５６】
次に、ステップＳＣ３に進むと、本処理で用いるポインタｉ、ｉＯｒｇＣｎｔ、ｉＯＫ、ｉＴＭＦ、ｉＴＭＬおよびｉＮＧをゼロリセットする。そして、ステップＳＣ４〜ＳＣ１２では、ポインタｉを歩進させながら、発音タイミングＴｉｃｋ（ｐｌａｙｄａｔ［ｉ］［５］）が支援開始時刻ＩＳｔから支援終了時刻ＩＥｄまでの間に含まれる演奏情報ｐｌａｙｄａｔの比較結果Ｒｅｓｕｌｔ（ｐｌａｙｄａｔ［ｉ］［５］）を検索し、正しく弾けていない演奏操作の回数ｉＮＧ、正しく弾けた演奏操作の回数ｉＯＫ、適正タイミングより早い演奏操作の回数ｉＴＭＦおよび適正タイミングより遅い演奏操作の回数ｉＴＭＬを累算すると共に、支援開始時刻ＩＳｔから支援終了時刻ＩＥｄまでの間に含まれる演奏情報ｐｌａｙｄａｔの総数ｉＯｒｇＣｎｔを累算する。そして、検索し終えると、ステップＳＣ４の判断結果が「ＮＯ」となり、図１５のステップＳＣ１３に進む。
【００５７】
ステップＳＣ１３では、上述の演奏判定保存処理においてレジスタｉＭｉｓｓＴｏｕｃｈＣｎｔにストアされた押鍵ミス回数から前エリアまで累算したミスタッチ回数ＭｉｓｓＴＣｎｔＢ（ａｒｅａ＿ｉｎｆｏ［ｉ］［１３］）を減算して本エリアで発生したミスタッチ回数ＭｉｓｓＴＣｎｔを算出し、これをポインタｉＤＢで指定されるエリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１４］にストアする。続いて、ステップＳＣ１４では、レジスタｉＭｉｓｓＴｏｕｃｈＣｎｔに格納される押鍵ミス回数を、次エリアにおけるミスタッチ回数ＭｉｓｓＴＣｎｔＢとしてエリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ＋１］［１３］にストアする。次いで、ステップＳＣ１５では、正しく弾けた演奏操作の回数ｉＯＫと総数ｉＯｒｇＣｎｔとから正解率ｉＲａｔｉｏ（％）を算出する。
【００５８】
ステップＳＣ１６では、正解率ｉＲａｔｉｏ（％）がクリアレベルｉＣｌｅａｒＬｅｖｅｌ以上であるか否かを判断する。クリアレベルｉＣｌｅａｒＬｅｖｅｌは予め設定される判定値である。つまり、このステップＳＣ１６では、対象エリアにおける演奏の合否判定を行う。以下、合格した場合の動作と、不合格の場合の動作とに分けて説明を進める。
【００５９】
＜合格した場合＞
この場合、ステップＳＣ１６の判断結果が「ＹＥＳ」になり、ステップＳＣ１７に進み、本エリアで発生したミスタッチ回数ＭｉｓｓＴＣｎｔ（ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１４］）と総数ｉＯｒｇＣｎｔとから不正解率ｉＲａｔｉｏ（％）を算出する。次に、ステップＳＣ１８では不正解率ｉＲａｔｉｏが判定値ｉＭＴＬｅｖｅｌより小さいか否かを判断する。
【００６０】
不正解率ｉＲａｔｉｏが判定値ｉＭＴＬｅｖｅｌより小さいと、判断結果は「ＹＥＳ」となり、ステップＳＣ１９に進み、本エリアの演奏結果を表す結果フラグＲｅｓｕｌｔとして完成期を表す値「４」を、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１２］にストアし、続くステップＳＣ２０では判定結果ｉＦｌｕｇに「０」をセットする。判定結果ｉＦｌｕｇが意図するところについては追って述べる。
一方、不正解率ｉＲａｔｉｏが判定値ｉＭＴＬｅｖｅｌより大きければ、上記ステップＳＣ１８の判断結果が「ＮＯ」になり、ステップＳＣ２１に進む。ステップＳＣ２１では、本エリアの演奏結果を表す結果フラグＲｅｓｕｌｔとして安定期を表す値「３」を、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１２］にストアし、続くステップＳＣ２２では判定結果ｉＦｌｕｇに「１」をセットする。  
【００６１】
＜不合格の場合＞
この場合、ステップＳＣ１６の判断結果が「ＮＯ」になり、図１６に示すステップＳＣ２３に進む。ステップＳＣ２３では、正しく弾けた演奏操作の回数ｉＯＫと、適正タイミングより早い演奏操作の回数ｉＴＭＦと、適正タイミングより遅い演奏操作の回数ｉＴＭＬとを加算した値を総数ｉＯｒｇＣｎｔで除して、どの程度演奏操作が行われたかを表す演奏率ｉＲａｔｉｏ（％）を算出する。次いで、ステップＳＣ２４では演奏率ｉＲａｔｉｏが判定値ｉＣｌｅａｒＬｅｖｅｌ以上であるか否かを判断する。
【００６２】
演奏率ｉＲａｔｉｏが判定値ｉＣｌｅａｒＬｅｖｅｌ以上であると、判断結果は「ＹＥＳ」となり、ステップＳＣ２５に進み、本エリアの演奏結果を表す結果フラグＲｅｓｕｌｔとして向上期を表す値「２」を、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１２］にストアし、続くステップＳＣ２６では判定結果ｉＦｌｕｇに「２」をセットする。
一方、演奏率ｉＲａｔｉｏが判定値ｉＣｌｅａｒＬｅｖｅより小さければ、上記ステップＳＣ２４の判断結果が「ＮＯ」になり、ステップＳＣ２７に進む。ステップＳＣ２７では、本エリアの演奏結果を表す結果フラグＲｅｓｕｌｔとして練習初期を表す値「１」を、エリア情報ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［１２］にストアし、続くステップＳＣ２８では判定結果ｉＦｌｕｇに「３」をセットする。
【００６３】
さて、以上のようにして、演奏結果判定を終えると、ＣＰＵ１はステップＳＣ２９に進み、結果判定し終えた本エリア（ｉＤＢ）の次のエリア（ｉＤＢ＋１）を指定する値をポインタｉにセットする。そして、ステップＳＣ３０〜ＳＣ３３では、ポインタｉを歩進させながら、本エリアと同一のグループ番号ＡｒｅａＧｒｏｕｐ（ａｒｅａ＿ｉｎｆｏ［ｉＤＢ］［３］）を持つエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］を検索し、該当するエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］［４］の再生フラグＦｌｕｇに、判定結果ｉＦｌｕｇをストアする。そして、歩進されたポインタｉがエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］の終端（最大値）を超えると、ステップＳＣ３３の判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００６４】
このように、演奏結果判定処理では、演奏区間（エリア）毎の正解率を算出して合否判定を行い、合格した場合には不正解率に基づき「完成期」および「安定期」を判定し、一方、不合格の場合には正しく弾けた演奏操作の回数ｉＯＫと、適正タイミングより早い演奏操作の回数ｉＴＭＦと、適正タイミングより遅い演奏操作の回数ｉＴＭＬとを加算した値を総数ｉＯｒｇＣｎｔで除して、どの程度演奏操作が行われたかを表す演奏率に基づき「向上期」および「練習初期」を判定する。
【００６５】
そして、判定結果ｉＦｌｕｇが「完成期」を表す「０」の場合には、本エリアと同一のグループ番号を有するエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］［４］（再生フラグＦｌｕｇ）に「０」をストアして、「完成期」と判定された本エリアと類似するエリアでは演奏支援の必要が無い為、支援データ再生を行わないようにする。
判定結果ｉＦｌｕｇが「安定期」を表す「１」の場合には、本エリアと同一のグループ番号を有するエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］［４］（再生フラグＦｌｕｇ）に「１」をストアして、「安定期」と判定された本エリアと類似するエリアでは支援データＯＫＤａｔａを再生させる。
【００６６】
判定結果ｉＦｌｕｇが「向上期」を表す「２」の場合には、本エリアと同一のグループ番号を有するエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］［４］（再生フラグＦｌｕｇ）に「２」をストアして、「向上期」と判定された本エリアと類似するエリアでは支援データＣａｕｔＤａｔａを再生させる。
判定結果ｉＦｌｕｇが「練習初期」を表す「１」の場合には、本エリアと同一のグループ番号を有するエリア情報ａｒｅａ＿ｉｎｆｏ［ｉ］［４］（再生フラグＦｌｕｇ）に「３」をストアして、「練習初期」と判定された本エリアと類似するエリアでは支援データＮＧＤａｔａを再生させる。
【００６７】
以上説明したように、本実施例では、課題曲を複数のエリアに区切り、その内で類似するエリア同士をグループ化し、グループ化された各エリア毎の支援データを記憶するエリア情報データベースａｒｅａ＿ｉｎｆｏを設け、ユーザの演奏操作に応じて電子楽器２０側から演奏データがＭＩＤＩ入力される毎に課題曲の演奏情報と比較し、その比較結果に基づきエリアの演奏が「完成期」、「安定期」、「向上期」および「練習初期」のいずれの習熟段階に該当するのかを演奏判定する。演奏判定されたエリアと同一グループに属する他のエリアをエリア情報データベースａｒｅａ＿ｉｎｆｏから検索し、該当するエリアの支援データを、演奏判定されたエリアの習熟段階に対応した支援データと同一のものに設定する。そして、エリア情報データベースａｒｅａ＿ｉｎｆｏを参照し、楽譜上の支援対象箇所より早いタイミングで先行的に支援データを再生することによって、演奏上で注意喚起すべき内容を事前にユーザに報知し得るようになっている。
【００６８】
なお、上述した実施例では、予め課題曲をフレーズ単位のエリアで区切り、その内で類似するエリア同士をグループ化したエリア情報データベースａｒｅａ＿ｉｎｆｏを設けているが、これに替えて、例えば課題曲の演奏情報から曲進行形態が類似する演奏区間や音高変化の仕方が類似する演奏区間など、曲要素を勘案して課題曲をエリアに区切ってグループ化したエリア情報データベースａｒｅａ＿ｉｎｆｏを自動的に生成する態様にすることもできる。このようにすれば、ユーザが指定する曲要素に応じたエリア情報データベースａｒｅａ＿ｉｎｆｏに基づき演奏支援することが可能になる。
【図面の簡単な説明】
【００６９】
【図１】本発明による一実施例の全体構成を示すブロック図である。
【図２】ＲＡＭ３に記憶される演奏情報ｐｌａｙｄａｔのデータ構造を示すメモリマップである。
【図３】ＲＡＭ３に記憶されるエリア情報データベースａｒｅａ＿ｉｎｆｏのデータ構造を示すメモリマップである。
【図４】ＲＡＭ３に記憶される停止情報ｎｏｗｐｌａｙのデータ構造を示すメモリマップである。
【図５】メインルーチンの動作を示すフローチャートである。
【図６】再生開始処理の動作を示すフローチャートである。
【図７】再生開始処理の動作を示すフローチャートである。
【図８】再生開始処理の動作を示すフローチャートである。
【図９】再生開始処理の動作を示すフローチャートである。
【図１０】支援開始処理の動作を示すフローチャートである。
【図１１】支援終了処理の動作を示すフローチャートである。
【図１２】演奏判定保存の動作を示すフローチャートである。
【図１３】演奏判定保存の動作を示すフローチャートである。
【図１４】演奏結果判定処理の動作を示すフローチャートである。
【図１５】演奏結果判定処理の動作を示すフローチャートである。
【図１６】演奏結果判定処理の動作を示すフローチャートである。
【符号の説明】
【００７０】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  キーボード
６  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2005031458.tif 000003
【図２】
2005031458.tif 000004
【図３】
2005031458.tif 000005
【図４】
2005031458.tif 000006
【図５】
2005031458.tif 000007
【図６】
2005031458.tif 000008
【図７】
2005031458.tif 000009
【図８】
2005031458.tif 000010
【図９】
2005031458.tif 000011
【図１０】
2005031458.tif 000012
【図１１】
2005031458.tif 000013
【図１２】
2005031458.tif 000014
【図１３】
2005031458.tif 000015
【図１４】
2005031458.tif 000016
【図１５】
2005031458.tif 000017
【図１６】
2005031458.tif 000018