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