(57)【要約】【課題】  実際の演奏に即した形で楽音要素を判別する音楽的能力を教習する音楽教習装置を実現する。【解決手段】  １フレーズ分の音符に対応した課題音データａｓＮｏｔｅを課題音管理テーブルＡＮＴから順次読み出して再生する。一連の課題音を再生し終えた後、回答制限時間ｌｉｍｉｔ以内に回答操作が行われると、その操作で入力された回答音の属性を回答音データテーブルＡＮＤＴに登録する。そして、回答入力を終えると、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を回答画面ＲＧの得点表示エリアＥ４に表示する。【選択図】  図２
2005049628.tif 000002
【特許請求の範囲】
【請求項１】
課題音を記憶する課題音記憶手段と、
教習対象とする楽音要素を選択する選択手段と、
この選択手段により選択された楽音要素に対応付けられた一連の課題音を前記課題音記憶手段から読み出し、それら課題音の発音を指示して出題する出題手段と、
この出題手段により出題された一連の課題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、
前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の課題音と前記回答音記憶手段に記憶された一連の回答音とを、前記選択手段により選択された楽音要素について比較判定した結果を提示する比較判定手段と
を具備することを特徴とする音楽教習装置。
【請求項２】
課題音を記憶する課題音記憶手段と、
教習対象とする楽音要素を選択する選択手段と、
この選択手段が楽音要素中の音高を選択した場合、前記課題音記憶手段に記憶される課題音の内の一連の音程問題音の発音を指示して出題する出題手段と、
この出題手段により出題された一連の音程問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、
前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の音程問題音と前記回答音記憶手段に記憶された一連の回答音との音高を比較判定した結果を提示する比較判定手段と
を具備することを特徴とする音楽教習装置。
【請求項３】
課題音を記憶する課題音記憶手段と、
教習対象とする楽音要素を選択する選択手段と、
この選択手段が楽音要素中のリズムを選択した場合、前記課題音記憶手段に記憶される課題音の内の一連のリズム問題音の発音を指示して出題する出題手段と、
この出題手段により出題された一連のリズム問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、
前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連のリズム問題音と前記回答音記憶手段に記憶された一連の回答音との音高および発音タイミングを比較判定した結果を提示する比較判定手段と
を具備することを特徴とする音楽教習装置。
【請求項４】
課題音を記憶する課題音記憶手段と、
教習対象とする楽音要素を選択する選択手段と、
この選択手段が楽音要素中の和音を選択した場合、前記課題音記憶手段に記憶される課題音の内の一連の和音問題音の発音を指示して出題する出題手段と、
この出題手段により出題された一連の和音問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、
前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の和音問題音と前記回答音記憶手段に記憶された一連の回答音とを、和音を構成する和音構成音毎に音高および発音タイミングを比較判定した結果を提示する比較判定手段と
を具備することを特徴とする音楽教習装置。
【請求項５】
課題音を記憶する課題音記憶手段と、
教習対象とする楽音要素を選択する選択手段と、
この選択手段が楽音要素中のベロシティを選択した場合、前記課題音記憶手段に記憶される課題音の内の一連のベロシティ問題音の発音を指示して出題する出題手段と、
この出題手段により出題された一連のベロシティ問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、
前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連のベロシティ問題音と前記回答音記憶手段に記憶された一連の回答音とのベロシティを比較判定した結果を提示する比較判定手段と
を具備することを特徴とする音楽教習装置。
【請求項６】
教習対象とする楽音要素を選択する選択過程と、
この選択過程にて選択された楽音要素に対応付けられた一連の課題音を、課題音を記憶する課題音記憶テーブルから読み出し、それら課題音の発音を指示して出題する出題過程と、
この出題過程にて出題された一連の課題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、  前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の課題音と前記回答音記憶テーブルに記憶された一連の回答音とを、前記選択過程で選択された楽音要素について比較判定した結果を提示する比較判定過程と  をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項７】
教習対象とする楽音要素を選択する選択過程と、
この選択過程で楽音要素中の音高が選択された場合、課題音記憶テーブルに記憶される課題音の内の一連の音程問題音の発音を指示して出題する出題過程と、  この出題過程にて出題された一連の音程問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、
前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の音程問題音と前記回答音記憶テーブルに記憶された一連の回答音との音高を比較判定した結果を提示する比較判定過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項８】
教習対象とする楽音要素を選択する選択過程と、
この選択過程で楽音要素中のリズムが選択された場合、課題音記憶テーブルに記憶される課題音の内の一連のリズム問題音の発音を指示して出題する出題過程と、
この出題過程にて出題された一連のリズム問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、
前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連のリズム問題音と前記回答音記憶テーブルに記憶された一連の回答音との音高および発音タイミングを比較判定した結果を提示する比較判定過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項９】
教習対象とする楽音要素を選択する選択過程と、
この選択過程で楽音要素中の和音が選択された場合、課題音記憶テーブルに記憶される課題音の内の一連の和音問題音の発音を指示して出題する出題過程と、  この出題過程にて出題された一連の和音問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、
前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の和音問題音と前記回答音記憶テーブルに記憶された一連の回答音とを、和音を構成する和音構成音毎に音高および発音タイミングを比較判定した結果を提示する比較判定過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【請求項１０】
教習対象とする楽音要素を選択する選択過程と、
この選択過程で楽音要素中のベロシティが選択された場合、課題音記憶テーブルに記憶される課題音の内の一連のベロシティ問題音の発音を指示して出題する出題過程と、
この出題過程にて出題された一連のベロシティ問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、
前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連のベロシティ問題音と前記回答音記憶テーブルに記憶された一連の回答音とのベロシティを比較判定した結果を提示する比較判定過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置や電子楽器などに用いて好適な音楽教習装置および音楽教習プログラムに関する。
【背景技術】
【０００２】
音楽教習をする装置として、例えば特許文献１には、問題音（任意の音高の楽音）をランダムに放音出題する問題出題手段と、放音出題された問題音の音高を演奏操作で解答する解答手段と、解答が正解すると過去に放音出題した問題音の数に新たな問題音の数を加えた数の問題音を問題出題手段からランダムに出題させる問題出題制御手段とを備え、正解する毎に放音出題数を増加させてランダムに出題させることによって、絶対音感を効果的に向上させる技術が開示されている。
【０００３】
【特許文献１】特許公開平７−１３４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の音楽教習装置は、放音出題された問題音の音高を演奏操作で回答し、その回答が正解する毎に放音出題数を増加させるだけなので、実際の演奏に即した形で音高、リズム、和音あるいはベロシティなどの楽音要素を判別する音楽的能力を教習することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、実際の演奏に即した形で楽音要素を判別する音楽的能力を教習することができる音楽教習装置および音楽教習プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に記載の発明では、課題音を記憶する課題音記憶手段と、教習対象とする楽音要素を選択する選択手段と、この選択手段により選択された楽音要素に対応付けられた一連の課題音を前記課題音記憶手段から読み出し、それら課題音の発音を指示して出題する出題手段と、この出題手段により出題された一連の課題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の課題音と前記回答音記憶手段に記憶された一連の回答音とを、前記選択手段により選択された楽音要素について比較判定した結果を提示する比較判定手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、課題音を記憶する課題音記憶手段と、教習対象とする楽音要素を選択する選択手段と、この選択手段が楽音要素中の音高を選択した場合、前記課題音記憶手段に記憶される課題音の内の一連の音程問題音の発音を指示して出題する出題手段と、この出題手段により出題された一連の音程問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の音程問題音と前記回答音記憶手段に記憶された一連の回答音との音高を比較判定した結果を提示する比較判定手段とを具備することを特徴とする。  
【０００７】
請求項３に記載の発明では、課題音を記憶する課題音記憶手段と、教習対象とする楽音要素を選択する選択手段と、この選択手段が楽音要素中のリズムを選択した場合、前記課題音記憶手段に記憶される課題音の内の一連のリズム問題音の発音を指示して出題する出題手段と、この出題手段により出題された一連のリズム問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連のリズム問題音と前記回答音記憶手段に記憶された一連の回答音との音高および発音タイミングを比較判定した結果を提示する比較判定手段とを具備することを特徴とする。
【０００８】
請求項４に記載の発明では、課題音を記憶する課題音記憶手段と、教習対象とする楽音要素を選択する選択手段と、この選択手段が楽音要素中の和音を選択した場合、前記課題音記憶手段に記憶される課題音の内の一連の和音問題音の発音を指示して出題する出題手段と、この出題手段により出題された一連の和音問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連の和音問題音と前記回答音記憶手段に記憶された一連の回答音とを、和音を構成する和音構成音毎に音高および発音タイミングを比較判定した結果を提示する比較判定手段とを具備することを特徴とする。
【０００９】
請求項５に記載の発明では、課題音を記憶する課題音記憶手段と、教習対象とする楽音要素を選択する選択手段と、この選択手段が楽音要素中のベロシティを選択した場合、前記課題音記憶手段に記憶される課題音の内の一連のベロシティ問題音の発音を指示して出題する出題手段と、この出題手段により出題された一連のベロシティ問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶する回答音記憶手段と、前記課題音記憶手段に記憶される課題音の内、前記出題手段が出題した一連のベロシティ問題音と前記回答音記憶手段に記憶された一連の回答音とのベロシティを比較判定した結果を提示する比較判定手段とを具備することを特徴とする。
【００１０】
請求項６に記載の発明では、教習対象とする楽音要素を選択する選択過程と、この選択過程にて選択された楽音要素に対応付けられた一連の課題音を、課題音を記憶する課題音記憶テーブルから読み出し、それら課題音の発音を指示して出題する出題過程と、この出題過程にて出題された一連の課題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の課題音と前記回答音記憶テーブルに記憶された一連の回答音とを、前記選択過程で選択された楽音要素について比較判定した結果を提示する比較判定過程とをコンピュータで実行させることを特徴とする。
【００１１】
請求項７に記載の発明では、教習対象とする楽音要素を選択する選択過程と、この選択過程で楽音要素中の音高が選択された場合、課題音記憶テーブルに記憶される課題音の内の一連の音程問題音の発音を指示して出題する出題過程と、この出題過程にて出題された一連の音程問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の音程問題音と前記回答音記憶テーブルに記憶された一連の回答音との音高を比較判定した結果を提示する比較判定過程とをコンピュータで実行させることを特徴とする。
【００１２】
請求項８に記載の発明では、教習対象とする楽音要素を選択する選択過程と、この選択過程で楽音要素中のリズムが選択された場合、課題音記憶テーブルに記憶される課題音の内の一連のリズム問題音の発音を指示して出題する出題過程と、この出題過程にて出題された一連のリズム問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連のリズム問題音と前記回答音記憶テーブルに記憶された一連の回答音との音高および発音タイミングを比較判定した結果を提示する比較判定過程とをコンピュータで実行させることを特徴とする。
【００１３】
請求項９に記載の発明では、教習対象とする楽音要素を選択する選択過程と、この選択過程で楽音要素中の和音が選択された場合、課題音記憶テーブルに記憶される課題音の内の一連の和音問題音の発音を指示して出題する出題過程と、この出題過程にて出題された一連の和音問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連の和音問題音と前記回答音記憶テーブルに記憶された一連の回答音とを、和音を構成する和音構成音毎に音高および発音タイミングを比較判定した結果を提示する比較判定過程とをコンピュータで実行させることを特徴とする。
【００１４】
請求項１０に記載の発明では、教習対象とする楽音要素を選択する選択過程と、この選択過程で楽音要素中のベロシティが選択された場合、課題音記憶テーブルに記憶される課題音の内の一連のベロシティ問題音の発音を指示して出題する出題過程と、この出題過程にて出題された一連のベロシティ問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を回答音記憶テーブルに記憶する回答音記憶過程と、前記課題音記憶テーブルに記憶される課題音の内、前記出題過程で出題した一連のベロシティ問題音と前記回答音記憶テーブルに記憶された一連の回答音とのベロシティを比較判定した結果を提示する比較判定過程とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１５】
請求項１，６に記載の発明によれば、教習対象とする楽音要素を選択すると、選択された楽音要素に対応付けられた一連の課題音を出題し、出題された一連の課題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶しておき、出題した一連の課題音と記憶した一連の回答音とを選択された楽音要素について比較判定した結果を提示するので、例えば一連の課題音を曲中の１フレーズとすれば、実際の演奏に即した形で楽音要素を判別する音楽的能力を教習することができる。
【００１６】
請求項２，７に記載の発明によれば、教習対象とする楽音要素として音高を選択すると、一連の音程問題音が出題され、出題された一連の音程問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶しておき、出題した一連の音程問題音と記憶した一連の回答音との音高を比較判定した結果を提示するので、実際の演奏に即した形で音高（音程）を判別する音楽的能力を教習することができる。
【００１７】
請求項３，８に記載の発明によれば、教習対象とする楽音要素としてリズムを選択すると、一連のリズム問題音が出題され、出題された一連のリズム問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶しておき、出題した一連のリズム問題音と記憶した一連の回答音との音高および発音タイミングを比較判定した結果を提示するので、実際の演奏に即した形でリズム（音高、発音タイミング）を判別する音楽的能力を教習することができる。
【００１８】
請求項４，９に記載の発明によれば、教習対象とする楽音要素として和音を選択すると、一連の和音問題音が出題され、出題された一連の和音問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶しておき、出題した一連の和音問題音と記憶した一連の回答音とを、和音を構成する和音構成音毎に音高および発音タイミングを比較判定した結果を提示するので、実際の演奏に即した形で和音を判別する音楽的能力を教習することができる。
【００１９】
請求項５，１０に記載の発明によれば、教習対象とする楽音要素としてベロシティを選択すると、一連のベロシティ問題音が出題され、出題された一連のベロシティ問題音が再生された後、ユーザ操作に応じて入力される一連の回答音を記憶しておき、出題した一連のベロシティ問題音と記憶した一連の回答音とのベロシティを比較判定した結果を提示するので、実際の演奏に即した形でベロシティを判別する音楽的能力を教習することができる。
【発明を実施するための最良の形態】
【００２０】
本発明による音楽教習装置および音楽教習プログラムは、周知の電子楽器もしくはパーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置などに適用され得る。以下では、本発明を実施するための最良の形態によるＤＴＭ装置について図面を参照して説明する。
【００２１】
Ａ．構成
（１）全体構成
図１は第１の実施形態の全体構成を示すブロック図である。この図において、１０は構成要素１〜７を備えたＤＴＭ（デクストップミュージック）装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。ＤＴＭ装置１０では、例えば１フレーズ分の音符に対応した課題音を発生して電子楽器２０側で再生させ、一連の課題音を再生し終えた後、回答制限時間以内に回答操作が行われた場合に、その操作で入力された回答音の登録保存し、回答入力を終えると、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を画面表示する。一方、電子楽器２０側では、ＤＴＭ装置１０からＭＩＤＩ入力される問題音のノートデータを発音したり、ユーザが鍵盤を回答操作に用いた場合、押鍵された鍵に対応したノートデータを発生してＤＴＭ装置１０にＭＩＤＩ出力するようになっている。
【００２２】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１は装置各部を制御するＣＰＵである。ＣＰＵ１はユーザ操作で選択された楽音要素別の課題音を発生して電子楽器２０側にＭＩＤＩ出力して再生させたり、課題音再生後にユーザが行う回答操作に応じて発生する回答音を保存する他、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を画面表示する。２はプログラムエリアおよびデータエリアを有するＲＯＭである。ＲＯＭ２のプログラムエリアには、ＣＰＵ１が実行するメインルーチン、再生開始処理、回答処理および判定処理を含む各種制御プログラムが記憶される。ＲＯＭ２のデータエリアには、後述のメインルーチンを実行した際に表示部７に画面表示される回答画面ＲＧの画面データが記憶される。回答画面ＲＧの構成については追って説明する。
【００２３】
３はワークエリア、データエリアおよびバッファエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには、各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータエリアには、課題情報管理テーブルＡＳＴ、課題音管理テーブルＡＮＴおよび回答音データテーブルＡＮＤＴが設けられる。これらテーブルの構成については追って詳述する。ＲＡＭ３のバッファエリアには、後述する再生開始処理や判定処理で用いられる各種バッファが設けられる。
【００２４】
ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、電子楽器２０にＭＩＤＩデータをシリアル転送したり、電子楽器２０側から送出されるＭＩＤＩデータを取り込む。マウス５は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード６はキー入力操作に応じたキーイベントを発生する。表示部７はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて、後述する回答画面ＲＧなどを画面表示する。
【００２５】
（３）回答画面ＲＧの構成
次に、図２を参照して回答画面ＲＧの構成を説明する。回答画面ＲＧは、後述するメインルーチンを実行した際に表示部７に画面表示される画面であり、その一例を図２に図示する。図２において、Ｅ１は回答操作に用いる鍵盤表示エリアであり、聴いた音と同じ音高と判断した鍵をマウス５でクリック操作する。Ｅ２は１フレーズ分の出題音を音符表示する出題表示エリアである。Ｅ３は回答入力した内容を楽譜表示する回答表示エリアである。Ｅ４は問題回答の正解数で算出される得点を表示する得点表示エリアである。なお、本実施形態では、回答入力として、上記鍵盤表示エリアＥ１を用いた回答、キーボード６のキー操作による回答あるいは電子楽器２０が備える鍵盤を用いた回答を可能にしている。
【００２６】
ＩＣ１〜ＩＣ７はそれぞれマウス５によりクリック操作されるアイコンである。リズム問題アイコンＩＣ１はクリック操作に応じてリズム問題の開始を指示するイベントを発生する。音程問題アイコンＩＣ２はクリック操作に応じて音程問題の開始を指示するイベントを発生する。組合せ問題アイコンＩＣ３はクリック操作に応じて組合せ問題（和音問題）の開始を指示するイベントを発生する。もう一度聞くアイコンＩＣ４はクリック操作に応じて出題音の再発音を指示するイベントを発生する。やめるアイコンＩＣ５はクリック操作に応じて回答キャンセルを指示するイベントを発生する。次の問題へアイコンＩＣ６はクリック操作に応じて設問更新を指示するイベントを発生する。決定アイコンＩＣ７はクリック操作に応じて回答決定を指示するイベントを発生する。
【００２７】
（４）データ構造
次に、図３〜図５を参照して、ＲＡＭ３のデータエリアに格納される課題情報管理テーブルＡＳＴ、課題音管理テーブルＡＮＴおよび回答音データテーブルＡＮＤＴのデータ構造を説明する。
【００２８】
図３は課題情報管理テーブルＡＳＴのデータ構造を示すメモリマップである。課題情報管理テーブルＡＳＴは、課題の内容を表す課題データａｓｓｉｇｎ［０］〜ａｓｓｉｇｎ［ｎ］から構成される。一つの課題データａｓｓｉｇｎ［ｉ］は、課題番号ａｓｓｉｇｎ＃（ａｓｓｉｇｎ［ｉ］［０］）、回答制限時間ｌｉｍｉｔ（ａｓｓｉｇｎ［ｉ］［１］）、出題音数ｉＮｏｔｅ（ａｓｓｉｇｎ［ｉ］［２］）およびポインタｐＮｏｔｅ（ａｓｓｉｇｎ［ｉ］［３］）を有する。後述する課題音管理テーブルＡＮＴでは、課題番号ａｓｓｉｇｎ＃で指定される複数の課題音データａｓＮｏｔｅを記憶しており、その内の先頭の課題音データａｓＮｏｔｅをポインタｐＮｏｔｅで指定する。
【００２９】
図４は課題音管理テーブルＡＮＴのデータ構造を示すメモリマップである。課題音管理テーブルＡＮＴは、上述した課題データａｓｓｉｇｎで定義される課題音の属性を表す課題音データａｓＮｏｔｅ［０］〜ａｓＮｏｔｅ［ｎ］から構成される。一つの課題音データａｓＮｏｔｅ［ｉ］は、識別番号ａｓＮｏｔｅ＃（ａｓＮｏｔｅ［ｉ］［０］）、課題番号ａｓｓｉｇｎ＃（ａｓＮｏｔｅ［ｉ］［１］）、音高ｐｉｔｃｈ（ａｓＮｏｔｅ［ｉ］［２］）、再生開始時点からの経過時間で表される発音タイミングｔｉｍｅ＿ｏｎ（ａｓＮｏｔｅ［ｉ］［３］）、再生開始時点からの経過時間で表される消音タイミングｔｉｍｅ＿ｏｆｆ（ａｓＮｏｔｅ［ｉ］［４］）、発音時間を表す音長ｔｉｍｅ＿ｇａｔｅ（ａｓＮｏｔｅ［ｉ］［５］）、次に再生する課題音を指定するポインタｐＮｅｘｔＮｏｔｅ（ａｓＮｏｔｅ［ｉ］［６］）、処理状態を表すステイタスｓｔａｔｕｓ（ａｓＮｏｔｅ［ｉ］［７］）および課題音の音量を表すベロシティｖｅｌｏｃｉｔｙ（ａｓＮｏｔｅ［ｉ］［８］）を有する。なお、処理状態を表すステイタスｓｔａｔｕｓは、「０」の場合に未発音、「１」の場合に発音中、「２」の場合に発音完了を表す。
【００３０】
図５は回答音データテーブルＡＮＤＴのデータ構造を示すメモリマップである。回答音データテーブルＡＮＤＴは、上述した課題情報管理テーブルＡＳＴ（図３参照）を用いて出題された課題音について回答した回答音を格納するテーブルであり、回答音データａｎｓＮｏｔｅ［０］〜ａｎｓＮｏｔｅ［ｎ］から構成される。一つ回答音データａｎｓＮｏｔｅ［ｉ］は、識別番号ａｓＮｏｔｅ＃（ａｎｓＮｏｔｅ［ｉ］［０］）、課題番号ａｓｓｉｇｎ＃（ａｎｓＮｏｔｅ［ｉ］［１］）、音高ｐｉｔｃｈ（ａｎｓＮｏｔｅ［ｉ］［２］）、再生開始時点からの経過時間で表される発音タイミングｔｉｍｅ＿ｏｎ（ａｎｓＮｏｔｅ［ｉ］［３］）、再生開始時点からの経過時間で表される消音タイミングｔｉｍｅ＿ｏｆｆ（ａｎｓＮｏｔｅ［ｉ］［４］）、発音時間を表す音長ｔｉｍｅ＿ｇａｔｅ（ａｎｓＮｏｔｅ［ｉ］［５］）、対応する課題音データを示す課題音番号ＨｉｔＯｒｇ（ａｎｓＮｏｔｅ［ｉ］［６］）、課題音の音長と回答音の音長との比を表す音長比ｇａｔｅ＿ｒａｔｉｏ（ａｎｓＮｏｔｅ［ｉ］［７］）および回答音の音量を表すベロシティｖｅｌｏｃｉｔｙ（ａｎｓＮｏｔｅ［ｉ］［８］）を有する。
【００３１】
Ｂ．第１の実施形態の動作
次に、図６〜図１９を参照して第１の実施形態の動作について説明する。以下では、最初にメインルーチンの動作を説明した後、メインルーチンからコールされる再生開始処理、回答処理および判定処理の各動作について順次説明して行く。
【００３２】
（１）メインルーチンの動作
ＤＴＭ装置１０において、メインルーチンが実行されると、ＣＰＵ１は図６に示すステップＳＡ１に進み、装置各部を初期化するイニシャライズを行った後、ステップＳＡ２に進む。ステップＳＡ２では、ＲＯＭ２のデータエリアから画面データを読み出して回答画面ＲＧ（図２参照）を表示部７に画面表示する。次いで、ステップＳＡ３では、選択された課題種別を表すフラグＭＯＮＤＡＩＦに「０」をセットする。フラグＭＯＮＤＡＩＦは、後述するように、回答画面ＲＧのリズム問題アイコンＩＣ１をクリック操作して「リズム問題」を選択した場合に「０」が、音程問題アイコンＩＣ２をクリック操作して「音程問題」を選択した場合に「１」が、組合せ問題アイコンＩＣ３をクリック操作して「組合せ問題」を選択した場合に「２」がセットされる。したがって、このステップＳＡ３では、「リズム問題」をデフォルトとして選択するようフラグＭＯＮＤＡＩＦに「０」をセットしている。
【００３３】
次に、ステップＳＡ４では、デフォルトとして「リズム問題」が選択された状態を表すため、回答画面ＲＧのリズム問題アイコンＩＣ１を強調表示する。そして、ステップＳＡ５に進むと、ポインタｉａｓｓｉｇｎをゼロリセットし、続くステップＳＡ６では、再生開始処理を実行する。再生開始処理では、後述するように、課題情報管理テーブルＡＳＴ中でポインタｉａｓｓｉｇｎに対応した課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］が指定する出題音数分の課題音データを課題音管理テーブルＡＮＴを参照して再生するようになっている。
【００３４】
次いで、ステップＳＡ７では、回答処理を実行する。回答処理では、後述するように、回答制限時間ｌｉｍｉｔ（ａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［１］）以内の回答操作が行われた場合、その操作に応じて生じる回答音のノートオン属性（音高ｐｉｔｃｈ、発音タイミングｔｉｍｅ＿ｏｎ、ベロシティｖｅｌｏｃｉｔｙ、識別番号ａｓＮｏｔｅ＃および課題番号ａｓｓｉｇｎ＃）とノートオフ属性（消音タイミングｔｉｍｅ＿ｏｆｆ）とを回答音データテーブルＡＮＤＴに登録する。
【００３５】
そして、ステップＳＡ８以降では回答画面ＲＧ（図２参照）のアイコン操作に対応した処理を実行する。以下、決定アイコンＩＣ７をクリック操作した場合、リズム問題アイコンＩＣ１をクリック操作した場合、音程問題アイコンＩＣ２をクリック操作した場合、組合せ問題アイコンＩＣ３をクリック操作した場合、もう一度聞くアイコンＩＣ４をクリック操作した場合、次の問題へアイコンＩＣ６をクリック操作した場合およびやめるアイコンＩＣ５をクリック操作した場合に分け、各場合の動作を述べる。
【００３６】
ａ．決定アイコンＩＣ７をクリック操作した場合
例えばデフォルトとして選択された「リズム問題」の課題音が再生され、それに対応する回答音を入力し終えた後、決定アイコンＩＣ７をクリック操作したとする。そうすると、ステップＳＡ８の判断結果が「ＹＥＳ」となり、ＣＰＵ１は図７のステップＳＡ９を介して判定処理を実行する。判定処理では、後述するように、再生された課題音と回答入力された回答音とを比較し、その結果に基づき算出される得点を回答画面ＲＧの得点表示エリアＥ４に表示する。
【００３７】
ｂ．リズム問題アイコンＩＣ１をクリック操作した場合
リズム問題アイコンＩＣ１をクリック操作すると、ステップＳＡ１０の判断結果が「ＹＥＳ」となり、ステップＳＡ１１に進み、フラグＭＯＮＤＡＩＦに「０」をセットする。そして、ステップＳＡ１２では、「リズム問題」が選択された状態を表すため、回答画面ＲＧのリズム問題アイコンＩＣ１を強調表示した後、図８のステップＳＡ１９に進む。
【００３８】
ｃ．音程問題アイコンＩＣ２をクリック操作した場合
音程問題アイコンＩＣ２をクリック操作すると、ステップＳＡ１３の判断結果が「ＹＥＳ」となり、ステップＳＡ１４に進み、フラグＭＯＮＤＡＩＦに「１」をセットする。そして、ステップＳＡ１５では、「音程問題」が選択された状態を表すため、回答画面ＲＧの音程問題アイコンＩＣ２を強調表示した後、図８のステップＳＡ１９に進む。
【００３９】
ｄ．組合せ問題アイコンＩＣ３をクリック操作した場合
組合せ問題アイコンＩＣ３をクリック操作すると、図８のステップＳＡ１６の判断結果が「ＹＥＳ」となり、ステップＳＡ１７に進み、フラグＭＯＮＤＡＩＦに「２」をセットする。そして、ステップＳＡ１８では、「組合せ問題」が選択された状態を表すため、回答画面ＲＧの組合せ問題アイコンＩＣ３を強調表示した後、ステップＳＡ１９に進む。
【００４０】
ｅ．もう一度聞くアイコンＩＣ４をクリック操作した場合
もう一度聞くアイコンＩＣ４をクリック操作すると、ステップＳＡ１９の判断結果が「ＹＥＳ」となり、図６のステップＳＡ６を介して再生開始処理を実行する。この場合、前回再生した課題音、つまり前回と同一のポインタｉａｓｓｉｇｎに対応した課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］が指定する出題音数分の課題音データを再生する。
【００４１】
ｆ．次の問題へアイコンＩＣ６をクリック操作した場
次の問題へアイコンＩＣ６をクリック操作すると、ステップＳＡ２０の判断結果が「ＹＥＳ」になり、ステップＳＡ２１に進み、ポインタｉａｓｓｉｇｎをインクリメントして歩進させてから図６のステップＳＡ６を介して再生開始処理を実行する。
【００４２】
ｇ．やめるアイコンＩＣ５をクリック操作した場合
やめるアイコンＩＣ５をクリック操作すると、ステップＳＡ２２の判断結果が「ＹＥＳ」となり、メインルーチンを完了させる。
【００４３】
（２）再生開始処理の動作
次に、図９〜図１１を参照して再生開始処理の動作を説明する。上述したメインルーチンのステップＳＡ６を介して本処理が実行されると、ＣＰＵ１は図９に示すステップＳＢ１に処理を進め、ＲＡＭ３のバッファエリアに設けられるノートオフバッファＯｆｆＢｕｆを初期化する。次に、ステップＳＢ２では、レジスタｐｌａｙｓｔａｒｔに現時刻をストアする。次いで、ステップＳＢ３に進むと、課題情報管理テーブルＡＳＴ（図３参照）において、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。ステップＳＢ４〜ＳＢ５では、検索ポインタｉＯｆｆＣｎｔ、ｉＯｆｆＢｕｆＣｎｔをそれぞれゼロリセットする。続いて、ステップＳＢ６では、ポインタｉａｓｓｉｇｎに対応した課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［２］の出題音数ｉＮｏｔｅと検索ポインタｉＯｆｆＣｎｔとが一致したか否か、つまり出題し終えたかどうかを判断する。
【００４４】
出題音数ｉＮｏｔｅ分の出題音を発音し終えていなければ、判断結果は「ＮＯ」になり、図１０のステップＳＢ７に処理を進める。ステップＳＢ７では、現時刻からレジスタｐｌａｙｓｔａｒｔにストアされた時刻を減算してレジスタｎｏｗＴｉｍｅにストアする。以後、レジスタｎｏｗＴｉｍｅを再生時刻ｎｏｗＴｉｍｅと称す。そして、ステップＳＢ８に進むと、再生時刻ｎｏｗＴｉｍｅが、課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［３］の発音タイミングｔｉｍｅ＿ｏｎを過ぎているか否かを判断する。以下、再生時刻ｎｏｗＴｉｍｅが発音タイミングｔｉｍｅ＿ｏｎを過ぎている場合と過ぎていない場合とに分けて動作説明を進める。
【００４５】
＜発音タイミングｔｉｍｅ＿ｏｎを過ぎている場合＞
再生時刻ｎｏｗＴｉｍｅが発音タイミングｔｉｍｅ＿ｏｎを過ぎていると、ステップＳＢ８の判断結果は「ＹＥＳ」になり、ステップＳＢ９に進む。ステップＳＢ９では、音高ｐｉｔｃｈ（ａｓＮｏｔｅ［ｐＮｏｔｅ］［２］）、音長ｔｉｍｅ＿ｇａｔｅ（ａｓＮｏｔｅ［ｐＮｏｔｅ］［５］）およびベロシティｖｅｌｏｃｉｔｙ（ａｓＮｏｔｅ［ｐＮｏｔｅ］［８］）を含む課題音のノートオンイベントを生成し、これをＭＩＤＩインタフェース４を介して電子楽器２０側に送出して当該課題音を再生させる。
【００４６】
こうして課題音を再生させると、ＣＰＵ１はステップＳＢ１０に処理を進め、処理状態を表すステイタスｓｔａｔｕｓ（ａｓＮｏｔｅ［ｐＮｏｔｅ］［７］）に、発音中を表す値「１」をセットする。次に、ステップＳＢ１１では、ポインタｉＯｆｆＢｕｆＣｎｔをインクリメントして歩進させ、続くステップＳＢ１２では、この歩進されたポインタｉＯｆｆＢｕｆＣｎｔで指定されるノートオフバッファＯｆｆＢｕｆ［ｉＯｆｆＢｕｆＣｎｔ］にポインタｐＮｏｔｅをストアする。そして、ステップＳＢ１３では、次に再生する課題音を指定するポインタｐＮｅｘｔＮｏｔｅ（ａｓＮｏｔｅ［ｉ］［６］）を、ポインタｐＮｏｔｅにセットした後、図９のステップＳＢ６に処理を戻す。
【００４７】
＜発音タイミングｔｉｍｅ＿ｏｎを過ぎていない場合＞
再生時刻ｎｏｗＴｉｍｅが発音タイミングｔｉｍｅ＿ｏｎを過ぎていない場合には、前述したステップＳＢ８の判断結果が「ＮＯ」になり、図１１のステップＳＢ１４に進む。ステップＳＢ１４では、検索ポインタｉＯｆｆをゼロリセットする。次いで、ステップＳＢ１５では、検索ポインタｉＯｆｆに対応するノートオフバッファｏｆｆＢｕｆ［ｉＯｆｆ］に消音済みを表すＮＵＬＬデータが格納されているかどうかを判断する。消音済みを表すＮＵＬＬデータが格納されていると、判断結果は「ＮＯ」となり、図９のステップＳＢ６に処理を戻すが、消音済みを表すＮＵＬＬデータが格納されていなければ、判断結果は「ＹＥＳ」になり、次のステップＳＢ１６に進む。
【００４８】
ステップＳＢ１６では、再生時刻ｎｏｗＴｉｍｅが、ノートオフバッファｏｆｆＢｕｆ［ｉＯｆｆ］に格納されるポインタｐＮｏｔｅにより指定される課題音データａｓＮｏｔｅ［ｏｆｆＢｕｆ［ｉＯｆｆ］］［４］の消音タイミングｔｉｍｅ＿ｏｆｆを過ぎているか否かを判断する。再生時刻ｎｏｗＴｉｍｅが消音タイミングｔｉｍｅ＿ｏｆｆを過ぎていなければ、判断結果は「ＮＯ」となり、ステップＳＢ２２に進み、検索ポインタｉＯｆｆを歩進させた後、上述のステップＳＢ１５に処理を戻す。一方、再生時刻ｎｏｗＴｉｍｅが消音タイミングｔｉｍｅ＿ｏｆｆを過ぎていると、上記ステップＳＢ１６の判断結果が「ＹＥＳ」になり、ステップＳＢ１７に進む。
【００４９】
ステップＳＢ１７では、音高ｐｉｔｃｈ（ａｓＮｏｔｅ［ｏｆｆＢｕｆ［ｉＯｆｆ］］［２］）を含む課題音のノートオフイベントを生成し、これをＭＩＤＩインタフェース４を介して電子楽器２０側に送出して当該課題音を消音させる。こうして課題音を消音させると、ＣＰＵ１はステップＳＢ１８に処理を進め、処理状態を表すステイタスｓｔａｔｕｓ（ａｓＮｏｔｅ［ｏｆｆＢｕｆ［ｉＯｆｆ］］［７］）に、発音完了を表す値「２」をセットする。次いで、ステップＳＢ１９では、検索ポインタｉＯｆｆに対応するノートオフバッファｏｆｆＢｕｆ［ｉＯｆｆ］に消音済みを表すＮＵＬＬデータを登録する。そして、ステップＳＢ２０に進み、ポインタｉＯｆｆＢｕｆＣｎｔをデクリメントし、続くステップＳＢ２１ではポインタｉＯｆｆＣｎｔをインクリメントする。この後、ステップＳＢ２２にて検索ポインタｉＯｆｆをインクリメントして歩進させた後、上述のステップＳＢ１５に処理を戻す。
【００５０】
このように、再生開始処理では、課題情報管理テーブルＡＳＴ中でポインタｉａｓｓｉｇｎに対応した課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］が指定する出題音数分の課題音データを課題音管理テーブルＡＮＴから読み出し、読み出した課題音データの発音タイミングｔｉｍｅ＿ｏｎに達する毎にノートオンイベントを、消音タイミングｔｉｍｅ＿ｏｆｆに達する毎にノートオフイベントをそれぞれ電子楽器２０側に送出して課題音の発音／消音を指示し、出題音数分の再生が完了すると、図９に示すステップＳＢ６の判断結果が「ＹＥＳ」となり、本処理を完了させる。
【００５１】
（３）回答処理の動作
次に、図１２〜図１４を参照して回答処理の動作を説明する。前述したメインルーチンのステップＳＡ７（図６参照）を介して本処理が実行されると、ＣＰＵ１は図１２に示すステップＳＣ１に処理を進め、本処理で使用する一時バッファを初期化する。次いで、ステップＳＣ２では、回答音入力数をカウントする回答入力カウンタｉＡＣをゼロリセットし、続くステップＳＣ３では、レジスタＩＡｎＳｔａｒｔに現時刻をストアする。ステップＳＣ４では、回答入力カウンタｉＡＣの値が、出題音数ｉＮｏｔｅ（ａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［２］）に一致しないかどうか、つまり出題音数ｉＮｏｔｅ分の回答音が入力されたか否かを判断する。出題音数ｉＮｏｔｅ分の回答音が入力された場合には、判断結果が「ＮＯ」になり、本処理を完了させるが、そうでない場合には判断結果が「ＹＥＳ」になり、次のステップＳＣ５に進む。
【００５２】
ステップＳＣ５では、現時刻からレジスタＩＡｎＳｔａｒｔにストアされた時刻を減算してレジスタＮｏｗＴｉｍｅにストアする。以後、レジスタＮｏｗＴｉｍｅを回答時刻ＮｏｗＴｉｍｅと称す。そして、ステップＳＣ６に進むと、回答時刻ＮｏｗＴｉｍｅが回答制限時間ｌｉｍｉｔ（ａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［１］）を超えているか否かを判断する。回答時刻ＮｏｗＴｉｍｅが回答制限時間ｌｉｍｉｔを超えると、判断結果は「ＹＥＳ」となり、本処理を完了させる。これに対し、回答時刻ＮｏｗＴｉｍｅが回答制限時間ｌｉｍｉｔを超えなければ、判断結果が「ＮＯ」になり、図１３のステップＳＣ７に処理を進める。
【００５３】
ステップＳＣ７〜ＳＣ９では、回答操作の種別を判別する。すなわち、ステップＳＣ７では音高指定用に割当てられたキーボード６のキー操作であるか否かを判断し、ステップＳＣ８では回答画面ＲＧに表示される鍵盤表示エリアＥ１において出題音と同じ音高と判断した鍵をマウス５でクリックするマウス操作であるか否かを判断し、ステップＳＣ９では電子楽器２０側に配設される鍵盤の鍵操作で発生するＭＩＤＩノートイベント入力であるか否かを判断する。
【００５４】
次に、ステップＳＣ１０に進むと、ＣＰＵ１は回答操作に応じて発生したイベントに含まれる音高およびベロシティを、それぞれレジスタｐｉｔｃｈ、レジスタＶｅｌにストアする。なお、回答操作をキー操作もしくはマウス操作で行った場合には予め設定される所定のベロシティを発生させるようにしている。続いて、ステップＳＣ１１では、回答操作に応じて発生したイベントがノートオンイベントであるかどうかを判断する。ノートオンイベントであると、判断結果は「ＹＥＳ」になり、ステップＳＣ１２に進み、フラグＩｓＮｏｔｅＯｎに「１」をセットしてノートオンイベントである旨を表す。
【００５５】
一方、ノートオフイベントであれば、上記ステップＳＣ１１の判断結果が「ＮＯ」となり、ステップＳＣ１３に進み、フラグＩｓＮｏｔｅＯｎに「０」をセットしてノートオフイベントである旨を表す。そして、ステップＳＣ１４では、フラグＩｓＮｏｔｅＯｎが「１」、つまり回答操作がノートオンイベントであるかどうかを判断する。以下、回答操作が発音を指示するノートオンイベントの場合と、消音を指示するノートオフイベントの場合とに分けて動作説明を進める。
【００５６】
＜ノートオンイベントの場合＞
回答操作が発音を指示するノートオンイベントであると、ステップＳＣ１４の判断結果が「ＹＥＳ」になり、ステップＳＣ１５以降に処理を進める。ステップＳＣ１５〜ＳＣ１９では、入力される回答音のノートオン属性を回答音データテーブルＡＮＤＴ（図５参照）に登録する。すなわち、ステップＳＣ１５では、レジスタｐｉｔｃｈに格納される音高を、回答入力カウンタｉＡＣの値に対応した回答音データａｎｓＮｏｔｅ［ｉＡＣ］［２］（音高ｐｉｔｃｈ）にストアする。ステップＳＣ１６では、回答時刻ＮｏｗＴｉｍｅを回答音データａｎｓＮｏｔｅ［ｉＡＣ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）にストアする。
【００５７】
ステップＳＣ１７では、レジスタＶｅｌに格納されるベロシティを回答音データａｎｓＮｏｔｅ［ｉＡＣ］［８］（ベロシティｖｅｌｏｃｉｔｙ）にストアする。ステップＳＣ１８では、回答入力カウンタｉＡＣの値を回答音データａｎｓＮｏｔｅ［ｉＡＣ］［０］（識別番号ａｓＮｏｔｅ＃）にストアする。ステップＳＣ１９では、ポインタｉａｓｓｉｇｎの値を回答音データａｎｓＮｏｔｅ［ｉＡＣ］［１］（課題番号ａｓｓｉｇｎ＃）にストアする。そして、この後、ステップＳＣ２０に進み、回答入力カウンタｉＡＣを歩進させてから前述したステップＳＣ４（図１２参照）に処理を戻す。
【００５８】
＜ノートオフイベントの場合＞
さて一方、回答操作が消音を指示するノートオンイベントであると、ステップＳＣ１４の判断結果が「ＮＯ」になり、ＣＰＵ１は図１４のステップＳＣ２１以降に処理を進め、入力される回答音のノートオフ属性を回答音データテーブルＡＮＤＴに登録する。すなわち、ステップＳＣ２１では、検索ポインタｉをゼロリセットし、続くステップＳＣ２２〜ＳＣ２５では、回答入力カウンタｉＡＣの値に達するまで検索ポインタｉを歩進させながら、回答音データテーブルＡＮＤＴ中でａｎｓＮｏｔｅ［ｉ］［４］（消音タイミングｔｉｍｅ＿ｏｆｆ）が空き状態（ＮＵＬＬ）の回答音データを検索し、該当する回答音データａｎｓＮｏｔｅ［ｉ］［４］に、消音タイミングとなる回答時刻ＮｏｗＴｉｍｅをストアした後、前述したステップＳＣ４（図１２参照）に処理を戻す。
【００５９】
このように、回答処理では、回答制限時間ｌｉｍｉｔ（ａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［１］）以内に回答音を入力する操作（キー操作、マウス操作およびＭＩＤＩ入力のいずれか）が行われると、その操作のイベントがノートオンイベントであれば、回答音のノートオン属性（音高ｐｉｔｃｈ、発音タイミングｔｉｍｅ＿ｏｎ、ベロシティｖｅｌｏｃｉｔｙ、識別番号ａｓＮｏｔｅ＃および課題番号ａｓｓｉｇｎ＃）を回答音データテーブルＡＮＤＴに登録し、一方、ノートオフイベントであると、回答音のノートオフ属性（消音タイミングｔｉｍｅ＿ｏｆｆ）を回答音データテーブルＡＮＤＴに登録するようになっている。
【００６０】
（４）判定処理の動作
次に、図１５〜図１９を参照して判定処理の動作を説明する。前述したメインルーチンのステップＳＡ９（図７参照）を介して本処理が実行されると、ＣＰＵ１は図１５に示すステップＳＤ１に処理を進め、フラグＭＯＮＤＡＩＦの値を判定する。フラグＭＯＮＤＡＩＦの値が「０」の場合には、ステップＳＤ２を介してリズム判定処理を実行する。フラグＭＯＮＤＡＩＦの値が「１」の場合には、ステップＳＤ３を介して音階判定処理を実行する。フラグＭＯＮＤＡＩＦの値が「２」の場合には、ステップＳＤ４を介して組合せ判定処理を実行する。以下、これら各判定処理の動作を述べる。
【００６１】
ａ．音階判定処理の動作
次に、図１６を参照して音階判定処理の動作を説明する。図１５に示すステップＳＤ３を介して本処理が実行されると、ＣＰＵ１は図１６のステップＳＥ１に処理を進め、課題情報管理テーブルＡＳＴにおいて、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。続いて、ステップＳＥ２では、正解数をカウントするカウンタｉＨｉｔＣｎｔをゼロリセットする。ステップＳＥ３では、課題音管理テーブルＡＮＴ中からポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃を読み出してレジスタａｓＮｏｔｅにストアする。
【００６２】
次いで、ステップＳＥ４では、レジスタａｓＮｏｔｅにストアした識別番号ａｓＮｏｔｅ＃で指定される回答音データテーブルＡＮＤＴ中の回答音データａｎｓＮｏｔｅ［ａｓＮｏｔｅ］［２］と課題音管理テーブルＡＮＴ中の課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［２］とが一致するか、すなわち回答音の音高ｐｉｔｃｈと課題音の音高ｐｉｔｃｈとが一致するか否かを判断する。回答音の音高ｐｉｔｃｈと課題音の音高ｐｉｔｃｈとが一致する正解時には判断結果が「ＹＥＳ」になり、ステップＳＥ５に進み、カウンタｉＨｉｔＣｎｔを歩進させた後、ステップＳＥ６に進む。
【００６３】
一方、不正解時には上記ステップＳＥ４の判断結果が「ＮＯ」になり、ステップＳＥ６に進む。ステップＳＥ６では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅが、空き状態を表すデータＮＵＬＬでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＥ７に進み、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅをポインタｐＮｏｔｅにセットして次の課題音を指定するようにした後、上述のステップＳＥ３に進む。
【００６４】
以後、出題音数分の回答判定を繰り返し、全ての課題音について回答判定し終えると、ステップＳＥ６の判断結果が「ＮＯ」になり、ステップＳＥ８に進む。ステップＳＥ８では、カウンタｉＨｉｔＣｎｔが累算した正解数と、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［２］の出題音数ｉＮｏｔｅとの比から算出される正解率（得点）をレジスタｉＳｃｏｒｅにストアする。そして、ステップＳＥ９では、レジスタｉＳｃｏｒｅにストアされた正解率を回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。
【００６５】
ｂ．リズム判定処理の動作
次に、図１７を参照してリズム判定処理の動作を説明する。図１５に示すステップＳＤ２を介して本処理が実行されると、ＣＰＵ１は図１７のステップＳＦ１に処理を進め、回答数を累算するカウンタｉＨｉｔＣｎｔおよび回答操作のタイミング誤差率を累算するカウンタｆＳｕｍをそれぞれゼロリセットする。次に、ステップＳＦ２では、課題情報管理テーブルＡＳＴにおいて、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。次いで、ステップＳＦ３では、課題音管理テーブルＡＮＴ中からポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃を読み出してレジスタａｓＮｏｔｅにストアすると共に、その識別番号ａｓＮｏｔｅ＃を回答音データテーブルＡＮＤＴ中の回答音データａｎｓＮｏｔｅ［ａｓＮｏｔｅ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）にストアする。
【００６６】
続いて、ステップＳＦ４に進み、レジスタａｓＮｏｔｅにストアした識別番号ａｓＮｏｔｅ＃で指定される回答音データテーブルＡＮＤＴ中の回答音データａｎｓＮｏｔｅ［ａｓＮｏｔｅ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）と、課題音管理テーブルＡＮＴ中の課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）との差分絶対値を、課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［５］（音長ｔｉｍｅ＿ｇａｔｅ）で除して得る、回答操作のタイミング誤差率をレジスタｆｔｍｐにストアする。
【００６７】
そして、ステップＳＦ５では、回答数を累算するカウンタｉＨｉｔＣｎｔをインクリメントして歩進させ、続くステップＳＦ６ではレジスタｆｔｍｐに格納される回答操作のタイミング誤差率をカウンタｆＳｕｍに加算する。次いで、ステップＳＦ７では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅが、空き状態を表すデータＮＵＬＬでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＹＥＳ」になり、上述したステップＳＦ３に処理を戻す。
【００６８】
以後、ステップＳＦ３〜ステップＳＦ８を出題音数分繰り返し、全ての課題音について回答判定し終えると、ステップＳＦ７の判断結果が「ＮＯ」になり、ステップＳＦ９に進む。ステップＳＦ９では、１００×（１−ｆＳｕｍ／ｉＨｉｔＣｎｔ）から算出される得点をレジスタｉＳｃｏｒｅにストアし、続くステップＳＦ１０では、その得点を回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。
【００６９】
ｃ．組合せ判定処理の動作
次に、図１８〜図１９を参照して組合せ判定処理の動作を説明する。前述したステップＳＤ４（図１５参照）を介して本処理が実行されると、ＣＰＵ１は図１８のステップＳＧ１に処理を進め、課題情報管理テーブルＡＳＴにおいて、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。続いて、ステップＳＧ２では、正解数をカウントするカウンタｉＨｉｔＣｎｔをゼロリセットすると共に、課題音管理テーブルＡＮＴ中からポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃を読み出してレジスタａｓＮｏｔｅにストアする。
【００７０】
そして、ステップＳＧ３に進み、レジスタａｓＮｏｔｅにストアした識別番号ａｓＮｏｔｅ＃で指定される回答音データテーブルＡＮＤＴ中の回答音データａｎｓＮｏｔｅ［ａｓＮｏｔｅ］［２］と課題音管理テーブルＡＮＴ中の課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［２］とが一致するか、すなわち回答音の音高ｐｉｔｃｈと課題音の音高ｐｉｔｃｈとが一致するか否かを判断する。
課題音が和音構成の場合には、回答音を弾く順序によっては課題音の音高ｐｉｔｃｈと一致しない状況も起こり得る。そこで、本処理では先ずステップＳＧ３にて課題音に対する回答音の音高の一致・不一致を判断する。以下、一致した場合と、不一致の場合とに分けて動作説明を進める。
【００７１】
＜音高一致の場合＞
課題音と回答音との音高が一致すると、上記ステップＳＧ３の判断結果は「ＹＥＳ」になり、ステップＳＧ４に進む。ステップＳＧ４では、レジスタａｓＮｏｔｅに格納される識別番号ａｓＮｏｔｅ＃に対応した回答音データａｎｓＮｏｔｅ［ａｓＮｏｔｅ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）に、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃をストアする。次いで、ステップＳＧ５では、正解数をカウントするカウンタｉＨｉｔＣｎｔをインクリメントして歩進させ、続くステップＳＧ６では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅが、空き状態を表すデータＮＵＬＬでないか否か、すなわち全ての課題音について判定し終えたかどうかを判断する。
【００７２】
判定し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＧ７に進み、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅをポインタｐＮｏｔｅにセットして次の課題音を指定するようにした後、上述したステップＳＧ３に処理を戻す。
一方、全ての課題音について回答判定し終えると、上記ステップＳＧ６の判断結果が「ＮＯ」になり、ステップＳＧ８に進む。ステップＳＧ８では、カウンタｉＨｉｔＣｎｔが累算した正解数と、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［２］の出題音数ｉＮｏｔｅとの比から算出される正解率（得点）をレジスタｉＳｃｏｒｅにストアする。そして、ステップＳＧ９では、レジスタｉＳｃｏｒｅにストアされた正解率を回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。
【００７３】
＜音高不一致の場合＞
課題音と回答音との音高が不一致の場合には、上記ステップＳＧ３の判断結果が「ＮＯ」になり、図１９のステップＳＧ１０に進む。ステップＳＧ１０では、検索ポインタＫをゼロリセットする。そして、ステップＳＧ１１〜ＳＧ１４では、検索ポインタＫを歩進させながら、課題音番号ＨｉｔＯｒｇ（ａｎｓＮｏｔｅ［Ｋ］［６］）が未設定であって、しかも課題音と一致する音高の回答音データを回答音データテーブルＡＮＤＴ中から検索する。
【００７４】
つまり、和音を構成する問題音に合致する回答音であるかどうかを判断する。そして、和音を構成する問題音に合致する回答音であると、ステップＳＧ１２、ＳＧ１３の各判断結果が「ＹＥＳ」となり、ステップＳＧ１５に進み、検索ポインタＫに対応した回答音データａｎｓＮｏｔｅ［Ｋ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）に、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃をストアする。この後、ステップＳＧ１６に進み、正解数をカウントするカウンタｉＨｉｔＣｎｔをインクリメントして歩進させた後、図１８のステップＳＧ６に処理を戻す。このように、組合せ判定処理によれば、和音構成の課題音に対応した回答音について回答判定し得るようになっている。
【００７５】
以上のように、第１の実施形態では、回答画面ＲＧのアイコンＩＣ１〜ＩＣ３のクリック操作に応じて、楽音要素（リズム、音程および和音）別の課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］が選択される。そして、選択された楽音要素の課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］が指定する、例えば１フレーズ分の音符に対応した課題音データａｓＮｏｔｅを課題音管理テーブルＡＮＴから順次読み出して再生する。一連の課題音を再生し終えた後、回答制限時間ｌｉｍｉｔ以内に回答操作が行われると、その操作で入力された回答音の属性を回答音データテーブルＡＮＤＴに登録する。そして、回答入力を終えると、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を回答画面ＲＧの得点表示エリアＥ４に表示するので、実際の演奏に即した形で楽音要素（リズム、音程および和音）を判別する音楽的能力を教習することが可能になっている。
【００７６】
Ｃ．第２の実施形態の動作
次に、図２０〜図２５を参照して第２の実施形態を説明する。第２の実施形態では、第１の実施形態による判定処理とは異なるバリエーションとして、「ベロシティ判定処理」、「リズム判定処理」および「音階判定処理」の各動作を説明する。
【００７７】
（１）ベロシティ判定処理の動作
第１の実施形態と同様、メインルーチンのステップＳＡ９（図７参照）を介して図２０に図示するベロシティ判定処理が実行されると、ＣＰＵ１はステップＳＨ１に処理を進め、回答データテーブルＡＮＤＴに登録された回答音データの内、本処理の対象となる回答音データを読み出してバッファａｎｓ［０］〜ａｎｓ［ｎ］にコピーする。以下、このバッファａｎｓ［０］〜ａｎｓ［ｎ］の内容を回答音データａｎｓ［０］〜ａｎｓ［ｎ］と称す。次に、ステップＳＨ２に進むと、課題情報管理テーブルＡＳＴにおいて、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。
【００７８】
続いて、ステップＳＨ３では、回答音数をカウントするカウンタｉＨｉｔＣｎｔおよび検索ポインタｉをそれぞれゼロリセットする。そして、ステップＳＨ４では、課題音管理テーブルＡＮＴ中からポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃を読み出し、これを回答音データａｎｓ［ｉ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）にストアする。次いで、ステップＳＨ５では、検索ポインタｉで指定される回答音データａｎｓ［ｉ］［８］と課題音管理テーブルＡＮＴ中の課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［８］との比（ベロシティ比）をレジスタｒａｔｉｏ［ｉ］にストアする。
【００７９】
次に、ステップＳＨ６ではカウンタｉＨｉｔＣｎｔを歩進させ、続くステップＳＨ７では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅが、空き状態を表すデータＮＵＬＬでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＨ８に進み、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅをポインタｐＮｏｔｅにセットして次の課題音を指定する。次いで、ステップＳＨ９に進み、検索ポインタｉを歩進させた後、上述のステップＳＨ４に処理を戻す。
【００８０】
以後、ステップＳＨ７の判断結果が「ＮＯ」になるまでステップＳＨ４〜ＳＨ９を繰り返し、回答音毎のベロシティ比を求める。そして、出題音数分の回答判定を繰り返し、これにてベロシティ比ｒａｔｉｏ［ｉ］〜［ｎ］を算出し終えると、ステップＳＨ７の判断結果が「ＮＯ」になり、ステップＳＨ１０に進む。ステップＳＨ１０では、カウンタｉＨｉｔＣｎｔが累算した回答数およびベロシティ比ｒａｔｉｏ［ｉ］〜［ｎ］に基づきベロシティ比のばらつきの度合いを表す標準偏差を算出してレジスタｆｓｔＤｅｖにストアする。そして、ステップＳＨ１１では、（１−ｆｓｔＤｅｖ）×１００に基づき、レジスタｆｓｔＤｅｖにストアした標準偏差から得点ｉＳｃｏｒｅを算出する。ステップＳＨ１２では、得点ｉＳｃｏｒｅを回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。これにより、実際の演奏に即した形で楽音要素（ベロシティ）を判別する音楽的能力を教習することが可能になる。
【００８１】
（２）リズム判定処理の動作
次に、図２１を参照して第２の実施形態によるリズム判定処理の動作について説明する。第１の実施形態と同様、メインルーチンのステップＳＡ９（図７参照）を介して本処理が実行されると、ＣＰＵ１は図２１のステップＳＪ１を実行する。ステップＳＪ１では、検索ポインタｉ、回答音数をカウントするカウンタｉＨｉｔＣｎｔおよびをそれぞれゼロリセットすると共に、回答データテーブルＡＮＤＴに登録された回答音データの内、本処理の対象となる回答音データをバッファａｎｓ［０］〜ａｎｓ［ｎ］にコピーする。以下、このバッファａｎｓ［０］〜ａｎｓ［ｎ］の内容を回答音データａｎｓ［０］〜ａｎｓ［ｎ］と称す。
【００８２】
ステップＳＪ２では、課題情報管理テーブルＡＳＴにおいて、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。続いて、ステップＳＪ３では、課題音管理テーブルＡＮＴ中からポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃を読み出し、これを回答音データａｎｓ［ｉ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）にストアする。次いで、ステップＳＪ４では、検索ポインタｉで指定される回答音データａｎｓ［ｉ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）と、課題音管理テーブルＡＮＴ中の課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）との差分絶対値を、課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［５］（音長ｔｉｍｅ＿ｇａｔｅ）で除して得る、回答操作のタイミング誤差率をレジスタｆｔｍｐにストアする。
【００８３】
次に、ステップＳＪ５に進み、カウンタｉＨｉｔＣｎｔを歩進させ、続くステップＳＪ６では、レジスタｆｔｍｐに格納される回答操作のタイミング誤差率をカウンタｆＳｕｍに加算する。そして、ステップＳＪ７では、回答音の音長（ａｎｓ［ｉ］［４］−ａｎｓ［ｉ］［３］）を課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［５］（音長ｔｉｍｅ＿ｇａｔｅ）で除して得る、音長比ｇａｔｅ＿ｒａｔｉｏを回答音データａｎｓ［ｉ］［７］にストアする。
【００８４】
ステップＳＪ８では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅが、空き状態を表すデータＮＵＬＬでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＪ９に進み、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅをポインタｐＮｏｔｅにセットして次の課題音を指定する。次いで、ステップＳＪ１０に進み、検索ポインタｉを歩進させた後、上述のステップＳＪ３に処理を戻す。
【００８５】
以後、ステップＳＪ８の判断結果が「ＮＯ」になるまでステップＳＪ３〜ＳＪ１０を繰り返し、回答操作のタイミング誤差率を累算しつつ、各回答音毎の音長比ｇａｔｅ＿ｒａｔｉｏ（ａｎｓ［ｉ］［７］）を求める。そして、回答判定し終えると、ステップＳＪ８の判断結果が「ＮＯ」になり、ステップＳＪ１１に進む。ステップＳＪ１１では、回答データａｎｓ［０］［７］〜ａｎｓ［ｎ］［７］（ｎ＝ｉ）にセットされた音長比ｇａｔｅ＿ｒａｔｉｏのばらつきの度合いを表す標準偏差を算出してレジスタｆＳｔＤｅｖにストアする。続いて、ステップＳＪ１２では、１００×（１−ｆＳｕｍ／ｉＨｉｔＣｎｔ−ｆＳｔＤｅｖ）に基づき、回答操作の時間的なばらつきを勘案した得点ｉＳｃｏｒｅを算出する。そして、ステップＳＪ１３では、得点ｉＳｃｏｒｅを回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。これにより、実際の演奏に即した形で楽音要素（リズム）を判別する音楽的能力を教習することが可能になる。
【００８６】
（３）音階判定処理の動作
次に、図２２〜図２５を参照して第２の実施形態による音階判定処理の動作について説明する。第１の実施形態と同様、メインルーチンのステップＳＡ９（図７参照）を介して本処理が実行されると、ＣＰＵ１は図２２のステップＳＫ１に進み、回答データテーブルＡＮＤＴに登録された回答音データの内、本処理の対象となる回答音データをバッファａｎｓ［０］〜ａｎｓ［ｎ］にコピーする。以下、このバッファａｎｓ［０］〜ａｎｓ［ｎ］の内容を回答音データａｎｓ［０］〜ａｎｓ［ｎ］と称す。
【００８７】
ステップＳＪ２では、検索ポインタｉをゼロリセットすると共に、課題情報管理テーブルＡＳＴ中のポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［３］のポインタｐＮｏｔｅを読み出す。次いで、ステップＳＪ３では、そのポインタｐＮｏｔｅを、検索ポインタｉに対応した検知フラグＨｉｔＦｌｇ［ｉ］にストアする。
なお、検知フラグＨｉｔＦｌｇ［ｉ］は、後述するように、ポインタｐＮｏｔｅにて指定される課題音と音高／発音タイミングが一致する回答音を検出した場合に空き状態を表すＮＵＬＬデータがセットされる。したがって、ＮＵＬＬデータがセットされた検知フラグＨｉｔＦｌｇ［ｉ］は、課題音と音高／発音タイミングが一致する回答音を検出した状態を表すようになっている。
【００８８】
ステップＳＫ４では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［３］（発音タイミングｔｉｍｅ＿ｏｎ）をレジスタｔｍ＿Ｓｔａｒｔにストアし、続くステップＳＫ５では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［４］（消音タイミングｔｉｍｅ＿ｏｆｆ）にオフセットＯＦＦＳＥＴを加えてレジスタｔｍ＿ｅｎｄにストアする。ステップＳＫ６では、検索ポインタＫをゼロリセットする。
そして、図２２のステップＳＫ７〜図２３のステップＳＫ１２では、検索ポインタＫを歩進させながら、発音タイミングｔｉｍｅ＿ｏｎ（ａｎｓ［Ｋ］［３］）が許容範囲内（ｔｍ＿Ｓｔａｒｔ±ＯＦＦＳＥＴ）にあり、かつ課題音番号ＨｉｔＯｒｇ（ａｎｓ［Ｋ］［６］）が未設定であって、しかも課題音と一致する音高の回答音データを回答音データテーブルＡＮＤＴ中から検索する。
【００８９】
ここで、発音タイミングｔｉｍｅ＿ｏｎ（ａｎｓ［Ｋ］［３］）が許容範囲内で課題音番号ＨｉｔＯｒｇ（ａｎｓ［Ｋ］［６］）が未設定でありながら、課題音の音高と一致しない場合には、ステップＳＫ１０の判断結果が「ＮＯ」となり、ステップＳＫ１１に進み、仮検知バッファＨｉｔＢｕｆ［Ｋ］に課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃をストアする。この後、検索ポインタＫを歩進させて図２２のステップＳＫ７に処理を戻す。
【００９０】
一方、発音タイミングｔｉｍｅ＿ｏｎ（ａｎｓ［Ｋ］［３］）が許容範囲内にあり、かつ課題音番号ＨｉｔＯｒｇ（ａｎｓ［Ｋ］［６］）が未設定であって、しかも課題音と一致する音高の回答音データが検索されると、ステップＳＫ８〜ＳＫ１０の各判断結果は「ＹＥＳ」になり、ステップＳＫ１３に進み、検索ポインタＫに対応した回答音データａｎｓ［Ｋ］［６］（対応する課題音データを示す課題音番号ＨｉｔＯｒｇ）に、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃をストアする。次いで、ステップＳＫ１４では、検索ポインタｉに対応した検知フラグＨｉｔＦｌｇ［ｉ］にＮＵＬＬデータをセットして、課題音と音高／発音タイミングが一致する回答音を検出した状態を表した後、図２４に示すステップＳＫ１５に処理を進める。
【００９１】
なお、図２２のステップＳＫ７〜図２３のステップＳＫ１２において、検索ポインタＫが回答音入力数ｉＡＣを超えた場合、もしくは消音タイミングｔｉｍｅ＿ｏｆｆ（ａｎｓ［Ｋ］［４］）が判定値（レジスタｔｍ＿ｅｎｄ）を過ぎた回答音を読み出した場合には、図２２のステップＳＫ７の判断結果が「ＮＯ」になり、これら場合も図２４のステップＳＫ１５に処理を進める。
【００９２】
ステップＳＫ１５では、検索ポインタｉに対応した検知フラグＨｉｔＦｌｇ［ｉ］にＮＵＬＬデータがセットされているか否か、すなわち課題音と音高および発音タイミングが一致する回答音を検出したかどうかを判断する。検出していない場合には、判断結果が「ＮＯ」になり、後述するステップＳＫ２１に処理を進める。これに対し、課題音と音高および発音タイミングが一致する回答音を検出すると、判断結果は「ＹＥＳ」となり、ステップＳＫ１６に進む。そして、ステップＳＫ１６〜ＳＫ２０では、回答音入力数ｉＡＣを超えるまで当該検索ポインタＫを歩進させながら、課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［０］の識別番号ａｓＮｏｔｅ＃がストアされた仮検知バッファＨｉｔＢｕｆ［Ｋ］を検索し、該当する仮検知バッファＨｉｔＢｕｆ［Ｋ］にＮＵＬＬデータをストアしてバッファクリアを行い、これが完了すると、ステップＳＨ１７の判断結果が「ＮＯ」になり、ステップＳＫ２１に進む。
【００９３】
ステップＳＫ２１では、ポインタｐＮｏｔｅに対応した課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］（ポインタｐＮｅｘｔＮｏｔｅ）が、空き状態を表すデータＮＵＬＬでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＫ２２に進み、課題音データａｓＮｏｔｅ［ｐＮｏｔｅ］［６］のポインタｐＮｅｘｔＮｏｔｅをポインタｐＮｏｔｅにセットして次の課題音を指定する。次いで、ステップＳＫ２３では、検索ポインタｉをインクリメントして歩進させた後、図２２のステップＳＫ３に処理を戻す。以後、前述したステップＳＫ３〜ＳＫ２３を繰り返し実行して全ての課題音について回答判定し終えると、上記ステップＳＫ２１の判断結果が「ＮＯ」になり、図２５のステップＳＫ２４に進む。
【００９４】
ステップＳＫ２４〜ＳＫ２９では、出題音数ｉＮｏｔｅ（ａｓｓｉｇｎ［ｉ］［２］）を超えるまで検索ポインタｉを歩進させながら、ＮＵＬＬデータがセットされた検知フラグＨｉｔＦｌｇ［ｉ］を検索する毎に、正解数をカウントするカウンタｉＨｉｔＣｎｔをインクリメントする。つまり、適正な発音タイミングで正しく回答された回答音の数を累算する。そして、検索ポインタｉが出題音数ｉＮｏｔｅ（ａｓｓｉｇｎ［ｉ］［２］）を超えると、ステップＳＫ２６の判断結果が「ＮＯ」となり、ステップＳＫ３０に進み、カウンタｉＨｉｔＣｎｔが累算した正解数と、ポインタｉａｓｓｉｇｎで指定される課題データａｓｓｉｇｎ［ｉａｓｓｉｇｎ］［２］の出題音数ｉＮｏｔｅとの比から算出される正解率（得点）をレジスタｉＳｃｏｒｅにストアし、続くステップＳＫ３１ではレジスタｉＳｃｏｒｅにストアされた正解率を回答画面ＲＧの得点表示エリアＥ４に数値表示して本処理を終える。これにより、実際の演奏に即した形で楽音要素（発音タイミング、音高）を判別する音楽的能力を教習することが可能になる。
【図面の簡単な説明】
【００９５】
【図１】第１の実施形態の全体構成を示すブロック図である。
【図２】回答画面ＲＧの一例を示す図である。
【図３】課題情報管理テーブルＡＳＴに登録される課題情報データａｓｓｉｇｎのデータ構造を示す図である。
【図４】課題音管理テーブルＡＮＴに登録される課題音データａｓＮｏｔｅのデータ構造を示す図である。
【図５】回答音データテーブルＡＮＤＴに登録される回答音データａｎｓＮｏｔｅのデータ構造を示す図である。
【図６】メインルーチンの動作を示すフローチャートである。
【図７】メインルーチンの動作を示すフローチャートである。
【図８】メインルーチンの動作を示すフローチャートである。
【図９】再生開始処理の動作を示すフローチャートである。
【図１０】再生開始処理の動作を示すフローチャートである。
【図１１】再生開始処理の動作を示すフローチャートである。
【図１２】回答処理の動作を示すフローチャートである。
【図１３】回答処理の動作を示すフローチャートである。
【図１４】回答処理の動作を示すフローチャートである。
【図１５】判定処理の動作を示すフローチャートである。
【図１６】音階判定処理の動作を示すフローチャートである。
【図１７】リズム判定処理の動作を示すフローチャートである。
【図１８】組合せ判定処理の動作を示すフローチャートである。
【図１９】組合せ判定処理の動作を示すフローチャートである。
【図２０】第２の実施形態によるベロシティ判定処理の動作を示すフローチャートである。
【図２１】第２の実施形態によるリズム判定処理の動作を示すフローチャートである。
【図２２】第２の実施形態による音階判定処理の動作を示すフローチャートである。
【図２３】第２の実施形態による音階判定処理の動作を示すフローチャートである。
【図２４】第２の実施形態による音階判定処理の動作を示すフローチャートである。
【図２５】第２の実施形態による音階判定処理の動作を示すフローチャートである。
【符号の説明】
【００９６】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  キーボード
７  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2005049628.tif 000003
【図２】
2005049628.tif 000004
【図３】
2005049628.tif 000005
【図４】
2005049628.tif 000006
【図５】
2005049628.tif 000007
【図６】
2005049628.tif 000008
【図７】
2005049628.tif 000009
【図８】
2005049628.tif 000010
【図９】
2005049628.tif 000011
【図１０】
2005049628.tif 000012
【図１１】
2005049628.tif 000013
【図１２】
2005049628.tif 000014
【図１３】
2005049628.tif 000015
【図１４】
2005049628.tif 000016
【図１５】
2005049628.tif 000017
【図１６】
2005049628.tif 000018
【図１７】
2005049628.tif 000019
【図１８】
2005049628.tif 000020
【図１９】
2005049628.tif 000021
【図２０】
2005049628.tif 000022
【図２１】
2005049628.tif 000023
【図２２】
2005049628.tif 000024
【図２３】
2005049628.tif 000025
【図２４】
2005049628.tif 000026
【図２５】
2005049628.tif 000027