(57)【要約】【課題】正しく聴き取れない音高を重点的に教習させたり、不得手な能力を補うような教習形態にすることができる音楽教習装置を実現する。【解決手段】回答履歴データベースＲＤの回答結果データから「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を抽出し、「きちんと答えられている音」以外の新たな問題音を出題するようにしたので、正しく聴き取れない音高を重点的に教習できる。また、回答履歴データベースＲＤの回答結果データから回答種別毎の正答率を算出して、キーボード６を用いた回答、音名をクリックする回答、楽譜をクリックする回答および鍵盤を用いた回答の得手・不得手を分析し、不得手な回答方法を強制的に教習させるので、不得手な能力を補うような教習形態できる。【選択図】  図１１
2004246231.tif 000002
【特許請求の範囲】
【請求項１】
問題音を出題して発音する出題手段と、
前記出題手段にて発音された問題音の音高をユーザの回答操作に応じて回答する回答手段と、
この回答手段からの回答が正解であるか否かを判定した回答結果を発生する判定手段と、
少なくとも、前記問題音とそれに対応する回答結果とを含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶手段と、
前記履歴記憶手段に記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出手段と、
前記抽出手段により抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題手段に指示する指示手段と
を具備することを特徴とする音楽教習装置。
【請求項２】
問題音を出題して発音する出題手段と、
前記出題手段にて発音された問題音の音高をユーザの回答操作に応じて回答する回答手段と、
この回答手段からの回答が正解であるか否かを判定して回答結果を発生する判定手段と、
少なくとも、前記回答操作の種別、前記問題音およびそれに対応する回答結果を含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶手段と、
前記履歴記憶手段に記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出手段と、
前記抽出手段により抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題手段に指示する出題指示手段と、
前記履歴記憶手段に記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう前記回答手段に指示する回答指示手段と
を具備することを特徴とする音楽教習装置。
【請求項３】
問題音を出題して発音する出題ステップと、
前記出題ステップにて発音された問題音の音高をユーザの回答操作に応じて回答する回答ステップと、
この回答ステップによる回答が正解であるか否かを判定した回答結果を発生する判定ステップと、
少なくとも、前記問題音とそれに対応する回答結果とを含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶ステップと、
前記履歴記憶ステップを経て記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出ステップと、
前記抽出ステップにて抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題ステップに指示する指示ステップと
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項４】
問題音を出題して発音する出題ステップと、
前記出題ステップにて発音された問題音の音高をユーザの回答操作に応じて回答する回答ステップと、
この回答ステップによる回答が正解であるか否かを判定して回答結果を発生する判定ステップと、
少なくとも、前記回答操作の種別、前記問題音およびそれに対応する回答結果を含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶ステップと、
前記履歴記憶ステップを経て記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出ステップと、
前記抽出ステップにて抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題ステップに指示する出題指示ステップと、
前記履歴記憶ステップを経て記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう前記回答ステップに指示する回答指示ステップと
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置や電子楽器などに用いて好適な音楽教習装置および音楽教習プログラムに関する。
【０００２】
【従来の技術】
音楽教習をする装置として、例えば特許文献１には、問題音（任意の音高の楽音）をランダムに放音出題する問題出題手段と、放音出題された問題音の音高を演奏操作で解答する解答手段と、解答が正解すると過去に放音出題した問題音の数に新たな問題音の数を加えた数の問題音を問題出題手段からランダムに出題させる問題出題制御手段とを備え、正解する毎に放音出題数を増加させてランダムに出題させることによって、絶対音感を効果的に向上させる技術が開示されている。
【０００３】
【特許文献１】
特許公開平７−１３４８０号公報
【０００４】
【発明が解決しようとする課題】
ところで、上述した従来の音楽教習装置では、単に、放音出題された問題音の音高を演奏操作で解答し、その解答が正解する毎に放音出題数を増加させるだけなので、正しく聴き取れない音高を重点的に教習させることができないという問題がある。また、従来の音楽教習装置では、単にユーザの音感を養うだけの教習しか行えず、ユーザの音楽的能力（例えば音感、読譜力および演奏力）を勘案して不得手な能力を補うような教習形態にすることができないという問題もある。
【０００５】
そこで本発明は、このような事情に鑑みてなされたもので、正しく聴き取れない音高を重点的に教習させたり、不得手な能力を補うような教習形態にすることができる音楽教習装置および音楽教習プログラムを提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、問題音を出題して発音する出題手段と、前記出題手段にて発音された問題音の音高をユーザの回答操作に応じて回答する回答手段と、この回答手段からの回答が正解であるか否かを判定した回答結果を発生する判定手段と、少なくとも、前記問題音とそれに対応する回答結果とを含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶手段と、前記履歴記憶手段に記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出手段と、前記抽出手段により抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題手段に指示する指示手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、問題音を出題して発音する出題手段と、前記出題手段にて発音された問題音の音高をユーザの回答操作に応じて回答する回答手段と、この回答手段からの回答が正解であるか否かを判定して回答結果を発生する判定手段と、少なくとも、前記回答操作の種別、前記問題音およびそれに対応する回答結果を含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶手段と、前記履歴記憶手段に記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出手段と、前記抽出手段により抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題手段に指示する出題指示手段と、前記履歴記憶手段に記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう前記回答手段に指示する回答指示手段とを具備することを特徴とする。
【０００８】
請求項３に記載の発明では、問題音を出題して発音する出題ステップと、前記出題ステップにて発音された問題音の音高をユーザの回答操作に応じて回答する回答ステップと、この回答ステップによる回答が正解であるか否かを判定した回答結果を発生する判定ステップと、少なくとも、前記問題音とそれに対応する回答結果とを含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶ステップと、前記履歴記憶ステップを経て記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出ステップと、前記抽出ステップにて抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題ステップに指示する指示ステップとをコンピュータで実行させることを特徴とする。
【０００９】
請求項４に記載の発明では、問題音を出題して発音する出題ステップと、前記出題ステップにて発音された問題音の音高をユーザの回答操作に応じて回答する回答ステップと、この回答ステップによる回答が正解であるか否かを判定して回答結果を発生する判定ステップと、少なくとも、前記回答操作の種別、前記問題音およびそれに対応する回答結果を含む回答結果データを回答がなされる毎に履歴として記憶する履歴記憶ステップと、前記履歴記憶ステップを経て記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出する抽出ステップと、前記抽出ステップにて抽出された「きちんと答えられている音」以外の新たな問題音の出題を前記出題ステップに指示する出題指示ステップと、前記履歴記憶ステップを経て記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう前記回答ステップに指示する回答指示ステップとをコンピュータで実行させることを特徴とする。
【００１０】
本発明では、問題音を出題して発音すると、その問題音の音高をユーザの回答操作に応じて回答し、それが正解であるか否かを判定した回答結果を発生する。こうした回答がなされる毎に、少なくとも、問題音とそれに対応する回答結果とを含む回答結果データが履歴記憶される。そして、履歴記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出し、抽出された「きちんと答えられている音」以外の新たな問題音の出題を指示するので、「正しく答えられない音」や「聴き取れていない音」あるいは「勘違いをしている音」、つまり正しく聴き取れない音高を重点的に教習させることが可能になる。
【００１１】
また、本発明では、問題音を出題して発音すると、その問題音の音高をユーザの回答操作に応じて回答し、それが正解であるか否かを判定して回答結果を発生する。こうした回答がなされる毎に、少なくとも、回答操作の種別、問題音およびそれに対応する回答結果を含む回答結果データが履歴記憶される。そして、履歴記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出し、抽出された「きちんと答えられている音」以外の新たな問題音の出題を指示する一方、履歴記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう指示する。したがって、例えば所定の正答率に達していない種別の回答操作が鍵盤操作である場合には、鍵盤操作だけを使用可能とし、これにより正しく聴き取れない音高を重点的に教習させる際に、不得手な能力を補うような教習形態にすることが可能になる。
【００１２】
【発明の実施の形態】
以下、本発明の実施の一形態による音楽教習装置が搭載されたＤＴＭ装置を実施例とし、これについて図面を参照して説明する。
Ａ．第１実施例の構成
（１）全体構成
図１は、本発明による第１実施例の構成を示すブロック図である。この図において、１０は構成要素１〜７を備えたＤＴＭ（デクストップミュージック）装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。
ＤＴＭ装置１０は、通常モードと強化モードとを備える。通常モードに設定された場合、ＤＴＭ装置１０はランダムに音高設定される問題音のノートデータを電子楽器２０にＭＩＤＩ出力して発音させ、それを聴いてユーザが行う回答操作（音高指定操作あるいは音名指定操作）の適否を判定して結果表示すると共に、ユーザの回答を履歴記録する。なお、回答操作として行われる音高指定操作（あるいは音名指定操作）には、ＤＴＭ装置１０が備えるマウス５やキーボード６もしくは電子楽器２０側が備える鍵盤（不図示）を用いる。一方、強化モードに設定された場合、ＤＴＭ装置１０は、通常モード下で記録した回答履歴に基づきユーザが間違え易い音高を抽出し、その音高の問題音を出題して正しく聴き取れない音高を重点的に教習させるようになっている。
【００１３】
電子楽器２０は、ＤＴＭ装置１０からＭＩＤＩ入力される問題音のノートデータを発音する。また、電子楽器２０では、ユーザが鍵盤を回答操作に用いた場合、押鍵された鍵に対応したノートデータを発生してＤＴＭ装置１０にＭＩＤＩ出力する。
【００１４】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１はＣＰＵであり、後述の通常モード処理を実行した場合には、ランダムに音高設定される問題音のノートデータを電子楽器２０にＭＩＤＩ出力して発音させ、それを聴いてユーザが行う音高指定操作（あるいは音名指定操作）の適否を判定して結果表示する一方、ユーザの回答を履歴記録する。
また、ＣＰＵ１は後述の強化モード処理を実行した場合には、通常モード下で記録した回答履歴に基づきユーザが間違え易い音高を抽出し、その音高の問題音を出題して正しく聴き取れない音高を重点的に教習させる。さらに強化モード処理では、回答操作の種別毎に得手・不得手を分析し、所定の正答率に達しない不得手な回答操作のみを強制的に行わせるようになっている。
【００１５】
２はプログラムエリアおよびデータエリアを有するＲＯＭである。ＲＯＭ２のプログラムエリアには、後述するメインルーチンおよびメインルーチンからコールされる通常モード処理および強化モード処理を含む各種制御プログラムが記憶される。ＲＯＭ２のデータエリアには、後述のメインルーチンを起動した際に表示部７に画面表示されるメニュー画面（不図示）や、後述の通常モード処理および強化モード処理の実行時に表示部７に画面表示される回答画面Ｇ１、正解画面Ｇ２および不正解画面Ｇ３の各画面データが記憶される。これら画面Ｇ１〜Ｇ３の構成については追って説明する。
【００１６】
３はワークエリア、データベースエリアおよびバッファエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには、各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータベースエリアには、ユーザの回答を履歴記録する回答履歴データベースＲＤが設けられる。
回答履歴データベースＲＤは、図２に図示するように、出題した問題音に対応した回答結果データＴｒａｉｎｒｅｃ［０］〜Ｔｒａｉｎｒｅｃ［ｎ］から構成される。回答結果データＴｒａｉｎｒｅｃ［ｉ］は、回答日時を表すデータｄａｔｅ、出題音の音高を表すデータＱｕｅｓｔＮｏｔｅ、再度発音した回数を表すデータＰｌａｙＴｉｍｅ、発音から回答までに要した回答所要時間を表すデータＡｎｓＧａｔｅＴｉｍｅ、回答種別を表すデータＡｎｓＴｙｐｅ、回答した音高を表すデータＡｎｓＮｏｔｅおよび回答結果を表すデータＲｅｓｕｌｔから形成される。
【００１７】
回答結果データＴｒａｉｎｒｅｃ［ｉ］を形成する各データは、Ｔｒａｉｎｒｅｃ［ｉ］［ｊ］に応じて読み出される。ここで、ｉは回答結果データ（ｉ）を指定するポインタ値（０〜ｎ）、ｊはｉによって指定される回答結果データ（ｉ）中のデータを指定するポインタ値である。すなわち、ｊが「０」の場合にはデータｄａｔｅを、ｊが「１」の場合にはデータＱｕｅｓｔＮｏｔｅを、ｊが「２」の場合にはデータＰｌａｙＴｉｍｅを、ｊが「３」の場合にはデータＡｎｓＧａｔｅＴｉｍｅを、ｊが「４」の場合にはデータＡｎｓＴｙｐｅをそれぞれ指定する。ｊが「５」の場合にはデータＡｎｓＮｏｔｅを、ｊが「６」の場合にはデータＲｅｕｌｔを指定する。
なお、データＡｎｓＴｙｐｅは回答キャンセルの場合に「０」、キーボード６を用いて回答した場合に「１」、後述する回答画面Ｇ１でマウス５を用いて音名をクリックして回答した場合に「２」、後述する回答画面Ｇ１でマウス５を用いて楽譜をクリックして回答した場合に「３」、電子楽器２０側の鍵盤を用いて回答した場合に「４」がセットされる。また、データＲｅｕｌｔは回答キャンセルの場合に「０」、正解の場合に「１」、不正解の場合に「２」がセットされる。
【００１８】
ＲＡＭ３のバッファエリアには、回答解析バッファＫＢが設けられる。回答解析バッファＫＢは、上述した回答履歴データベースＲＤ（図２参照）に記録された回答結果データＴｒａｉｎｒｅｃ［０］〜Ｔｒａｉｎｒｅｃ［ｎ］に基づき、ユーザの音感傾向を判定する際に用いられるバッファである。回答解析バッファＫＢは、図３に図示するように、ＭＩＤＩノートナンバ＃０（Ｃ０音）〜＃１２７（Ｇ９音）の各音高に対応したノートデータＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［１２７］から構成される。
【００１９】
ノートデータＮｏｔｅｓ［ｉ］は、ノートナンバｎｏｔｅ＃、出題回数ＴｅｓｔＣｎｔ、回答回数ＡｎｓＣｎｔ、正解回数ＯＫＣｎｔ、正解するまでに要した最長時間ＯＫＴＭａｘ、正解するまでに要した最短時間ＯＫＴｍｉｎ、正解するまでに要した平均時間ＯＫＴＡｖｅ、不正解回数ＮＧＣｎｔ、不正解するまでに要した最長時間ＮＧＴＭａｘ、不正解するまでに要した最短時間ＮＧＴｍｉｎ、不正解するまでに要した平均時間ＮＧＴＡｖｅ、キャンセル回数ＵＫＣｎｔ、キャンセルするまでに要した最長時間ＵＫＴＭａｘ、キャンセルするまでに要した最短時間ＵＫＴｍｉｎ、キャンセルするまでに要した平均時間ＵＫＴＡｖｅ、回答して不正解となった回数ＡｎｓＮＧＣｎｔ、回答して不正解になるまでに要した最長時間ＡｎｓＮＧＴＭａｘ、回答して不正解になるまでに要した最短時間ＡｎｓＮＧＴｍｉｎおよび回答して不正解になるまでに要した平均時間ＡｎｓＮＧＴＡｖｅからなり、これらはＮｏｔｅｓ［ｉ］［ｊ］に応じて読み出される。ここで、ｉはノートデータ（ｉ）を指定するポインタ値（０〜ｎ）、ｊはｉによって指定されるノートデータ（ｉ）中のデータを指定するポインタ値である。
【００２０】
次に、再び図１を参照して実施例の構成について説明を進める。図１において、ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、電子楽器２０にＭＩＤＩデータをシリアル転送したり、電子楽器２０側から送出されるＭＩＤＩデータを取り込む。
マウス５は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード６はキー入力操作に応じたＫｅｙＵｐイベントを発生する。表示部７はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて、後述する回答画面Ｇ１、正解画面Ｇ２および不正解画面Ｇ３などを画面表示する。
【００２１】
（３）表示画面の構成
次に、図４〜図６を参照して回答画面Ｇ１、正解画面Ｇ２および不正解画面Ｇ３の構成を説明する。回答画面Ｇ１は、後述する通常モード処理あるいは強化モード処理を実行した際に表示部７に画面表示される画面である。図４にその一例を図示する。図４において、ＩＣ１〜ＩＣ３はマウス５によりクリック操作されるアイコンである。もう一度聞くアイコンＩＣ１は出題音の再発音を指示するイベントを発生する。やめるアイコンＩＣ２は回答キャンセルを指示するイベントを発生する。決定アイコンＩＣ３は回答決定を指示するイベントを発生する。
【００２２】
Ｅ１は楽譜表示エリアである。楽譜表示エリアＥ１には、出題音を含む所定音域の音符が楽譜表示される。この楽譜表示エリアＥ１に楽譜表示される各音符の内、発音される問題音と同じ音高と思われる音符をマウス５でクリック操作して回答することが可能になっている。Ｅ２は音名表示エリアである。音名表示エリアＥ２には、出題音を含む所定音域の音名がアイコン表示される。この音名表示エリアＥ２にアイコン表示される各音名の内、発音される問題音と同じ音名をマウス５でクリック操作して回答することが可能になっている。Ｅ３は鍵盤表示エリアである。鍵盤表示エリアＥ３は、回答時には用いられず、回答結果を表示する回答結果画面Ｇ２にて問題音の正解を鍵盤上で表示する。
【００２３】
こうした回答画面Ｇ１が表示部７に画面表示されている状態で問題音が発音され、その問題音を聴いて該当する音高を回答する。回答には、楽譜表示エリアＥ１中で該当する音符をクリック操作するか、あるいは音名表示エリアＥ２中で該当する音名のアイコンをクリック操作するか、もしくはキーボード６のキー入力操作の他、電子楽器２０側の鍵盤を押鍵操作する。これら４通りの回答種別のいずれかで回答が行われると、正解画面Ｇ２あるいは不正解画面Ｇ３に遷移する。回答が正解の場合には、図５に図示する一例の正解画面Ｇ２が表示部７に画面表示される。この正解画面Ｇ２が、図４に図示した回答画面Ｇ１と相違する点は、ユーザに正解の旨を報知する正解マークＳＭをスーパーインポーズすると共に、鍵盤表示エリアＥ３において正解の音名に対応する鍵の表示態様を変化させることにある。
一方、回答が不正解の場合には、図６に図示する一例の不正解画面Ｇ３が表示部７に画面表示される。この不正解画面Ｇ３が、図４に図示した回答画面Ｇ１と相違する点は、ユーザに不正解の旨を報知する不正解マークＦＭをスーパーインポーズすると共に、鍵盤表示エリアＥ３において正解の音名に対応する鍵の表示態様を変化させることにある。
【００２４】
Ｂ．第１実施例の動作
次に、図７〜図１６を参照して第１実施例の動作について説明する。以下では、最初に全体動作としてメインルーチンの動作について説明し、続いてメインルーチンからコールされる通常モード処理および強化モード処理の各動作について順番に説明して行く。
【００２５】
（１）メインルーチンの動作
ＤＴＭ装置１０において、メインルーチンが実行されると、ＣＰＵ１は図７に示すステップＳＡ１に処理を進め、メニュー画面を表示部７に表示する。図示していないが、メニュー画面には通常モードアイコン、強化モードアイコンおよび終了アイコンが設けられており、これらアイコンにマウス５のマウスカーソルをポインティングさせてクリック操作することで、クリック操作されたアイコンに対応する処理が実行されるようになっている。
メニュー画面でアイコンがクリック操作されなければ、ステップＳＡ２〜ＳＡ４の各判断結果は「ＮＯ」となり、表示部７にメニュー画面を画面表示する状態を維持し続けるが、終了アイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ４の判断結果が「ＹＥＳ」となり、メインルーチンを終える。
【００２６】
メニュー画面中の通常モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ２の判断結果が「ＹＥＳ」となり、ステップＳＡ５に進む。ステップＳＡ５では、ランダムに音高設定される問題音のノートデータを電子楽器２０にＭＩＤＩ出力して発音させ、それを聴いてユーザが行う回答操作の適否を判定して結果表示する一方、ユーザの回答を履歴記録する通常モード処理を実行する。通常モード処理を終えると、ステップＳＡ１に戻り、メニュー画面表示状態に復帰する。
【００２７】
一方、メニュー画面中の強化モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ３の判断結果が「ＹＥＳ」となり、ステップＳＡ６に進む。ステップＳＡ６では、通常モード処理にて記録した回答履歴に基づきユーザが間違え易い音高を抽出し、その音高の問題音を出題して正しく聴き取れない音高を重点的に教習させる強化モード処理を実行する。強化モード処理を終えると、ステップＳＡ１に戻り、メニュー画面表示状態に復帰する。
【００２８】
（２）通常モード処理の動作
次に、図８〜図９を参照して通常モード処理の動作を説明する。メインルーチンのステップＳＡ５（図７参照）を介して本処理が実行されると、図８のステップＳＢ１に進み、ＲＯＭ２から読み出した画面データに基づき表示部７に回答画面Ｇ１（図４参照）を画面表示する。次いで、ステップＳＢ２では、出題数をカウントするレジスタｎに初期値「１」をストアすると共に、出題回数を保持するレジスタＫＳに所定値をストアする。以後、レジスタｎの内容を出題数ｎ、レジスタＫＳの内容を出題回数ＫＳと記す。
【００２９】
ステップＳＢ３では、出題数ｎが出題回数ＫＳに達したか、つまり所定回数分出題し終えたか否かを判断する。所定回数分出題し終えると、判断結果は「ＹＥＳ」となり、本処理を完了させるが、所定回数分出題し終えていなければ、判断結果が「ＮＯ」になり、次のステップＳＢ４に進む。ステップＳＢ４では、ランダム関数ＲＡＮＤＡＭにて問題音のノートナンバ（音高）を発生してレジスタＱｕｅｓｔＮｏｔｅにストアする一方、そのノートナンバの楽音の発音を指示するＭＩＤＩデータを発生して電子楽器２０側に送出する。これにより、電子楽器２０は問題音を発音する。そして、ステップＳＢ５では、問題音を発音させた時刻として、ＣＰＵ１が管理する現在時刻ｔｉｍｅをレジスタＩＱＴｉｍｅにストアする。
【００３０】
続いて、ステップＳＢ６〜ＳＢ２２では、ユーザ操作に応じて発生するイベントの種類に対応した処理を実行する。以下、「キーボードを用いた回答が行われた場合」、「クリック操作が行われた場合」、「決定アイコンＩＣ３がクリックされた場合」、「鍵盤操作が行われた場合」、「やめるアイコンＩＣ２がクリックされた場合」および「もう一度聞くアイコンＩＣ１がクリックされた場合」に分けて動作を説明する。
【００３１】
ａ．キーボードを用いた回答が行われた場合
発音された問題音を聴いてユーザがその問題音の音高をキーボード６からキー入力したとする。そうすると、キー入力に応じてＫｅｙＵｐイベントが発生して、ステップＳＢ６の判断結果が「ＹＥＳ」になり、ステップＳＢ７に進む。ステップＳＢ７では、キーボード６の音高入力用のキーの内、押下されたキーのキーコードをレジスタＫｅｙＩＤにストアする。次いで、ステップＳＢ８では、レジスタＡｎｓＴｙｐｅに「１」をストアし、キーボード６を用いた回答である旨を表す。続いて、ステップＳＢ９に進み、レジスタＫｅｙＩＤにストアされたキーコードを音高を表すノートナンバに変換し、これを回答音高としてレジスタＡｎｓＮｏｔｅにストアした後、後述のステップＳＢ２３（図９参照）に処理を進める。
【００３２】
ｂ．クリック操作が行われた場合
発音された問題音を聴いてユーザが回答画面Ｇ１（図４参照）の楽譜表示エリアＥ１もしくは音名表示エリアＥ２をクリック操作する回答を行うと、そのクリック操作に応じてクリックイベントが発生して、ステップＳＢ１０の判断結果が「ＹＥＳ」になり、ステップＳＢ１１に進む。ステップＳＢ１１では、クリック操作された時にマウスカーソルがポインティングしていた回答画面Ｇ１上の座標（ｐｏｓＸ，ｐｏｓＹ）を取得する。
【００３３】
続いて、ステップＳＢ１２では、取得した座標（ｐｏｓＸ，ｐｏｓＹ）に基づき、クリック操作が楽譜表示エリアＥ１の音符指定であるか、あるいは音名表示エリアＥ２の音名指定のいずれで行われたのかを判別し、判別した回答種別、すなわち楽譜表示エリアＥ１で音符をクリック操作した場合にはレジスタＡｎｓＴｙｐｅに「３」を、音名表示エリアＥ２で音名をクリック操作した場合にはレジスタＡｎｓＴｙｐｅに「２」をストアする。次いで、ステップＳＢ１３に進み、取得した座標（ｐｏｓＸ，ｐｏｓＹ）に基づき、クリック操作された音符（あるいは音名）をノートナンバに変換してレジスタＡｎｓＮｏｔｅにストアした後、ステップＳＢ６に処理を戻し、再びイベント検出状態に入る。
【００３４】
ｃ．決定アイコンＩＣ３がクリック操作された場合
楽譜表示エリアＥ１もしくは音名表示エリアＥ２をクリック操作する回答が行われた後に、回答画面Ｇ１の決定アイコンＩＣ３がクリック操作されたとする。そうすると、ステップＳＢ２１の判断結果が「ＹＥＳ」になり、ステップＳＢ２２に進む。ステップＳＢ２２では、クリックイベント発生済みであるか否か、つまり決定アイコンＩＣ３がクリック操作される以前に他のクリック操作がなされていたかどうかを判断する。この場合、判断結果は「ＹＥＳ」となり、後述のステップＳＢ２３（図９参照）に処理を進める。
なお、決定アイコンＩＣ３がクリック操作される以前に他のクリック操作がなされていない場合には、ステップＳＢ２２の判断結果が「ＮＯ」になり、ステップＳＢ６に処理を戻してイベント検出状態に入り、決定アイコンＩＣ３のクリック操作を無効にする。
【００３５】
ｄ．鍵盤操作が行われた場合
発音された問題音を聴いてユーザがその問題音の音名を電子楽器２０の鍵盤で弾いたとする。そうすると、その押鍵に応じて電子楽器２０から出力されるＭＩＤＩデータを入力してＭＩＤＩ入力イベントが発生し、これによりステップＳＢ１４の判断結果が「ＹＥＳ」になり、ステップＳＢ１５に進む。ステップＳＢ１５では、入力されたＭＩＤＩデータに含まれるノートナンバＮｏｔｅを回答音高としてレジスタＡｎｓＮｏｔｅにストアする。次いで、ステップＳＢ１６では、電子楽器２０側の鍵盤を用いた回答である旨を表す回答種別値「４」をレジスタＡｎｓＴｙｐｅにストアする。この後、後述のステップＳＢ２３（図９参照）に処理を進める。
【００３６】
ｅ．やめるアイコンＩＣ２がクリック操作された場合
回答操作をキャンセルすべく回答画面Ｇ１のやめるアイコンＩＣ２をクリック操作した場合には、キャンセルイベントの発生に応じて、ステップＳＢ１７の判断結果が「ＹＥＳ」となり、後述のステップＳＢ２３（図９参照）に処理を進める。
【００３７】
ｆ．もう一度聞くアイコンＩＣ１がクリック操作された場合
発音された問題音を聞き逃した場合など、問題音を再度発音させるべく回答画面Ｇ１のもう一度聞くアイコンＩＣ１をクリック操作した場合には、再発音イベントの発生に応じて、ステップＳＢ１８の判断結果が「ＹＥＳ」になり、ステップＳＢ１９に進む。ステップＳＢ１９では、再度発音した回数を保持するレジスタＰｌａｙＴｉｍｅの値をインクリメントして歩進させた後、ステップＳＢ２０に進み、上述のステップＳＢ４においてレジスタＱｕｅｓｔＮｏｔｅにストアしたノートナンバの楽音の発音を指示するＭＩＤＩデータを発生して電子楽器２０側に送出する。こうして、問題音を再発音させた後は、ステップＳＢ５に進み、問題音を再発音させた時刻として、ＣＰＵ１が管理する現在時刻ｔｉｍｅをレジスタＩＱＴｉｍｅにストアする。この後、ステップＳＢ６に進み、再びイベント検出状態に入る。
【００３８】
こうして回答操作に対応したイベント処理が行われた後、図９に示すステップＳＢ２３に進むと、現在時刻ｔｉｍｅからレジスタＩＱＴｉｍｅに格納される問題音発音時刻を減算して、発音から回答までに要した回答所要時間を求めてレジスタＡｎｓＧａｔｅＴｉｍｅにストアする。次いで、ステップＳＢ２４に進み、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバが、レジスタＡｎｓＮｏｔｅに格納される回答結果に一致するか否か、つまり正解であるか否かをを判断する。
【００３９】
正解であると、判断結果は「ＹＥＳ」となり、ステップＳＢ２５に進み、レジスタＲｅｓｕｌｔに「１」をストアし、続くステップＳＢ２６では、図５に図示した一例の正解画面Ｇ２を表示部７に画面表示してユーザに回答が正解であったことを報知する。一方、不正解であったならば、判断結果が「ＮＯ」になり、ステップＳＢ２７に進み、レジスタＲｅｓｕｌｔに「２」をストアし、続くステップＳＢ２８では、図６に図示した一例の不正解画面Ｇ３を表示部７に画面表示してユーザに回答が不正解であったことを報知する。
そして、ステップＳＢ２９に進み、ユーザの回答を回答履歴データベースＲＤ（図２参照）に履歴記録する履歴記録処理（後述する）を実行する。次いで、ステップＳＢ３０では、出題数ｎをインクリメントして歩進させた後、図８のステップＳＢ３に処理を戻す。以後、出題数ｎが出題回数ＫＳに達する迄、ステップＳＢ３〜ＳＢ３０を繰り返し、出題数ｎが出題回数ＫＳに達した時点でステップＳＢ３の判断結果が「ＹＥＳ」になり、通常モード処理を完了させる。
【００４０】
（３）履歴記憶処理の動作
次に、図１０を参照して履歴記憶処理の動作を説明する。上述したステップＳＢ２９（図９参照）を介して履歴記憶処理が実行されると、ＣＰＵ１は図１０に示すステップＳＣ１に進み、ポインタＮｏｔｅｓをゼロリセットし、続くステップＳＣ２，ＳＣ３では回答履歴データベースＲＤから空き領域（ヌルデータ）を探し出すまでポインタＮｏｔｅｓを歩進させる。そして、回答履歴データベースＲＤの空き領域が検索されると、ステップＳＣ２の判断結果が「ＹＥＳ」になり、ステップＳＣ４以降に処理を進め、回答履歴をデータベース登録する。
【００４１】
すなわち、ステップＳＣ４では、ＣＰＵ１が管理する現在日時を回答日時ｄａｔｅとしてポインタＮｏｔｅｓに対応したＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［０］にストアする。以後、同様にしてステップＳＣ５〜ＳＣ１０では、レジスタＱｕｅｓｔＮｏｔｅに格納された問題音のノートナンバをＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［１］に、レジスタＰｌａｙＴｉｍｅに格納される再発音回数をＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［２］に、レジスタＡｎｓＧａｔｅＴｉｍｅに格納される回答所要時間をＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［３］に、レジスタＡｎｓＴｙｐｅに格納される回答種別値をＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［４］に、レジスタＡｎｓＮｏｔｅに格納される回答音高をＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［５］に、レジスタＲｅｓｕｌｔに格納される回答結果をＴｒａｉｎｒｅｃ［Ｎｏｔｅｓ］［６］にそれぞれストアして本処理を完了させる。
【００４２】
（４）強化モード処理の動作
次に、図１１〜図１２を参照して強化モード処理の動作を説明する。メインルーチンのステップＳＡ６（図７参照）を介して本処理が実行されると、図１１のステップＳＤ１に進み、ＲＯＭ２から読み出した画面データに基づき表示部７に回答画面Ｇ１（図４参照）を画面表示する一方、出題数をカウントするレジスタｎに初期値「１」を、出題回数を保持するレジスタＫＳに所定値をそれぞれストアする。以後、レジスタｎの内容を出題数ｎ、レジスタＫＳの内容を出題回数ＫＳと記す。
【００４３】
次いで、ステップＳＤ２では、所定回数分出題し終えたか否かを判断する。所定回数分出題し終えると、判断結果は「ＹＥＳ」となり、本処理を完了させるが、所定回数分出題し終えていなければ、判断結果が「ＮＯ」になり、次のステップＳＤ３に進み、回答解析処理を実行する。後述するように、回答解析処理では、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って回答解析バッファＫＢを更新し、更新した回答解析バッファＫＢの内容に基づき、ユーザの音感傾向として、「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を抽出する。
【００４４】
そして、ステップＳＤ４では、ランダム関数ＲＡＮＤＡＭにて問題音のノートナンバを発生してレジスタＱｕｅｓｔＮｏｔｅにストアし、続くステップＳＤ５では出題音再考処理を実行する。後述するように出題音再考処理では、「きちんと答えられている音」を問題音として出題するのを回避する。つまり、上記ステップＳＤ４にて発生した出題音が「きちんと答えられている音」である場合、「きちんと答えられている音」以外の新たな問題音を発生して発音させる。
続いて、ステップＳＤ６に進むと、解析処理を実行する。解析処理では、後述するように、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って回答種別毎の正答率を算出して、キーボード６を用いた回答、音名をクリックする回答、楽譜をクリックする回答合および鍵盤を用いた回答の得手・不得手を分析する。
【００４５】
続いて、ステップＳＤ７〜ＳＤ２２では、発音された問題音を聴いてユーザが行う操作に応じて発生するイベントの種類に対応した処理を実行する。以下、「キーボードを用いた回答が行われた場合」、「クリック操作が行われた場合」、「決定アイコンＩＣ３がクリックされた場合」、「鍵盤操作が行われた場合」、「やめるアイコンＩＣ２がクリックされた場合」および「もう一度聞くアイコンＩＣ１がクリックされた場合」に分けて動作を説明する。
【００４６】
ａ．キーボードを用いた回答が行われた場合
この場合、キーボード６のキー入力に応じてＫｅｙＵｐイベントが発生するので、ステップＳＤ７に進む。ステップＳＤ７では、レジスタｂＥｎａｂｌｅ「１」の反転値（論理否定値）とＫｅｙＵｐイベントとの論理積が「１」か否かを判断する。レジスタｂＥｎａｂｌｅ「１」は、キーボードを用いた回答が所定の正答率ＳＬを超えているか否かを表すフラグ値を保持するレジスタであり、後述の解析処理によって所定の正答率ＳＬを超えている場合にフラグ値「１」がセットされるようになっている。つまり、キーボードを用いた回答が不得手で所定の正答率ＳＬに達していないユーザであると、レジスタｂＥｎａｂｌｅ「１」の反転値は「１」、キーボードを用いた回答が得意なユーザではレジスタｂＥｎａｂｌｅ「１」の反転値は「０」になる。
【００４７】
したがって、ステップＳＤ７では、キーボードを用いた回答が不得手なユーザのキー入力のみを受け付け、キーボードを用いた回答が得意なユーザのキー入力は無効にする判断がなされる。そして、キーボードを用いた回答が不得手なユーザのキー入力であると、ステップＳＤ７の判断結果が「ＹＥＳ」になり、ステップＳＤ８に進む。ステップＳＤ８では、キーボード６の音高入力用のキーの内、押下されたキーのキーコードをレジスタＫｅｙＩＤにストアする。次いで、ステップＳＤ９では、レジスタＡｎｓＴｙｐｅに「１」をストアし、キーボード６を用いた回答である旨を表す。続いて、ステップＳＤ１０に進み、レジスタＫｅｙＩＤにストアされたキーコードをノートナンバに変換し、これを回答音高としてレジスタＡｎｓＮｏｔｅにストアした後、後述するステップＳＤ２３（図１２参照）に処理を進める。
【００４８】
ｂ．クリック操作が行われた場合
回答画面Ｇ１（図４参照）の楽譜表示エリアＥ１もしくは音名表示エリアＥ２のクリック操作に応じてクリックイベントが発生すると、ステップＳＤ１１に進む。ステップＳＤ１１では、レジスタｂＥｎａｂｌｅ「２」もしくはレジスタｂＥｎａｂｌｅ「３」の反転値（論理否定値）とクリックイベントとの論理積が「１」か否かを判断する。
【００４９】
なお、レジスタｂＥｎａｂｌｅ「２」は、音名表示エリアＥ２の音名クリックによる回答が所定の正答率ＳＬを超えているか否かを表すフラグ値を保持するレジスタであり、後述の解析処理によって所定の正答率ＳＬを超えている場合にフラグ値「１」がセットされるようになっている。つまり、音名クリックによる回答が不得手で所定の正答率ＳＬに達していないユーザであると、レジスタｂＥｎａｂｌｅ「２」の反転値は「１」、音名クリックによる回答が得意なユーザではレジスタｂＥｎａｂｌｅ「１」の反転値は「０」になる。
また、レジスタｂＥｎａｂｌｅ「３」は、楽譜表示エリアＥ１の楽譜クリックによる回答が所定の正答率ＳＬを超えているか否かを表すフラグ値を保持するレジスタであり、後述の解析処理によって所定の正答率ＳＬを超えている場合にフラグ値「１」がセットされるようになっている。つまり、楽譜クリックによる回答が不得手で所定の正答率ＳＬに達していないユーザであると、レジスタｂＥｎａｂｌｅ「２」の反転値は「１」、楽譜クリックによる回答が得意なユーザではレジスタｂＥｎａｂｌｅ「１」の反転値は「０」になる。
【００５０】
したがって、ステップＳＤ１１では、音名クリックもしくは楽譜クリックによる回答が不得手なユーザのクリック操作のみを受け付け、音名クリックもしくは楽譜クリックによる回答が得意なユーザのクリック操作は無効にする判断がなされる。そして、音名クリックもしくは楽譜クリックによる回答が不得手なユーザのクリック操作であると、ステップＳＤ１１の判断結果が「ＹＥＳ」になり、ステップＳＤ１２に進む。ステップＳＤ１２では、クリック操作された時にマウスカーソルがポインティングしていた回答画面Ｇ１上の座標（ｐｏｓＸ，ｐｏｓＹ）を取得する。
【００５１】
続いて、ステップＳＤ１３では、取得した座標（ｐｏｓＸ，ｐｏｓＹ）に基づき、クリック操作が楽譜表示エリアＥ１の音符指定であるか、あるいは音名表示エリアＥ２の音名指定のいずれであるかを判別し、判別した回答種別、すなわち楽譜表示エリアＥ１で音符をクリック操作した場合にはレジスタＡｎｓＴｙｐｅに「３」を、音名表示エリアＥ２で音名をクリック操作した場合にはレジスタＡｎｓＴｙｐｅに「２」をストアする。次いで、ステップＳＤ１４に進み、取得した座標（ｐｏｓＸ，ｐｏｓＹ）に基づき、クリック操作された音符あるいは音名をノートナンバに変換してレジスタＡｎｓＮｏｔｅにストアした後、ステップＳＤ７に処理を戻し、再びイベント検出状態に入る。
【００５２】
ｃ．決定アイコンＩＣ３がクリック操作された場合
楽譜表示エリアＥ１もしくは音名表示エリアＥ２をクリック操作する回答が行われた後に、回答画面Ｇ１の決定アイコンＩＣ３がクリック操作されたとする。そうすると、ステップＳＤ２１の判断結果が「ＹＥＳ」になり、ステップＳＤ２２に進む。ステップＳＤ２２では、クリックイベント発生済みであるか否か、つまり決定アイコンＩＣ３がクリック操作される以前に他のクリック操作がなされていたかどうかを判断する。この場合、判断結果は「ＹＥＳ」となり、後述のステップＳＤ２３（図１２参照）に処理を進める。
なお、決定アイコンＩＣ３がクリック操作される以前に他のクリック操作がなされていない場合には、ステップＳＤ２２の判断結果が「ＮＯ」になり、ステップＳＤ７に処理を戻してイベント検出状態に入り、決定アイコンＩＣ３のクリック操作を無効にする。
【００５３】
ｄ．鍵盤操作が行われた場合
この場合、電子楽器２０における鍵盤の押鍵に応じてＭＩＤＩ入力イベントが発生するので、ステップＳＤ１５に進む。ステップＳＤ１５では、レジスタｂＥｎａｂｌｅ「４」の反転値（論理否定値）とＭＩＤＩ入力イベントとの論理積が「１」か否かを判断する。
レジスタｂＥｎａｂｌｅ「４」は、鍵盤を用いた回答が所定の正答率ＳＬを超えているか否かを表すフラグ値を保持するレジスタであり、後述の解析処理によって所定の正答率ＳＬを超えている場合にフラグ値「１」がセットされるようになっている。つまり、鍵盤を用いた回答が不得手で所定の正答率ＳＬに達していないユーザであると、レジスタｂＥｎａｂｌｅ「４」の反転値は「１」、鍵盤を用いた回答が得意なユーザではレジスタｂＥｎａｂｌｅ「４」の反転値は「０」になる。
【００５４】
したがって、ステップＳＤ１５では、鍵盤を用いた回答が不得手なユーザのＭＩＤＩ入力イベントのみを受け付け、鍵盤を用いた回答が得意なユーザのＭＩＤＩ入力イベントは無効にする判断がなされる。そして、鍵盤を用いた回答が不得手なユーザのＭＩＤＩ入力イベントであると、ステップＳＤ１５の判断結果が「ＹＥＳ」になり、ステップＳＤ１６に進む。ステップＳＤ１６では、入力されたＭＩＤＩデータに含まれるノートナンバＮｏｔｅをレジスタＡｎｓＮｏｔｅにストアする。次いで、ステップＳＤ１７では、電子楽器２０側の鍵盤を用いた回答である旨を表す回答種別値「４」をレジスタＡｎｓＴｙｐｅにストアした後、後述のステップＳＤ２３（図１２参照）に処理を進める。
【００５５】
ｅ．やめるアイコンＩＣ２がクリック操作された場合
回答操作をキャンセルすべく回答画面Ｇ１のやめるアイコンＩＣ２をクリック操作した場合には、キャンセルイベントの発生に応じて、ステップＳＤ１８の判断結果が「ＹＥＳ」となり、後述のステップＳＤ２３（図１２参照）に処理を進める。
【００５６】
ｆ．もう一度聞くアイコンＩＣ１がクリック操作された場合
発音された問題音を聞き逃した場合など、問題音を再度発音させるべく回答画面Ｇ１のもう一度聞くアイコンＩＣ１をクリック操作した場合には、再発音イベントの発生に応じて、ステップＳＤ１９の判断結果が「ＹＥＳ」になり、ステップＳＤ２０に進む。ステップＳＤ２０では、レジスタＱｕｅｓｔＮｏｔｅに格納されているノートナンバの楽音の発音を指示するＭＩＤＩデータを発生して電子楽器２０側に送出する一方、問題音を再発音させた時刻として、ＣＰＵ１が管理する現在時刻ｔｉｍｅをレジスタＩＱＴｉｍｅにストアする。この後、ステップＳＤ７に戻り、再びイベント検出状態に入る。
【００５７】
さて、以上のようにして回答操作に対応したイベント処理が行われた後、図１２に示すステップＳＤ２３に進むと、現在時刻ｔｉｍｅからレジスタＩＱＴｉｍｅに格納される問題音の発音時刻を減算して、発音から回答までに要した回答所要時間を求めてレジスタＡｎｓＧａｔｅＴｉｍｅにストアする。次いで、ステップＳＤ２４に進み、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバが、レジスタＡｎｓＮｏｔｅに格納される回答結果に一致するか否か、つまり正解であるか否かをを判断する。
【００５８】
正解であると、判断結果は「ＹＥＳ」となり、ステップＳＤ２５に進み、レジスタＲｅｓｕｌｔに「１」をストアし、続くステップＳＤ２６では、図５に図示した一例の正解画面Ｇ２を表示部７に画面表示してユーザに回答が正解であったことを報知する。一方、不正解であったならば、判断結果が「ＮＯ」になり、ステップＳＤ２７に進み、レジスタＲｅｓｕｌｔに「２」をストアし、続くステップＳＤ２８では、図６に図示した一例の不正解画面Ｇ３を表示部７に画面表示してユーザに回答が不正解であったことを報知する。
そして、ステップＳＤ２９に進み、回答履歴データベースＲＤ（図２参照）にユーザの回答を履歴記録する履歴記録処理（図１０参照）を実行する。次いで、ステップＳＤ３０では、出題数ｎをインクリメントして歩進させた後、図１１のステップＳＤ２に処理を戻す。以後、出題数ｎが出題回数ＫＳに達する迄、ステップＳＤ２〜ＳＤ３０を繰り返し、出題数ｎが出題回数ＫＳに達した時点でステップＳＤ２の判断結果が「ＹＥＳ」になり、強化モード処理を完了させる。
【００５９】
このように、強化モード処理では、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って更新される回答解析バッファＫＢからユーザの音感傾向として、「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を抽出し、「きちんと答えられている音」以外の新たな問題音を出題して発音する。さらに、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って回答種別毎の正答率を算出して、キーボード６を用いた回答、音名をクリックする回答、楽譜をクリックする回答および鍵盤を用いた回答の得手・不得手を分析し、所定の正答率ＳＬを超える回答種別について、その回答操作を無効にする。
【００６０】
例えば、キーボード６を用いた回答や音名をクリックする回答が所定の正答率ＳＬを超えるユーザの場合には、音の高さと音名との対応を把握して音感が備った状態と見做し、キーボード６を用いた回答操作や音名をクリックする回答操作を無効とし、それら以外の他の不得手な回答操作による回答を行わせる。
また、楽譜をクリックする回答が所定の正答率ＳＬを超えるユーザであると、音の高さと楽譜との対応を把握し、音感が備りしかも楽譜を読める状態と見做して、楽譜をクリックする回答操作を無効とし、これ以外の他の不得手な回答操作による回答を行わせる。
さらに、鍵盤を用いた回答が所定の正答率ＳＬを超えるユーザの場合、音の高さと鍵盤の鍵との対応を把握し、音感が備りしかも演奏力を有する状態と見做して、鍵盤を用いた回答操作を無効とし、これ以外の他の不得手な回答操作による回答を行わせる。
【００６１】
（５）回答解析処理の動作
次に、図１３〜図１４を参照して回答解析処理の動作を説明する。上述の強化モード処理のステップＳＤ３（図１１参照）を介して本処理が実行されると、ＣＰＵ１は図１３のステップＳＥ１に進み、レジスタＮＰｅｒｆｅｃｔ、レジスタＮＰｅｒｆｅｃｔＲａｔｉｏ、レジスタＮＷｏｒｓｔ、レジスタＮＷｏｒｓｔＲａｔｉｏ、レジスタＮＷｉｓｓＡｎｓ、レジスタＮＭｉｓｓＡｎｓＲａｔｉｏ、レジスタＮＨａｓＣｏｎｃおよびレジスタＮＨａｓＣｏｎｃｍｉｎをゼロリセットする。これらレジスタの内容については追って述べる。
続いて、ステップＳＥ２ではポインタｉＴｒａｉｎをゼロリセットする。そして、ステップＳＥ３に進み、ポインタｉＴｒａｉｎに対応した回答履歴データベースＲＤ（図２参照）中のＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［０］が空き領域（ヌルデータ）であるか否か、つまり回答履歴データベースＲＤから回答結果データを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」となり、次のステップＳＥ４に進む。
【００６２】
ステップＳＥ４では、回答解析バッファＫＢ（図３参照）中のＮｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［１］］［１］、つまり問題音のノートナンバＱｕｅｓｔＮｏｔｅに対応する出題回数ＴｅｓｔＣｎｔをインクリメントして歩進させると共に、Ｎｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［５］］［２］、つまり回答音高ＡｎｓＮｏｔｅに対応する回答回数ＡｎｓＣｎｔをインクリメントして歩進させる。
次いで、ステップＳＥ５〜ＳＥ７では、Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［６］（データＲｅｓｕｌｔ）に応じて、回答解析バッファＫＢ中の該当するデータを更新する。以下、回答結果Ｒｅｓｕｌｔが回答キャンセル、正解および不正解の各場合に分けて動作を説明する。
【００６３】
＜回答キャンセル（Ｒｅｓｕｌｔ＝０）の場合＞
この場合、ステップＳＥ５の判断結果が「ＹＥＳ」になり、ステップＳＥ８に進む。ステップＳＥ８では、回答解析バッファＫＢ中のＮｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［１］］［１１］〜［１４］の、キャンセル回数ＵＫＣｎｔ、キャンセルするまでに要した最長時間ＵＫＴＭａｘ、キャンセルするまでに要した最短時間ＵＫＴｍｉｎおよびキャンセルするまでに要した平均時間ＵＫＴＡｖｅを更新する。この後、ステップＳＥ１２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた後、ステップＳＥ３に処理を戻す。
【００６４】
＜正解（Ｒｅｓｕｌｔ＝１）の場合＞
この場合、ステップＳＥ６の判断結果が「ＹＥＳ」になり、ステップＳＥ９に進む。ステップＳＥ９では、回答解析バッファＫＢ中のＮｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［１］］［３］〜［６］の、正解回数ＯＫＣｎｔ、正解するまでに要した最長時間ＯＫＴＭａｘ、正解するまでに要した最短時間ＯＫＴｍｉｎおよび正解するまでに要した平均時間ＯＫＴＡｖｅを更新する。この後、ステップＳＥ１２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた後、ステップＳＥ３に処理を戻す。
【００６５】
＜不正解（Ｒｅｓｕｌｔ＝２）の場合＞
この場合、ステップＳＥ７の判断結果が「ＹＥＳ」になり、ステップＳＥ１０に進む。ステップＳＥ１０では、回答解析バッファＫＢ中のＮｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［１］］［７］〜［１０］の、不正解回数ＮＧＣｎｔ、不正解するまでに要した最長時間ＮＧＴＭａｘ、不正解するまでに要した最短時間ＮＧＴｍｉｎおよび不正解するまでに要した平均時間ＮＧＴＡｖｅを更新する。次いで、ステップＳＥ１１に進み、回答解析バッファＫＢ中のＮｏｔｅｓ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［１］］［１５］〜［１８］の、回答して不正解となった回数ＡｎｓＮＧＣｎｔ、回答して不正解になるまでに要した最長時間ＡｎｓＮＧＴＭａｘ、回答して不正解になるまでに要した最短時間ＡｎｓＮＧＴｍｉｎおよび回答して不正解になるまでに要した平均時間ＡｎｓＮＧＴＡｖｅを更新する。この後、ステップＳＥ１２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた後、ステップＳＥ３に処理を戻す。
【００６６】
以後、歩進されたポインタｉＴｒａｉｎに応じて回答履歴データベースＲＤから読み出されるＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［０］が空き領域（ヌルデータ）に達するまでステップＳＥ３〜ＳＥ１２を繰り返し、回答結果データの内容に従って回答解析バッファＫＢを更新する。そして、回答結果データを読み出し終えると、ステップＳＥ３の判断結果が「ＹＥＳ」になり、図１４に示すステップＳＥ１３に進む。
ステップＳＥ１３では、回答解析バッファＫＢに格納されるＭＩＤＩノートナンバ＃０（Ｃ０音）〜＃１２７（Ｇ９音）の各音高に対応したノートデータＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［１２７］を指定するポインタｉＮｏｔｅをゼロリセットする。そして、ステップＳＥ１４〜ＳＥ２３では、ポインタｉＮｏｔｅを「０」〜「１２７」まで歩進させながら、「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を抽出する。以下、これら条件の各音を抽出する動作について説明する。
【００６７】
＜「きちんと答えられている音」の抽出＞
ポインタｉＮｏｔｅが「１２８」に達していない場合、ステップＳＥ１４の判断結果が「ＹＥＳ」になり、ステップＳＥ１５に進む。ステップＳＥ１５では、Ｎｏｔｅｓ［ｉＮｏｔｅ］［３］／Ｎｏｔｅｓ［ｉＮｏｔｅ］［１］、すなわち正解回数ＯＫＣｎｔ／出題回数ＴｅｓｔＣｎｔを算出し、これがレジスタＮＰｅｒｆｅｃｔＲａｔｉｏより大であるか否かを判断する。
ポインタｉＮｏｔｅが「０」となる最初のパスでは、レジスタＮＰｅｒｆｅｃｔＲａｔｉｏはゼロリセットされているので、判断結果は「ＹＥＳ」となり、ステップＳＥ１６に進み、正解率が最も高い音の音高（ノートナンバ）を保持するレジスタＮＰｅｒｆｅｃｔに、ポインタｉＮｏｔｅの値をストアする一方、正解回数ＯＫＣｎｔ／出題回数ＴｅｓｔＣｎｔから求めた正解率をレジスタＮＰｅｒｆｅｃｔＲａｔｉｏにストアする。
【００６８】
以後、ポインタｉＮｏｔｅが歩進される毎に、ステップＳＥ１５を実行し、正解回数ＯＫＣｎｔ／出題回数ＴｅｓｔＣｎｔ＞ＮＰｅｒｆｅｃｔＲａｔｉｏであるば、ステップＳＥ１６に進み、レジスタＮＰｅｒｆｅｃｔおよびレジスタＮＰｅｒｆｅｃｔＲａｔｉｏを更新する。そして、ポインタｉＮｏｔｅが「１２７」に達した時点で、レジスタＮＰｅｒｆｅｃｔに格納されるノートナンバが正解率の最も高い音となり、これが「きちんと答えられている音」と見做され、さらにレジスタＮＰｅｒｆｅｃｔＲａｔｉｏには、その正解率が保持される。
【００６９】
＜「正しく答えられない音」の抽出＞
ポインタｉＮｏｔｅが「１２８」に達していない場合、ステップＳＥ１４の判断結果が「ＹＥＳ」になり、上記ステップＳＥ１５、ＳＥ１６を経てステップＳＥ１７に進む。ステップＳＥ１７では、Ｎｏｔｅｓ［ｉＮｏｔｅ］［１１］／Ｎｏｔｅｓ［ｉＮｏｔｅ］［１］、すなわちキャンセル回数ＵＫＣｎｔ／出題回数ＴｅｓｔＣｎｔを算出し、これがレジスタＮＷｏｒｓｔＲａｔｉｏより大であるか否かを判断する。
ポインタｉＮｏｔｅが「０」となる最初のパスでは、レジスタＮＷｏｒｓｔＲａｔｉｏはゼロリセットされている為、判断結果は「ＹＥＳ」となり、ステップＳＥ１８に進み、キャンセル率が最も高い音の音高（ノートナンバ）を保持するレジスタＮＷｏｒｓｔに、ポインタｉＮｏｔｅの値をストアする一方、キャンセル回数ＵＫＣｎｔ／出題回数ＴｅｓｔＣｎｔから求めたキャンセル率をレジスタＮＷｏｒｓｔＲａｔｉｏにストアする。
【００７０】
以後、ポインタｉＮｏｔｅが歩進される毎に、ステップＳＥ１７を実行し、キャンセル回数ＵＫＣｎｔ／出題回数ＴｅｓｔＣｎｔ＞ＮＷｏｒｓｔＲａｔｉｏであれば、ステップＳＥ１８に進み、レジスタＮＷｏｒｓｔおよびレジスタＮＷｏｒｓｔＲａｔｉｏを更新する。そして、ポインタｉＮｏｔｅが「１２７」に達した時点で、レジスタＮＷｏｒｓｔに格納されるノートナンバがキャンセル率の最も高い音となり、これが「正しく答えられない音」と見做され、さらにレジスタＮＷｏｒｓｔＲａｔｉｏには、そのキャンセル率が保持される。
【００７１】
＜「聴き取れていない音」の抽出＞
ポインタｉＮｏｔｅが「１２８」に達していない場合、ステップＳＥ１４の判断結果が「ＹＥＳ」になり、上記ステップＳＥ１５〜ＳＥ１８を経てステップＳＥ１９に進む。ステップＳＥ１９では、Ｎｏｔｅｓ［ｉＮｏｔｅ］［１５］／Ｎｏｔｅｓ［ｉＮｏｔｅ］［２］、すなわち回答して不正解となった回数ＡｎｓＮＧＣｎｔ／回答回数ＡｎｓＣｎｔを算出し、これがレジスタＮＭｉｓｓＡｎｓＲａｔｉｏより大であるか否かを判断する。
ポインタｉＮｏｔｅが「０」となる最初のパスでは、レジスタＮＭｉｓｓＡｎｓＲａｔｉｏはゼロリセットされている為、判断結果は「ＹＥＳ」となり、ステップＳＥ２０に進み、不正解回答率が最も高い音の音高（ノートナンバ）を保持するレジスタＮＭｉｓｓＡｎｓに、ポインタｉＮｏｔｅの値をストアする一方、回答して不正解となった回数ＡｎｓＮＧＣｎｔ／回答回数ＡｎｓＣｎｔから求めた不正解回答率をレジスタＮＭｉｓｓＡｎｓＲａｔｉｏにストアする。
【００７２】
以後、ポインタｉＮｏｔｅが歩進される毎に、ステップＳＥ１９を実行し、回答して不正解となった回数ＡｎｓＮＧＣｎｔ／回答回数ＡｎｓＣｎｔ＞ＮＭｉｓｓＡｎｓＲａｔｉｏであれば、ステップＳＥ２０に進み、レジスタＮＭｉｓｓＡｎｓおよびレジスタＮＭｉｓｓＡｎｓＲａｔｉｏを更新する。そして、ポインタｉＮｏｔｅが「１２７」に達した時点で、レジスタＮＭｉｓｓＡｎｓに格納されるノートナンバが不正解回答率の最も高い音となり、これが「聴き取れていない音」と見做され、さらにレジスタＮＭｉｓｓＡｎｓＲａｔｉｏには、その不正解回答率が保持される。
【００７３】
＜「勘違いをしている音」の抽出＞
ポインタｉＮｏｔｅが「１２８」に達していない場合、ステップＳＥ１４の判断結果が「ＹＥＳ」になり、上記ステップＳＥ１５〜ＳＥ２０を経てステップＳＥ２１に進む。ステップＳＥ２１では、Ｎｏｔｅｓ［ｉＮｏｔｅ］［９］の、不正解するまでに要した最短時間ＮＧＴｍｉｎがレジスタＮＨａｓＣｏｎｃｍｉｎより大であるか否かを判断する。
ポインタｉＮｏｔｅが「０」となる最初のパスでは、レジスタＮＨａｓＣｏｎｃｍｉｎはゼロリセットされている為、判断結果は「ＹＥＳ」となり、ステップＳＥ２１に進み、ポインタｉＮｏｔｅの値をレジスタＮＨａｓＣｏｎｃにストアする一方、Ｎｏｔｅｓ［ｉＮｏｔｅ］［９］の、不正解するまでに要した最短時間ＮＧＴｍｉｎをレジスタＮＨａｓＣｏｎｃｍｉｎにストアする。
【００７４】
以後、ポインタｉＮｏｔｅが歩進される毎に、ステップＳＥ２１を実行し、Ｎｏｔｅｓ［ｉＮｏｔｅ］［９］＞ＮＨａｓＣｏｎｃｍｉｎであれば、ステップＳＥ２２に進み、レジスタＮＨａｓＣｏｎｃおよびレジスタＮＨａｓＣｏｎｃｍｉｎを更新する。そして、ポインタｉＮｏｔｅが「１２７」に達した時点で、レジスタＮＨａｓＣｏｎｃに格納されるノートナンバが、不正解となった出題音の内で最も回答時間のかからなかった音となり、これが「勘違いをしている音」と見做され、さらにレジスタＮＨａｓＣｏｎｃｍｉｎには、その最短時間ＮＧＴｍｉｎが保持される。
【００７５】
このように、回答解析処理では、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って回答解析バッファＫＢを更新し、更新した回答解析バッファＫＢに格納されるＭＩＤＩノートナンバ＃０（Ｃ０音）〜＃１２７（Ｇ９音）の各音高に対応したノートデータＮｏｔｅｓ［０］〜Ｎｏｔｅｓ［１２７］の内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」の各ノートナンバを抽出し、それぞれレジスタＮＰｅｒｆｅｃｔ、ＮＷｏｒｓｔ、ＮＭｉｓｓＡｎｓおよびＮＨａｓＣｏｎｃにストアするようになっている。
【００７６】
（６）出題音再考処理の動作
次に、図１５を参照して出題音再考処理の動作を説明する。前述した強化モード処理のステップＳＤ５（図１１参照）を介して本処理が実行されると、ＣＰＵ１は図１５のステップＳＦ１に進み、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバ、レジスタＮＰｅｒｆｅｃｔ、ＮＷｏｒｓｔ、ＮＭｉｓｓＡｎｓおよびＮＨａｓＣｏｎｃにそれぞれ格納される「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」の各ノートナンバを取得する。次いで、ステップＳＦ２では、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバと、レジスタＮＰｅｒｆｅｃｔに格納される「きちんと答えられている音」のノートナンバとが一致するか否かを判断する。
【００７７】
一致すると、判断結果は「ＹＥＳ」になり、ステップＳＦ３に進み、ランダム関数ＲＡＮＤＡＭにて問題音のノートナンバを発生してレジスタＱｕｅｓｔＮｏｔｅにストアする。この後、再びステップＳＦ２に処理を戻し、問題音のノートナンバと「きちんと答えられている音」のノートナンバとが一致しなくなると、判断結果が「ＮＯ」となり、ステップＳＦ４に進む。そして、ステップＳＦ４では、レジスタＱｕｅｓｔＮｏｔｅにストアされるノートナンバの楽音の発音を指示するＭＩＤＩデータを発生して電子楽器２０側に送出する。これにより、「きちんと答えられている音」を問題音として出題するのを回避する。続いて、ステップＳＦ５では、問題音を発音させた時刻として、ＣＰＵ１が管理する現在時刻ｔｉｍｅをレジスタＩＱＴｉｍｅにストアして本処理を終える。
【００７８】
（７）解析処理の動作
次に、図１６を参照して解析処理の動作を説明する。前述した強化モード処理のステップＳＤ６（図１１参照）を介して本処理が実行されると、ＣＰＵ１は図１６のステップＳＧ１に進み、レジスタｂＥｎａｂｌｅ［０］〜［４］、レジスタｔｒａｉｎｃｎｔ［０］〜［４］およびｏｋｃｎｔ［０］〜［４］をゼロリセッロする。これらレジスタの内容については追って述べる。続いて、ステップＳＧ２ではポインタｉＴｒａｉｎをゼロリセットする。
そして、ステップＳＧ３に進み、ポインタｉＴｒａｉｎに対応した回答履歴データベースＲＤ（図２参照）中のＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［０］が空き領域（ヌルデータ）であるか否か、つまり回答履歴データベースＲＤから回答結果データを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「ＮＯ」となり、次のステップＳＧ４に進む。
【００７９】
ステップＳＧ４では、ポインタｉＴｒａｉｎに応じて回答履歴データベースＲＤから読み出されるＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［４］、すなわちデータＡｎｓＴｙｐｅの値を引数として、対応するレジスタｔｒａｉｎｃｎｔ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［４］］の値をインクリメントして歩進させる。つまり、データＡｎｓＴｙｐｅの値に対応して、回答種別毎の出題回数をレジスタｔｒａｉｎｃｎｔ［０］〜［４］にて累算する。
なお、データＡｎｓＴｙｐｅは前述したように、回答操作を種別する値であって、回答キャンセル（回答無し）された場合に「０」、キーボード６を用いて回答した場合に「１」、回答画面Ｇ１でマウス５を用いて音名をクリックして回答した場合に「２」、回答画面Ｇ１でマウス５を用いて楽譜をクリックして回答した場合に「３」、電子楽器２０側の鍵盤を用いて回答した場合に「４」となる。
【００８０】
次いで、ステップＳＧ５では、ポインタｉＴｒａｉｎに応じて回答履歴データベースＲＤから読み出されるＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［６］（データＲｅｓｕｌｔ）の値が「１」、つまり正解であるか否かを判断する。正解以外の場合には、判断結果が「ＮＯ」となり、後述のステップＳＧ７に処理を進める。一方、正解であると、判断結果は「ＹＥＳ」になり、ステップＳＧ６に進む。ステップＳＧ６では、ポインタｉＴｒａｉｎに応じて回答履歴データベースＲＤから読み出されるｏｋｃｎｔ［ｉＴｒａｉｎ］［４］、すなわちデータＡｎｓＴｙｐｅの値を引数として、対応するレジスタｏｋｃｎｔ［Ｔｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［４］］の値をインクリメントして歩進させる。つまり、データＡｎｓＴｙｐｅの値に対応して、回答種別毎の正解回数をレジスタｏｋｃｎｔ［０］〜［４］にて累算する。そして、ステップＳＧ７では、ポインタｉＴｒａｉｎをインクリメントして歩進させた後、上述のステップＳＧ３に処理を戻す。
【００８１】
以後、歩進されたポインタｉＴｒａｉｎに応じて回答履歴データベースＲＤから読み出されるＴｒａｉｎｒｅｃ［ｉＴｒａｉｎ］［０］が空き領域（ヌルデータ）に達するまでステップＳＧ３〜ＳＧ７を繰り返すことによって、レジスタｔｒａｉｎｃｎｔ［０］〜［４］にはデータＡｎｓＴｙｐｅに対応した回答種別毎の出題回数が累算され、レジスタｏｋｃｎｔ［０］〜［４］にはデータＡｎｓＴｙｐｅに対応した回答種別毎の正解回数が累算される。そして、回答結果データを読み出し終えると、ステップＳＧ３の判断結果が「ＹＥＳ」になり、ステップＳＧ８に進む。
【００８２】
ステップＳＧ８では、ポインタｉＴｙｐｅに初期値「１」をセットする。続いて、ステップＳＧ９〜ＳＧ１２では、ポインタｉＴｙｐｅを「１」〜「４」まで歩進させながら、所定の正答率ＳＬを超える回答種別を判別する。すなわち、ステップＳＧ９では、ポインタｉＴｙｐｅが「５」より小さいか否か、つまり判別し終えたかどうかを判断する。判別し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＧ１０に進む。ステップＳＧ１０では、ポインタｉＴｙｐｅに対応したレジスタｏｋｃｎｔ［ｉＴｙｐｅ］に格納される正解回数を、ポインタｉＴｙｐｅに対応したレジスタｔｒａｉｎｃｎｔ［ｉＴｙｐｅ］に格納される出題回数で除算した結果が、所定の正答率ＳＬを超えているか否かを判断する。
【００８３】
所定の正答率ＳＬを超えていなければ、判断結果は「ＮＯ」となり、後述するステップＳＧ１２に進む。一方、所定の正答率ＳＬを超えると、判断結果が「ＹＥＳ」になり、ステップＳＧ１１に進む。ステップＳＧ１１では、ポインタｉＴｙｐｅに対応したレジスタｂＥｎａｂｌｅ［ｉＴｙｐｅ］に、所定の正答率ＳＬを超えた旨を表すフラグ値「１」をセットする。そして、ステップＳＧ１２では、ポインタｉＴｙｐｅをインクリメントして歩進させた後、上記ステップＳＧ９に処理を戻す。以後、ポインタｉＴｙｐｅが「５」に達するまで、ステップＳＧ９〜ＳＧ１２を繰り返し、ポインタｉＴｙｐｅが「５」に達すると、ステップＳＧ９の判断結果が「ＹＥＳ」になり、本処理を終える。
【００８４】
このように、解析処理では、回答履歴データベースＲＤに履歴記憶される回答結果データの内容に従って回答種別毎の正答率を算出し、算出した正答率が所定の正答率ＳＬを超えているかどうかを判別し、超えている場合に該当種別のレジスタｂＥｎａｂｌｅにフラグ値「１」をセットするようになっている。これにより、キーボード６を用いた回答、音名をクリックする回答、楽譜をクリックする回答合および鍵盤を用いた回答の得手・不得手を分析する。
【００８５】
Ｃ．第２実施例の動作
次に、図１７を参照して第２実施例による出題音再考処理の動作を説明する。上述の第１実施例による出題音再考処理では、「きちんと答えられている音」のノートナンバに一致させないように、ランダム関数ＲＡＮＤＡＭにて問題音を生成するようにしたが、第２実施例による出題音再考処理では、ランダム関数ＲＡＮＤＡＭにて生成した問題音のノートナンバが「きちんと答えられている音」のノートナンバに一致した場合、生成した問題音のノートナンバを半音上げるかあるいは半音下げて「きちんと答えられている音」を問題音として出題するのを回避する。以下、こうした出題音再考処理の動作を説明する。
【００８６】
前述した強化モード処理のステップＳＤ５（図１１参照）を介して本処理が実行されると、ＣＰＵ１は図１７のステップＳＨ１に進み、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバ、レジスタＮＰｅｒｆｅｃｔ、ＮＷｏｒｓｔ、ＮＭｉｓｓＡｎｓおよびＮＨａｓＣｏｎｃにそれぞれ格納される「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」の各ノートナンバを取得する。次いで、ステップＳＨ２では、ＮＰｅｒｆｅｃｔ＋（ＮＷｏｒｓｔ−ＮＰｅｒｆｅｃｔ）／ＲＡＮＤＡＭなる算出式にて問題音のノートナンバを求める。つまり、「正しく答えられない音」のノートナンバから「きちんと答えられている音」のノートナンバを差し引いた値をＲＡＮＤＡＭ関数値で除算し、その値を「きちんと答えられている音」に加えて問題音のノートナンバを算出し、レジスタＱｕｅｓｔＮｏｔｅにストアする。
【００８７】
次いで、ステップＳＨ３に進み、レジスタＱｕｅｓｔＮｏｔｅに格納される問題音のノートナンバと、レジスタＮＰｅｒｆｅｃｔに格納される「きちんと答えられている音」のノートナンバとが一致するか否かを判断する。一致しなければ、判断結果は「ＮＯ」になり、後述するステップＳＨ７に処理を進める。
一方、両ノートナンバが一致すると、判断結果は「ＹＥＳ」になり、ステップＳＨ４に進み、レジスタＮＰｅｒｆｅｃｔに格納される「きちんと答えられている音」のノートナンバが、レジスタＮＷｏｒｓｔに格納される「正しく答えられない音」のノートナンバより大きいか否かを判断する。そして、「きちんと答えられている音」＞「正しく答えられない音」であると、判断結果は「ＹＥＳ」になり、ステップＳＨ５に進み、レジスタＮＰｅｒｆｅｃｔに格納される「きちんと答えられている音」のノートナンバをデクリメントして半音下げ、これを問題音のノートナンバとしてレジスタＱｕｅｓｔＮｏｔｅにストアする。
【００８８】
これに対し、「きちんと答えられている音」＜「正しく答えられない音」であれば、判断結果が「ＮＯ」となり、ステップＳＨ６に進み、レジスタＮＰｅｒｆｅｃｔに格納される「きちんと答えられている音」のノートナンバをインクリメントして半音上げ、これを問題音のノートナンバとしてレジスタＱｕｅｓｔＮｏｔｅにストアする。
そして、ステップＳＨ７に進み、レジスタＱｕｅｓｔＮｏｔｅにストアされるノートナンバの楽音の発音を指示するＭＩＤＩデータを発生して電子楽器２０側に送出する。続いて、ステップＳＨ８では、問題音を発音させた時刻として、ＣＰＵ１が管理する現在時刻ｔｉｍｅをレジスタＩＱＴｉｍｅにストアして本処理を終える。
【００８９】
以上説明したように、本発明では、回答履歴データベースＲＤに履歴記憶される回答結果データから「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を抽出し、「きちんと答えられている音」以外の新たな問題音を出題するようにしたので、正しく聴き取れない音高を重点的に教習させることが可能になっている。
また、回答履歴データベースＲＤに履歴記憶される回答結果データから回答種別毎の正答率を算出して、キーボード６を用いた回答、音名をクリックする回答、楽譜をクリックする回答および鍵盤を用いた回答の得手・不得手を分析し、不得手な回答方法を強制的に教習させるので、ユーザの音楽的能力（音感、読譜力および演奏力）を勘案して不得手な能力を補うような教習形態にすることが可能になる。
【００９０】
なお、上述した第１および第２実施例では、強化モード処理において、「きちんと答えられている音」以外を問題音として出題するようにしたが、これに限らず、例えば「きちんと答えられている音」を出題した後に「勘違いをしている音」を出題する等、「きちんと答えられている音」とそれ以外の「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を交互に取混ぜて繰り返し出題する形式にして音感を高める工夫を施すようにしても構わない。
また、上述した第１および第２実施例では、問題音を単音発音としているが、本発明の要旨はこれに限定されず、例えば問題音として和音発音させてコードタイプやコード転回の聴き取りを教習するものに適用することも可能である。
【００９１】
【発明の効果】
請求項１および３に記載の発明によれば、問題音を出題して発音すると、その問題音の音高をユーザの回答操作に応じて回答し、それが正解であるか否かを判定した回答結果を発生する。こうした回答がなされる毎に、少なくとも、問題音とそれに対応する回答結果とを含む回答結果データが履歴記憶される。そして、履歴記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出し、抽出された「きちんと答えられている音」以外の新たな問題音の出題を指示するので、「正しく答えられない音」や「聴き取れていない音」あるいは「勘違いをしている音」、つまり正しく聴き取れない音高を重点的に教習させることができる。
請求項２および４に記載の発明によれば、問題音を出題して発音すると、その問題音の音高をユーザの回答操作に応じて回答し、それが正解であるか否かを判定して回答結果を発生する。こうした回答がなされる毎に、少なくとも、回答操作の種別、問題音およびそれに対応する回答結果を含む回答結果データが履歴記憶される。そして、履歴記憶された回答結果データの内から「きちんと答えられている音」、「正しく答えられない音」、「聴き取れていない音」および「勘違いをしている音」を分類して抽出し、抽出された「きちんと答えられている音」以外の新たな問題音の出題を指示する一方、履歴記憶された回答結果データから回答操作の種別毎の正答率を求め、その中で所定の正答率に達していない種別の回答操作のみ有効にするよう指示する。したがって、例えば所定の正答率に達していない種別の回答操作が鍵盤操作である場合には、鍵盤操作だけを使用可能とし、これにより正しく聴き取れない音高を重点的に教習させる際に、不得手な能力を補うような教習形態にすることができる。
【図面の簡単な説明】
【図１】本発明による第１実施例の構成を示すブロック図である。
【図２】ＲＡＭ３に設けられる回答履歴データベースＲＤの構成を示す図である。
【図３】ＲＡＭ３に設けられる回答解析バッファＫＢの構成を示す図である。
【図４】回答画面Ｇ１の一構成例を示す図である。
【図５】正解画面Ｇ２の一構成例を示す図である。
【図６】不正解画面Ｇ３の一構成例を示す図である。
【図７】メインルーチンの動作を示すフローチャートである。
【図８】通常モード処理の動作を示すフローチャートである。
【図９】図８に続く通常モード処理の動作を示すフローチャートである。
【図１０】履歴記憶処理の動作を示すフローチャートである。
【図１１】強化モード処理の動作を示すフローチャートである。
【図１２】図１１に続く強化モード処理の動作を示すフローチャートである。
【図１３】回答解析処理の動作を示すフローチャートである。
【図１４】図１３に続く回答解析処理の動作を示すフローチャートである。
【図１５】出題音再考処理の動作を示すフローチャートである。
【図１６】解析処理の動作を示すフローチャートである。
【図１７】第２実施例による出題音再考処理の動作を示すフローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  キーボード
７  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2004246231.tif 000003
【図２】
2004246231.tif 000004
【図３】
2004246231.tif 000005
【図４】
2004246231.tif 000006
【図５】
2004246231.tif 000007
【図６】
2004246231.tif 000008
【図７】
2004246231.tif 000009
【図８】
2004246231.tif 000010
【図９】
2004246231.tif 000011
【図１０】
2004246231.tif 000012
【図１１】
2004246231.tif 000013
【図１２】
2004246231.tif 000014
【図１３】
2004246231.tif 000015
【図１４】
2004246231.tif 000016
【図１５】
2004246231.tif 000017
【図１６】
2004246231.tif 000018
【図１７】
2004246231.tif 000019