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