(57)【要約】【課題】  楽しく飽きずに一人で練習できる音楽教習装置を実現する。【解決手段】  ステップＳＣ２では生徒が選択した曲データに基づき押鍵案内を行い、その案内中に生徒が押鍵ミスした場合に仮想的な練習相手のキャラクタＣが画面上でその間違えを指摘する。ステップＳＣ３では間違えた回数に応じて仮想的な先生Ｔがあたかも生徒を励ますようにコメントする。ステップＳＣ４では生徒が選択した曲データに基づき押鍵案内を行う過程で、仮想的な練習相手のキャラクタＣが案内とは異なる押鍵音を発音させ、その間違いを生徒に指摘させる。ステップＳＣ５では指摘ミスした音符を仮想的な先生Ｔが生徒に教示する。これにより、ユーザである生徒は楽しく飽きずに一人で練習することができる。【選択図】  図５
2005070521.tif 000002
【特許請求の範囲】
【請求項１】
曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示手段と、
前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘手段と  を具備することを特徴とする音楽教習装置。
【請求項２】
曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その異なる音高を案内された音高に対応させて記憶する記憶手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示手段と、
前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高に対応した異なる音高が前記記憶手段に記憶されている場合、その異なる音高を発音させて、生徒と同じミスをする仮想的な練習相手の間違いを生徒に指摘させる指摘手段と
を具備することを特徴とする音楽教習装置。
【請求項３】
曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数手段と、
前記計数手段によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示手段と、
前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘手段と
を具備することを特徴とする音楽教習装置。
【請求項４】
曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数手段と、
前記計数手段によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示手段と、
前記計数手段によって計数された間違い回数に応じた内容の助言を発生して仮想的な先生から生徒に与える助言手段と、
前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘手段と、  前記指摘手段が全ての間違いを指摘していない場合、曲データ中から検索した間違い指摘されていない音を仮想的な先生から生徒に通知する通知手段と
を具備することを特徴とする音楽教習装置。
【請求項５】
曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、
生徒の間違いに仮想的な練習相手が反応する頻度を設定する設定手段と、
前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、前記設定手段により設定される頻度に応じて反応した間違いを仮想的な練習相手から生徒に教示する教示手段と、
前記教示手段が反応していない間違い箇所の音を曲データ中から検索して仮想的な先生から生徒に提示する提示手段と、
前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘手段と  を具備することを特徴とする音楽教習装置。
【請求項６】
曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示処理と、
前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘処理と  をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項７】
曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その異なる音高を案内された音高に対応させて記憶する記憶処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示処理と、
前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高に対応した異なる音高が前記記憶処理にて記憶されている場合、その異なる音高を発音させて、生徒と同じミスをする仮想的な練習相手の間違いを生徒に指摘させる指摘処理と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項８】
曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数処理と、
前記計数処理によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示処理と、
前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘処理と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項９】
曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数処理と、
前記計数処理によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示処理と、
前記計数処理によって計数された間違い回数に応じた内容の助言を発生して仮想的な先生から生徒に与える助言処理と、
前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘処理と、  前記指摘処理が全ての間違いを指摘していない場合、曲データ中から検索した間違い指摘されていない音を仮想的な先生から生徒に通知する通知処理と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項１０】
曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、
生徒の間違いに仮想的な練習相手が反応する頻度を設定する設定処理と、
前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、前記設定処理にて設定される頻度に応じて反応した間違いを仮想的な練習相手から生徒に教示する教示処理と、
前記教示処理が反応していない間違い箇所の音を曲データ中から検索して仮想的な先生から生徒に提示する提示処理と、
前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘処理と  をコンピュータで実行させることを特徴とする音楽教習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置や電子楽器などに用いて好適な音楽教習装置および音楽教習プログラムに関する。
【背景技術】
【０００２】
従来より、練習曲の曲データを再生して演奏操作を練習させて音楽教習する装置が知られている。この種の装置として、例えば特許文献１には１曲分の曲データと演奏操作に応じて入力される演奏データとを比較して両データの不一致部分を抽出しておき、この曲データの抽出部分を繰り返して演奏データと比較し、両データの一致が検出された時に抽出部分の出力を停止させて１曲分の曲データを出力させるようにして、演奏ミスした部分を間違えなく演奏できるようになるまで繰り返し練習させる技術が開示されている。
【０００３】
特許文献１に開示の装置は、演奏操作の独習を前提にしているため、周知の音楽教室のように複数人で教習する場合とは異なり、他者との競争や比較が無いことから練習意欲を高めたり向上心を持続させることが難しい。その為、本出願人は他者との競争や比較を行わせる装置として、例えば特許文献２に開示するように、演奏者の実演奏データを分析した結果から仮想的な競争者の仮想演奏データを生成し、これを自動演奏させて自己の演奏と比較するようにした技術を発明している。
【０００４】
【特許文献１】特開平５−２９７７９４号公報
【特許文献２】特開平１１−００３０２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献２に開示の装置は、ユーザ対象を大人に想定している為、自分の演奏を仮想の競争者の演奏と比較して練習意欲を高めたり向上心を持続させることが期待できる。しかしながら、ユーザ対象を子供に想定した場合には、仮想の競争者の演奏と比較するだけでは楽しさや面白みに欠け、練習に飽きてしまうという問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、楽しく飽きずに一人で練習することができる音楽教習装置および音楽教習プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示手段と、前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その異なる音高を案内された音高に対応させて記憶する記憶手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示手段と、前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高に対応した異なる音高が前記記憶手段に記憶されている場合、その異なる音高を発音させて、生徒と同じミスをする仮想的な練習相手の間違いを生徒に指摘させる指摘手段とを具備することを特徴とする。
【０００８】
請求項３に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数手段と、前記計数手段によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示手段と、前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘手段とを具備することを特徴とする。
【０００９】
請求項４に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数手段と、前記計数手段によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示手段と、前記計数手段によって計数された間違い回数に応じた内容の助言を発生して仮想的な先生から生徒に与える助言手段と、前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘手段と、前記指摘手段が全ての間違いを指摘していない場合、曲データ中から検索した間違い指摘されていない音を仮想的な先生から生徒に通知する通知手段とを具備することを特徴とする。
【００１０】
請求項５に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内手段と、生徒の間違いに仮想的な練習相手が反応する頻度を設定する設定手段と、前記案内手段の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、前記設定手段により設定される頻度に応じて反応した間違いを仮想的な練習相手から生徒に教示する教示手段と、前記教示手段が反応していない間違い箇所の音を曲データ中から検索して仮想的な先生から生徒に提示する提示手段と、前記案内手段の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘手段とを具備することを特徴とする。
【００１１】
請求項６に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示処理と、前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘処理とをコンピュータで実行させることを特徴とする。
【００１２】
請求項７に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その異なる音高を案内された音高に対応させて記憶する記憶処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する教示処理と、前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高に対応した異なる音高が前記記憶処理にて記憶されている場合、その異なる音高を発音させて、生徒と同じミスをする仮想的な練習相手の間違いを生徒に指摘させる指摘処理とをコンピュータで実行させることを特徴とする。
【００１３】
請求項８に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数処理と、前記計数処理によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示処理と、前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘処理とをコンピュータで実行させることを特徴とする。
【００１４】
請求項９に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数する計数処理と、前記計数処理によって計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示する教示処理と、前記計数処理によって計数された間違い回数に応じた内容の助言を発生して仮想的な先生から生徒に与える助言処理と、前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音して、その間違いを生徒に指摘させる指摘処理と、前記指摘処理が全ての間違いを指摘していない場合、曲データ中から検索した間違い指摘されていない音を仮想的な先生から生徒に通知する通知処理とをコンピュータで実行させることを特徴とする。
【００１５】
請求項１０に記載の発明では、曲データに従って曲を構成する各音の音高を順番に案内する案内処理と、生徒の間違いに仮想的な練習相手が反応する頻度を設定する設定処理と、前記案内処理の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、前記設定処理にて設定される頻度に応じて反応した間違いを仮想的な練習相手から生徒に教示する教示処理と、前記教示処理が反応していない間違い箇所の音を曲データ中から検索して仮想的な先生から生徒に提示する提示処理と、前記案内処理の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させる指摘処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１６】
請求項１，６に記載の発明によれば、曲を構成する各音の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その間違いを仮想的な練習相手から生徒に教示する。一方、曲を構成する各音の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させるから、生徒と仮想的な練習相手とが互いに演奏ミスを教え合うことができ、これにより楽しく飽きずに一人で練習することができる。
【００１７】
請求項２，７に記載の発明では、曲を構成する各音の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、その異なる音高を案内された音高に対応させて記憶しておくと共に、その間違いを仮想的な練習相手から生徒に教示する。一方、曲を構成する各音の案内に従って仮想的な練習相手が発音指示する際に、案内された音高に対応した異なる音高が記憶されている場合、その異なる音高を発音させて、生徒と同じミスをする仮想的な練習相手の間違いを生徒に指摘させるので、生徒と仮想的な練習相手とが互いに演奏ミスを教え合って楽しく飽きずに一人で練習することが出来、しかも生徒は自分の演奏ミスを認知することができる。
【００１８】
請求項３，８に記載の発明によれば、曲を構成する各音の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数し、計数された間違い回数に応じた内容のコメントを仮想的な練習相手から生徒に教示する。一方、曲を構成する各音の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させるので、生徒と仮想的な練習相手とが互いに演奏ミスを教え合って楽しく飽きずに一人で練習することが出来、しかも生徒の間違い回数に応じて仮想的な練習相手の反応が変化するからゲーム的な面白みも創出できる。
【００１９】
請求項４，９に記載の発明によれば、曲を構成する各音の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われる毎に間違い回数を計数し、計数された間違い回数に応じた内容のコメントを発生して仮想的な練習相手から生徒に教示した後、計数された間違い回数に応じた内容の助言を仮想的な先生から生徒に与える。一方、曲を構成する各音の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させ、全ての間違いを指摘していない場合には指摘されていない音を仮想的な先生が生徒に通知するので、生徒と仮想的な練習相手とが互いに演奏ミスを教え合ったり、仮想的な先生が間違い回数に応じた助言や間違いを指摘できなかった音を生徒に教える結果、楽しく飽きずに一人で練習することができる。
【００２０】
請求項５，１０に記載の発明によれば、生徒の間違いに仮想的な練習相手が反応する頻度を設定しておき、曲を構成する各音の案内に従って生徒が音高指定する操作を練習する際に、案内された音高とは異なる音高を指定する操作が行われた場合、設定された頻度に応じて反応した間違いを仮想的な練習相手から生徒に教示する。一方、曲を構成する各音の案内に従って仮想的な練習相手が発音指示する際に、案内された音高とは異なる音高を発音させて、その間違いを生徒に指摘させるから、生徒と仮想的な練習相手とが互いに演奏ミスを教え合い、間違いに反応せずに教示しなかった間違い箇所の音については仮想的な先生が生徒に提示するので、ゲーム的な面白みを創出でき、より一層楽しく飽きずに一人で練習できる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明の実施の形態について説明する。
Ａ．第１の実施形態
（１）全体構成
図１は第１の実施形態の構成を示すブロック図である。この図において、１０は構成要素１〜７を備え、本発明による音楽教習装置を搭載したＤＴＭ（デクストップミュージック）装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。
ＤＴＭ装置１０では、生徒（ユーザ）により選択された曲データに基づき押鍵案内を行い、生徒がその案内とは異なる押鍵をして間違えた場合に仮想的な練習相手となるキャラクタＣが画面上でその間違えを指摘する処理、間違えた回数に応じて仮想的な先生Ｔがあたかも生徒を励ますようにコメントする処理、生徒により選択された曲データに基づき押鍵案内を行い、仮想的な練習相手であるキャラクタがその案内とは異なる押鍵音を発音させ、その間違いを生徒に指摘させる処理および生徒がキャラクタＣの間違いを指摘できなかった音符を先生Ｔが生徒に教える処理を実行する。一方、電子楽器２０は生徒の鍵操作に対応した楽音を発生したり、ＤＴＭ装置１０側から供給されるＭＩＤＩデータ（ノートオンイベント）に応じた楽音を発生するよう構成されている。
【００２２】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１は装置各部を制御するＣＰＵであり、本発明の要旨に係わる処理動作については追って詳述する。２はプログラムエリアおよびデータエリアを備えるＲＯＭである。ＲＯＭ２のプログラムエリアには、後述するメインルーチン、曲選択処理およびレッスン処理などを含む各種制御プログラムが記憶される。ＲＯＭ２のデータエリアには、反応データ、画面データおよびコメントデータが記憶されており、これらデータが意図するところおよび具体的な一例については後述する。
【００２３】
３はワークエリア、データエリアおよびバッファエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータエリアには、図２に図示する通り、複数の曲データ（１）〜（Ｎ）が記憶される。曲データは、待ち時間を表すタイムＴと、曲進行順にアドレッシングされ、曲を構成する各音を表す音符データ（１）〜（ｎ）と、曲終端を表すＥＮＤデータとから構成される。一つの音符データは、模範の音高を表す音高（１）、生徒が弾いた音高を表す音高（２）および音符長から形成される。ＲＡＭ３のバッファエリアには、ＭＩＤＩインタフェース４を介して電子楽器２０側からシリアル転送されるＭＩＤＩデータが一時記憶される他、画面データが退避格納される。
【００２４】
ＭＩＤＩインタフェース４はＣＰＵ１の制御の下に、電子楽器２０とＭＩＤＩデータをシリアル形式で授受する。マウス５は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。６はキー入力操作に応じたキーイベントを発生するキーボードである。キーボード６を構成するキースイッチの内、所定のキースイッチ（例えばファンクションキー）に後述する「スタートスイッチ」、「終了スイッチ」、「繰り返しスイッチ」および「間違い指摘スイッチ」の各機能がアサインされる。表示部７はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて画面表示する。
【００２５】
（３）動作
次に、図３〜図２１を参照して第１の実施形態の動作について説明する。以下では、最初に全体動作としてメインルーチンの動作について説明し、続いてメインルーチンからコールされる曲選択処理およびレッスン処理の各動作を説明して行く。
【００２６】
ａ．メインルーチンの動作
ＤＴＭ装置１０において、メインルーチンが実行されると、ＣＰＵ１は図３に示すステップＳＡ１に進み、装置各部を初期化するイニシャライズを行った後、ステップＳＡ２に進む。ステップＳＡ２では、ユーザ操作に応じて、ＲＡＭ３のデータエリアに格納される複数の曲データ（１）〜（Ｎ）の内から音楽教習に用いる曲データを選択する曲選択処理を実行する。次いで、ステップＳＡ３では、曲選択処理にて選択された曲データに基づく押鍵案内を行い、その案内中に生徒が押鍵ミスした場合に仮想的な練習相手となるキャラクタＣが画面上でその間違えを指摘する生徒レッスン処理と、生徒レッスン処理にてカウントされる間違い回数に応じて、仮想的な先生Ｔがあたかも生徒を励ますようにコメントするコメント（１）処理と、曲選択処理にて選択された曲データに基づく押鍵案内を行い、仮想的な練習相手であるキャラクタＣがその案内とは異なる押鍵音を発音させ、その間違いを生徒に指摘させるキャラレッスン処理と、指摘ミスした音符を仮想的な先生Ｔが生徒に教えるコメント（２）処理とから構成されるレッスン処理を実行する。そして、ステップＳＡ４では、例えば発音指示する楽音の音色を設定する等の、その他の処理を実行する。以後、メインルーチン終了イベントが発生するまでステップＳＡ２〜ＳＡ４が繰り返し実行される。
【００２７】
ｂ．曲選択処理の動作
次に、図４を参照して曲選択処理の動作について説明する。上述したメインルーチンのステップＳＡ２を介して本処理が実行されると、ＣＰＵ１は図４のステップＳＢ１に進み、曲選択操作の有無を判断する。ここで、曲選択操作とは、ＲＡＭ３のデータエリアに格納される曲データ（１）〜（Ｎ）の曲名（もしくはファイル名）を一覧表示する曲選択画面（不図示）を表示部７に画面表示した状態において、一覧表示の内から所望の曲名（もしくはファイル名）にマウスカーソルをポインティングさせてマウス５をクリックする操作を指す。
曲選択操作が行わなれない場合、判断結果は「ＮＯ」になり、本処理を完了させるが、曲選択操作が行われると、判断結果が「ＹＥＳ」となり、ステップＳＢ２に進む。ステップＳＢ２では、曲選択操作により選択された曲名に対応付けられた曲番号をレジスタＭＥＬＯＤＹにストアする。そして、ステップＳＢ３では、レジスタＭＥＬＯＤＹにストアされた曲番号で指定される曲データ（ＭＥＬＯＤＹ）が格納される先頭アドレスをアドレスポインタＡＤＤにセットして本処理を終える。
【００２８】
ｃ．レッスン処理の動作
次に、図５を参照してレッスン処理の動作について説明する。前述したメインルーチンのステップＳＡ３（図３参照）を介して本処理が実行されると、ＣＰＵ１は図５のステップＳＣ１に進み、レッスン回数Ｋに初期値「１」をセットする。次いで、ステップＳＣ２では、スタートスイッチのオン操作に応じて、曲選択処理（図４参照）にて選択された曲データ中の音符データを曲進行に同期して読み出して弾くべき音を案内し、案内された鍵の音高とは異なる音高の鍵を生徒が押鍵して演奏ミスした場合、仮想的な練習相手となるキャラクタＣが画面上でその間違えを指摘する生徒レッスン処理を実行する。
【００２９】
続いて、ステップＳＣ３では、上記生徒レッスン処理にてカウントされる間違い回数に応じて内容が変化するコメントを、仮想的な先生Ｔがあたかも生徒を励ますように先生画面ＴＧで表示するコメント（１）処理を実行する。次に、ステップＳＣ４では、スタートスイッチのオン操作に応じて曲選択処理（図４参照）にて選択された曲データ中の音符データを参照して弾くべき音を案内し、仮想的な練習相手であるキャラクタＣがその案内に従って音符データ中の音高（２）を押鍵音として発音させ、その押鍵音が間違っているとして生徒が間違え指摘スイッチをオン操作すると、キャラクタが間違い指摘の正否を生徒に知らせるキャラレッスン処理を実行する。次いで、ステップＳＣ５では、キャラクタが間違えた箇所を全て指摘できていると、仮想的な先生Ｔが「全部の間違いに気づいたね！」なるメッセージを生徒に伝えるコメント（２）Ａ画面を表示し、キャラクタが間違えた箇所を全て指摘できていないと、曲データ中から指摘ミスされた音符を検索し、該当する音符の音高および小節数を先生Ｔが生徒に教えるコメント（２）Ｂ画面を表示するコメント（２）処理を実行する。
【００３０】
そして、ステップＳＣ６では、上述した一連の処理（生徒レッスン処理、コメント（１）処理、キャラレッスン処理およびコメント（２）処理）の繰り返しを指示する繰り返しスイッチがオン操作されたかどうかを判断する。繰り返しスイッチがオン操作されると、判断結果は「ＹＥＳ」となり、ステップＳＣ７にてレッスン回数Ｋをインクリメントして歩進させた後、上述のステップＳＣ２に処理を戻す。
一方、繰り返しスイッチがオン操作されなければ、上記ステップＳＣ６の判断結果は「ＮＯ」になり、ステップＳＣ８に進み、終了スイッチのオン操作の有無を判断する。そして、終了スイッチがオン操作されると、判断結果は「ＹＥＳ」になり、本処理を完了させる。終了スイッチがオン操作されなければ、判断結果が「ＮＯ」となり、ステップＳＣ１に処理を戻す。
【００３１】
ｃ−１．生徒レッスン処理の動作
次に、図６〜図１０を参照して生徒レッスン処理の動作について説明する。レッスン処理のステップＳＣ２（図５参照）を介して本処理が実行されると、ＣＰＵ１は図６のステップＳＤ１に進む。ステップＳＤ１では、ＲＯＭ２のデータエリアから読み出すガイド画面データに基づきガイド画面ＧＧを表示部７に表示する。
ガイド画面ＧＧは、図８に図示する一例のように、楽譜表示エリアＡ１，Ａ２を有する。楽譜表示エリアＡ１では、上述した曲選択処理（図４参照）で選択された曲データ（模範曲）中の各音符データが曲進行に同期して楽譜表示され、これにより生徒（ユーザ）に押鍵案内するようになっている。一方、楽譜表示エリアＡ２では、押鍵案内に従って生徒が弾いた音が楽譜表示されるようになっている。
【００３２】
次いで、ステップＳＤ２では、キーボード６中のスタートスイッチがオン操作されるまで待機し、オン操作されると、判断結果が「ＹＥＳ」となり、次のステップＳＤ３に進む。ステップＳＤ３では、アドレスポインタＡＤＤで指定される曲データ中のタイムＴをＲＡＭ３から読み出す。なお、アドレスポインタＡＤＤには、前述した曲選択処理にて選択された曲データ（ＭＥＬＯＤＹ）の先頭アドレスがセットされているものとする。
続いて、ステップＳＤ４では、曲データ（ＭＥＬＯＤＹ）の先頭から読み出したタイムＴ（待ち時間）をレジスタＴＩＭＥにストアする。次に、ステップＳＤ５では、間違い回数をカウントするカウンタＭＩＳＳをゼロリセットする。以後、カウンタＭＩＳＳの値を間違い回数ＭＩＳＳと称す。そして、ステップＳＤ６では、タイマインタラプト禁止を解除する。タイマインタラプト禁止が解除されると、ＣＰＵ１は所定周期毎にレジスタＴＩＭＥをデクリメントするタイマインタラプト処理（不図示）を実行する。
【００３３】
ステップＳＤ７では、タイマインタラプト処理によりデクリメントされるレジスタＴＩＭＥの値が「０」以下、すなわち押鍵を案内するガイドタイミングに達したかどうかを判断する。以下、ガイドタイミングに達した場合と、ガイドタイミングに達していない場合とに分けて動作説明を進める。
【００３４】
＜ガイドタイミングに達した場合＞
タイムＴの待ち時間が経過して最初のガイドタイミングに達すると、ステップＳＤ７の判断結果が「ＹＥＳ」となり、ＣＰＵ１はステップＳＤ８に処理を進め、アドレスポインタＡＤＤを歩進させてＲＡＭ３のデータエリアから次データを読み出す。次いで、ステップＳＤ９では、読み出したデータが曲終端を表すＥＮＤデータであるか否かを判断する。曲終端に達しておらず、音符データが読み出されると、判断結果は「ＮＯ」になり、ステップＳＤ１１に進む。ステップＳＤ１１では、読み出された音符データ中の音高（１）をレジスタＮＯＴＥにストアする。続くステップＳＤ１２では、音符長をレジスタＴＩＭＥにそれぞれストアする。そして、ステップＳＤ１３では、レジスタＮＯＴＥにストアした音高（１）に対応する音符を、ガイド画面ＧＧ（図８参照）の楽譜表示エリアＡ１に表示して生徒に押鍵をガイドした後、上述のステップＳＤ７に処理を戻す。以後、レジスタＴＩＭＥに格納される音符長が経過する毎に、上述したステップＳＤ７〜ＳＤ１３を繰り返す。
さて一方、曲終端に達してＥＮＤデータが読み出された場合には、上記ステップＳＤ９の判断結果が「ＹＥＳ」となり、ステップＳＤ１０に進み、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させて本処理を完了させる。
【００３５】
＜ガイドタイミングに達していない場合＞
ガイドタイミングに達していない場合には、ステップＳＤ７の判断結果が「ＮＯ」となり、図７のステップＳＤ１４に進む。ステップＳＤ１４では、電子楽器２０側からＭＩＤＩインタフェース４を介して入力されるＭＩＤＩイベントに基づき、生徒が電子楽器２０側で押鍵操作したか否か、つまりノートオンイベントの有無を判断する。押鍵操作が行われなければ、判断結果は「ＮＯ」となり、図６のステップＳＤ７に処理を戻す。
一方、生徒が電子楽器２０側で押鍵操作すると、判断結果が「ＹＥＳ」になり、ステップＳＤ１５に進み、押鍵された鍵の音高（ノートオンイベントに含まれる音高）をレジスタＫＥＹにストアする。次いで、ステップＳＤ１６では、レジスタＮＯＴＥに格納される曲データの音高（１）と、押鍵された鍵の音高とが不一致であるか否かを判断する。両者が一致していると、判断結果は「ＮＯ」になり、図６のステップＳＤ７に処理を戻すが、両者が不一致となる演奏ミス（誤押鍵）を生じた場合には、判断結果が「ＹＥＳ」となり、ステップＳＤ１７に進む。
【００３６】
ステップＳＤ１７では、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させる。次いで、ステップＳＤ１８では、間違い回数ＭＩＳＳをインクリメントして歩進させ、続くステップＳＤ１９では、ガイド画面ＧＧをＲＡＭ３のバッファエリアに退避格納する。ステップＳＤ２０〜ＳＤ２３では、間違い回数ＭＩＳＳに対応したメッセージを、ＲＯＭ２のデータエリアに記憶される反応データ中から選択する。この反応データとは、図９に図示する一例のように、間違い回数ＭＩＳＳに対応付けられたメッセージＡ〜Ｃから構成される。これらメッセージＡ〜Ｃは、仮想的な練習相手となるキャラクタＣが生徒（ユーザ）に対して間違いを指摘する内容を表す。
【００３７】
すなわち、間違い回数ＭＩＳＳが「１回目」であると、ステップＳＤ２１に進み、ＲＯＭ２のデータエリアに記憶される反応データ中から「いまのところまちがったよ。」なるメッセージＡを選択する。間違い回数ＭＩＳＳが「２回目」であると、ステップＳＤ２２に進み、ＲＯＭ２のデータエリアに記憶される反応データ中から「またまちがったよ。」なるメッセージＢを選択する。間違い回数ＭＩＳＳが「３回以上」であると、ステップＳＤ２３に進み、ＲＯＭ２のデータエリアに記憶される反応データ中から「まちがったよ。きをつけて。」なるメッセージＣを選択する。
こうして、仮想的な練習相手となるキャラクタＣが発するメッセージを間違い回数ＭＩＳＳに応じて選択すると、ＣＰＵ１はステップＳＤ２４に進み、選択されたメッセージを伴うキャラ画面ＣＨＧを生成して表示部７に一定時間表示する。キャラ画面ＣＨＧは、図１０に図示する一例のように、仮想的な練習相手となるキャラクタＣおよびメッセージ表示エリアＭＡを有し、間違い回数ＭＩＳＳに応じて選択したメッセージがメッセージ表示エリアＭＡに表示される。
【００３８】
キャラ画面ＣＨＧを一定時間表示し終えると、ステップＳＤ２５に進み、ＲＡＭ３に退避格納しておいたガイド画面ＧＧ（図８参照）を読み出して表示部７に表示する。次いで、ステップＳＤ２６では、レジスタＫＥＹに格納される音高（生徒が弾いた音高）を、アドレスポインタＡＤＤで指定される音符データ中の音高（２）にストアする。この後、ステップＳＤ２７に進み、タイマインタラプト禁止を解除してレジスタＴＩＭＥをデクリメントするタイマインタラプト処理を実行させてから図６のステップＳＤ７に処理を戻す。
【００３９】
このように、生徒レッスン処理では、スタートスイッチがオン操作されると、曲選択処理にて選択された曲データを構成する音符データを曲進行に同期して読み出してガイド画面ＧＧで楽譜表示して生徒に押鍵案内する。案内された鍵の音高とは異なる音高の鍵を生徒が押鍵して演奏ミスする毎に間違い回数ＭＩＳＳをカウントする。また、演奏ミスする毎に画面表示をガイド画面ＧＧから一定時間の間、キャラ画面ＣＨＧに切替える。キャラ画面ＣＨＧでは、間違い回数ＭＩＳＳに応じて内容が変化するメッセージを、仮想的な練習相手となるキャラクタＣがあたかも間違えを教えてくれるように画面表示する。
【００４０】
ｃ−２．コメント（１）処理の動作
次に、図１１〜図１３を参照してコメント（１）処理の動作について説明する。レッスン処理のステップＳＣ３（図５参照）を介して本処理が実行されると、ＣＰＵ１は図１１のステップＳＥ１に進み、上述した生徒レッスン処理でカウントした間違い回数ＭＩＳＳが「０〜２回」、「３〜５回」および「６回以上」のいずれに該当するのかを判断する。続いて、ステップＳＥ２〜ＳＥ４では、間違い回数ＭＩＳＳに対応するコメントを、ＲＯＭ２のデータエリアに記憶されるコメントデータ中から選択する。このコメントデータとは、図１２に図示する一例のように、間違い回数ＭＩＳＳに対応付けられた先生コメント（１）Ａ〜Ｃから構成される。先生コメント（１）Ａ〜Ｃは、仮想的な先生Ｔが生徒に対してアドバイスする内容を表す。
【００４１】
すなわち、間違い回数ＭＩＳＳが「０〜２回」であると、ステップＳＥ２に進み、ＲＯＭ２のデータエリアに記憶されるコメントデータ中から「練習がんばったね！」なる先生コメント（１）Ａを選択する。間違い回数ＭＩＳＳが「３〜５回」であると、ステップＳＥ３に進み、コメントデータ中から「もう少しだ！」なる先生コメント（１）Ｂを選択する。間違い回数ＭＩＳＳが「６回以上」であると、ステップＳＥ４に進み、コメントデータ中から「もっと練習して！」なる先生コメント（１）Ｃを選択する。こうして、仮想的な先生Ｔからのコメント（１）を間違い回数ＭＩＳＳに応じて選択すると、ＣＰＵ１はステップＳＥ５に進み、選択された先生コメント（１）を伴う先生画面ＴＧを生成して表示部７に一定時間表示して本処理を終える。
先生画面ＴＧは、図１３に図示する一例のように、仮想的な先生Ｔおよびコメント表示エリアＣＡを有し、間違い回数ＭＩＳＳに応じて選択した先生コメント（１）がコメント表示エリアＣＡに表示される。このように、コメント（１）処理では、生徒レッスン処理においてカウントされた間違い回数ＭＩＳＳに応じて内容が変化する先生コメントを、仮想的な先生Ｔがあたかも生徒を励ますように先生画面ＴＧで表示する。
【００４２】
ｃ−３．キャラレッスン処理の動作
次に、図１４〜図１８を参照してキャラレッスン処理の動作について説明する。レッスン処理のステップＳＣ４（図５参照）を介して本処理が実行されると、ＣＰＵ１は図１４に示すステップＳＦ１に進む。ステップＳＦ１では、ＲＯＭ２のデータエリアから読み出すガイド画面データに基づきガイド画面ＧＧを表示部７に表示する。なお、このガイド画面ＧＧは前述した生徒レッスン処理にて用いるものと同一である。
次いで、ステップＳＦ２では、キーボード６中のスタートスイッチがオン操作されるまで待機し、オン操作されると、判断結果が「ＹＥＳ」となり、次のステップＳＦ３に進む。ステップＳＦ３では、アドレスポインタＡＤＤで指定される曲データ中のタイムＴをＲＡＭ３から読み出す。なお、アドレスポインタＡＤＤには、前述した曲選択処理にて選択された曲データ（ＭＥＬＯＤＹ）の先頭アドレスがセットされているものとする。
【００４３】
続いて、ステップＳＦ４では、曲データ（ＭＥＬＯＤＹ）の先頭から読み出したタイムＴ（待ち時間）をレジスタＴＩＭＥにストアすると共に、フラグＯＮＦおよびカウンタＭをゼロリセットする。ステップＳＦ５では、タイマインタラプト禁止を解除する。タイマインタラプト禁止が解除されると、ＣＰＵ１は所定周期毎にレジスタＴＩＭＥをデクリメントするタイマインタラプト処理（不図示）を実行する。ステップＳＦ６では、タイマインタラプト処理によりデクリメントされるレジスタＴＩＭＥの値が「０」以下、すなわち押鍵を案内するガイドタイミングに達したかどうかを判断する。以下、ガイドタイミングに達した場合と、ガイドタイミングに達していない場合とに分けて動作説明を進める。
【００４４】
＜ガイドタイミングに達した場合＞
タイムＴの待ち時間が経過して最初のガイドタイミングに達すると、ステップＳＦ６の判断結果が「ＹＥＳ」となり、ＣＰＵ１はステップＳＦ７に処理を進め、フラグＯＮＦをゼロリセットする。次いで、ステップＳＦ８では、ミスフラグＭＩＳＳＦが「１」であるか否かを判断する。
後述するように、本処理では、仮想的な練習相手であるキャラクタＣが押鍵案内に従って押鍵を行い、その押鍵に間違いがあるか否かを生徒が指摘するようになっており、キャラクタＣが誤った押鍵をした場合にミスフラグＭＩＳＳＦを「１」にセットするようにしている。そして、生徒がその間違いに気付いて間違い指摘スイッチをオン操作して間違いを指摘した場合にミスフラグＭＩＳＳＦがゼロリセットされるようになっている。したがって、このステップＳＦ８では、生徒が間違いを指摘できたかどうかを判断している。そして、生徒が間違いを指摘していれば、判断結果は「ＮＯ」となり、後述のステップＳＦ１１に進み、一方、生徒が間違いを指摘できなかった場合には判断結果が「ＹＥＳ」になり、ステップＳＦ９に進み、指摘ミス回数をカウントするカウンタＭを歩進させる。以後、カウンタＭの値を指摘ミス回数Ｍと記す。
【００４５】
次に、ステップＳＦ１０では、ミスフラグＭＩＳＳＦをゼロリセットする。ステップＳＦ１１では、アドレスポインタＡＤＤを歩進させてＲＡＭ３のデータエリアから次データを読み出し、続くステップＳＦ１２では、読み出した次データが曲終端を表すＥＮＤデータであるか否かを判断する。曲終端に達してＥＮＤデータが読み出された場合には、判断結果が「ＹＥＳ」となり、ステップＳＦ１３に進み、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させて本処理を完了させる。
これに対し、曲終端に達しておらず、音符データが読み出された場合には、上記ステップＳＦ１２の判断結果が「ＮＯ」になり、図１５に示すステップＳＦ１４に進む。ステップＳＦ１４では、読み出された音符データ中の音高（１）をレジスタＮＯＴＥにストアする。続くステップＳＦ１５では、音符長をレジスタＴＩＭＥにストアする。
【００４６】
ステップＳＦ１６では、レジスタＮＯＴＥにストアした音高（１）に対応する音符を、ガイド画面ＧＧ（図８参照）の楽譜表示エリアＡ１に表示して押鍵案内する。次いで、ステップＳＦ１７では、読み出された音符データ中の音高（２）を含むノートオンイベントを形成し、これをＭＩＤＩインタフェース４を介して電子楽器２０側へ送出して発音を指示する。これにより、電子楽器２０側は音高（２）の楽音を発音する。つまり、生徒は仮想的な練習相手であるキャラクタＣが弾く音を聴き取ることになる。また、キャラクタＣが弾く音は、前述した生徒レッスン処理において生徒が弾いた音高（２）となる。
【００４７】
そして、ステップＳＦ１８では、読み出された音符データ中の音高（１）と音高（２）とが一致していないか否かを判断する。音高（１）は模範の音高、音高（２）はキャラクタＣの弾く音なので、このステップＳＦ１８ではキャラクタの押鍵に間違いがあるかどうかを判断している。なお、キャラクタＣの弾く音とは、前述した生徒レッスン処理にて生徒が弾いた音高であるから、生徒の演奏を真似たものと言える。
さて、キャラクタの押鍵に間違いがあると、ここでの判断結果は「ＹＥＳ」となり、ステップＳＦ１９に進み、ミスフラグＭＩＳＳＦに「１」をセットした後、図１６に示すステップＳＦ２１に処理を進める。一方、生徒を真似たキャラクタの押鍵に間違いがなければ、判断結果が「ＮＯ」になり、ステップＳＦ２０に進み、ミスフラグＭＩＳＳＦをゼロリセットしてから図１６に示すステップＳＦ２１に処理を進める。
【００４８】
＜ガイドタイミングに達していない場合＞
ガイドタイミングに達していない場合には、前述したステップＳＦ６（図１４参照）の判断結果が「ＮＯ」となり、図１６に示すステップＳＦ２１に進む。また、上述のガイドタイミングに達した場合に音符データを読み出し、それに応じてミスフラグＭＩＳＳＦを更新するステップＳＦ１９またはステップＳＦ２０を経た後も図１６に示すステップＳＦ２１に進む。
ステップＳＦ２１では、フラグＯＮＦが「０」、つまり間違い指摘スイッチがオン操作されていないかどうかを判断する。間違い指摘スイッチがオン操作されず、フラグＯＮＦが「０」であると、判断結果は「ＮＯ」になり、図１４のステップＳＦ６に処理を戻す。一方、間違い指摘スイッチがオン操作され、フラグＯＮＦに「１」がセットされていると、判断結果は「ＹＥＳ」になり、ステップＳＦ２２に進む。
【００４９】
ステップＳＦ２２では、キーボード６中の間違い指摘スイッチがオン操作されたか否かを判断する。オン操作されないと、判断結果は「ＮＯ」となり、図１４のステップＳＦ６に処理を戻す。一方、間違い指摘スイッチがオン操作されると、判断結果が「ＹＥＳ」になり、ステップＳＦ２３に進み、フラグＯＮＦに「１」をセットする。次に、ステップＳＦ２４では、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理を停止させ、続くステップＳＦ２５では、ガイド画面ＧＧをＲＡＭ３のバッファエリアに退避格納する。そして、ステップＳＦ２６では、ミスフラグＭＩＳＳＦが「１」、つまりキャラクタの押鍵に間違いがあるかどうかを判断する。
【００５０】
キャラクタの押鍵に間違いがある場合には、判断結果が「ＹＥＳ」となり、ステップＳＦ２７に進み、ミスフラグＭＩＳＳＦをゼロリセットする。次いで、ステップＳＦ２８では、図１７に図示するように、キャラクタＣが「まちがえを、おしえてくれてありがとう。」なるメッセージを生徒に伝えるキャラ画面Ｂを一定時間表示する。続いて、ステップＳＦ２９では、アドレスポインタＡＤＤで指定される音符データ中の音高（２）を音高（１）と同じ値に設定する。
一方、キャラクタの押鍵に間違いがない場合には、上記ステップＳＦ２６の判断結果が「ＮＯ」になり、ステップＳＦ３０に進み、図１８に図示するように、キャラクタＣが「まちがえていないよ！」なるメッセージを生徒に伝えるキャラ画面Ｃを一定時間表示する。こうして、間違い指摘の正否を生徒に知らせるキャラ画面Ｂもしくはキャラ画面Ｃを一定時間表示し終えると、ＣＰＵ１はステップＳＦ３１に進み、ＲＡＭ３に退避格納しておいたガイド画面ＧＧ（図８参照）を読み出して表示部７に表示する。この後、ステップＳＦ３２に進み、タイマインタラプト禁止を解除してから図１４に示すステップＳＦ６に処理を戻す。
【００５１】
以上のように、キャラレッスン処理では、スタートスイッチがオン操作されると、曲選択処理にて選択された曲データを構成する音符データを曲進行に同期して読み出してガイド画面ＧＧで楽譜表示して押鍵案内する。仮想的な練習相手であるキャラクタＣはその案内に従って音符データ中の音高（２）を押鍵音として発音させる。その押鍵音が間違っていると生徒が気付き、間違え指摘スイッチをオン操作すると、キャラクタＣが間違い指摘の正否を生徒に知らせる。これにより、生徒とキャラクタＣが交互にレッスンをして互いに間違えを教え合うようになっている。
【００５２】
ｃ−４．コメント（２）処理の動作
次に、図１９〜図２１を参照してコメント（２）処理の動作について説明する。レッスン処理のステップＳＣ５（図５参照）を介して本処理が実行されると、ＣＰＵ１は図１９のステップＳＧ１に進み、上述したキャラレッスン処理にて得られる指摘ミス回数Ｍが「０」、すなわちキャラクタが間違えた箇所を全て指摘できているか否かを判断する。キャラクタが間違えた箇所を全て指摘できていると、判断結果は「ＹＥＳ」になり、ステップＳＧ２に進み、図２０に図示するように、先生Ｔが「全部の間違いに気づいたね！」なるメッセージを生徒に伝えるコメント（２）Ａ画面を表示部７に一定時間表示してから本処理を終える。
【００５３】
一方、キャラクタが間違えた箇所を全て指摘できていないと、上記ステップＳＧ１の判断結果が「ＮＯ」になり、ステップＳＧ３に進む。ステップＳＧ３では、レジスタＭＥＬＯＤＹにストアされた曲番号で指定される曲データの先頭の音符データを指し示すアドレスをアドレスポインタＡＤＤにセットする。ステップＳＧ４では、そのアドレスポインタＡＤＤに応じてＲＡＭ３のデータエリアから音符データを読み出す。次いで、ステップＳＧ５では、読み出した音符データ中の音高（１）と音高（２）とが不一致であるか否かを判断する。上述したキャラレッスン処理では、適正な間違い指摘が行われた場合、ステップＳＦ２９（図１６参照）において音高（２）を音高（１）と同じ値に設定する。したがって、このステップＳＧ５では、指摘ミスされた音符であるかどうかを判断する。
【００５４】
指摘ミスされた音符でなければ、判断結果は「ＮＯ」になり、ステップＳＧ６に進み、アドレスポインタＡＤＤを歩進させる。次いで、ステップＳＧ７では、歩進されたアドレスポインタＡＤＤで指定されるデータが曲終端を表すＥＮＤデータであるか否かを判断する。曲終端を表すＥＮＤデータでなければ、判断結果は「ＮＯ」となり、ステップＳＧ４に処理を戻す。以後、曲終端を表すＥＮＤデータに達するまでステップＳＧ４〜ＳＧ７を繰り返し実行して、指摘ミスされた音符を検索する。そして、指摘ミスされた音符が検索されると、ステップＳＧ５の判断結果が「ＹＥＳ」になり、ステップＳＧ８に進む。ステップＳＧ８では、現在のアドレスポインタＡＤＤと、これまでに読み出された音符データの音符長とから指摘ミスされた音符の小節数を算出する。
【００５５】
続いて、ステップＳＧ９では、指摘ミスされた音符の音高（１）と算出された小節数とを先生Ｔが生徒に教えるコメント、例えば図２１に図示するように、「５小節目のドの音もまちがっていたね。」なるコメントを有するコメント（２）Ｂ画面を表示部７に一定時間表示する。次いで、ステップＳＧ１０に進み、アドレスポインタＡＤＤで指定される音符データ中の音高（１）の値を音高（２）にコピーして両音高を同一に設定する。この後、ステップＳＧ６に処理を戻してアドレスポインタＡＤＤを歩進させ、歩進させたアドレスポインタＡＤＤで指定されるデータが曲終端を表すＥＮＤデータであると、ステップＳＧ７の判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００５６】
このように、コメント（２）処理では、キャラクタＣが間違えた箇所を全て指摘できていると、仮想的な先生Ｔが「全部の間違いに気づいたね！」なるメッセージを生徒に伝えるコメント（２）Ａ画面を表示し、キャラクタＣが間違えた箇所を全て指摘できていないと、曲データ中から指摘ミスされた音符を検索し、該当する音符の音高および小節数を先生Ｔが生徒に教えるコメント（２）Ｂ画面を表示するようになっている。
【００５７】
以上説明したように、第１の実施形態では、生徒が選択した曲データに基づき押鍵案内を行い、その案内中に生徒が押鍵ミスした場合に仮想的な練習相手のキャラクタＣが画面上でその間違えを指摘し、間違えた回数に応じて仮想的な先生Ｔがあたかも生徒を励ますようにコメントしたり、生徒が選択した曲データに基づき押鍵案内を行う過程で、仮想的な練習相手のキャラクタＣが案内とは異なる押鍵音を発音させ、その間違いを生徒に指摘させ、指摘ミスした音符を仮想的な先生Ｔが生徒に教えるようにしたので、楽しく飽きずに一人で練習することが可能になっている。
【００５８】
なお、第１の実施形態では、キャラクタＣが生徒と同じ演奏ミスをし、その間違いを生徒に指摘させるようにしたが、これに替えて、例えば生徒が演奏ミスしたフレーズと似たような他のフレーズでキャラクタＣが演奏ミスしたり、生徒が演奏ミスした時と同じ指使いをする音符をキャラクタＣが演奏ミスする態様としてもよい。そのようにすれば、生徒は自分の演奏ミスを客観的に捉らえることができる。
【００５９】
Ｂ．第２の実施形態
次に、図２２〜図２６を参照して第２の実施形態について説明する。第２の実施形態は、上述した第１の実施形態と同一の構成であり、一部の処理動作が相違する。第２の実施形態が第１の実施形態と相違する点は、図２２に図示するように、メインルーチンの曲選択処理（ステップＳＡ２）とレッスン処理（ステップＳＡ３）との間にキャラ設定処理（ステップＳＡ５）を設け、かつＲＯＭ２のデータエリアに性能データＣＰを設けるようにしたことにある。ＲＯＭ２のデータエリアに記憶される性能データＣＰとは、生徒の押鍵ミスを指摘するキャラクタの反応を定義するデータである。例えば図２３に図示する一例の性能データＣＰの場合、性能データＣＰ（１）は間違えたら反応（間違えの都度ミスを指摘）、性能データＣＰ（２）は反応を２回に１回（２回に１回の頻度でミスを指摘）、性能データＣＰ（３）は反応をランダム（ランダムな頻度でミスを指摘）として定義される。以下では、このような性能データＣＰを用いた第２の実施形態の動作として、キャラ設定処理、生徒レッスン処理およびコメント（１）処理の動作を説明する。
【００６０】
（１）キャラ設定処理の動作
第２の実施形態によるメインルーチンのステップＳＡ５（図２２参照）を介して本処理が実行されると、ＣＰＵ１は図２４に示すステップＳＨ１に進み、キャラ性能設定操作の有無を判断する。ここで言うキャラ性能設定操作とは、キーボード６を構成するキースイッチの内、性能データＣＰ（１）〜ＣＰ（３）をそれぞれ選択するキースイッチを予め割当てておき、それらキースイッチのいずれかのオン操作で性能データＣＰの種類を選択する操作を指す。そして、キャラ性能設定操作が行わなければ、判断結果は「ＮＯ」となり、本処理を完了させるが、キャラ性能設定操作が行われると、判断結果が「ＹＥＳ」になり、ステップＳＨ２に進み、選択設定された性能データ値（ＣＰ（１）〜ＣＰ（３）のいずれか）をレジスタＣＰにストアして本処理を終える。
【００６１】
（２）生徒レッスン処理の動作
次に、第２の実施形態による生徒レッスン処理の動作を説明する。第２の実施形態による生徒レッスン処理は、ガイドタイミングに達していない場合の動作のみ第１の実施形態と相違する。したがって、以下では第１の実施形態の生徒レッスン処理と共通する動作、すなわち図６に示すステップＳＤ１〜ＳＤ１３からなるガイドタイミングに達した場合の動作の説明については省略し、ガイドタイミングに達していない場合の動作を説明する。
【００６２】
第２の実施形態による生徒レッスン処理では、ガイドタイミングに達していない場合、ＣＰＵ１は図２５に示すステップＳＤ１００に進む。ステップＳＤ１００では、電子楽器２０側からＭＩＤＩインタフェース４を介して入力されるＭＩＤＩイベントに基づき、生徒が電子楽器２０側で押鍵操作したか否か、つまりノートオンイベントの有無を判断する。押鍵操作が行われなければ、判断結果は「ＮＯ」となり、図６に示すステップＳＤ７に処理を戻す。
【００６３】
一方、生徒が電子楽器２０側で押鍵操作すると、判断結果が「ＹＥＳ」になり、ステップＳＤ１０１に進み、押鍵された鍵の音高（ノートオンイベントに含まれる音高）をレジスタＫＥＹにストアする。次いで、ステップＳＤ１０２では、レジスタＮＯＴＥに格納される曲データの音高（１）と、押鍵された鍵の音高とが不一致であるか否かを判断する。両者が一致していると、判断結果は「ＮＯ」になり、図６のステップＳＤ７に処理を戻すが、両者が不一致となる演奏ミス（誤押鍵）を生じた場合には、判断結果が「ＹＥＳ」となり、ステップＳＤ１０３に進み、間違い回数ＭＩＳＳをインクリメントして歩進させる。
【００６４】
次いで、ステップＳＤ１０４〜ＳＤ１１２では、上述のキャラ設定処理（図２４参照）にて設定されたキャラクタの性能データＣＰに応じた処理を実行する。以下、性能データＣＰ（１）が設定された場合、性能データＣＰ（２）が設定された場合および性能データＣＰ（３）が設定された場合に分けて各場合の動作を述べる。
【００６５】
＜性能データＣＰ（１）が設定された場合＞
間違えたら反応する性能データＣＰ（１）が設定された場合には、ステップＳＤ１０４を経てステップＳＤ１１１に進み、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させた後、ステップＳＤ１１２に進み、ガイド画面ＧＧをＲＡＭ３に退避格納する。
【００６６】
＜性能データＣＰ（２）が設定された場合＞
２回に１回の頻度で反応する性能データＣＰ（２）が設定された場合には、ステップＳＤ４を経てステップＳＤ１０８に進む。ステップＳＤ１０８では、フラグＨＦを反転し、続くステップＳＤ１０９では、反転されたフラグＨＦが「０」であるか否かを判断する。フラグＨＦが「０」であると、判断結果は「ＹＥＳ」になり、ステップＳＤ１１０に進み、現在のアドレスポインタＡＤＤをＲＡＭ３のバッファエリアにストアして図６に示すステップＳＤ７に処理を戻す。
一方、反転されたフラグＨＦが「１」であると、ステップＳＤ１０９の判断結果が「ＮＯ」となり、ステップＳＤ１１１に進み、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させた後、ステップＳＤ１１２に進み、ガイド画面ＧＧをＲＡＭ３に退避格納する。
【００６７】
＜性能データＣＰ（３）が設定された場合＞
ランダムな頻度で反応する性能データＣＰ（３）が設定された場合には、ステップＳＤ４を経てステップＳＤ１０５に進む。ステップＳＤ１０８では、「０」または「１」のランダム値を発生し、続くステップＳＤ１０６では、発生したランダム値が「０」であるか否かを判断する。ランダム値が「０」であると、判断結果は「ＹＥＳ」になり、ステップＳＤ１０７に進み、現在のアドレスポインタＡＤＤをＲＡＭ３のバッファエリアにストアして図６に示すステップＳＤ７に処理を戻す。
一方、ランダム値が「１」であると、ステップＳＤ１０６の判断結果が「ＮＯ」となり、ステップＳＤ１１１に進み、割込みマスクを施してタイマインタラプト禁止としてタイマインタラプト処理（不図示）を停止させた後、ステップＳＤ１１２に進み、ガイド画面ＧＧをＲＡＭ３に退避格納する。
【００６８】
そして、ステップＳＤ１１３〜ＳＤ１１６では、間違い回数ＭＩＳＳに対応するメッセージを、ＲＯＭ２のデータエリアに記憶される反応データ中から選択する。この反応データは、第１の実施形態と同様、図９に図示する一例のように、間違い回数ＭＩＳＳに対応付けられたメッセージＡ〜Ｃから構成される。これらメッセージＡ〜ＣはキャラクタＣが生徒に対して間違いを指摘する内容を表す。  すなわち、間違い回数ＭＩＳＳが「１回目」であると、ステップＳＤ１１４に進み、ＲＯＭ２のデータエリアに記憶される反応データ中から「いまのところまちがったよ。」なるメッセージＡを選択する。間違い回数ＭＩＳＳが「２回目」であると、ステップＳＤ１１５に進み、反応データ中から「またまちがったよ。」なるメッセージＢを選択する。間違い回数ＭＩＳＳが「３回以上」であると、ステップＳＤ１１６に進み、反応データ中から「まちがったよ。きをつけて。」なるメッセージＣを選択する。
【００６９】
こうして、仮想的な練習相手となるキャラクタＣが発するメッセージを間違い回数ＭＩＳＳに応じて選択すると、ＣＰＵ１はステップＳＤ１１７に進み、選択されたメッセージを伴うキャラ画面ＣＨＧを生成して表示部７に一定時間表示する。キャラ画面ＣＨＧは、第１の実施形態と同様、図１０に図示する一例のように、仮想的な練習相手となるキャラクタＣおよびメッセージ表示エリアＭＡを有し、間違い回数ＭＩＳＳに応じて選択したメッセージがメッセージ表示エリアＭＡに表示される。
キャラ画面ＣＨＧを一定時間表示し終えると、ステップＳＤ１１８に進み、レジスタＫＥＹに格納される音高（生徒が弾いた音高）を、アドレスポインタＡＤＤで指定される音符データ中の音高（２）にストアする。次いで、ステップＳＤ１１９では、ＲＡＭ３に退避格納しておいたガイド画面ＧＧ（図８参照）を読み出して表示部７に表示した後、ステップＳＤ１２０に進み、タイマインタラプト禁止を解除してレジスタＴＩＭＥをデクリメントするタイマインタラプト処理（不図示）を実行させてから図６のステップＳＤ７に処理を戻す。
【００７０】
このように、第２の実施形態による生徒レッスン処理では、案内された音高とは異なる音高の鍵を生徒が押鍵して演奏ミスした場合、キャラクタＣは設定される性能データＣＰに応じて反応する。すなわち、性能データＣＰ（１）が設定されたキャラクタＣであると、生徒が演奏ミスする都度、その間違えを指摘するよう反応し、性能データＣＰ（２）が設定されたキャラクタＣであると、生徒の演奏ミスに対し２回に１回の頻度で間違えを指摘するよう反応し、性能データＣＰ（２）が設定されたキャラクタＣであると、生徒の演奏ミスに対しランダムな頻度で間違えを指摘するよう反応するため、ゲーム的な面白みを創出でき、より一層楽しく飽きずに一人で練習できるようになっている。
【００７１】
（３）コメント（１）処理の動作
次に、図２６を参照して第２の実施形態によるコメント（１）処理の動作を説明する。前述した第１の実施形態と同様、レッスン処理のステップＳＣ３（図５参照）を介して本処理が実行されると、ＣＰＵ１は図２６のステップＳＪ１に進み、第２の実施形態による生徒レッスン処理（図２５参照）でカウントした間違い回数ＭＩＳＳが「０〜２回」、「３〜５回」および「６回以上」のいずれであるかを判断する。続いて、ステップＳＪ２〜ＳＪ４では、間違い回数ＭＩＳＳに対応するコメントを、ＲＯＭ２のデータエリアに記憶されるコメントデータ中から選択する。このコメントデータとは、第１の実施形態と同様、図１２に図示する一例のように、間違い回数ＭＩＳＳに対応付けられたコメント（１）Ａ〜Ｃから構成される。これらコメント（１）Ａ〜Ｃは、仮想的な先生Ｔが生徒（ユーザ）に対してアドバイスする内容を表す。
【００７２】
すなわち、間違い回数ＭＩＳＳが「０〜２回」であると、ステップＳＪ２に進み、ＲＯＭ２のデータエリアに記憶されるコメントデータ中から「練習がんばったね！」なるコメント（１）Ａを選択する。間違い回数ＭＩＳＳが「３〜５回」であると、ステップＳＪ３に進み、コメントデータ中から「もう少しだ！」なるコメント（１）Ｂを選択する。間違い回数ＭＩＳＳが「６回以上」であると、ステップＳＪ４に進み、コメントデータ中から「もっと練習して！」なるコメント（１）Ｃを選択する。こうして、仮想的な先生Ｔからのコメント（１）を間違い回数ＭＩＳＳに応じて選択すると、ＣＰＵ１はステップＳＪ５に進み、選択されたコメント（１）を伴う先生画面ＴＧ（図１３参照）を生成して表示部７に一定時間表示する。
【００７３】
次いで、ステップＳＪ６では、ＲＡＭ３のバッファエリアにアドレスポインタＡＤＤがストアされているか否かを判断する。上述した第２の実施形態による生徒レッスン処理では、キャラクタＣに性能データＣＰ（２）もしくはＣＰ（３）が設定されている場合、生徒の演奏ミスに対して２回に１回の頻度もしくはランダムな頻度で間違いを指摘しないケースが生じ、そのようなケースではＲＡＭ３のバッファエリアにアドレスポインタＡＤＤがストアされるようになっている。したがって、このステップＳＪ６では、指摘されていない間違いの有無を判断している。指摘されていない間違いが有ると、判断結果が「ＹＥＳ」になり、ステップＳＪ７に進む。
【００７４】
ステップＳＪ７では、ＲＡＭ３のバッファエリアに格納されるアドレスポインタＡＤＤを読み出し、続くステップＳＪ８では、そのアドレスポインタＡＤＤで指定される音符データをＲＡＭ３のデータエリアに格納される曲データ中から読み出す。続いて、ステップＳＪ９では、アドレスポインタＡＤＤ以前に記憶されている音符データの音符長から指摘ミスされた音符データの小節数を算出する。次に、ステップＳＪ１０では、指摘ミスされた音符データの音高（１）と算出された小節数とを先生Ｔが生徒に教えるコメント、例えば図２１に図示するように、「５小節目のドの音もまちがっていたね。」なるコメントを有するコメント（２）Ｂ画面を表示部７に一定時間表示する。この後、ステップＳＪ１１に進み、アドレスポインタＡＤＤを消去してステップＳＪ６に処理を戻す。そして、ＲＡＭ３のバッファエリアに格納されるアドレスポインタＡＤＤが全て消去され、指摘されていない間違いが無くなると、ステップＳＪ６の判断結果が「ＮＯ」となり、本処理を完了させる。
【００７５】
以上のように、第２の実施形態では、生徒の演奏ミスに対しキャラクタＣが２回に１回あるいはランダムな頻度で間違えを指摘するよう反応し、キャラクタＣが間違えを指摘できなかった箇所については仮想的な先生Ｔが該当箇所の音符を生徒に教示するため、ゲーム的な面白みを創出でき、より一層楽しく飽きずに一人で練習できるようになっている。
【図面の簡単な説明】
【００７６】
【図１】第１の実施形態の構成を示すブロック図である。
【図２】ＲＡＭ３に格納される曲データの構成を示すメモリマップである。
【図３】メインルーチンの動作を示すフローチャートである。
【図４】曲選択処理の動作を示すフローチャートである。
【図５】レッスン処理の動作を示すフローチャートである。
【図６】生徒レッスン処理の動作を示すフローチャートである。
【図７】生徒レッスン処理の動作を示すフローチャートである。
【図８】ガイド画面ＧＧの一例を示す図である。
【図９】ＲＯＭ２のデータエリアに記憶される反応データの一例を示す図である。
【図１０】キャラ画面ＣＨＧの一例を示す図である。
【図１１】コメント（１）処理の動作を示すフローチャートである。
【図１２】ＲＯＭ２のデータエリアに記憶されるコメントデータの一例を示す図である。
【図１３】先生画面ＴＧの一例を示す図である。
【図１４】キャラレッスン処理の動作を示すフローチャートである。
【図１５】キャラレッスン処理の動作を示すフローチャートである。
【図１６】キャラレッスン処理の動作を示すフローチャートである。
【図１７】キャラ画面Ｂの一例を示す図である。
【図１８】キャラ画面Ｃの一例を示す図である。
【図１９】コメント（２）処理の動作を示すフローチャートである。
【図２０】コメント（２）Ａ画面の一例を示す図である。
【図２１】コメント（２）Ｂ画面の一例を示す図である。
【図２２】第２の実施形態によるメインルーチンの動作を示すフローチャートである。
【図２３】ＲＯＭ２のデータエリアに記憶される性能データＣＰの一例を示す図である。
【図２４】第２の実施形態によるキャラ設定処理の動作を示すフローチャートである。
【図２５】第２の実施形態による生徒レッスン処理の動作を示すフローチャートである。
【図２６】第２の実施形態によるコメント（１）処理の動作を示すフローチャートである。
【符号の説明】
【００７７】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  キーボード
７  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2005070521.tif 000003
【図２】
2005070521.tif 000004
【図３】
2005070521.tif 000005
【図４】
2005070521.tif 000006
【図５】
2005070521.tif 000007
【図６】
2005070521.tif 000008
【図７】
2005070521.tif 000009
【図８】
2005070521.tif 000010
【図９】
2005070521.tif 000011
【図１０】
2005070521.tif 000012
【図１１】
2005070521.tif 000013
【図１２】
2005070521.tif 000014
【図１３】
2005070521.tif 000015
【図１４】
2005070521.tif 000016
【図１５】
2005070521.tif 000017
【図１６】
2005070521.tif 000018
【図１７】
2005070521.tif 000019
【図１８】
2005070521.tif 000020
【図１９】
2005070521.tif 000021
【図２０】
2005070521.tif 000022
【図２１】
2005070521.tif 000023
【図２２】
2005070521.tif 000024
【図２３】
2005070521.tif 000025
【図２４】
2005070521.tif 000026
【図２５】
2005070521.tif 000027
【図２６】
2005070521.tif 000028