(57)【要約】【課題】初心者ユーザに演奏操作を体得させる演奏練習装置を実現する。【解決手段】ステップＳＡ３では曲データから前回ノートおよび今回ノートからなる複数のノート列を形成する。ステップＳＡ６では曲データに応じた演奏案内を行い、誤った演奏操作が行われたノート列に追加ノート数を付加する。ステップＳＡ５では曲データに応じた演奏案内を行い、演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列の今回ノートを演奏案内した後、さらにこの案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列の今回ノートを演奏案内する動作を追加ノート数分繰り返す。これにより、曲データから得たノート列の内、誤った演奏操作が行われたノート列の演奏操作を重点的に練習させる。【選択図】  図４
2004184590.tif 000002
【特許請求の範囲】
【請求項１】
曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成手段と、
前記曲データ記憶手段から読み出す曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加手段と、
前記曲データ記憶手段から読み出す曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習手段と、
前記練習手段が演奏案内する動作を追加ノート数分繰り返した場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習手段に指示する指示手段と
を具備することを特徴とする演奏練習装置。
【請求項２】
曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えた複数のノート列を形成するノート列形成手段と、
前記ノート列形成手段によって形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶手段と、
前記曲データ記憶手段から読み出す曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶手段に記憶される各ノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内手段と、
前記演奏案内手段による演奏案内が完了した場合に、前記ノート列記憶手段に記憶される各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成手段と、
前記曲データ記憶手段から読み出す曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内手段と、
前記練習案内手段が前記評価データからノート列を検索する毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内手段に指示する指示手段と
を具備することを特徴とする演奏練習装置。
【請求項３】
曲を形成する各音を表す曲データを記憶する演奏練習装置に適用される演奏練習方法であって、
前記曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成過程と、
前記曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加過程と、
前記曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習過程と、
前記練習過程にて演奏案内する動作が追加ノート数分繰り返された場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習過程に指示する指示過程と
を具備することを特徴とする演奏練習方法。
【請求項４】
曲を形成する各音を表す曲データを記憶する演奏練習装置に適用される演奏練習方法であって、
前記曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えたノート列を形成するノート列形成過程と、
前記ノート列形成過程にて形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶過程と、
前記曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶過程にて記憶されたノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内過程と、
前記演奏案内過程による演奏案内が完了した場合に、前記ノート列記憶過程で記憶された各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成過程と、
前記曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内過程と、
前記練習案内過程にて前記評価データからノート列が検索される毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内過程に指示する指示過程と
を具備することを特徴とする演奏練習方法。
【請求項５】
曲を形成する各音を表す曲データを記憶する手段およびコンピュータを備えた演奏練習装置で実行される演奏練習プログラムであって、
前記曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成ステップと、
前記曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加ステップと、
前記曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習ステップと、
前記練習ステップにて演奏案内する動作が追加ノート数分繰り返された場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習ステップに指示する指示ステップと
を前記コンピュータで実行させることを特徴とする演奏練習プログラム。
【請求項６】
曲を形成する各音を表す曲データを記憶する手段およびコンピュータを備えた演奏練習装置で実行される演奏練習プログラムであって、
前記曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えたノート列を形成するノート列形成ステップと、
前記ノート列形成ステップにて形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶ステップと、
前記曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶ステップにて記憶されたノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内ステップと、
前記演奏案内ステップによる演奏案内が完了した場合に、前記ノート列記憶ステップで記憶された各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成ステップと、
前記曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内ステップと、
前記練習案内ステップにて前記評価データからノート列が検索される毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内ステップに指示する指示ステップと
を前記コンピュータで実行させることを特徴とする演奏練習プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器などに用いて好適な演奏練習装置、演奏練習方法および演奏練習プログラムに関する。
【０００２】
【従来の技術】
曲進行に同期して読み出される練習曲の曲データと、その練習曲の演奏操作に応じて発生する演奏データとを比較して演奏ミスをカウントし、カウントした演奏ミスの多少により難度が異なる曲を練習させるようにした演奏練習装置が知られている。
この種の装置として、例えば特許文献１には、曲データと演奏データとを比較して音高に関する不適操作や操作タイミングに関する不適操作の有無を検出し、音高に関する不適操作が所定回数を超えた場合には曲データに基づき演奏操作を案内表示させ、一方、操作タイミングに関する不適操作が所定回数を超えた場合には曲データの読み出し速度を低下させることによって、練習者の演奏ミスの種別に応じた適切な練習形態を具現する技術が開示されている。
また、特許文献２には、曲データと演奏データとを比較して不適な演奏操作の種別を判別し、判別した種別毎に不適な演奏操作の回数をカウントして、カウントした種別毎の不適な演奏操作の回数に応じた演奏操作の評価を表示することによって、練習者に不適な演奏操作の種別を認識させる技術が開示されている。
【０００３】
【特許文献１】
特許公開平５−２８９６０６号公報
【特許文献２】
特許公開平５−３０３３２６号公報
【０００４】
【発明が解決しようとする課題】
ところで、上述した従来の演奏練習装置は、曲をある程度演奏できる能力を備えたユーザが演奏ミスせずに曲演奏できるように独習する環境を提供するものであり、曲演奏を練習する以前のレベル、例えば鍵盤を全く弾いたことが無く指使いも覚束ない初心者ユーザに、ある音高の音を出すにはどの鍵を弾けばよいのかや、ある鍵を弾くとどの音高の音が出るかを体得させて演奏操作そのものを練習させることができない、という問題がある。
【０００５】
そこで本発明は、このような事情に鑑みてなされたもので、初心者ユーザに演奏操作を体得させることができる演奏練習装置、演奏練習方法および演奏練習プログラムを提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成手段と、前記曲データ記憶手段から読み出す曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加手段と、前記曲データ記憶手段から読み出す曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習手段と、前記練習手段が演奏案内する動作を追加ノート数分繰り返した場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習手段に指示する指示手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えた複数のノート列を形成するノート列形成手段と、前記ノート列形成手段によって形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶手段と、前記曲データ記憶手段から読み出す曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶手段に記憶される各ノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内手段と、前記演奏案内手段による演奏案内が完了した場合に、前記ノート列記憶手段に記憶される各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成手段と、前記曲データ記憶手段から読み出す曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内手段と、前記練習案内手段が前記評価データからノート列を検索する毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内手段に指示する指示手段とを具備することを特徴とする。
【０００８】
請求項３に記載の発明では、曲を形成する各音を表す曲データを記憶する演奏練習装置に適用される演奏練習方法であって、前記曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成過程と、前記曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加過程と、前記曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習過程と、前記練習過程にて演奏案内する動作が追加ノート数分繰り返された場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習過程に指示する指示過程とを具備することを特徴とする。
【０００９】
請求項４に記載の発明では、曲を形成する各音を表す曲データを記憶する演奏練習装置に適用される演奏練習方法であって、前記曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えたノート列を形成するノート列形成過程と、前記ノート列形成過程にて形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶過程と、前記曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶過程にて記憶されたノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内過程と、前記演奏案内過程による演奏案内が完了した場合に、前記ノート列記憶過程で記憶された各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成過程と、前記曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内過程と、前記練習案内過程にて前記評価データからノート列が検索される毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内過程に指示する指示過程とを具備することを特徴とする。
【００１０】
請求項５に記載の発明では、曲を形成する各音を表す曲データを記憶する手段およびコンピュータを備えた演奏練習装置で実行される演奏練習プログラムであって、前記曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成するノート列形成ステップと、前記曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する追加ノート付加ステップと、前記曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返す練習ステップと、前記練習ステップにて演奏案内する動作が追加ノート数分繰り返された場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習ステップに指示する指示ステップとを前記コンピュータで実行させることを特徴とする。
【００１１】
請求項６に記載の発明では、曲を形成する各音を表す曲データを記憶する手段およびコンピュータを備えた演奏練習装置で実行される演奏練習プログラムであって、前記曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えたノート列を形成するノート列形成ステップと、前記ノート列形成ステップにて形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶するノート列記憶ステップと、前記曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、前記ノート列記憶ステップにて記憶されたノート列の内、演奏操作されたノート列の正解回数を歩進させる演奏案内ステップと、前記演奏案内ステップによる演奏案内が完了した場合に、前記ノート列記憶ステップで記憶された各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を発生して対応する記憶エリアに格納し、前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する評価データ生成ステップと、前記曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返す練習案内ステップと、前記練習案内ステップにて前記評価データからノート列が検索される毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するよう前記練習案内ステップに指示する指示ステップとを前記コンピュータで実行させることを特徴とする。
【００１２】
本発明では、曲を形成する各音を表す曲データを記憶しておき、この曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成した後、曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する。そして、曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返し、その動作を追加ノート数分繰り返した場合には当該追加ノート数を有するノート列を検索対象から除外するので、誤った演奏操作を追加ノート数分繰り返し練習させる。
つまり、練習曲を間違えなく演奏させる練習ではなく、練習曲から得たノート列の内、ユーザが間違えやすいノート列の演奏操作を重点的に練習させるようにした為、曲演奏を練習する以前のレベル、例えば鍵盤を全く弾いたことが無く指使いも覚束ない初心者ユーザに、ある音高の音を出すにはどの鍵を弾けばよいのかや、ある鍵を弾くとどの音高の音が出るかを習熟させて演奏操作そのものを体得させることが可能になる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏練習装置が搭載された電子楽器を実施例とし、これについて図面を参照して説明する。
Ａ．実施例の構成
図１は、本発明の一実施例による電子楽器の構成を示すブロック図である。この図において、１は押離鍵操作（演奏操作）に応じたキーオン／キーオフ信号やノート番号、ベロシティ等の演奏情報を発生する鍵盤である。２はＣＰＵ５の制御の下に、弾くべき鍵の位置を案内（押鍵案内）する押鍵ガイド部である。
【００１４】
押鍵ガイド部２は、半透明樹脂材等で形成された各鍵下部に対向配置される、例えばＬＥＤ等の発光手段２ａ（図示略）と、これら各鍵毎に配設される発光手段２ａを点灯駆動するドライバ２ｂ（図示略）とから構成され、後述するＣＰＵ５から供給される駆動制御信号に従って、押鍵すべき鍵に対応して配設される発光手段２ａを点灯させて演奏者に弾くべき鍵の位置を案内する。
【００１５】
３は各種スイッチから構成され、操作されたスイッチ種に対応したスイッチイベントを発生するパネルスイッチである。パネルスイッチ３には、電源をオンオフする電源スイッチの他、練習曲を選択する曲選択スイッチ、後述する演奏案内処理あるいは練習案内処理の開始および停止を指示するスタートスイッチ、モード遷移させるモード遷移スイッチあるいはモード設定するモードスイッチ等が設けられている。
なお、本実施例による電子楽器は、鍵盤１が発生する演奏情報に応じて楽音を形成する通常モードと、演奏操作を練習するための演奏練習モードとを備えており、上記モード遷移スイッチの操作に応じて、通常モードから演奏練習モードあるいは演奏練習モードから通常モードに遷移するようになっている。また、演奏練習モード下では、上記モードスイッチの操作により「練習モード」あるいは「評価モード」のいずれかを選択できるようになっている。
【００１６】
４はＬＣＤパネル等から構成される表示部であり、後述するＣＰＵ５から供給される表示制御信号に応じて楽器各部の設定状態や動作モード等を表示する。ＣＰＵ５は、通常モード下では鍵盤１から供給される演奏情報に応じて音源８に楽音発生を指示し、一方、上記演奏練習モード下では選択された練習曲の曲データから抽出したノート列（後述する）を用いてユーザに鍵操作を習熟させるようになっている。本発明の要旨に係わる演奏練習モード処理の動作については追って詳述する。６は上記ＣＰＵ５にロードされる各種制御プログラムの他、演奏練習用の曲データや追加ノート数発生テーブルＴＡＢＬＥを記憶するＲＯＭである。ＲＯＭ６に記憶される追加ノート数発生テーブルＴＡＢＬＥとは、成功率を引数として、対応する追加ノート数を読み出すテーブルであり、これが意図するところについては追って述べる。
【００１７】
ＲＯＭ６に記憶される曲データの構成を図２を参照して説明する。図２に図示する通り、ＲＯＭ６には複数の練習曲に対応した曲データ（１）〜（Ｎ）が記憶されており、それらの内のいずれかが上記パネルスイッチ３中の曲選択スイッチの操作に応じて選択される。曲データは、発音タイミングを表すタイムＤＴと、ノートオン／ノートオフを識別する識別データＩＤおよび音高を表すノート番号ＮＮを含むイベントＥＶＴとを曲進行順にアドレッシングしたものであり、その終端には曲の終わりを表わす終了データＥＮＤが設けられる。こうした曲データは、曲進行に応じて歩進されるポインタレジスタＡＤの値（読み出しアドレス）に従って読み出される。
【００１８】
次に、再び図１を参照して実施例の構成について説明を進める。図１において、７はワークエリアおよび評価データエリアを備えるＲＡＭである。ＲＡＭ７のワークエリアには、ＣＰＵ５の処理に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ７の評価データエリアには、図３に図示するように、複数のノート列（１）〜（Ｍ）が格納される。各ノート列は、前回ノート、今回ノート、出現回数、正解回数、成功率、追加ノート数および発音ノート数から構成される。これらノート列（１）〜（Ｍ）が意図するところについては追って述べる。
【００１９】
８は周知の波形メモリ読み出し方式によって構成され、時分割動作する複数の発音チャンネルを備える音源である。この音源８は、各種音色の波形データを記憶しており、これらの内、ＣＰＵ５が供給する楽音パラメータに応じた波形データを読み出して楽音波形を発生する。９は上記音源８が出力する楽音波形をアナログ信号形式に変換した後、不要ノイズを除去する等のフィルタリングを施し、それを増幅してスピーカから発音するサウンドシステムである。
【００２０】
Ｂ．実施例の動作
次に、図４〜図２１を参照して実施例の動作について説明する。以下では、最初に全体動作として演奏練習モード処理の動作について説明し、続いて演奏練習モード処理からコールされる各処理の動作について順次説明する。
【００２１】
（１）演奏練習モード処理の動作
前述したモード遷移スイッチの操作に応じて、演奏練習モードに遷移すると、ＣＰＵ５は図４に示す演奏練習モード処理を実行してステップＳＡ１に処理を進める。先ずステップＳＡ１では、ＲＡＭ７のワークエリアに格納される各種レジスタやフラグ類をリセットしたり初期値をセットするイニシャライズを行い、続くステップＳＡ２では、モードフラグＭＯＤＥＦをゼロリセットする。
なお、モードフラグＭＯＤＥＦは、「０」の場合に後述の「練習処理」の実行を指示し、「１」の場合に後述の「評価処理」の実行を指示するフラグである。前述したモードスイッチが「練習モード」に設定された場合には、上記モードフラグＭＯＤＥＦは「０」にセットされ、一方、「評価モード」に設定された場合には「１」にセットされる。
【００２２】
次に、ステップＳＡ３に進むと、ＣＰＵ５は曲選択処理を実行する。曲選択処理では、曲選択スイッチの操作により選択される練習曲の曲データを構成する各音を一音ずつ読み出して連続する２音（前回ノートおよび今回ノート）を組とするノート列（１）〜（Ｍ）を形成する。ノート列を形成する毎に、先に形成したノート列と重複するかどうかを判定し、重複するノート列が出現した場合には、先に形成したノート列中の出現回数をインクリメントする。
次いで、ステップＳＡ４では、モードフラグＭＯＤＥＦの値が「０」、つまり練習モードに設定されているか否かを判断する。練習モードに設定されていると、判断結果は「ＹＥＳ」になり、ステップＳＡ５を介して練習処理を実行する。一方、評価モードに設定されていれば、判断結果が「ＮＯ」になり、ステップＳＡ６を介して評価処理を実行する。そして、ステップＳＡ７では、モード遷移スイッチが操作された場合、実行中の演奏練習モード処理から通常モードへ遷移させるなどの、その他の処理を実行する。以後、モード遷移スイッチの操作により通常モードに遷移するまでステップＳＡ３〜ＳＡ７を繰り返す。
【００２３】
（２）曲選択処理の動作
次に、図５〜図７を参照して曲選択処理の動作を説明する。図４に図示した演奏練習モード処理のステップＳＡ３を介して本処理が実行されると、ＣＰＵ５は図５に示すステップＳＢ１に処理を進める。ステップＳＢ１では、曲選択スイッチの操作イベントの有無を判断する。曲選択スイッチの操作イベントが無い場合、つまり曲選択スイッチが操作されていなければ、判断結果は「ＮＯ」となり、何も処理せずに本処理を完了させる。
【００２４】
一方、曲選択スイッチの操作イベントが有ると、上記ステップＳＢ１の判断結果が「ＹＥＳ」となり、次のステップＳＢ２に進む。ステップＳＢ２では、その操作イベントが表す選択曲番号をレジスタＭＥＬＯＤＹにストアする。以後、レジスタＭＥＬＯＤＹの内容を、選択曲番号ＭＥＬＯＤＹと称す。
次に、ステップＳＢ３では、ＲＡＭ７の評価データエリア（図３参照）をクリアし、続くステップＳＢ４では、ノート列数をカウントするカウンタＭ（以後、ノート列数Ｍと称す）をゼロリセットすると共に、評価フラグＨＹＯＫＡＦに「１」をセットする。評価フラグＨＹＯＫＡＦは、ＲＡＭ７の評価データエリアにノート列が格納されているか否かを識別するフラグであり、「１」の場合に評価データ無しを表し、「０」の場合に評価データ有りを表す。
【００２５】
そして、ステップＳＢ５に進むと、ＲＯＭ６に記憶される曲データ（１）〜（Ｎ）の内、選択曲番号ＭＥＬＯＤＹに対応した曲データの先頭アドレスをアドレスポインタＡＤにセットする。次に、ステップＳＢ６では、アドレスポインタＡＤに応じて、選択曲番号ＭＥＬＯＤＹの曲データをＲＯＭ６から読み出す。続くステップＳＢ７では、アドレスポインタＡＤに応じて読み出された曲データが、曲の終わりを表わす終了データＥＮＤであるか否か、つまり曲終端に達したかどうかを判断する。読み出しが曲終端に達していなければ、判断結果は「ＮＯ」になり、図６に示すステップＳＢ８に処理を進める。
【００２６】
ステップＳＢ８では、アドレスポインタＡＤに応じて読み出されたデータが、ノートオンイベントであるか否かを判断する。タイムＤＴが読み出された場合には、判断結果が「ＮＯ」になり、ステップＳＢ１１に進み、アドレスポインタＡＤをインクリメントして歩進させる。この後、上述のステップＳＢ６（図５参照）に戻り、歩進されたアドレスポインタＡＤに応じて曲データを読み出す。これによりタイムＤＴに続くイベントＥＶＴが読み出され、そのイベントＥＶＴがノートオンイベントであると、上述のステップＳＢ７，ＳＢ８の各判断結果が「ＹＥＳ」になり、ステップＳＢ９に進む。
【００２７】
ステップＳＢ９に進むと、ＣＰＵ５はノート列数Ｍが「０」であって、かつ前回ノート（０）がデータ無しの状態であるか否かを判断する。例えば今、１つ目のノートオンイベントを読み出した状態であると、判断結果は「ＹＥＳ」になり、次のステップＳＢ１０に進む。ステップＳＢ１０では、ノート列数Ｍに対応した前回ノート（Ｍ）に、ノートオンイベントのノート番号ＮＮをストアする。
この後、上述のステップＳＢ１１，ＳＢ６，ＳＢ７およびＳＢ８を経て次のノートオンイベントを読み出す。そして、２つ目のノートオンイベントが読み出されると、ステップＳＢ８の判断結果が「ＹＥＳ」となり、ステップＳＢ９に進む。２つ目のノートオンイベントが読み出された場合、前回ノート（Ｍ）に１つ目のノートオンイベントのノート番号ＮＮがストアされているので、ステップＳＢ９の判断結果は「ＮＯ」になり、ステップＳＢ１２に進む。
【００２８】
ステップＳＢ１２では、ノート列数Ｍが「０」であって、かつ前回ノート（Ｍ）がデータ有り、今回ノート（Ｍ）がデータ無しの状態であるか否かを判断する。２つ目のノートオンイベントが読み出された状態であると、判断結果は「ＹＥＳ」になり、ステップＳＢ１３に進む。ステップＳＢ１３では、ノート列数Ｍに対応した今回ノート（Ｍ）に、２つ目のノートオンイベントのノート番号ＮＮをストアする。
次いで、ステップＳＢ１４では、今回ノート（Ｍ）をレジスタＦＯＲＭＥＲＮＯＴＥにストアする。ステップＳＢ１５では、ノート列数Ｍに対応した出現回数（Ｍ）に「１」をストアし、続くステップＳＢ１６では、ノート列数Ｍに対応した正解回数（Ｍ）をゼロリセットする。次に、ステップＳＢ１７に進み、ノート列数Ｍをインクリメントして歩進させる。
【００２９】
こうして、前回ノート（１）、今回ノート（１）、出現回数（１）および正解回数（１）から構成される最初のノート列（１）が形成されると、ＣＰＵ５は再びステップＳＢ１１に処理を戻し、ステップＳＢ１１，ＳＢ６，ＳＢ７およびＳＢ８を経て次のノートオンイベントを読み出す。そして、３つ目のノートオンイベントが読み出されると、ステップＳＢ９，ＳＢ１２の各判断結果が「ＮＯ」になり、ステップＳＢ１８に進み、３つ目のノートオンイベントのノート番号ＮＮをレジスタＣＵＲＲＥＮＴＮＯＴＥにストアする。
【００３０】
次に、ステップＳＢ１９〜ＳＢ２２では、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮおよびレジスタＣＵＲＲＥＮＴＮＯＴＥに格納されるノート番号ＮＮ、つまり２つ目および３つ目のノートオンイベントの組から得たノート列が、１つ目および２つ目のノートオンイベントの組から得たノート列に一致するかどうかを判断し、一致した場合に１つ目および２つ目のノートオンイベントの組から得たノート列の出現回数を歩進させる。
【００３１】
すなわち、ステップＳＢ１９では先ずサーチポインタｎに「１」をセットする。そして、図７に示すステップＳＢ２０に進み、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮが、１つ目のノートオンイベントから得た前回ノート（１）と一するか否かを判断する。一致しなければ、判断結果は「ＮＯ」になり、後述のステップＳＢ２３に進む。
【００３２】
一方、一致した場合には判断結果が「ＹＥＳ」となり、次のステップＳＢ２１に進む。ステップＳＢ２１では、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納されるノート番号ＮＮが、２つ目のノートオンイベントから得た今回ノート（１）と一するか否かを判断する。一致しなければ、判断結果は「ＮＯ」になり、後述のステップＳＢ２３に進む。
一方、一致した場合には判断結果が「ＹＥＳ」となり、次のステップＳＢ２２に進み、サーチポインタｎに対応したノート列（１）中の出現回数（１）をインクリメントした後、後述のステップＳＢ２４に進む。
【００３３】
さて、２つ目および３つ目のノートオンイベントの組から得たノート列が、１つ目および２つ目のノートオンイベントの組から得たノート列に一致しない場合には、ステップＳＢ２３に進み、サーチポインタｎとノート列数Ｍとが一致するか、つまり一致判定を完了したかどうかを判断する。３つ目のノートオンイベントを読み出した時点では、ノート列（１）との一致判定を行うだけなので、判断結果は「ＹＥＳ」となり、ステップＳＢ２４に進む。
これに対し、４つ目以降のノートオンイベントを読み出した時点であれば、判断結果は「ＮＯ」になり、ステップＳＢ３１に進み、サーチポインタｎをインクリメントして歩進させる。この後、ステップＳＢ２０〜ＳＢ２３、ＳＢ３１からなる一致判定を繰り返す。
【００３４】
一致判定が完了すると、ＣＰＵ５はステップＳＢ２４に進み、次のノート列を形成すべくノート列数Ｍを歩進させる。次いで、ステップＳＢ２５では、レジスタＦＯＲＭＥＲＮＯＴＥに格納される２つ目のノートオンイベントのノート番号ＮＮを、ノート列数Ｍに対応した前回ノート（Ｍ）にストアする。続いて、ステップＳＢ２６では、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納される３つ目のノートオンイベントのノート番号ＮＮを、ノート列数Ｍに対応した今回ノート（Ｍ）にストアし、続くステップＳＢ２７では、ノート列数Ｍに対応した出現回数（Ｍ）に「１」をストアする。
【００３５】
次に、ステップＳＢ２８では、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納される３つ目のノートオンイベントのノート番号ＮＮを、レジスタＦＯＲＭＥＲＮＯＴＥにストアする。そして、ステップＳＢ２９に進み、ノート列数Ｍに対応した正解回数（Ｍ）をゼロリセットする。これにより、前回ノート（２）、今回ノート（２）、出現回数（２）および正解回数（２）から構成されるノート列（２）が形成される。ノート列（２）が形成されると、ＣＰＵ５はステップＳＢ３０に処理を進め、次のノート列を形成すべくノート列数Ｍを歩進させると共に、アドレスポインタＡＤを歩進させた後、図５のステップＳＢ６に処理を戻す。
【００３６】
以後、前述したステップＳＢ６，ＳＢ７およびＳＢ８を経て次のノートオンイベントを読み出し、次のノートオンイベントが読み出されると、ステップＳＢ１８に進み、今回読み出したノートオンイベントのノート番号ＮＮをレジスタＣＵＲＲＥＮＴＮＯＴＥにストアする。そして、ステップＳＢ１９〜ＳＢ２２において、レジスタＦＯＲＭＥＲＮＯＴＥおよびレジスタＣＵＲＲＥＮＴＮＯＴＥに格納されるノート列が、これまでに得た各ノート列と一致するかどうかを判断する一致判定を行い、一致するノート列があれば、そのノート列中の出現回数を歩進させる。
【００３７】
一致判定が完了すると、次のノート列を形成すべくノート列数Ｍを歩進させ（ステップＳＢ２４）、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮを前回ノート（Ｍ）にストアする（ステップＳＢ２５）。そして、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納されるノート番号ＮＮを今回ノート（Ｍ）にストア（ステップＳＢ２６）すると共に、出現回数（Ｍ）に「１」をストアした後（ステップＳＢ２７）、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納されるノート番号ＮＮをレジスタＦＯＲＭＥＲＮＯＴＥに格納し直す。次に、ノート列数Ｍに対応した正解回数（Ｍ）をゼロリセットする（ステップＳＢ２９）。
こうして、次のノート列（Ｍ）が形成されると、次のノート列を形成すべくノート列数Ｍを歩進させると共に、アドレスポインタＡＤを歩進させた後（ステップＳＢ３０）、再び図５のステップＳＢ６に戻り、終了データＥＮＤが読み出されるまで上述の過程を繰り返す。そして、ステップＳＢ７において、終了データＥＮＤが読み出されて曲終端に達すると、判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００３８】
以上のように、曲選択処理では、曲選択スイッチの操作により選択される練習曲の曲データを構成する各音（ノートオンイベント）を一音ずつ読み出して連続する２音（前回ノートおよび今回ノート）を組とするノート列を形成する。ノート列を形成する毎に、先に形成したノート列と重複するかどうかを判定し、重複するノート列が出現した場合には、先に形成したノート列中の出現回数をインクリメントするようになっている。このようにして曲データから得られるノート列（１）〜（Ｍ）は、練習曲の演奏操作を練習する際の基本単位として扱われる。
【００３９】
（３）評価処理の動作
次に、図８を参照して練習処理の動作を説明する。前述した演奏練習モード処理（図４参照）のステップＳＡ６を介して評価処理が実行されると、ＣＰＵ５は図８に示すステップＳＣ１に処理を進める。ステップＳＣ１では、曲選択スイッチの操作により選択された練習曲の曲データを読み出し、読み出した曲データに従って押鍵ガイド部２を制御して弾くべき鍵の位置を案内する演奏案内処理を実行する。次に、ステップＳＣ２では、鍵盤処理を実行する。鍵盤処理では、演奏案内処理によって押鍵案内された鍵の押離鍵操作に従って音源８にノートオン／ノートオフを指示する一方、案内通りの押鍵が為された場合、対応するノート列の正解回数を歩進させる。
【００４０】
続いて、ステップＳＣ３に進むと、評価データ生成処理を実行する。評価データ生成処理では、鍵盤処理にて得られた各ノート列（１）〜（Ｍ）毎の正解回数に基づき、それらノート列（１）〜（Ｍ）毎の成功率および追加ノート数を生成する。次いで、ステップＳＣ４では、モードスイッチのオン操作に有無を判断する。モードスイッチがオン操作されなければ、判断結果は「ＮＯ」となり、上述したステップＳＣ１に処理を戻す。一方、評価データを生成し終えた後、モードスイッチをオン操作した場合には、判断結果が「ＹＥＳ」になり、次のステップＳＣ５に進み、モードフラグＭＯＤＥＦを反転させて本処理を完了する。
【００４１】
（４）演奏案内処理の動作
次に、図９〜図１１を参照して演奏案内処理の動作を説明する。上述の評価処理（図８参照）のステップＳＣ１を介して演奏案内処理が実行されると、ＣＰＵ５は図９に示すステップＳＤ１に処理を進め、スタートスイッチのオン操作の有無を判断する。スタートスイッチがオン操作されると、判断結果は「ＹＥＳ」になり、次のステップＳＤ２に進み、スタートフラグＳＴＦを反転する。
続いて、ステップＳＤ３では、反転されたスタートフラグＳＴＦが「１」であるか否かを判断する。つまり、スタートスイッチはオン操作される毎に処理開始を指示するスタート状態（ＳＴＦ＝１）あるいは処理停止を指示するストップ状態（ＳＴＦ＝０）のいずれかを交互に設定するトグルスイッチなので、ステップＳＤ３ではオン操作に応じてスタート状態に設定されたかどうかを判断する。
【００４２】
反転されたスタートフラグＳＴＦの値が「０」（ストップ状態）であると、ステップＳＤ３の判断結果は「ＮＯ」となり、ステップＳＤ４に進み、押鍵ガイド部２にガイド表示禁止を指示する。これにより、押鍵ガイド部２は点灯中の発光手段２ａを消灯させる。この後、ステップＳＤ５に進み、割込みマスクを施してタイマ割込み処理の実行を禁止して本処理を完了させる。
なお、ここで言うタイマ割込み処理（不図示）とは、演奏案内処理と並列的に実行され、一定周期毎にレジスタＴ（後述する）に格納されるタイムＤＴをデクリメントする。
【００４３】
一方、反転されたスタートフラグＳＴＦの値が「１」（スタート状態）であれば、上記ステップＳＤ３の判断結果は「ＹＥＳ」になり、ステップＳＤ６に進み、ノート列数Ｍをゼロリセットする。次に、ステップＳＤ７に進むと、ＲＡＭ７の評価データエリア（図３参照）における各ノート列（１）〜（Ｍ）中の正解回数、成功率および追加ノート数をそれぞれクリアする。
次いで、ステップＳＤ８では、ＲＯＭ６に記憶される曲データ（１）〜（Ｎ）の内、選択曲番号ＭＥＬＯＤＹに対応した曲データの先頭アドレスをアドレスポインタＡＤにセットする。次に、ステップＳＤ９に進み、そのアドレスポインタＡＤに従い曲データから先頭のタイムＤＴを読み出す。ステップＳＤ１０では、読み出したタイムＤＴをレジスタＴにストアし、続くステップＳＤ１１では、タイマ割込み処理の実行禁止を解除した後、一旦本処理を完了させる。
【００４４】
こうしてスタート状態に設定された演奏案内処理が前述のステップＳＣ１（図８参照）を介して再び実行されると、上述したステップＳＤ１の判断結果が「ＮＯ」になり、ＣＰＵ５は図１０に示すステップＳＤ１２に進み、スタート状態に設定されているかどうかを判断する。今、スタート状態に設定されているので、判断結果は判断結果は「ＹＥＳ」になり、次のステップＳＤ１３に進む。なお、ストップ状態であると、判断結果が「ＮＯ」となり、本処理を完了させる。
ステップＳＤ１３では、タイマ割込み処理にて一定周期毎にデクリメントされるレジスタＴの値が「０」以下になったか否か、すなわち発音タイミングに達したかどうかを判断する。発音タイミングに達していないと、判断結果は「ＮＯ」になり、一旦本処理を完了させるが、発音タイミング下にあると、判断結果は「ＹＥＳ」になり、ステップＳＤ１４に進む。
【００４５】
ステップＳＤ１４では、アドレスポインタＡＤをインクリメントして歩進させ、続くステップＳＤ１５では、歩進されたアドレスポインタＡＤに応じて曲データを読み出す。次に、ステップＳＤ１６に進むと、読み出された曲データが終了データＥＮＤでないか否か、つまり曲終端に達したかどうかを判断する。以下、曲終端に達した場合とそうでない場合とに分けて動作説明を進める。
【００４６】
＜曲終端に達した場合の動作＞
曲終端に達した場合には、上記ステップＳＤ１６の判断結果が「ＮＯ」になり、ステップＳＤ１７に進み、スタートフラグＳＴＦをゼロリセットしてストップ状態に設定する。次に、ステップＳＤ１８に進み、押鍵ガイド部２にガイド表示禁止を指示し、続くステップＳＤ１９では、割込みマスクを施してタイマ割込み処理の実行を禁止して本処理を完了させる。
【００４７】
＜曲終端に達していない場合の動作＞
曲終端に達していない場合には、上記ステップＳＤ１６の判断結果が「ＹＥＳ」となり、ステップＳＤ２０に進み、上記ステップＳＤ１５にて読み出された曲データがタイムＤＴであるか否かを判断する。タイムＤＴであれば、判断結果は「ＹＥＳ」になり、ステップＳＤ２１に進み、レジスタＴにタイムＤＴをセットして本処理を一旦完了させる。
一方、イベントＥＶＴが読み出された場合には判断結果が「ＮＯ」になり、ステップＳＤ２２に進み、読み出されたイベントＥＶＴがノートオン／ノートオフイベントのいずれであるかを判断する。以下、ノートオンイベントの場合とノートオフイベントの場合とに分けて動作説明を進める。
【００４８】
＜ノートオフイベントの場合＞
読み出されたイベントＥＶＴがノートオフイベントであると、ステップＳＤ２３に進み、そのノートオフイベントに含まれるノート番号ＮＮに対応する鍵に配置される発光手段２ａの消灯を押鍵ガイド部２に指示した後、上述のステップＳＤ１４に処理を戻し、曲データの読み出しを進めるべくアドレスポインタＡＤを歩進させる。
【００４９】
＜ノートオンイベントの場合＞
曲頭のタイムＤＴに続いて読み出された最初のイベントＥＶＴがノートオンイベントであったとする。そうすると、図１１に示すステップＳＤ２４に進み、レジスタＣＵＲＲＥＮＴＮＯＴＥの内容を、レジスタＦＯＲＭＥＲＮＯＴＥに入れ替える。
なお、最初のノートオンイベントを検出した時点では、レジスタＣＵＲＲＥＮＴＮＯＴＥにはデータセットされていない為、このステップＳＤ２４は無効な処理となるが、次のノートオンイベントを検出した時点から有効な処理になる。
【００５０】
次に、ステップＳＤ２５では、検出したノートオンイベントのノート番号ＮＮをレジスタＣＵＲＲＥＮＴＮＯＴＥにストアする。次いで、ステップＳＤ２６に進み、ノートオンイベントに含まれるノート番号ＮＮに対応する鍵に配置される発光手段２ａの点灯を押鍵ガイド部２に指示する。これにより、押鍵ガイド部２が弾くべき鍵の位置を案内（押鍵案内）する。続いて、ステップＳＤ２７に進むと、レジスタＦＯＲＭＥＲＮＯＴＥ、ＣＵＲＲＥＮＴＮＯＴＥの両者にノート番号ＮＮがセットされているか否かを判断する。最初のノートオンイベントを検出した時点では、レジスタＣＵＲＲＥＮＴＮＯＴＥにはノート番号ＮＮがセットされていない為、判断結果は「ＮＯ」になり、図１０に示すステップＳＤ１４に処理を戻し、曲データの読み出しを進めるべくアドレスポインタＡＤを歩進させる。
これに対し、２つ目のノートオンイベントを検出した時点からはレジスタＦＯＲＭＥＲＮＯＴＥ、ＣＵＲＲＥＮＴＮＯＴＥの両者にノート番号ＮＮがセットされるので、判断結果は「ＹＥＳ」になり、ステップＳＤ２８に進む。
【００５１】
ステップＳＤ２８〜ＳＤ３２では、押鍵案内されている鍵の音高が、ＲＡＭ７の評価データエリア（図３参照）中のどのノート列に対応しているのかを検索する。すなわち、ステップＳＤ２８では、サーチポインタＳに初期値「１」をセットする。次いで、ステップＳＤ２９，ＳＤ３０では、レジスタＦＯＲＭＥＲＮＯＴＥおよびＣＵＲＲＥＮＴＮＯＴＥに各々格納されるノート番号ＮＮが、サーチポインタＳに対応した前回ノート（Ｓ）および今回ノート（Ｓ）にそれぞれ一致するか否かを判断する。
【００５２】
一致した場合には、対応するノート列（前回ノート（Ｓ）、今回ノート（Ｓ））が検索されたとして、上記ステップＳＤ２９，ＳＤ３０の各判断結果が「ＹＥＳ」になり、図１０に示すステップＳＤ１４に処理を戻し、曲データの読み出しを進めるべくアドレスポインタＡＤを歩進させる。
なお、後述する鍵盤処理（図１２参照）では、検索されたノート列（前回ノート（Ｓ）、今回ノート（Ｓ））に対応する鍵が弾かれたかどうかを判定するようになっており、誤りなく弾かれた場合にそのノート列の正解回数（Ｓ）を歩進させるようになっている。
【００５３】
一方、上記ステップＳＤ２９，ＳＤ３０の双方あるいはいずれか一方で不一致になると、上記ステップＳＤ２９，ＳＤ３０の双方あるいはいずれか一方の判断結果が「ＮＯ」になり、ステップＳＤ３１に進み、サーチポインタＳをインクリメントして歩進させる。この後、ステップＳＤ３２に進み、歩進されたサーチポインタＳの値がノート列数Ｍを超えたか否か、つまり検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「ＮＯ」になり、上記ステップＳＤ２９に処理を戻してノート列検索を進める。一方、検索し終えた場合には、判断結果が「ＹＥＳ」となり、図１０に示すステップＳＤ１４に処理を戻し、曲データの読み出しを進めるべくアドレスポインタＡＤを歩進させる。
【００５４】
以上のように、演奏案内処理では、曲選択スイッチの操作により選択された練習曲の曲データを読み出し、読み出した曲データ中のタイムＤＴに従ったタイミングにて、読み出した曲データ中のノートオンイベントに基づき押鍵ガイド部２を制御して弾くべき鍵の位置を表示する押鍵案内を行いつつ、押鍵案内された鍵が現在どのノート列に対応しているのかを検索するようになっている。
【００５５】
（５）鍵盤処理の動作
次に、図１２を参照して鍵盤処理の動作を説明する。前述の評価処理（図８参照）のステップＳＣ２を介して鍵盤処理が実行されると、ＣＰＵ５は図１２に示すステップＳＥ１に処理を進め、鍵盤１を鍵走査する。続いて、ステップＳＥ２では、鍵走査の結果から鍵変化（鍵イベント）を検出する。鍵操作が行われず鍵イベント無しの場合には何も処理せずに本処理を完了させるが、押鍵によるオンイベントあるいは離鍵によるオフイベントを検出した場合には次のような処理を実行する。以下、オンイベントを検出した場合の動作とオフイベントを検出した場合の動作とに分けて説明する。
【００５６】
＜オンイベントを検出した場合＞
押鍵によるオンイベントを検出すると、ステップＳＥ３に進み、レジスタＣＵＲＲＥＮＴＫＥＹの内容を、レジスタＦＯＲＭＥＲＫＥＹに入れ替える。次いで、ステップＳＥ４に進むと、押鍵された鍵のノート番号ＮＮをレジスタＣＵＲＲＥＮＴＫＥＹにストアする。続いて、ステップＳＥ５では、レジスタＣＵＲＲＥＮＴＫＥＹにストアされたノート番号ＮＮに対応した音高の楽音の発音を指示するノートオンコマンドを作成し、続くステップＳＥ６にてそのノートオンコマンドを音源８に送出する。これにより、音源８は押鍵された鍵の音高の楽音を発生する。
【００５７】
次に、ステップＳＥ７に進むと、スタートフラグＳＴＦが「１」、つまり前述した演奏案内処理がスタート状態にあるかどうかを判断する。演奏案内処理がストップ状態（ＳＴＦ＝０）であると、判断結果は「ＮＯ」になり、本処理を完了させる。
一方、スタート状態にあれば、判断結果が「ＹＥＳ」になり、ステップＳＥ８に進む。ステップＳＥ８では、レジスタＦＯＲＭＥＲＫＥＹ、ＣＵＲＲＥＮＴＫＥＹの双方にデータが格納されているか否か、つまりノート列に対応した２押鍵が行われたかどうかを判断する。ノート列に対応した２押鍵が行われていなければ、判断結果は「ＮＯ」になり、本処理を完了させる。これに対し、ノート列に対応した２押鍵が行われていると、判断結果が「ＹＥＳ」になり、次のステップＳＥ９に進む。
【００５８】
ステップＳＥ９、ＳＥ１０では、前述した演奏案内処理にて検索されたノート列、すなわち押鍵案内された鍵に対応した前回ノート（Ｓ）および今回ノート（Ｓ）が、レジスタＦＯＲＭＥＲＫＥＹおよびレジスタＣＵＲＲＥＮＴＫＥＹに各々格納されるノート番号ＮＮにそれぞれ一致するかどうかを判断する。双方が不一致あるいはいずれか一方が不一致ならば、ステップＳＥ９、ＳＥ１０の双方もしくはいずれか一方の判断結果が「ＮＯ」となり、本処理を完了させる。
これに対し、双方が一致すると、ステップＳＥ９、ＳＥ１０の各判断結果が「ＹＥＳ」となり、ステップＳＥ１１に進み、前回ノート（Ｓ）および今回ノート（Ｓ）を含むノート列の正解回数（Ｓ）をインクリメントして歩進させた後、本処理を完了させる。
【００５９】
＜オフイベントを検出した場合＞
離鍵によるオフイベントを検出した場合には、ステップＳＥ１２に進む。ステップＳＥ１２では、離鍵された鍵のノート番号ＮＮに対応した音高の楽音の消音を指示するノートオフコマンドを作成し、続くステップＳＥ１３ではそのノートオフコマンドを音源８に送出して本処理を完了させる。これにより、音源８では離鍵された鍵の音高に対応した楽音を消音する。
【００６０】
このように、鍵盤処理では、押離鍵操作に応じた楽音の発音および消音を音源８に指示する一方、演奏案内処理がスタート状態にあり、押鍵案内が行われて場合には、押鍵案内された鍵に対応したノート列が押鍵される毎に、そのノート列の正解回数（Ｓ）を歩進するようになっている。
【００６１】
（６）評価データ生成処理の動作
次に、図１３を参照して評価データ生成処理の動作を説明する。前述の評価処理（図８参照）のステップＳＣ３を介して本処理が実行されると、ＣＰＵ５は図１３に示すステップＳＦ１に処理を進める。ステップＳＦ１では、前述した演奏案内処理による曲データ読み出しが完了したか否かを判断する。曲データ読み出しが完了していなければ、判断結果は「ＮＯ」となり、何も処理せずに完了させる。一方、曲データ読み出しが完了していると、判断結果が「ＹＥＳ」になり、次のステップＳＦ２に進む。ステップＳＦ２では、評価フラグＨＹＯＫＡＦが「１」、つまり評価データが未生成であるかどうかを判断する。
【００６２】
評価データ生成済みであれば、判断結果は「ＮＯ」になり、本処理を完了させる。一方、評価データ未生成の場合には、判断結果が「ＹＥＳ」になり、次のステップＳＦ３に進む。ステップＳＦ３〜ＳＦ７では、サーチポインタｎに対応したノート列（ｎ）中の成功率（ｎ）および追加ノート数（ｎ）を生成する。
すなわち、先ずステップＳＦ３では、サーチポインタｎに初期値「１」をセットし、続くステップＳＦ４では、サーチポインタｎ対応したノート列（ｎ）の正解回数（ｎ）を出現回数（ｎ）で除算した値に「１００」を乗算し、その値を成功率（ｎ）としてストアする。次に、ステップＳＦ５では、上記ステップＳＦ４にて求めた成功率（ｎ）を引数として、ＲＯＭ６に記憶される追加ノート数発生テーブルＴＡＢＬＥから対応する追加ノート数を読み出して追加ノート数（ｎ）としてストアする。
【００６３】
そして、ステップＳＦ６では、サーチポインタｎをインクリメントして歩進させ、続くステップＳＦ７では、歩進されたサーチポインタｎがノート列数Ｍを超えたか、つまり全てのノート列数Ｍについて評価データを生成し終えたかどうかを判断する。生成し終えていなければ、判断結果は「ＮＯ」になり、上述したステップＳＦ４に処理を戻す。以後、全てのノート列数Ｍについて評価データを生成し終えるまでステップＳＦ４〜ＳＦ７を繰り返す。そして、全てのノート列数Ｍについて評価データを生成し終えると、ステップＳＦ７の判断結果が「ＹＥＳ」になり、ステップＳＦ８に進み、評価データ生成済みを表すべく評価フラグＨＹＯＫＡＦを「０」にセットして本処理を完了させる。
【００６４】
（７）評価処理の動作要約
以上説明したように、「演奏案内処理」、「鍵盤処理」および「評価データ生成処理」を有する評価処理では、練習曲の曲データを読み出し、その曲データ中のタイムＤＴに従ったタイミングで押鍵案内を行い、ユーザが押鍵案内に従って押鍵すると、押鍵された鍵が現在どのノート列に対応しているのかを検索し、正しい押鍵操作が行われると、検索したノート列の正解回数を歩進する。そうして練習曲を弾き終えると、ユーザの演奏操作を評価する指標として、ノート列毎の成功率および追加ノート数を生成する。
【００６５】
全て正しく押鍵されたノート列では成功率が１００％となり、この場合、適正な演奏操作を習得していると見做して追加ノート数を「０」とする。一方、誤った押鍵が多いノート列、つまり成功率が低いノート列では、正しい鍵操作を習得していないものと見做し、それら鍵操作を繰り返し練習させるための追加ノート数を設けている。後述する練習処理では、成功率が低いノート列の鍵操作を、
追加ノート数分行わせるようになっている。
【００６６】
（８）練習処理の動作
次に、図１４を参照して練習処理の動作を説明する。前述した演奏練習モード処理（図４参照）のステップＳＡ５を介して練習処理が実行されると、ＣＰＵ５は図１４に示すステップＳＧ１に処理を進める。ステップＳＧ１では、曲選択スイッチの操作により選択された練習曲の曲データに従って押鍵案内しつつ、押鍵案内される鍵に対応したノート列に含まれる追加ノート数分繰り返し鍵操作を行わせる練習案内処理を実行する。次に、ステップＳＧ２では、練習案内処理によって押鍵案内された鍵の押離鍵操作に従って音源８にノートオン／ノートオフを指示する一方、案内通りの押鍵が為された場合、対応するノート列の正解回数を歩進させる鍵盤処理を実行する。なお、この鍵盤処理は、図１２に図示したものと同一である。
続いて、ステップＳＧ３では、モードスイッチのオン操作に有無を判断する。モードスイッチがオン操作されなければ、判断結果は「ＮＯ」となり、上述したステップＳＧ１に処理を戻す。一方、モードスイッチがオン操作されると、判断結果が「ＹＥＳ」になり、次のステップＳＧ４に進み、モードフラグＭＯＤＥＦを反転させて本処理を完了する。
【００６７】
（９）練習案内処理の動作
次に、図１５〜図１８を参照して練習案内処理の動作を説明する。上述の練習処理（図１４参照）のステップＳＧ１を介して練習案内処理が実行されると、ＣＰＵ５は図１５に示すステップＳＨ１に処理を進め、スタートスイッチのオン操作の有無を判断する。スタートスイッチがオン操作されると、判断結果は「ＹＥＳ」になり、次のステップＳＨ２に進み、スタートフラグＳＴＦを反転する。続いて、ステップＳＨ３では、反転されたスタートフラグＳＴＦが「１」であるか否かを判断する。つまり、スタート状態に設定されたかどうかを判断する。
【００６８】
反転されたスタートフラグＳＴＦの値が「０」（ストップ状態）であると、ステップＳＨ３の判断結果は「ＮＯ」となり、ステップＳＨ４に進み、押鍵ガイド部２にガイド表示禁止を指示する。これにより、押鍵ガイド部２は点灯中の発光手段２ａを消灯させる。この後、ステップＳＨ５に進み、割込みマスクを施してタイマインタラプト処理（後述する）の実行を禁止して本処理を完了させる。
なお、ここで言うタイマインタラプト処理とは、練習案内処理と並列的に実行され、一定周期毎にレジスタＴに格納されるタイムＤＴをデクリメントするものであり、その動作については追って説明する。
【００６９】
一方、反転されたスタートフラグＳＴＦの値が「１」（スタート状態）であれば、上記ステップＳＨ３の判断結果は「ＹＥＳ」になり、ステップＳＨ６に進み、ＲＯＭ６に記憶される曲データ（１）〜（Ｎ）の内、選択曲番号ＭＥＬＯＤＹに対応した曲データの先頭アドレスをアドレスポインタＡＤにセットする。次に、ステップＳＨ７に進み、そのアドレスポインタＡＤに従い曲データから先頭のタイムＤＴを読み出す。ステップＳＨ８では、読み出したタイムＤＴをレジスタＴにストアする。次いで、ステップＳＨ９に進み、評価フラグＨＹＯＫＡＦが「０」、つまり評価データが生成済みであるかどうかを判断する。評価データが未生成であると、判断結果は「ＮＯ」になり、ステップＳＨ１４に進み、タイマインタラプト処理の実行禁止を解除した後、一旦本処理を完了させる。
【００７０】
これに対し、評価データが生成済みであると、上記ステップＳＨ９の判断結果は「ＹＥＳ」になり、ステップＳＨ１０に進む。ステップＳＨ１０〜ＳＨ１３では、評価データ（図３参照）を構成する各ノート列（ｎ）中の追加ノート数（ｎ）を発音ノート数（ｎ）に格納する。
すなわち、ステップＳＨ１０にてサーチポインタｎに初期値「１」をセットし、続くステップＳＨ１１では、サーチポインタｎに応じてノート列（ｎ）中の追加ノート数（ｎ）を読み出し、それを発音ノート数（ｎ）にストアする。次いで、ステップＳＨ１２では、サーチポインタｎの値がノート列数Ｍに達したかどうかを判断する。サーチポインタｎの値がノート列数Ｍに達していなければ、判断結果は「ＮＯ」になり、ステップＳＨ１３に進み、サーチポインタｎを歩進させてステップＳＨ１１に処理を戻す。以後、サーチポインタｎの値がノート列数Ｍに達するまでステップＳＨ１１〜ＳＨ１３を繰り返す。そして、サーチポインタｎの値がノート列数Ｍに達すると、判断結果が「ＹＥＳ」になり、ステップＳＨ１４に進み、タイマインタラプト処理の実行禁止を解除した後、一旦本処理を完了させる。
【００７１】
以上のようにしてスタート状態に設定された後、本処理が前述のステップＳＧ１（図１４参照）を介して再び実行されると、上述したステップＳＨ１（図１５参照）の判断結果が「ＮＯ」になり、ＣＰＵ５は図１６に示すステップＳＨ１５に進み、スタート状態に設定されているかどうかを判断する。スタート状態に設定されている場合には判断結果が「ＹＥＳ」になり、次のステップＳＨ１６に進む。なお、ストップ状態に設定された場合には判断結果が「ＮＯ」となり、本処理を完了させる。
【００７２】
ステップＳＨ１６では、評価フラグＨＹＯＫＡＦが「１」、つまり評価データが未生成であるかどうかを判断する。前述した評価処理にて評価データが生成済みであると、判断結果は「ＮＯ」になり、ステップＳＨ１７に進む。ステップＳＨ１７では、フラグＴＳＵＩＫＡＦが「１」、すなわち後述する追加ノート検出第１処理もしくは追加ノート検出第２処理によって追加ノートが検索された状態であるか否かを判断する。追加ノートが検索された状態でなければ、判断結果は「ＮＯ」になり、ステップＳＨ１８に進む。これに対し、追加ノートが検索された状態であると、判断結果が「ＹＥＳ」になり、後述のステップＳＨ３６（図１８参照）に進む。
【００７３】
評価データが未生成の場合、上記ステップＳＨ１６の判断結果が「ＹＥＳ」になり、ステップＳＨ１８に進む。ステップＳＨ１８では、タイマインタラプト処理にて一定周期毎にデクリメントされるレジスタＴの値が「０」以下になったか否か、すなわちイベントタイミングに達したかどうかを判断する。イベントタイミングに達していないと、判断結果は「ＮＯ」になり、一旦本処理を完了させる。
一方、イベントタイミングに達していれば、判断結果は「ＹＥＳ」になり、ステップＳＨ１９に進み、アドレスポインタＡＤをインクリメントして歩進させ、続くステップＳＨ２０では、歩進されたアドレスポインタＡＤに応じて曲データを読み出す。そして、ステップＳＨ２１に進むと、読み出された曲データが終了データＥＮＤでないか否か、つまり曲終端に達したかどうかを判断する。以下、曲終端に達した場合とそうでない場合とに分けて動作説明を進める。
【００７４】
＜曲終端に達した場合の動作＞
曲終端に達した場合には、上記ステップＳＨ２１の判断結果が「ＮＯ」になり、ステップＳＨ２２に進み、スタートフラグＳＴＦをゼロリセットしてストップ状態に設定する。この後、ステップＳＨ２３に進み、押鍵ガイド部２にガイド表示禁止を指示し、ステップＳＨ２４では、割込みマスクを施してタイマインタラプト処理の実行を禁止してから本処理を完了させる。
【００７５】
＜曲終端に達していない場合の動作＞
曲終端に達していない場合には、上記ステップＳＨ２１の判断結果が「ＹＥＳ」となり、ステップＳＨ２５に進み、上記ステップＳＨ２０にて読み出された曲データがタイムＤＴであるか否かを判断する。タイムＤＴであれば、判断結果は「ＹＥＳ」になり、ステップＳＨ２６に進み、レジスタＴにタイムＤＴをセットして本処理を一旦完了させる。
一方、イベントＥＶＴが読み出された場合には、判断結果が「ＮＯ」になり、ステップＳＨ２７に進み、読み出されたイベントＥＶＴがノートオン／ノートオフイベントのいずれであるかを判断する。以下、ノートオンイベントの場合とノートオフイベントの場合とに分けて動作説明を進める。
【００７６】
＜ノートオンイベントの場合＞
読み出されたイベントＥＶＴがノートオンイベントの場合、ステップＳＨ２８に進み、そのノートオンイベントに含まれるノート番号ＮＮに対応する鍵に配置される発光手段２ａの点灯を押鍵ガイド部２に指示して押鍵案内を行った後、前述のステップＳＨ１９に処理を戻してアドレスポインタＡＤを歩進させる。
【００７７】
＜ノートオフイベントの場合＞
読み出されたイベントＥＶＴがノートオフイベントの場合、図１７に示すステップＳＨ２９に進み、そのノートオフイベントに含まれるノート番号ＮＮに対応する鍵に配置される発光手段２ａの消灯を押鍵ガイド部２に指示する。次いで、ステップＳＨ３０に進み、フラグＨＹＯＫＡＦが「０」、つまり評価データ生成済みか否かを判断する。
評価データ未生成の場合、つまり評価処理を実行していない状態では、単に曲データに従って弾くべき鍵を案内する動作を進める為、ステップＳＨ３０の判断結果は「ＮＯ」となり、図１６に示すステップＳＨ１９に処理を戻してアドレスポインタＡＤを歩進させる。
【００７８】
一方、評価データ生成済みの場合には、評価処理を行った際に生じた、誤った鍵操作を追加ノート数分繰り返し練習させる練習案内動作を進める。この場合、ステップＳＨ３０の判断結果が「ＹＥＳ」になり、次のステップＳＨ３１に進み、ノートオフイベントのノート番号ＮＮをレジスタＦＯＲＭＥＲＮＯＴＥにストアする。次に、ステップＳＨ３２では、先の押鍵のノート（前回ノート）に続いて押鍵すべき追加ノートを評価データ中のノート列から検索し、検索した追加ノートのイベントタイミングＴＴを設定する追加ノート検出第１処理を実行する。次いで、ステップＳＨ３３に進むと、フラグＴＵＩＫＡＦが「０」、つまり追加ノート検出第１処理にて追加ノートが検索できない状態であるかどうかを判断する。追加ノート検出第１処理にて追加ノートが検索された場合には、判断結果が「ＮＯ」になり、一旦本処理を完了させる。
【００７９】
一方、追加ノート検出第１処理にて追加ノートが検索されないと、判断結果は「ＹＥＳ」になり、次のステップＳＨ３４を介して追加ノート検出第２処理を実行する。追加ノート検出第２処理では、追加ノート検出第１処理にて該当する追加ノートを検索できなかった場合に、ＲＡＭ７の評価データエリア（図３参照）に格納されるノート列の内から、成功率が１００％であって、且つレジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号に一致する音高の前回ノートを有するノート列を検索し、検索したノート列中の今回ノートを追加ノートに設定する一方、その追加ノートのイベントタイミングＴＴを設定する。
【００８０】
こうした追加ノート検出第２処理が完了すると、ステップＳＨ３５に進み、上記ステップＳＨ３３と同様に、追加ノート検出第２処理にて追加ノートが検索できない状態であるかどうかを判断する。追加ノート検出第２処理にて追加ノートが検索された場合には、判断結果が「ＮＯ」になり、一旦本処理を完了させる。これに対し、検索できない場合には、判断結果が「ＹＥＳ」となり、図１６に示すステップＳＨ１９に処理を戻す。
【００８１】
さて、追加ノート検出第１処理あるいは追加ノート検出第２処理のいずれかによって追加ノートが検索され、これによりフラグＴＵＩＫＡＦが「１」にセットされた状態で再び本処理が実行されたとする。そうすると、図１６に図示したステップＳＨ１７の判断結果が「ＹＥＳ」になり、ＣＰＵ５は図１８に示すステップＳＨ３６に処理を進める。
ステップＳＨ３６では、レジスタＴＴの値が「０」以下、すなわち追加ノートのイベントタイミングに達したかどうかを判断する。なお、レジスタＴＴの値は、後述するタイマインタラプト処理にて一定周期毎にデクリメントされるようになっている。
【００８２】
追加ノートのイベントタイミングでなければ、判断結果は「ＮＯ」になり、一旦本処理を完了させる。一方、追加ノートのイベントタイミングに達した場合には、判断結果が「ＹＥＳ」となり、ステップＳＨ３７に進み、フラグＯＮＦが「１」、つまり追加ノートのノートオンイベントであるかどうかを判断する。以下、「追加ノートのノートオンイベントの場合」および「追加ノートのノートオフイベントの場合」とに分けて説明を進める。
【００８３】
＜追加ノートのノートオンイベントの場合＞
この場合、ステップＳＨ３７の判断結果は「ＹＥＳ」になり、ステップＳＨ３８に進み、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納される今回ノート（追加ノート）のノート番号ＮＮに対応する鍵に配置される発光手段２ａの点灯を押鍵ガイド部２に指示する。次いで、ステップＳＨ３９では、ノートオフタイミングを表す所定値をレジスタＴＴにセットし、続くステップＳＨ４０では、フラグＯＮＦをゼロリセットして次イベントが追加ノートのノートオフイベントであることを表した後、前述のステップＳＨ１９（図１６参照）に処理を戻してアドレスポインタＡＤを歩進させる。
【００８４】
＜追加ノートのノートオフイベントの場合＞
この場合、ステップＳＨ３７の判断結果が「ＮＯ」になり、ステップＳＨ４１に進む。ステップＳＨ４１では、レジスタＣＵＲＲＥＮＴＮＯＴＥに格納される今回ノート（追加ノート）のノート番号ＮＮに対応する鍵に配置される発光手段２ａの消灯を押鍵ガイド部２に指示する。次いで、ステップＳＨ４２では、レジスタＣＵＲＥＥＮＴＮＯＴＥに格納される今回ノート（追加ノート）のノート番号をレジスタＦＯＲＭＥＲＮＯＴＥに入れ替える。
【００８５】
次に、ステップＳＨ４３に進み、先の押鍵のノート（追加ノート）に続く追加ノートを評価データ中のノート列から検索し、検索した追加ノートのイベントタイミングＴＴを設定する追加ノート検出第１処理を実行する。そして、ステップＳＨ４４に進み、フラグＴＵＩＫＡＦが「０」、つまり追加ノート検出第１処理にて追加ノートが検索できない状態であるかどうかを判断する。追加ノート検出第１処理にて追加ノートが検索された場合には、判断結果が「ＮＯ」になり、一旦本処理を完了させる。
【００８６】
一方、追加ノート検出第１処理にて追加ノートが検索されないと、判断結果は「ＹＥＳ」になり、次のステップＳＨ４５を介して追加ノート検出第２処理を実行する。追加ノート検出第２処理では、追加ノート検出第１処理にて該当する追加ノートを検索できなかった場合に、ＲＡＭ７の評価データエリア（図３参照）に格納されるノート列の内から、成功率が１００％であって、且つレジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号に一致する音高の前回ノートを有するノート列を検索し、検索したノート列中の今回ノートを追加ノートに設定する一方、その追加ノートのイベントタイミングＴＴを設定する。
【００８７】
追加ノート検出第２処理が完了すると、ステップＳＨ４６に進み、追加ノート検出第２処理にて追加ノートが検索できない状態であるかどうかを判断する。追加ノート検出第２処理にて追加ノートが検索された場合には、判断結果が「ＮＯ」になり、一旦本処理を完了させる。これに対し、検索できない場合には、判断結果が「ＹＥＳ」となり、図１６に示すステップＳＨ１９に処理を戻す。
【００８８】
以上のように、練習案内処理では、評価データが生成済みであると、先ず練習曲の曲データから最初に読み出すノートオンイベントに基づき押鍵案内を行い、これに従って押鍵した鍵のノートに続いて押鍵する追加ノートを評価データ中のノート列から検索し、検索した追加ノートの押鍵を案内する。これに従って押鍵した鍵のノート（追加ノート）に続いて押鍵する追加ノートを更に評価データ中のノート列から検索し、検索した追加ノートの押鍵を案内する。以後、こうした練習案内動作を追加ノートが検索されなくなるまで繰り繰り返す。これにより、前述の評価処理を行った際に生じた、誤った鍵操作を追加ノート数分繰り返し練習させるようになっている。
【００８９】
（１０）追加ノート検出第１処理の動作
次に、図１９を参照して追加ノート検出第１処理の動作を説明する。前述した練習案内処理のステップＳＨ３２（図１７参照）あるいはステップＳＨ４３（図１８参照）のいずれかを介して本処理が実行されると、ＣＰＵ５は図１９に示すステップＳＪ１に処理を進め、フラグＴＳＵＩＫＡＦをゼロリセットする。フラグＴＳＵＩＫＡＦは、前述した通り、追加ノートを検索できたか否かを表すフラグであり、「０」の場合に検索できない状態を、「１」の場合に検索できた状態を表す。
【００９０】
続いて、ステップＳＪ２に進むと、後述するレジスタＴＳＵＩＫＡおよびレジスタＫＯＨＯをそれぞれゼロクリアし、ステップＳＪ３では、サーチポインタｎに初期値「１」をセットする。そして、ステップＳＪ４〜ＳＪ１１では、サーチポインタｎを歩進させながら、ＲＡＭ７の評価データエリア（図３参照）に格納されるノート列の内から下記検索条件に合致する追加ノートを備えたノート列を検索する。検索条件は、成功率が１００％以外であって、且つレジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮに一致する音高の前回ノートを有し、しかも発音ノート数が「０」でないノート列の内、最も追加ノート数の大きいノート列を探し出す。
【００９１】
すなわち、ステップＳＪ４では、先ずサーチポインタｎに対応したノート列中の成功率（ｎ）が１００％以外であるか、つまり前述の評価処理を実行した際、誤った鍵操作が行われたノート列であるかどうかを判断する。成功率（ｎ）が１００％のノート列であると、検索対象外であるとして、判断結果は「ＮＯ」となり、後述するステップＳＪ１０に進むが、成功率（ｎ）が１００％以外の誤った鍵操作が行われたノート列であれば、判断結果は「ＹＥＳ」になり、次のステップＳＪ５に進む。ステップＳＪ５では、サーチポインタｎに対応したノート列中の前回ノート（ｎ）が、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮに一致するか、すなわち先の押鍵の音高に一致するかどうかを判断する。一致しなければ、検索対象外であるとして、判断結果は「ＮＯ」となり、後述のステップＳＪ１０に進むが、一致すると、判断結果が「ＹＥＳ」になり、次のステップＳＪ６に進む。
【００９２】
ステップＳＪ６では、サーチポインタｎに対応したノート列中の発音ノート数（ｎ）が「０」以外であるか否かを判断する。発音ノート数（ｎ）が「０」であると、検索対象外であるとして、判断結果は「ＮＯ」となり、後述のステップＳＪ１０に進むが、そうでなければ、判断結果が「ＹＥＳ」になり、次のステップＳＪ７に進む。ステップＳＪ７では、発音ノート数（ｎ）がレジスタＴＳＵＩＫＡの値より大きいか否かを判断する。
レジスタＴＳＵＩＫＡは、後述するように、検索対象となるノート列の発音ノート数を候補として保持するものであり、より数の大きい発音ノート数が検索される毎に、その発音ノート数が更新登録されるようになっている。
【００９３】
サーチポインタｎに対応したノート列中の発音ノート数（ｎ）がレジスタＴＳＵＩＫＡの値より小さいと、上記ステップＳＪ７の判断結果は「ＮＯ」となり、後述のステップＳＪ１０に進むが、サーチポインタｎに対応したノート列中の発音ノート数（ｎ）がレジスタＴＳＵＩＫＡの値より大きい場合には、判断結果が「ＹＥＳ」になり、次のステップＳＪ８に進む。ステップＳＪ８では、レジスタＫＯＨＯにサーチポインタｎの値をストアする。次いで、ステップＳＪ９では、サーチポインタｎに対応したノート列中の発音ノート数（ｎ）をレジスタＴＳＵＩＫＡに更新登録する。
【００９４】
ステップＳＪ１０では、サーチポインタｎをインクリメントして歩進させ、続くステップＳＪ１１では、歩進されたサーチポインタｎの値がノート列数Ｍを超えたか否かを判断する。サーチポインタｎの値がノート列数Ｍを超えていない場合には、判断結果が「ＮＯ」になり、上述のステップＳＪ４に処理を戻す。
以後、ステップＳＪ４〜ＳＪ１１を繰り返して条件合致するノート列を検索する。そして、サーチポインタｎの値がノート列数Ｍを超えて検索が完了すると、上記ステップＳＪ１１の判断結果が「ＹＥＳ」になり、ステップＳＪ１２に進む。
【００９５】
ステップＳＪ１２では、レジスタＫＯＨＯの値が「０」以外、すなわち条件合致するノート列を検索できたかどうかを判断する。検索できないと、判断結果が「ＮＯ」となり、本処理を完了させる。一方、条件合致するノート列を検索できると、判断結果は「ＹＥＳ」になり、次のステップＳＪ１３に進む。ステップＳＪ１３では、検索したノート列中の今回ノート（追加ノート）のイベントタイミングを表す所定値をレジスタＴＴにストアする。
次に、ステップＳＪ１４に進むと、レジスタＫＯＨＯの値に対応した今回ノート（ＫＯＨＯ）のノート番号ＮＮを、レジスタＣＵＲＲＥＮＴＮＯＴＥにストアする。続いて、ステップＳＪ１５では、レジスタＫＯＨＯの値に対応した発音ノート数（ＫＯＨＯ）をデクリメントする。そして、ステップＳＪ１６に進み、フラグＴＳＵＩＫＡＦに「１」をセットして追加ノートを検出した旨を表示する。この後、ステップＳＪ１７に進み、追加ノートのノートオンイベントを表すべく、フラグＯＮＦに「１」をセットして本処理を完了させる。
【００９６】
このように、追加ノート検出第１処理では、ＲＡＭ７の評価データエリアに格納されるノート列の内から、前述の評価処理を実行した際に鍵操作を間違えたノート列であって、先の押鍵の音高に一致する前回ノートを有し、しかも発音ノート数が「０」でないノート列を検索し、さらにその内で最も追加ノート数の大きいノート列を探し出す。これら条件を満たすノート列が検索された場合、そのノート列中の今回ノートを追加ノートとし、この追加ノートのイベントタイミングＴＴを設定する。
また、追加ノートを検索した場合、その追加ノートを含むノート列中の発音ノート数をデクリメントする。つまり、換言すれば、追加ノートを検索する毎に、対応する追加ノート数が１つずつ減少する。
【００９７】
（１１）追加ノート検出第２処理の動作
次に、図２０を参照して追加ノート検出第２処理の動作を説明する。本処理は、上述の追加ノート検出第１処理にて該当する追加ノートを検索できなかった場合に実行される。すなわち、前述した練習案内処理のステップＳＨ３４（図１７参照）あるいはステップＳＨ４５（図１８参照）のいずれかを介して実行される。
本処理が実行されると、ＣＰＵ５は図２０に示すステップＳＫ１に処理を進め、サーチポインタｎに初期値「１」をセットする。そして、ステップＳＫ２〜ＳＫ５では、サーチポインタｎを歩進させながら、ＲＡＭ７の評価データエリア（図３参照）に格納されるノート列の内から、成功率が１００％であって、且つレジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮに一致する音高の前回ノートを有するノート列を検索する。
【００９８】
すなわち、ステップＳＫ２では、サーチポインタｎに対応したノート列中の成功率（ｎ）が１００％であるか否かを判断する。成功率（ｎ）が１００％以外のノート列であると、検索対象外であるとして、判断結果は「ＮＯ」となり、後述するステップＳＫ４に進む。
一方、成功率（ｎ）が１００％のノート列であれば、判断結果は「ＹＥＳ」になり、次のステップＳＫ３に進む。ステップＳＫ３では、サーチポインタｎに対応したノート列中の前回ノート（ｎ）が、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮに一致するか、すなわち先の押鍵の音高に一致するかどうかを判断する。一致しなければ、判断結果は「ＮＯ」になり、ステップＳＫ４に進む。
【００９９】
ステップＳＫ４では、サーチポインタｎをインクリメントして歩進させ、続くステップＳＫ５では、歩進されたサーチポインタｎの値がノート列数Ｍを超えたか否かを判断する。サーチポインタｎの値がノート列数Ｍを超えていない場合には、判断結果が「ＮＯ」になり、上述のステップＳＫ２に処理を戻す。
以後、ステップＳＫ２〜ＳＫ５を繰り返して条件合致するノート列を検索する。そして、この検索過程でサーチポインタｎに対応したノート列中の前回ノート（ｎ）が、レジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号ＮＮに一致すると、上述のステップＳＫ３の判断結果が「ＹＥＳ」になり、ステップＳＫ６に進む。ステップＳＫ６では、サーチポインタｎに対応した今回ノート（ｎ）のノート番号ＮＮを、レジスタＣＵＲＲＥＮＴＮＯＴＥにストアすると共に、その今回ノート（追加ノート）のイベントタイミングを表す所定値をレジスタＴＴにストアする。次いで、ステップＳＫ７では、フラグＴＳＵＩＫＡＦに「１」をセットして追加ノートを検索した旨を表示し、続くステップＳＫ８では、追加ノートのノートオンイベントを表すべく、フラグＯＮＦに「１」をセットして本処理を完了させる。
【０１００】
このように、追加ノート検出第２処理では、追加ノート検出第１処理にて該当する追加ノートを検索できなかった場合、ＲＡＭ７の評価データエリア（図３参照）に格納されるノート列の内から、成功率が１００％であって、且つレジスタＦＯＲＭＥＲＮＯＴＥに格納されるノート番号に一致する音高の前回ノートを有するノート列を検索する。検索したノート列中の今回ノートを追加ノートとし、この追加ノートのイベントタイミングＴＴを設定するようになっている。
【０１０１】
（１２）タイマインタラプト処理ルーチンの動作
次に、図２１を参照してタイマインタラプト処理ルーチンの動作を説明する。前述した練習案内処理のステップＳＨ１４（図１５参照）にてタイマインタラプト処理の実行禁止が解除されると、ＣＰＵ５はタイマインタラプト処理を一定周期毎に実行する。本処理が実行されると、ＣＰＵ５はステップＳＬ１に進み、フラグＴＵＩＫＡＦが「０」、つまり追加ノートが検索できない状態であるかどうかを判断する。追加ノートが検索できない場合には、判断結果が「ＹＥＳ」になり、ステップＳＬ２に進み、レジスタＴの値（タイムＤＴ）をデクリメントして本処理を終える。これに対し、追加ノートを検索できた場合には、判断結果が「ＮＯ」になり、ステップＳＬ３に進み、レジスタＴＴの値をデクリメントして本処理を終える。
【０１０２】
（１３）練習処理の動作要約
以上説明したように、「練習案内処理」、「追加ノート検出第１処理」、「追加ノート検出第２処理」および「鍵盤処理」を有する練習処理では、評価データが生成済みである場合、練習曲の曲データから最初に読み出すノートオンイベントに基づき押鍵案内を行い、これに従って押鍵した鍵のノートに続いて押鍵する追加ノートを評価データ中のノート列から検索し、検索した追加ノートの押鍵を案内する。次に、その案内に従って押鍵した鍵のノート（追加ノート）に続いて押鍵する追加ノートを更に評価データ中のノート列から検索し、検索した追加ノートの押鍵を案内するという練習案内動作が行われる。こうした練習案内動作を行う毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になったノート列を検索対象から除外する。
そして、誤った鍵操作を繰り返し練習させる為の追加ノートが無くなった場合には、評価データ中のノート列の内から、成功率が１００％であって、先の押鍵の音高に一致する前回ノートを持つノート列を検索し、検索したノート列中の今回ノートを追加ノートとして押鍵を案内する。
【０１０３】
このように、練習処理では、前述の評価処理を行った際に生じた、誤った鍵操作を追加ノート数分繰り返し練習させる。つまり、練習曲を間違えなく演奏させる練習ではなく、練習曲から得たノート列の内、ユーザが間違えやすいノート列の演奏操作を重点的に練習させるようにしたので、曲演奏を練習する以前のレベル、例えば鍵盤を全く弾いたことが無く指使いも覚束ない初心者ユーザに、ある音高の音を出すにはどの鍵を弾けばよいのかや、ある鍵を弾くとどの音高の音が出るかを習熟させて演奏操作そのものを体得させることが可能になる。
【０１０４】
なお、本実施例では、練習曲の曲データに従った再生テンポで練習案内動作を進行させるようにしているが、これに替えて、ユーザの演奏レベルに応じた再生テンポで練習案内動作を進行させる態様としてもよく、そのようにすれば、演奏操作をより一層体得し易くすることが可能になる。
また、本実施例では、単音のノート列を形成するようにしたが、これに限らず、ユーザの演奏レベルが向上した場合には、複数同時押鍵するノート列を形成し、和音演奏の練習に供する態様にすることも可能である。この場合、ノート列の連係にコード進行もしくはコード転回を取入れれば、コード理論も併せて習得することが可能になる。
【０１０５】
【発明の効果】
請求項１，３，５に記載の発明によれば、曲を形成する各音を表す曲データから２音を組とした前回ノートおよび今回ノートからなる複数のノート列を形成した後、曲データに応じた演奏案内を行い、その演奏案内とは異なる誤った演奏操作を行ったノート列に、正しい演奏操作を繰り返し練習させるための追加ノート数を付加する。そして、曲データに応じた演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記複数のノート列から検索し、検索したノート列の今回ノートを演奏案内する動作を繰り返し、その動作を追加ノート数分繰り返した場合には当該追加ノート数を有するノート列を検索対象から除外する。つまり、練習曲を間違えなく演奏させる練習ではなく、練習曲から得たノート列の内、ユーザが間違えやすいノート列の演奏操作を重点的に練習させるようにしたので、曲演奏を練習する以前のレベル、例えば鍵盤を全く弾いたことが無く指使いも覚束ない初心者ユーザに、ある音高の音を出すにはどの鍵を弾けばよいのかや、ある鍵を弾くとどの音高の音が出るかを習熟させて演奏操作そのものを体得させることができる。
請求項２，４，６に記載の発明によれば、曲を形成する各音を表す曲データから２音を組とした前回ノート、今回ノートおよびその出現回数を備えた複数のノート列を形成し、形成された各ノート列に、正解回数、成功率および追加ノート数の記憶エリアをそれぞれ設けて記憶しておく。そして、曲データに従って演奏案内する一方、案内通りの演奏操作がなされる毎に、記憶しておいた各ノート列の内、演奏操作されたノート列の正解回数を歩進させ、演奏案内が完了すると、記憶しておいた各ノート列毎に、正解回数と出現回数とに応じた成功率およびその成功率に対応した追加ノート数を設けて前回ノート、今回ノート、出現回数、正解回数、成功率および追加ノート数からなる評価データを生成する。次に、曲データに応じて演奏案内を行い、これに従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内した後、さらにこの演奏案内に従って演奏操作された音高に一致する前回ノートを有し、かつ最も追加ノート数の大きいノート列を前記評価データから検索し、検索したノート列の今回ノートを演奏案内する練習案内動作を繰り返し、その過程で前記評価データからノート列を検索する毎に、対応する追加ノート数を１つずつ減少させ、追加ノート数が「０」になった場合、当該追加ノート数を有するノート列を検索対象から除外するようにしたので、練習曲から得たノート列の内、ユーザが間違えやすいノート列の演奏操作を重点的に繰り返し練習させることが出来、曲演奏を練習する以前のレベル、例えば鍵盤を全く弾いたことが無く指使いも覚束ない初心者ユーザに、ある音高の音を出すにはどの鍵を弾けばよいのかや、ある鍵を弾くとどの音高の音が出るかを習熟させて演奏操作そのものを体得させることができる。
【図面の簡単な説明】
【図１】本発明による一実施例の構成を示すブロック図である。
【図２】ＲＯＭ６に記憶される曲データの構成を示す図である。
【図３】ＲＡＭ７の評価データエリアに格納されるノート列の構成を示す図である。
【図４】演奏練習モード処理の動作を示すフローチャートである。
【図５】曲選択処理の動作を示すフローチャートである。
【図６】曲選択処理の動作を示すフローチャートである。
【図７】曲選択処理の動作を示すフローチャートである。
【図８】評価処理の動作を示すフローチャートである。
【図９】演奏案内処理の動作を示すフローチャートである。
【図１０】演奏案内処理の動作を示すフローチャートである。
【図１１】演奏案内処理の動作を示すフローチャートである。
【図１２】鍵盤処理の動作を示すフローチャートである。
【図１３】評価データ生成処理の動作を示すフローチャートである。
【図１４】練習処理の動作を示すフローチャートである。
【図１５】練習案内処理の動作を示すフローチャートである。
【図１６】練習案内処理の動作を示すフローチャートである。
【図１７】練習案内処理の動作を示すフローチャートである。
【図１８】練習案内処理の動作を示すフローチャートである。
【図１９】追加ノート検出第１処理の動作を示すフローチャートである。
【図２０】追加ノート検出第２処理の動作を示すフローチャートである。
【図２１】タイマインタラプト処理の動作を示すフローチャートである。
【符号の説明】
１  鍵盤
２  押鍵ガイド部
３  パネルスイッチ
４  表示部
５  ＣＰＵ
６  ＲＯＭ
７  ＲＡＭ
８  音源
９  サウンドシステム
【図１】
2004184590.tif 000003
【図２】
2004184590.tif 000004
【図３】
2004184590.tif 000005
【図４】
2004184590.tif 000006
【図５】
2004184590.tif 000007
【図６】
2004184590.tif 000008
【図７】
2004184590.tif 000009
【図８】
2004184590.tif 000010
【図９】
2004184590.tif 000011
【図１０】
2004184590.tif 000012
【図１１】
2004184590.tif 000013
【図１２】
2004184590.tif 000014
【図１３】
2004184590.tif 000015
【図１４】
2004184590.tif 000016
【図１５】
2004184590.tif 000017
【図１６】
2004184590.tif 000018
【図１７】
2004184590.tif 000019
【図１８】
2004184590.tif 000020
【図１９】
2004184590.tif 000021
【図２０】
2004184590.tif 000022
【図２１】
2004184590.tif 000023