JP2005148269A - 音楽教習装置および音楽教習プログラム - Google Patents
音楽教習装置および音楽教習プログラム Download PDFInfo
- Publication number
- JP2005148269A JP2005148269A JP2003383478A JP2003383478A JP2005148269A JP 2005148269 A JP2005148269 A JP 2005148269A JP 2003383478 A JP2003383478 A JP 2003383478A JP 2003383478 A JP2003383478 A JP 2003383478A JP 2005148269 A JP2005148269 A JP 2005148269A
- Authority
- JP
- Japan
- Prior art keywords
- task
- sounds
- sound
- training
- rhythm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Electrically Operated Instructional Devices (AREA)
- Auxiliary Devices For Music (AREA)
Abstract
【課題】 聴き間違えが起こり易く苦手とする音高や音程の聴き取り能力を重点的に教習できる音楽教習装置を実現する。
【解決手段】 出題された一連の課題音データasNoteとそれらに対応して回答された一連の回答音データansNoteとを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する。その集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる。
【選択図】 図21
【解決手段】 出題された一連の課題音データasNoteとそれらに対応して回答された一連の回答音データansNoteとを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する。その集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる。
【選択図】 図21
Description
本発明は、パーソナルコンピュータを用いたDTM(デスクトップミュージック)装置や電子楽器などに用いて好適な音楽教習装置および音楽教習プログラムに関する。
音楽教習をする装置として、例えば特許文献1には、問題音(任意の音高の楽音)をランダムに放音出題する問題出題手段と、放音出題された問題音の音高を演奏操作で解答する解答手段と、解答が正解すると過去に放音出題した問題音の数に新たな問題音の数を加えた数の問題音を問題出題手段からランダムに出題させる問題出題制御手段とを備え、正解する毎に放音出題数を増加させてランダムに出題させることによって、絶対音感を効果的に向上させる技術が開示されている。
ところで、上記特許文献1に開示の音楽教習装置は、放音出題された問題音の音高を演奏操作で回答し、その回答が正解する毎に放音出題数を増加させるだけなので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習させることができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる音楽教習装置および音楽教習プログラムを提供することを目的としている。
そこで本発明は、このような事情に鑑みてなされたもので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる音楽教習装置および音楽教習プログラムを提供することを目的としている。
上記目的を達成するため、請求項1に記載の発明では、出題された一連の課題音とそれらに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成する訓練課題作成手段と、前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段とを具備することを特徴とする。
請求項2に記載の発明では、課題音の発音を指示して出題する出題手段と、前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段とを具備することを特徴とする。
請求項3に記載の発明では、課題音の発音を指示して出題する出題手段と、前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら2つの音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段とを具備することを特徴とする。
請求項4に記載の発明では、課題音の発音を指示して出題する出題手段と、前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、単純なリズムから複雑なリズムに難易度を変化させながら、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段とを具備することを特徴とする。
請求項5に記載の発明では、課題音の発音を指示して出題する出題手段と、前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音を各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、単純なリズムから複雑なリズムに難易度を変化させながら、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、前記訓練課題作成手段により作成された訓練課題音の発音を指示して出題する訓練課題出題手段とを具備することを特徴とする。
請求項6に記載の発明では、出題された一連の課題音とそれらに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成する訓練課題作成過程と、前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程とをコンピュータで実行させることを特徴とする。
請求項7に記載の発明では、課題音の発音を指示して出題する出題過程と、前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程とをコンピュータで実行させることを特徴とする。
請求項8に記載の発明では、課題音の発音を指示して出題する出題過程と、前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら2つの音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程とをコンピュータで実行させることを特徴とする。
請求項9に記載の発明では、課題音の発音を指示して出題する出題過程と、前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、単純なリズムから複雑なリズムに難易度を変化させながら、前記集計過程の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程とをコンピュータで実行させることを特徴とする。
請求項10に記載の発明では、課題音の発音を指示して出題する出題過程と、前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音を各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、単純なリズムから複雑なリズムに難易度を変化させながら、前記集計過程の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、前記訓練課題作成過程にて作成された訓練課題音の発音を指示して出題する訓練課題出題過程とをコンピュータで実行させることを特徴とする。
請求項1、6に記載の発明によれば、出題された一連の課題音とそれらに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計した結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる。
請求項2、7に記載の発明によれば、課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計し、その集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる。
請求項3、8に記載の発明によれば、課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計し、その集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら2つの音の音長をランダムに組合せた一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することができる。
請求項4、9に記載の発明によれば、課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計し、単純なリズムから複雑なリズムに難易度を変化させながら、集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とする単純なリズムから複雑なリズムまでの聴き取り能力を重点的に教習することができる。
請求項5、10に記載の発明によれば、課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音を各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計し、単純なリズムから複雑なリズムに難易度を変化させながら、集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら音の音長をランダムに組合せた一連の訓練課題音を作成して出題するので、聴き間違えが起こり易く苦手とする単純なリズムから複雑なリズムまでの聴き取り能力を重点的に教習することができる。
本発明による音楽教習装置および音楽教習プログラムは、周知の電子楽器もしくはパーソナルコンピュータを用いたDTM(デスクトップミュージック)装置などに適用され得る。以下では、本発明による最良の実施形態について図面を参照して説明する。
A.構成
(1)全体構成
図1は実施形態の全体構成を示すブロック図である。この図において、10は構成要素1〜7を備えたDTM(デクストップミュージック)装置、20はDTM装置10とMIDI接続される電子楽器である。電子楽器20は、DTM装置10からMIDI入力される課題音(もしくは訓練課題音)のノートデータを発音する一方、その発音された課題音(もしくは訓練課題音)を聴いたユーザの回答操作として鍵盤が押鍵された場合には、この押鍵された鍵に対応したノートデータを発生してDTM装置10にMIDI出力する。
(1)全体構成
図1は実施形態の全体構成を示すブロック図である。この図において、10は構成要素1〜7を備えたDTM(デクストップミュージック)装置、20はDTM装置10とMIDI接続される電子楽器である。電子楽器20は、DTM装置10からMIDI入力される課題音(もしくは訓練課題音)のノートデータを発音する一方、その発音された課題音(もしくは訓練課題音)を聴いたユーザの回答操作として鍵盤が押鍵された場合には、この押鍵された鍵に対応したノートデータを発生してDTM装置10にMIDI出力する。
DTM装置10は問題モードおよび分析モードを有する。問題モードで動作するDTM装置10は複数の課題音の再生を電子楽器20側に指示し、一連の課題音を再生し終えた後、回答制限時間以内に回答操作が行われた場合に、その操作で入力された回答音を保存する。回答入力を終えると、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を画面表示する他、出題された課題音および回答された回答音を表す課題履歴を作成してデータベース登録する。
一方、分析モードで動作するDTM装置10は、データベース登録された課題履歴を参照して聴き分けできるリズムと聴き間違えたリズムとを集計する。なお、ここで言うリズムとは、2つの音の並び(先行音の音長比と後続音の音長比)で定義される。次に、聴き分けできるリズムと聴き間違えたリズムとを集計した結果から聴き分けが「非常に得意」、「得意」、「普通」、「やや不得意」、「不得意」および「出題されていないリズム」を判定する。続いて、2つの音の並び(先行音の音長比と後続音の音長比)で決るリズムの難易度を変化させながら判定結果から聴き間違えが起こり易く苦手(やや不得意・不得意)なリズムを検索する。つまり、単純なリズムから徐々に複雑なリズムに移行させる過程で、指定のリズムが苦手(やや不得意・不得意)なリズムに該当するか否かを判定結果から検索する。そして、この検索で得られた、聴き間違えが起こり易く苦手なリズムの訓練課題音を作成し、作成した訓練課題音の再生/回答を行うことで聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習させる。
(2)DTM装置10の構成
次に、図1を参照してDTM装置10の構成を説明する。図1において、1は装置各部を制御するCPUであり、本発明の要旨にかかわる処理動作については追って詳述する。2はプログラムエリアおよびデータエリアを有するROMである。ROM2のプログラムエリアには、CPU1が実行するメインルーチン、再生開始処理、回答処理、リズム判定処理および分析処理を含む各種制御プログラムが記憶される。ROM2のデータエリアには、後述のメインルーチンを実行した際に表示部7に画面表示される問題モード画面TMGおよび分析モード画面AMGの画面データが記憶される。問題モード画面TMGおよび分析モード画面AMGの構成については追って詳述する。
次に、図1を参照してDTM装置10の構成を説明する。図1において、1は装置各部を制御するCPUであり、本発明の要旨にかかわる処理動作については追って詳述する。2はプログラムエリアおよびデータエリアを有するROMである。ROM2のプログラムエリアには、CPU1が実行するメインルーチン、再生開始処理、回答処理、リズム判定処理および分析処理を含む各種制御プログラムが記憶される。ROM2のデータエリアには、後述のメインルーチンを実行した際に表示部7に画面表示される問題モード画面TMGおよび分析モード画面AMGの画面データが記憶される。問題モード画面TMGおよび分析モード画面AMGの構成については追って詳述する。
3はワークエリア、データエリアおよびバッファエリアを備えるRAMである。RAM3のワークエリアには、各種レジスタ・フラグデータが一時記憶される。RAM3のデータエリアには、課題情報管理テーブルT1、課題音管理テーブルT2、課題履歴管理データベースDB、回答音データテーブルT3、訓練課題情報管理テーブルT4および訓練課題音管理テーブルT5が設けられる。これらテーブルT1〜T5およびデータベースDBの構成については追って詳述する。RAM3のバッファエリアには、後述する再生開始処理やリズム判定処理で用いられる各種バッファが設けられる。
MIDIインタフェース4は、CPU1の制御の下に、電子楽器20にMIDIデータをシリアル転送したり、電子楽器20側から送出されるMIDIデータを取り込む。マウス5は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコンにマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード6はキー入力操作に応じたキーイベントを発生する。表示部7はLCDパネル等から構成され、CPU1から供給される表示制御信号に応じて、後述する問題モード画面TMGや分析モード画面AMGなどを画面表示する。
(3)画面構成
次に、図2〜図3を参照して問題モード画面TMGおよび分析モード画面AMGの構成を説明する。図2は問題モード画面TMGの一例を示す図である。問題モード画面TMGは後述する問題モード下で表示部7に画面表示される。図2において、E1は回答操作に用いる鍵盤表示エリアである。鍵盤表示エリアE1の回答操作とは、放音される課題音の音高に一致する鍵位置にマウスカーソルをポインティングさせてマウス5をクリックする操作を言う。E2は出題された課題音を音符表示する出題表示エリア、E3は回答操作に応じて入力された回答音を楽譜表示する回答表示エリアである。E4は問題回答の正解数で算出される得点を表示する得点表示エリアである。なお、本実施例では、上記の鍵盤表示エリアE1を用いた回答の他、キーボード6のキー操作による回答入力あるいは電子楽器20が備える鍵盤を用いた回答入力を可能にしている。
次に、図2〜図3を参照して問題モード画面TMGおよび分析モード画面AMGの構成を説明する。図2は問題モード画面TMGの一例を示す図である。問題モード画面TMGは後述する問題モード下で表示部7に画面表示される。図2において、E1は回答操作に用いる鍵盤表示エリアである。鍵盤表示エリアE1の回答操作とは、放音される課題音の音高に一致する鍵位置にマウスカーソルをポインティングさせてマウス5をクリックする操作を言う。E2は出題された課題音を音符表示する出題表示エリア、E3は回答操作に応じて入力された回答音を楽譜表示する回答表示エリアである。E4は問題回答の正解数で算出される得点を表示する得点表示エリアである。なお、本実施例では、上記の鍵盤表示エリアE1を用いた回答の他、キーボード6のキー操作による回答入力あるいは電子楽器20が備える鍵盤を用いた回答入力を可能にしている。
IC1〜IC6はそれぞれマウス5によりクリック操作されるアイコンである。問題アイコンIC1はクリック操作に応じて出題開始を指示するイベントを発生する。分析アイコンIC2はクリック操作に応じて分析モードへの遷移を指示するイベントを発生する。もう一度聞くアイコンIC3はクリック操作に応じて出題した課題音の再発音を指示するイベントを発生する。やめるアイコンIC4はクリック操作に応じて回答キャンセルを指示するイベントを発生する。次の問題へアイコンIC5はクリック操作に応じて設問更新を指示するイベントを発生する。決定アイコンIC6はクリック操作に応じて回答決定を指示するイベントを発生する。
図3は分析モード画面AMGの一例を示す図である。分析モード画面AMGは後述する分析モード下で表示部7に画面表示される。分析モード画面AMGでは、上述した問題モード画面TMGと同様、鍵盤表示エリアE1、出題表示エリアE2、回答表示エリアE3、もう一度聞くアイコンIC3、やめるアイコンIC4、次の問題へアイコンIC5および決定アイコンIC6を有する。分析モード画面AMGが問題モード画面TMGと相違する点は、音階レベル選択枠W1、リズムレベル選択枠W2およびアイコンIC7〜IC9を備えることにある。音階レベル選択枠W1およびリズムレベル選択枠W2は、問題モードに遷移する際の音階レベルおよびリズムレベルを選択する。テストアイコンIC7は、クリック操作に応じて、上記音階レベル選択枠W1およびリズムレベル選択枠W2にて選択された音階レベルおよびリズムレベルの問題モードに遷移するよう指示するイベントを発生する。訓練アイコンIC8は、クリック操作に応じて訓練課題の出題開始を指示するイベントを発生する。分析開始アイコンIC9は、クリック操作に応じて回答分析の開始を指示するイベントを発生する。
(4)データ構造
次に、図4〜図9を参照してRAM3のデータエリアに格納される課題情報管理テーブルT1、課題音管理テーブルT2、課題履歴管理データベースDB、回答音データテーブルT3、訓練課題情報管理テーブルT4および訓練課題音管理テーブルT5の各データ構造について説明する。
次に、図4〜図9を参照してRAM3のデータエリアに格納される課題情報管理テーブルT1、課題音管理テーブルT2、課題履歴管理データベースDB、回答音データテーブルT3、訓練課題情報管理テーブルT4および訓練課題音管理テーブルT5の各データ構造について説明する。
図4は課題情報管理テーブルT1のデータ構造を示すメモリマップである。課題情報管理テーブルT1は、課題の内容を表す課題データassign[0]〜assign[n]から構成される。一つの課題データassign[i]は、課題を識別する課題番号assign#(assign[i][0])、再生テンポtempo(assign[i][1])、回答制限時間limit(assign[i][2])、出題音数iNotes(assign[i][3])およびポインタpNote(assign[i][4])を有する。後述する課題音管理テーブルT2では、課題番号assign#で指定される複数の課題音データasNoteを記憶しており、その内の先頭の課題音データasNoteが上記ポインタpNote(assign[i][4])で指定されるようになっている。
図5は課題音管理テーブルT2のデータ構造を示すメモリマップである。課題音管理テーブルT2は、上述した課題データassignで定義される課題音の属性を表す課題音データasNote[0]〜asNote[n]から構成される。一つの課題音データasNote[i]は、識別番号asNote#(asNote[i][0])、課題番号assign#(asNote[i][1])、音高pitch(asNote[i][2])、再生開始時点からの経過時間で表される発音タイミングtime_on(asNote[i][3])、再生開始時点からの経過時間で表される消音タイミングtime_off(asNote[i][4])、音長を表すゲートタイムtime_gate(asNote[i][5])および次に再生する課題音データを指定するポインタpNextNote(asNote[i][6])を有する。
図6は課題履歴管理データベースDBのデータ構造を示すメモリマップである。課題履歴管理データベースDBは、出題した課題音とそれに回答した回答音とを履歴記憶するデータベースであり、課題履歴データtestHist[0]〜testHist[n]から構成される。一つの課題履歴データtestHist[i]は、識別番号Hist#(testHist[i][0])、課題番号assign#(testHist[i][1])、回答音数iNotes(testHist[i][2])、最初の回答音を指定するポインタpANote(testHist[i][3])および最初の課題音を指定するポインタpQNote(testHist[i][4])を有する。
図7は回答音データテーブルT3のデータ構造を示すメモリマップである。回答音データテーブルT3は、前述した課題情報管理テーブルT1(図4参照)を用いて出題された課題音について回答した回答音を格納するテーブルであり、回答音データansNote[0]〜ansNote[n]から構成される。一つ回答音データansNote[i]は、識別番号asNote#(ansNote[i][0])、課題番号assign#(ansNote[i][1])、音高pitch(ansNote[i][2])、再生開始時点からの経過時間で表される発音タイミングtime_on(ansNote[i][3])、再生開始時点からの経過時間で表される消音タイミングtime_off(ansNote[i][4])、音長time_gate(ansNote[i][5])、対応する課題音データを示す課題音番号HitOrg(ansNote[i][6])および次の回答音データを指定するポインタpNextNote(ansNote[i][7])を有する。
図8は訓練課題情報管理テーブルT4のデータ構造を示すメモリマップである。訓練課題情報管理テーブルT4は、訓練課題の内容を表す訓練課題データtrain[0]〜train[n]から構成される。一つの訓練課題データtrain[i]は、訓練課題番号train#(train[i][0])、再生テンポtempo(train[i][1])、回答制限時間limit(train[i][2])、出題音数iNotes(train[i][3])およびポインタpNote(train[i][4])を有する。後述する訓練課題音管理テーブルT5では、訓練課題番号train#で指定される複数の訓練課題音データtrNoteを記憶しており、その内の先頭の訓練課題音データtrNoteがポインタpNoteで指定されるようになっている。
図9は訓練課題音管理テーブルT5のデータ構造を示すメモリマップである。訓練課題音管理テーブルT5は、上述した訓練課題データtrainで定義される訓練課題音の属性を表す訓練課題音データtrNote[0]〜trNote[n]から構成される。一つの訓練課題音データtrNote[i]は、識別番号trNote#(trNote[i][0])、訓練課題番号train#(trNote[i][1])、音高pitch(trNote[i][2])、再生開始時点からの経過時間で表される発音タイミングtime_on(trNote[i][3])、再生開始時点からの経過時間で表される消音タイミングtime_off(trNote[i][4])および次に再生する訓練課題音データtrNoteを指定するポインタpNextNote(trNote[i][5])を有する。
B.動作
次に、図10〜図35を参照して上記構成による実施形態の動作について説明する。 (1)メインルーチンの動作
DTM装置10において、メインルーチンが実行されると、CPU1は図10に示すステップSA1に進み、装置各部を初期化するイニシャライズを行った後、ステップSA2に進む。ステップSA2では、ROM2のデータエリアから画面データを読み出して問題モード画面TMG(図2参照)を表示部7に画面表示する。次いで、ステップSA3では、動作モードを表すフラグMODEに「0」をセットする。フラグMODEは「0」の場合に問題モードを、「1」の場合に分析モードを表す。したがって、このステップSA3では、問題モードをデフォルト設定している。以下では、問題モード下のメインルーチンの動作と、分析モード下のメインルーチンの動作とに分けて説明を進める。
次に、図10〜図35を参照して上記構成による実施形態の動作について説明する。 (1)メインルーチンの動作
DTM装置10において、メインルーチンが実行されると、CPU1は図10に示すステップSA1に進み、装置各部を初期化するイニシャライズを行った後、ステップSA2に進む。ステップSA2では、ROM2のデータエリアから画面データを読み出して問題モード画面TMG(図2参照)を表示部7に画面表示する。次いで、ステップSA3では、動作モードを表すフラグMODEに「0」をセットする。フラグMODEは「0」の場合に問題モードを、「1」の場合に分析モードを表す。したがって、このステップSA3では、問題モードをデフォルト設定している。以下では、問題モード下のメインルーチンの動作と、分析モード下のメインルーチンの動作とに分けて説明を進める。
<問題モード下の動作>
問題モードでは、ステップSA4の判断結果が「YES」になり、ステップSA5以降を実行する。ステップSA5〜SA16では、問題モード画面TMGにおけるアイコン操作に対応した処理を実行する。以下、問題モード画面TMGに配設される「問題アイコンIC1」、「決定アイコンIC6」、「もう一度聞くアイコンIC3」、「次の問題へアイコンIC5」、「やめるアイコンIC4」および「分析アイコンIC2」をそれぞれクリック操作した場合に実行される各動作を説明する。
問題モードでは、ステップSA4の判断結果が「YES」になり、ステップSA5以降を実行する。ステップSA5〜SA16では、問題モード画面TMGにおけるアイコン操作に対応した処理を実行する。以下、問題モード画面TMGに配設される「問題アイコンIC1」、「決定アイコンIC6」、「もう一度聞くアイコンIC3」、「次の問題へアイコンIC5」、「やめるアイコンIC4」および「分析アイコンIC2」をそれぞれクリック操作した場合に実行される各動作を説明する。
a.問題アイコンIC1をクリック操作した場合
問題アイコンIC1をクリック操作すると、ステップSA5の判断結果が「YES」になり、ステップSA6に進み、ポインタiassignをゼロリセットする。続いて、ステップSA7では再生開始処理を実行する。再生開始処理では、後述するように、課題情報管理テーブルT1(図4参照)中でポインタiassignに対応した課題データassign[iassign]が指定する出題音数分の課題音データを課題音管理テーブルT2(図5参照)を参照して再生する。次いで、ステップSA8では回答処理を実行する。回答処理では、後述するように、回答制限時間limit(assign[iassign][2])以内の回答操作が行われた場合、その操作に応じて生じる回答音のノートオン属性(音高pitch、発音タイミングtime_on、識別番号asNote#および課題番号assign#)とノートオフ属性(消音タイミングtime_off)とを回答音データテーブルT3に登録する。そして、回答制限時間limitを超えると、課題情報管理テーブルT1および回答音データテーブルT3を参照して、回答操作を終えた課題音および回答音を表す課題履歴データtestHistを作成して課題履歴管理データベースDBに登録する。
問題アイコンIC1をクリック操作すると、ステップSA5の判断結果が「YES」になり、ステップSA6に進み、ポインタiassignをゼロリセットする。続いて、ステップSA7では再生開始処理を実行する。再生開始処理では、後述するように、課題情報管理テーブルT1(図4参照)中でポインタiassignに対応した課題データassign[iassign]が指定する出題音数分の課題音データを課題音管理テーブルT2(図5参照)を参照して再生する。次いで、ステップSA8では回答処理を実行する。回答処理では、後述するように、回答制限時間limit(assign[iassign][2])以内の回答操作が行われた場合、その操作に応じて生じる回答音のノートオン属性(音高pitch、発音タイミングtime_on、識別番号asNote#および課題番号assign#)とノートオフ属性(消音タイミングtime_off)とを回答音データテーブルT3に登録する。そして、回答制限時間limitを超えると、課題情報管理テーブルT1および回答音データテーブルT3を参照して、回答操作を終えた課題音および回答音を表す課題履歴データtestHistを作成して課題履歴管理データベースDBに登録する。
b.決定アイコンIC6をクリック操作した場合
問題アイコンIC1のクリック操作に応じて課題音が再生され、それに対応する回答音を入力し終えた後、決定アイコンIC6をクリック操作したとする。そうすると、ステップSA9の判断結果が「YES」となり、ステップSA10を介してリズム判定処理を実行する。リズム判定処理では、後述するように、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を問題モード画面TMG(図2参照)の得点表示エリアE4に数値表示する。
問題アイコンIC1のクリック操作に応じて課題音が再生され、それに対応する回答音を入力し終えた後、決定アイコンIC6をクリック操作したとする。そうすると、ステップSA9の判断結果が「YES」となり、ステップSA10を介してリズム判定処理を実行する。リズム判定処理では、後述するように、再生された課題音と回答入力された回答音との比較結果に基づき算出される得点を問題モード画面TMG(図2参照)の得点表示エリアE4に数値表示する。
c.もう一度聞くアイコンIC3をクリック操作した場合
もう一度聞くアイコンIC3をクリック操作すると、ステップSA11の判断結果が「YES」となり、上述したステップSA7に処理を戻して再び再生開始処理を実行する。この場合、前回再生した課題音、つまり前回と同一のポインタiassignに対応した課題データassign[iassign]が指定する出題音数分の課題音データを再生する。
もう一度聞くアイコンIC3をクリック操作すると、ステップSA11の判断結果が「YES」となり、上述したステップSA7に処理を戻して再び再生開始処理を実行する。この場合、前回再生した課題音、つまり前回と同一のポインタiassignに対応した課題データassign[iassign]が指定する出題音数分の課題音データを再生する。
d.次の問題へアイコンIC5をクリック操作した場合
次の問題へアイコンIC5をクリック操作すると、ステップSA12の判断結果が「YES」になり、ステップSA13に進み、ポインタiassignをインクリメントして歩進させてからステップSA7に処理を戻して再生開始処理を実行する。
次の問題へアイコンIC5をクリック操作すると、ステップSA12の判断結果が「YES」になり、ステップSA13に進み、ポインタiassignをインクリメントして歩進させてからステップSA7に処理を戻して再生開始処理を実行する。
e.やめるアイコンIC4をクリック操作した場合
やめるアイコンIC4をクリック操作すると、ステップSA16の判断結果が「YES」となり、メインルーチンを完了させる。
やめるアイコンIC4をクリック操作すると、ステップSA16の判断結果が「YES」となり、メインルーチンを完了させる。
f.分析アイコンIC2をクリック操作した場合
分析アイコンIC2をクリック操作すると、ステップSA14の判断結果が「YES」になり、ステップSA15に進み、フラグMODEを「1」にセットした後、前述したステップSA4に処理を戻す。そうすると、ステップSA4の判断結果が「NO」となり、図11に図示するステップSA17以降の分析モードに遷移する。
分析アイコンIC2をクリック操作すると、ステップSA14の判断結果が「YES」になり、ステップSA15に進み、フラグMODEを「1」にセットした後、前述したステップSA4に処理を戻す。そうすると、ステップSA4の判断結果が「NO」となり、図11に図示するステップSA17以降の分析モードに遷移する。
<分析モード下の動作>
分析モードでは、ステップSA4の判断結果が「NO」になり、図11に示すステップSA17に処理を進める。ステップSA17では、ROM2のデータエリアから画面データを読み出して分析モード画面AMG(図3参照)を表示部7に画面表示する。次いで、ステップSA18〜SA31では、分析モード画面AMGにおけるアイコン操作に対応した処理を実行する。以下、「訓練アイコンIC8」、「決定アイコンIC6」、「もう一度聞くアイコンIC3」、「次の問題へアイコンIC5」、「分析開始アイコンIC9」、「やめるアイコンIC4」および「テストアイコンIC7」をそれぞれクリック操作した場合に分けて各動作を説明する。
分析モードでは、ステップSA4の判断結果が「NO」になり、図11に示すステップSA17に処理を進める。ステップSA17では、ROM2のデータエリアから画面データを読み出して分析モード画面AMG(図3参照)を表示部7に画面表示する。次いで、ステップSA18〜SA31では、分析モード画面AMGにおけるアイコン操作に対応した処理を実行する。以下、「訓練アイコンIC8」、「決定アイコンIC6」、「もう一度聞くアイコンIC3」、「次の問題へアイコンIC5」、「分析開始アイコンIC9」、「やめるアイコンIC4」および「テストアイコンIC7」をそれぞれクリック操作した場合に分けて各動作を説明する。
a.訓練アイコンIC8をクリック操作した場合
訓練アイコンIC8をクリック操作すると、ステップSA18の判断結果が「YES」になり、ステップSA19に進み、ポインタitrainをゼロリセットする。続いて、ステップSA20では、訓練課題情報管理テーブルT4(図8参照)中でポインタitrainに対応した訓練課題データtrain[itrain]が指定する出題音数分の訓練課題音を、訓練課題音管理テーブルT5(図9参照)を参照して再生する再生開始処理を実行する。そして、ステップSA21では回答処理を実行する。分析モード下の回答処理では、後述するように、回答制限時間limit(assign[iassign][1])以内の回答操作が行われた場合、その操作に応じて生じる回答音のノートオン属性(音高pitch、発音タイミングtime_on、識別番号asNote#および課題番号assign#)とノートオフ属性(消音タイミングtime_off)とを回答音データテーブルT3に登録する。
訓練アイコンIC8をクリック操作すると、ステップSA18の判断結果が「YES」になり、ステップSA19に進み、ポインタitrainをゼロリセットする。続いて、ステップSA20では、訓練課題情報管理テーブルT4(図8参照)中でポインタitrainに対応した訓練課題データtrain[itrain]が指定する出題音数分の訓練課題音を、訓練課題音管理テーブルT5(図9参照)を参照して再生する再生開始処理を実行する。そして、ステップSA21では回答処理を実行する。分析モード下の回答処理では、後述するように、回答制限時間limit(assign[iassign][1])以内の回答操作が行われた場合、その操作に応じて生じる回答音のノートオン属性(音高pitch、発音タイミングtime_on、識別番号asNote#および課題番号assign#)とノートオフ属性(消音タイミングtime_off)とを回答音データテーブルT3に登録する。
b.決定アイコンIC6をクリック操作した場合
訓練アイコンIC8のクリック操作に応じて訓練課題音が再生され、それに対応する回答音を入力し終えた後、決定アイコンIC6をクリック操作したとする。そうすると、ステップSA22の判断結果が「YES」となり、ステップSA23に進み、ポインタitrainに対応する訓練課題音データtrNote[itrain]および回答音データansNote[itrain]を、分析モード画面AMGの出題表示エリアE2および回答表示エリアE3にそれぞれ画面表示する表示処理を実行する。
訓練アイコンIC8のクリック操作に応じて訓練課題音が再生され、それに対応する回答音を入力し終えた後、決定アイコンIC6をクリック操作したとする。そうすると、ステップSA22の判断結果が「YES」となり、ステップSA23に進み、ポインタitrainに対応する訓練課題音データtrNote[itrain]および回答音データansNote[itrain]を、分析モード画面AMGの出題表示エリアE2および回答表示エリアE3にそれぞれ画面表示する表示処理を実行する。
c.もう一度聞くアイコンIC3をクリック操作した場合
もう一度聞くアイコンIC3をクリック操作すると、ステップSA24の判断結果が「YES」となり、上述したステップSA20に処理を戻して再生開始処理を実行する。この場合、前回再生した訓練課題音、つまり前回と同一のポインタitrainに対応した訓練課題データtrain[itrain]が指定する出題音数分の訓練課題音データtrNoteを再生する。
もう一度聞くアイコンIC3をクリック操作すると、ステップSA24の判断結果が「YES」となり、上述したステップSA20に処理を戻して再生開始処理を実行する。この場合、前回再生した訓練課題音、つまり前回と同一のポインタitrainに対応した訓練課題データtrain[itrain]が指定する出題音数分の訓練課題音データtrNoteを再生する。
d.次の問題へアイコンIC5をクリック操作した場
次の問題へアイコンIC5をクリック操作すると、ステップSA25の判断結果が「YES」になり、ステップSA26に進み、ポインタitrainをインクリメントして歩進させてからステップSA20に処理を戻して再び再生開始処理を実行する。
次の問題へアイコンIC5をクリック操作すると、ステップSA25の判断結果が「YES」になり、ステップSA26に進み、ポインタitrainをインクリメントして歩進させてからステップSA20に処理を戻して再び再生開始処理を実行する。
e.分析開始アイコンIC9をクリック操作した場合
分析開始アイコンIC9をクリック操作すると、ステップSA27の判断結果が「YES」になり、ステップSA28に進み、分析処理(後述する)を実行した後、ステップSA18に処理を戻す。
分析開始アイコンIC9をクリック操作すると、ステップSA27の判断結果が「YES」になり、ステップSA28に進み、分析処理(後述する)を実行した後、ステップSA18に処理を戻す。
f.やめるアイコンIC4をクリック操作した場合
やめるアイコンIC4をクリック操作すると、ステップSA31の判断結果が「YES」となり、メインルーチンを完了させる。
やめるアイコンIC4をクリック操作すると、ステップSA31の判断結果が「YES」となり、メインルーチンを完了させる。
g.テストアイコンIC7をクリック操作した場合
テストアイコンIC7をクリック操作すると、ステップSA29の判断結果が「YES」になり、ステップSA30に進み、フラグMODEを「0」にセットする。この後、図12に示すステップSA32〜SA35に進み、分析モード画面AMG(図3参照)の音階レベル選択枠W1およびリズムレベル選択枠W2にてそれぞれ選択される音階レベルとリズムレベルとを所定レジスタにストアしてから図10に示すステップSA2に処理を戻し、問題モード画面TMGが画面表示される問題モードに遷移する。
テストアイコンIC7をクリック操作すると、ステップSA29の判断結果が「YES」になり、ステップSA30に進み、フラグMODEを「0」にセットする。この後、図12に示すステップSA32〜SA35に進み、分析モード画面AMG(図3参照)の音階レベル選択枠W1およびリズムレベル選択枠W2にてそれぞれ選択される音階レベルとリズムレベルとを所定レジスタにストアしてから図10に示すステップSA2に処理を戻し、問題モード画面TMGが画面表示される問題モードに遷移する。
(2)再生開始処理の動作
次に、図13〜図15を参照して、問題モード下で実行される再生開始処理の動作を説明する。上述したメインルーチンのステップSA7(図10参照)を介して本処理が実行されると、CPU1は図13に示すステップSB1に処理を進め、RAM3のバッファエリアに設けられるノートオフバッファOffBufを初期化する。次に、ステップSB2では、レジスタplaystartに現時刻をストアする。次いで、ステップSB3に進むと、課題情報管理テーブルT1(図4参照)において、ポインタiassignで指定される課題データassign[iassign][4]のポインタpNoteを読み出す。ステップSB4〜SB5では、検索ポインタiOffCnt、iOffBufCntをそれぞれゼロリセットする。続いて、ステップSB6では、ポインタiassignに対応した課題データassign[iassign][3]の出題音数iNotesと検索ポインタiOffCntとが一致したか否か、つまり出題し終えたかどうかを判断する。
次に、図13〜図15を参照して、問題モード下で実行される再生開始処理の動作を説明する。上述したメインルーチンのステップSA7(図10参照)を介して本処理が実行されると、CPU1は図13に示すステップSB1に処理を進め、RAM3のバッファエリアに設けられるノートオフバッファOffBufを初期化する。次に、ステップSB2では、レジスタplaystartに現時刻をストアする。次いで、ステップSB3に進むと、課題情報管理テーブルT1(図4参照)において、ポインタiassignで指定される課題データassign[iassign][4]のポインタpNoteを読み出す。ステップSB4〜SB5では、検索ポインタiOffCnt、iOffBufCntをそれぞれゼロリセットする。続いて、ステップSB6では、ポインタiassignに対応した課題データassign[iassign][3]の出題音数iNotesと検索ポインタiOffCntとが一致したか否か、つまり出題し終えたかどうかを判断する。
出題音数iNotes分の課題音を発音し終えていなければ、判断結果は「NO」になり、図14のステップSB7に処理を進める。ステップSB7では、現時刻からレジスタplaystartにストアされた時刻を減算してレジスタnowTimeにストアする。以後、レジスタnowTimeを再生時刻nowTimeと称す。そして、ステップSB8に進むと、再生時刻nowTimeが、課題音データasNote[pNote][3]の発音タイミングtime_onを過ぎているか否かを判断する。以下、再生時刻nowTimeが発音タイミングtime_onを過ぎている場合と過ぎていない場合とに分けて動作説明を進める。
<発音タイミングtime_onを過ぎている場合>
再生時刻nowTimeが発音タイミングtime_onを過ぎていると、ステップSB8の判断結果は「YES」になり、ステップSB9に進む。ステップSB9では、音高pitch(asNote[pNote][2])を含む課題音のノートオンイベントを生成し、これをMIDIインタフェース4を介して電子楽器20側に送出して当該課題音を再生させる。課題音を再生させると、CPU1はステップSB10に処理を進め、ポインタiOffBufCntをインクリメントして歩進させ、続くステップSB11では、この歩進されたポインタiOffBufCntで指定されるノートオフバッファOffBuf[iOffBufCnt]にポインタpNoteをストアする。そして、ステップSB12では、次に再生する課題音を指定するポインタpNextNote(asNote[pNote][6])を、ポインタpNoteにセットした後、図13に示すステップSB6に処理を戻す。
再生時刻nowTimeが発音タイミングtime_onを過ぎていると、ステップSB8の判断結果は「YES」になり、ステップSB9に進む。ステップSB9では、音高pitch(asNote[pNote][2])を含む課題音のノートオンイベントを生成し、これをMIDIインタフェース4を介して電子楽器20側に送出して当該課題音を再生させる。課題音を再生させると、CPU1はステップSB10に処理を進め、ポインタiOffBufCntをインクリメントして歩進させ、続くステップSB11では、この歩進されたポインタiOffBufCntで指定されるノートオフバッファOffBuf[iOffBufCnt]にポインタpNoteをストアする。そして、ステップSB12では、次に再生する課題音を指定するポインタpNextNote(asNote[pNote][6])を、ポインタpNoteにセットした後、図13に示すステップSB6に処理を戻す。
<発音タイミングtime_onを過ぎていない場合>
一方、再生時刻nowTimeが発音タイミングtime_onを過ぎていない場合には、前述したステップSB8(図14参照)の判断結果が「NO」になり、図15に示すステップSB13に進む。ステップSB13では、検索ポインタiOffをゼロリセットする。次いで、ステップSB14では、検索ポインタiOffに対応するノートオフバッファOffBuf[iOff]に消音済みを表すNULLデータが格納されているかどうかを判断する。消音済みを表すNULLデータが格納されていると、判断結果は「NO」となり、図13に示すステップSB6に処理を戻す。これに対し、ノートオフバッファOffBuf[iOff]に消音済みを表すNULLデータが格納されていなければ、上記ステップSB14の判断結果は「YES」になり、次のステップSB15に進む。
一方、再生時刻nowTimeが発音タイミングtime_onを過ぎていない場合には、前述したステップSB8(図14参照)の判断結果が「NO」になり、図15に示すステップSB13に進む。ステップSB13では、検索ポインタiOffをゼロリセットする。次いで、ステップSB14では、検索ポインタiOffに対応するノートオフバッファOffBuf[iOff]に消音済みを表すNULLデータが格納されているかどうかを判断する。消音済みを表すNULLデータが格納されていると、判断結果は「NO」となり、図13に示すステップSB6に処理を戻す。これに対し、ノートオフバッファOffBuf[iOff]に消音済みを表すNULLデータが格納されていなければ、上記ステップSB14の判断結果は「YES」になり、次のステップSB15に進む。
ステップSB15では、再生時刻nowTimeが、ノートオフバッファOffBuf[iOff]に格納されるポインタpNoteにより指定される課題音データasNote[OffBuf[iOff]][4]の消音タイミングtime_offを過ぎているか否かを判断する。再生時刻nowTimeが消音タイミングtime_offを過ぎていなければ、判断結果は「NO」となり、ステップSB20に進み、検索ポインタiOffを歩進させた後、上述のステップSB14に処理を戻す。一方、再生時刻nowTimeが消音タイミングtime_offを過ぎていると、上記ステップSB15の判断結果が「YES」になり、ステップSB16に進む。
ステップSB16では、音高pitch(asNote[offBuf[iOff]][2])を含む課題音のノートオフイベントを生成し、これをMIDIインタフェース4を介して電子楽器20側に送出して当該課題音を消音させる。こうして課題音を消音させると、CPU1はステップSB17に処理を進め、検索ポインタiOffに対応するノートオフバッファOffBuf[iOff]に消音済みを表すNULLデータを登録する。そして、ステップSB18に進み、ポインタiOffBufCntをデクリメントし、続くステップSB19ではポインタiOffCntをインクリメントする。この後、ステップSB20にて検索ポインタiOffをインクリメントして歩進させた後、上述のステップSB14に処理を戻す。
このように、再生開始処理では、課題情報管理テーブルT1中でポインタiassignに対応した課題データassign[iassign][3]が指定する出題音数iNotes分の課題音データasNoteを課題音管理テーブルT2から読み出し、読み出した課題音データasNoteの発音タイミングtime_onに達する毎にノートオンイベントを、消音タイミングtime_offに達する毎にノートオフイベントをそれぞれ電子楽器20側に送出して課題音の発音/消音を指示し、出題音数iNotes分の再生が完了すると、図12に示すステップSB6の判断結果が「YES」となり、本処理を完了させる。
さて一方、分析モード下で実行される再生開始処理は、上述した問題モード下の再生開始処理をほぼ同一なので、問題モードと相違する点を概説する。図11に図示するメインルーチンのステップSA20を介して分析モード下の再生開始処理が実行されると、CPU1は訓練課題情報管理テーブルT4(図8参照)中でポインタitrainに対応した訓練課題データtrain[itrain]が指定する出題音数iNote分の訓練課題音データtrNoteを訓練課題音管理テーブルT5(図9参照)から読み出し、読み出した訓練課題音データtrNoteの発音タイミングtime_onに達する毎にノートオンイベントを、消音タイミングtime_offに達する毎にノートオフイベントをそれぞれ電子楽器20側に送出して訓練課題音の発音/消音を指示し、出題音数iNote分の再生が完了すると、本処理を完了させる。
(3)回答処理の動作
次に、図16〜図19を参照して問題モード下で実行される回答処理の動作を説明する。前述したメインルーチンのステップSA8(図10参照)を介して本処理が実行されると、CPU1は図16に示すステップSC1に処理を進め、本処理で使用する一時バッファを初期化する。次いで、ステップSC2では、回答音入力数をカウントする回答入力カウンタiACをゼロリセットし、続くステップSC3では、レジスタIAnStartに現時刻をストアする。ステップSC4では、回答入力カウンタiACの値が、出題音数iNotes(assign[iassign][3])に一致しないかどうか、つまり出題音数iNotes分の回答音が入力されたか否かを判断する。出題音数iNotes分の回答音が入力された場合には、判断結果が「NO」になり、後述するステップSC7に進む。一方、出題音数iNotes分の回答音が入力されていない場合には判断結果が「YES」になり、次のステップSC5に進む。
次に、図16〜図19を参照して問題モード下で実行される回答処理の動作を説明する。前述したメインルーチンのステップSA8(図10参照)を介して本処理が実行されると、CPU1は図16に示すステップSC1に処理を進め、本処理で使用する一時バッファを初期化する。次いで、ステップSC2では、回答音入力数をカウントする回答入力カウンタiACをゼロリセットし、続くステップSC3では、レジスタIAnStartに現時刻をストアする。ステップSC4では、回答入力カウンタiACの値が、出題音数iNotes(assign[iassign][3])に一致しないかどうか、つまり出題音数iNotes分の回答音が入力されたか否かを判断する。出題音数iNotes分の回答音が入力された場合には、判断結果が「NO」になり、後述するステップSC7に進む。一方、出題音数iNotes分の回答音が入力されていない場合には判断結果が「YES」になり、次のステップSC5に進む。
ステップSC5では、現時刻からレジスタIAnStartにストアされた時刻を減算してレジスタNowTimeにストアする。以後、レジスタNowTimeを回答時刻NowTimeと称す。そして、ステップSC6に進むと、回答時刻NowTimeが回答制限時間limit(assign[iassign][2])を超えているか否かを判断する。
回答時刻NowTimeが回答制限時間limitを超えると、判断結果は「YES」となり、ステップSC7に進み、現在のモードが問題モードであるかどうかを判断する。問題モード下であれば、判断結果は「YES」となり、図17のステップSC8以降を実行するが、分析モードの場合には判断結果が「NO」になり、本処理を完了させる。一方、回答時刻NowTimeが回答制限時間limitを超えなければ、上記ステップSC6の判断結果が「NO」になり、図18に示すステップSC17に処理を進める。
回答時刻NowTimeが回答制限時間limitを超えると、判断結果は「YES」となり、ステップSC7に進み、現在のモードが問題モードであるかどうかを判断する。問題モード下であれば、判断結果は「YES」となり、図17のステップSC8以降を実行するが、分析モードの場合には判断結果が「NO」になり、本処理を完了させる。一方、回答時刻NowTimeが回答制限時間limitを超えなければ、上記ステップSC6の判断結果が「NO」になり、図18に示すステップSC17に処理を進める。
いま例えば、問題モード下において回答時刻NowTimeが回答制限時間limit以内であるとする。そうすると、CPU1は図18に示すステップSC17〜SC19において回答操作の種別を判別する。すなわち、ステップSC17では音高指定用に割当てられたキーボード6のキー操作であるか否かを判断し、ステップSC18では問題モード画面TMGに表示される鍵盤表示エリアE1において課題音と同じ音高と判断した鍵にマウスカーソルをポインティングしてマウス5でクリックするマウス操作であるか否かを判断し、ステップSC19では電子楽器20側に配設される鍵盤の鍵操作で発生するMIDIノートイベント入力であるか否かを判断する。次に、ステップSC20に進むと、CPU1は回答操作に応じて発生したイベントに含まれる音高をレジスタpitchにストアする。続いて、ステップSC21では、回答操作に応じて発生したイベントがノートオンイベントであるかどうかを判断する。
ノートオンイベントであると、判断結果は「YES」になり、ステップSC22に進み、フラグIsNoteOnに「1」をセットしてノートオンイベントである旨を表す。一方、ノートオフイベントであれば、上記ステップSC21の判断結果が「NO」となり、ステップSC23に進み、フラグIsNoteOnに「0」をセットしてノートオフイベントである旨を表す。そして、ステップSC24では、フラグIsNoteOnが「1」、つまり回答操作がノートオンイベントであるかどうかを判断する。以下、回答操作が発音を指示するノートオンイベントの場合と、消音を指示するノートオフイベントの場合とに分けて動作説明を進める。
<ノートオンイベントの場合>
回答操作が発音を指示するノートオンイベントであると、ステップSC24の判断結果が「YES」になり、ステップSC25以降に処理を進める。ステップSC25〜SC27では、入力される回答音のノートオン属性を回答音データテーブルT3(図7参照)に登録する。すなわち、ステップSC25では、レジスタpitchに格納される音高を、回答入力カウンタiACの値に対応した回答音データansNote[iAC][2](音高pitch)にストアする。ステップSC26では、回答時刻NowTimeを回答音データansNote[iAC][3](発音タイミングtime_on)にストアする。ステップSC27では、回答入力カウンタiACの値を回答音データansNote[iAC][0](識別番号asNote#)にストアする。ステップSC28では、ポインタiassignの値を回答音データansNote[iAC][1](課題番号assign#)にストアする。そしてこの後、ステップSC29に進み、回答入力カウンタiACを歩進させた後、前述のステップSC4(図16参照)に処理を戻す。
回答操作が発音を指示するノートオンイベントであると、ステップSC24の判断結果が「YES」になり、ステップSC25以降に処理を進める。ステップSC25〜SC27では、入力される回答音のノートオン属性を回答音データテーブルT3(図7参照)に登録する。すなわち、ステップSC25では、レジスタpitchに格納される音高を、回答入力カウンタiACの値に対応した回答音データansNote[iAC][2](音高pitch)にストアする。ステップSC26では、回答時刻NowTimeを回答音データansNote[iAC][3](発音タイミングtime_on)にストアする。ステップSC27では、回答入力カウンタiACの値を回答音データansNote[iAC][0](識別番号asNote#)にストアする。ステップSC28では、ポインタiassignの値を回答音データansNote[iAC][1](課題番号assign#)にストアする。そしてこの後、ステップSC29に進み、回答入力カウンタiACを歩進させた後、前述のステップSC4(図16参照)に処理を戻す。
<ノートオフイベントの場合>
一方、回答操作が消音を指示するノートオフイベントであると、図18に示すステップSC24の判断結果が「NO」になり、CPU1は図19に示すステップSC30以降に処理を進め、入力される回答音のノートオフ属性を回答音データテーブルT3に登録する。すなわち、ステップSC30では、検索ポインタiをゼロリセットし、続くステップSC31〜SC36では、回答入力カウンタiACの値に達するまで検索ポインタiを歩進させながら、回答音データテーブルT3中でansNote[i][4](消音タイミングtime_off)が空き状態(NULL)の回答音データを検索し、該当する回答音データansNote[i][4]に消音タイミングとなる回答時刻NowTimeをストアすると共に、一つ前の回答音データansNote[i−1][0](識別番号asNote#)を、回答音データansNote[i][7](ポインタpNextNote)にストアした後、前述のステップSC4(図16参照)に処理を戻す。
一方、回答操作が消音を指示するノートオフイベントであると、図18に示すステップSC24の判断結果が「NO」になり、CPU1は図19に示すステップSC30以降に処理を進め、入力される回答音のノートオフ属性を回答音データテーブルT3に登録する。すなわち、ステップSC30では、検索ポインタiをゼロリセットし、続くステップSC31〜SC36では、回答入力カウンタiACの値に達するまで検索ポインタiを歩進させながら、回答音データテーブルT3中でansNote[i][4](消音タイミングtime_off)が空き状態(NULL)の回答音データを検索し、該当する回答音データansNote[i][4]に消音タイミングとなる回答時刻NowTimeをストアすると共に、一つ前の回答音データansNote[i−1][0](識別番号asNote#)を、回答音データansNote[i][7](ポインタpNextNote)にストアした後、前述のステップSC4(図16参照)に処理を戻す。
さて、こうした回答操作に対応した処理を終えて、回答時刻NowTimeが回答制限時間limitを超えたとする。そうすると、図16に示すステップSC6およびステップSC7の各判断結果が「YES」となり、CPU1は図17に示すステップSC8以降を実行して課題履歴データtestHistを作成し、これを課題履歴管理データベースDB(図6参照)に登録する。
すなわち、ステップSC8では、課題履歴管理データベースDBの空きエリアを検索し、その空きエリアを示す値をポインタiHistにストアする。次に、ステップSC9では、そのポインタiHistに対応した課題履歴管理データベースDB中の課題履歴データtestHist[iHist][1](課題番号assign#)にポインタiassignをストアする。続いて、ステップSC10では、ポインタiHistに対応した課題履歴管理データベースDB中の課題履歴データtestHist[iHist][2](回答音数iNotes)に回答入力カウンタiACの値をストアする。次いで、ステップSC11では、ポインタiassignに対応した課題データassign[iassign][4](ポインタpNote)を課題情報管理テーブルT1(図4参照)から読み出し、これを最初の課題音を指定するポインタpQNoteとして課題履歴データtestHist[iHist][4]にストアする。
すなわち、ステップSC8では、課題履歴管理データベースDBの空きエリアを検索し、その空きエリアを示す値をポインタiHistにストアする。次に、ステップSC9では、そのポインタiHistに対応した課題履歴管理データベースDB中の課題履歴データtestHist[iHist][1](課題番号assign#)にポインタiassignをストアする。続いて、ステップSC10では、ポインタiHistに対応した課題履歴管理データベースDB中の課題履歴データtestHist[iHist][2](回答音数iNotes)に回答入力カウンタiACの値をストアする。次いで、ステップSC11では、ポインタiassignに対応した課題データassign[iassign][4](ポインタpNote)を課題情報管理テーブルT1(図4参照)から読み出し、これを最初の課題音を指定するポインタpQNoteとして課題履歴データtestHist[iHist][4]にストアする。
そして、ステップSC12〜SC16では、ポインタiAを歩進させながら、回答音データテーブルT3(図7参照)中からポインタiassignに合致する課題番号assign#の回答音データansNote[iA][1]を検索し、該当する回答音データansNote[iA][0](識別番号asNote#)を、最初の回答音を指定するポインタpANoteとして課題履歴データtestHist[iHist][3]にストアすると共に、ポインタiassignが指し示す課題履歴管理データベースDB中の空きエリア番号を、識別番号Hist#として課題履歴データtestHist[i][0]にストアして本処理を終える。
以上のように、問題モード下で実行される回答処理では、回答制限時間limit以内に回答音を入力する操作(キー操作、マウス操作およびMIDI入力のいずれか)が行われると、その操作のイベントがノートオンイベントであれば、回答音のノートオン属性(音高pitch、発音タイミングtime_on、識別番号asNote#および課題番号assign#)を回答音データテーブルT3に登録し、一方、ノートオフイベントであると、回答音のノートオフ属性(消音タイミングtime_off)を回答音データテーブルT3に登録する。そして、回答時刻NowTimeが回答制限時間limitを超えると、課題情報管理テーブルT1および回答音データテーブルT3を参照して、回答操作を終えた課題音および回答音を表す課題履歴データtestHistを作成して課題履歴管理データベースDBに登録する。
これに対し、分析モード下で実行される回答処理では、課題履歴データtestHistを作成せず、回答制限時間limit以内の回答操作に応じて、回答音のノートオン・ノートオフ属性を訓練課題音管理データテーブルT5に登録するようになっている。
これに対し、分析モード下で実行される回答処理では、課題履歴データtestHistを作成せず、回答制限時間limit以内の回答操作に応じて、回答音のノートオン・ノートオフ属性を訓練課題音管理データテーブルT5に登録するようになっている。
(4)リズム判定処理の動作
次に、図20を参照してリズム判定処理の動作を説明する。前述したメインルーチンのステップSA10(図10参照)を介して本処理が実行されると、CPU1は図20に示すステップSD1に処理を進め、回答数を累算するカウンタiHitCntおよび回答操作のタイミング誤差率を累算するカウンタfSumをそれぞれゼロリセットする。次いで、ステップSD2では、課題情報管理テーブルT1(図4参照)において、ポインタiassignで指定される課題データassign[iassign][4]のポインタpNoteを読み出す。続いて、ステップSD3では、課題音管理テーブルT2(図5参照)中からポインタpNoteに対応した課題音データasNote[pNote][0]の識別番号asNote#を読み出してレジスタasNoteにストアすると共に、その識別番号asNote#を回答音データテーブルT3(図7参照)中の回答音データansNote[asNote][6](対応する課題音データを示す課題音番号HitOrg)にストアする。
次に、図20を参照してリズム判定処理の動作を説明する。前述したメインルーチンのステップSA10(図10参照)を介して本処理が実行されると、CPU1は図20に示すステップSD1に処理を進め、回答数を累算するカウンタiHitCntおよび回答操作のタイミング誤差率を累算するカウンタfSumをそれぞれゼロリセットする。次いで、ステップSD2では、課題情報管理テーブルT1(図4参照)において、ポインタiassignで指定される課題データassign[iassign][4]のポインタpNoteを読み出す。続いて、ステップSD3では、課題音管理テーブルT2(図5参照)中からポインタpNoteに対応した課題音データasNote[pNote][0]の識別番号asNote#を読み出してレジスタasNoteにストアすると共に、その識別番号asNote#を回答音データテーブルT3(図7参照)中の回答音データansNote[asNote][6](対応する課題音データを示す課題音番号HitOrg)にストアする。
そして、ステップSD4では、レジスタasNoteにストアした識別番号asNote#で指定される回答音データテーブルT3中の回答音データansNote[asNote][3](発音タイミングtime_on)と、課題音管理テーブルT2中の課題音データasNote[pNote][3](発音タイミングtime_on)との差分絶対値を、課題音データasNote[pNote][5](音長time_gate)で除して得る、回答操作のタイミング誤差率をレジスタftmpにストアする。
次に、ステップSD5では、回答数を累算するカウンタiHitCntをインクリメントして歩進させ、続くステップSD6ではレジスタftmpに格納される回答操作のタイミング誤差率をカウンタfSumに加算する。ステップSD7では、レジスタasNoteにストアした識別番号asNote#で指定される回答音データテーブルT3中の、回答音データansNote[asNote][4](消音タイミングtime_off)と回答音データansNote[asNote][3](発音タイミングtime_on)との差分を算出し、これを音長time_gateとしてansNote[asNote][5]にストアする。
次いで、ステップSD8では、ポインタpNoteに対応した課題音データasNote[pNote][6]のポインタpNextNoteが、空き状態を表すデータNULLでないか否か、すなわち、全ての課題音について判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「YES」になり、ステップSD9に進み、課題音データasNote[pNote][6]のポインタpNextNoteをポインタpNoteにセットして上述のステップSD3に処理を戻す。
以後、ステップSD3〜ステップSD9を出題音数分繰り返し、全ての課題音について回答判定し終えると、ステップSD8の判断結果が「NO」となり、ステップSD10に進む。ステップSD10では、回答音データansNote[asNote][5](音長time_gate)のばらつきの度合いを表す標準偏差を算出してレジスタfStDevにストアする。次いで、ステップSD11では、100×(1−fSum/iHitCnt−fStDev)に基づき、回答操作の時間的なばらつきを勘案した得点iScoreを算出し、続くステップSD12では、算出した得点iScoreを問題モード画面TMG(図2参照)の得点表示エリアE4に数値表示して本処理を終える。
(5)分析処理の動作
次に、分析モード下で実行される分析処理の動作を説明する。分析モード画面AMG(図3参照)の分析開始アイコンIC9がクリック操作されると、前述したメインルーチンのステップSA28(図11参照)を介して本処理が実行される。そうすると、CPU1は図20に示すステップSE1に進み、集計処理(後述する)を実行する。そして、ステップSE2〜SE10以降では、分析モード画面AMG中の音階レベル選択枠W1およびリズムレベル選択枠W2にて選択されるリズムレベルと音階レベルとに応じた、正誤判定処理および訓練音作成処理を実行する。
次に、分析モード下で実行される分析処理の動作を説明する。分析モード画面AMG(図3参照)の分析開始アイコンIC9がクリック操作されると、前述したメインルーチンのステップSA28(図11参照)を介して本処理が実行される。そうすると、CPU1は図20に示すステップSE1に進み、集計処理(後述する)を実行する。そして、ステップSE2〜SE10以降では、分析モード画面AMG中の音階レベル選択枠W1およびリズムレベル選択枠W2にて選択されるリズムレベルと音階レベルとに応じた、正誤判定処理および訓練音作成処理を実行する。
すなわち、リズムレベル「1」の場合にはステップSE3を介して正誤判定処理(1)を実行する。その後、音階指定されていなければ、ステップSE6を介して訓練音作成処理(1)を実行し、音階指定されていると、ステップSE7を介して訓練音作成処理(2)を実行する。一方、リズムレベル「2」の場合にはステップSE4を介して正誤判定処理(2)を実行する。その後、音階指定されていなければ、ステップSE9を介して訓練音作成処理(3)を実行し、音階指定されていると、ステップSE10を介して訓練音作成処理(4)を実行する。以下、分析処理を構成する「集計処理」、「正誤判定処理(1)」、「訓練音作成処理(1)」、「訓練音作成処理(2)」、「正誤判定処理(2)」、「訓練音作成処理(3)」および「訓練音作成処理(4)」の各動作を説明する。
(6)集計処理の動作
次に、図22〜図23を参照して集計処理の動作を説明する。上述した分析処理(図21参照)のステップSE1を介して本処理が実行されると、CPU1は図22に示すステップSE1−1に処理を進め、ポインタiAをゼロリセットし、続くステップSE1−2では課題履歴管理データベースDB(図6参照)から集計対象を検索し終えたか否かを判断する。検索終了していなければ、判断結果は「NO」になり、ステップSE1−3に進む。ステップSE1−3では、ポインタiAに応じて課題履歴管理データベースDBから課題履歴データtestHist[iA][1]の課題番号assign#を読み出し、この課題番号assign#で指定される課題データassign[testHist[iA][1]][1](再生テンポtempo)を課題情報管理テーブルT1(図4参照)から読み出す。そして、読み出した再生テンポtempoに基づき4分音符長div4を算出する。
次に、図22〜図23を参照して集計処理の動作を説明する。上述した分析処理(図21参照)のステップSE1を介して本処理が実行されると、CPU1は図22に示すステップSE1−1に処理を進め、ポインタiAをゼロリセットし、続くステップSE1−2では課題履歴管理データベースDB(図6参照)から集計対象を検索し終えたか否かを判断する。検索終了していなければ、判断結果は「NO」になり、ステップSE1−3に進む。ステップSE1−3では、ポインタiAに応じて課題履歴管理データベースDBから課題履歴データtestHist[iA][1]の課題番号assign#を読み出し、この課題番号assign#で指定される課題データassign[testHist[iA][1]][1](再生テンポtempo)を課題情報管理テーブルT1(図4参照)から読み出す。そして、読み出した再生テンポtempoに基づき4分音符長div4を算出する。
次いで、ステップSE1−4では、ポインタiAに応じて課題履歴管理データベースDBから課題履歴データtestHist[iA][3](最初の回答音を指定するポインタpANote)を読み出してレジスタpNAnsにストアする。ステップSE1−5では、ポインタbIndexに初期値「−1」をストアする。なお、このポインタbIndexが意図するところについては後述する。次に、ステップSE1−6では、回答音データテーブルT3において、レジスタpNAnsの値(最初の回答音を指定するポインタpANote)で指定される回答音データansNote[pNAns][6](課題音番号HitOrg)が空き状態を表すデータNULLであるか否か、すなわちレジスタpNAnsで指定される回答音データに対応する課題音データの有無を判断する。対応する課題音データが存在しなければ、判断結果は「YES」となり、後述のステップSE1−16に進む。
一方、対応する課題音データが存在すると、判断結果は「NO」になり、ステップSE1−7に進み、レジスタpNAnsの値で指定される回答音データansNote[pNAns][6]の課題音番号HitOrgをレジスタPNQstにストアする。続いて、ステップSE1−8では、レジスタpNAnsの値に対応する回答音データansNote[pNAns][5]の音長time_gateを4分音符長div4で除した回答音の音長比をレジスタAGateにストアする。以下、レジスタAGateの内容を回答音の音長比AGateと称す。また、ステップSE1−8では、レジスタpNQstの値に対応する課題音データasNote[pNQst][5]の音長time_gateを4分音符長div4で除した課題音の音長比をレジスタQGateにストアする。以下、レジスタQGateの内容を課題音の音長比QGateと称す。
そして、ステップSE1−9では、課題音の音長比QGateをポインタnIndexにストアする。なお、課題音の音長time_gateが「16分音符」、「付点16分音符」、「8分音符」、「付点8分音符」、「4分音符」、「付点4分音符」、「2分音符」、「付点2分音符」および「全音符」の場合、課題音の音長比QGateを表すポインタnIndexはそれぞれ「1/4」、「3/8」、「1/2」、「3/4」、「1」、「3/2」、「2」、「3」および「4」となる。
続いて、ステップSE1−10〜SE1−14では、回答音の音長比AGateと課題音の音長比QGateとの差分絶対値が許容範囲GOFFSET内に収まっているか否か、すなわち適正な回答音であるかどうかを判断する。そして、許容範囲GOFFSET内に収まる正しい音長の回答音であれば、正答集計カウンタOKCnt[nIndex][bIndex]を歩進させ、一方、許容範囲GOFFSETを超え、課題音に対して誤った音長の回答音であると、誤答集計カウンタMSCnt[nIndex][bIndex]を歩進させる。
ここで、正答集計カウンタOKCnt[nIndex][bIndex]および誤答集計カウンタMSCnt[nIndex][bIndex]とは、それぞれ図23に示すように、9行9列の配列要素を備えるカウンタである。行要素は今回集計対象とされた課題音の音長比QGateを表すポインタnIndexで指定される。列要素は前回集計対象とされた課題音の音長比QGateを表すポインタbIndexで指定される。
したがって、例えば今回集計対象とされた課題音の音長および前回集計対象とされた課題音の音長が共に「4分音符」であると、ポインタnIndex、bIndexはいずれも「1」となる。そして、今回集計対象とされた課題音に対して正しい音長の回答音であると正答集計カウンタOKCnt[1][1]をインクリメントし、誤った音長の回答音であると誤答集計カウンタMSCnt[1][1]をインクリメントする。
したがって、例えば今回集計対象とされた課題音の音長および前回集計対象とされた課題音の音長が共に「4分音符」であると、ポインタnIndex、bIndexはいずれも「1」となる。そして、今回集計対象とされた課題音に対して正しい音長の回答音であると正答集計カウンタOKCnt[1][1]をインクリメントし、誤った音長の回答音であると誤答集計カウンタMSCnt[1][1]をインクリメントする。
なお、ステップSE1−10〜SE1−14において、最初のパス(実行経路)ではポインタbIndexに初期値「−1」がストアされているので、ステップSE1−10の判断結果は「YES」となり、ステップSE1−11に進み、ポインタbIndexに「1」がセットされる。これ以降のパスでは、ステップSE1−15において、ポインタnIndex(今回集計対象とされた課題音の音長比QGate)をポインタbIndex(前回集計対象とされた課題音の音長比QGate)に設定するため、ステップSE1−10の判断結果が「NO」となり、ステップSE1−12に進む。
こうして、前回集計対象にされた課題音との繋がりを勘案して、今回集計対象とする課題音とこれに対応する回答音の音長の適否を正答集計カウンタOKCntおよび誤答集計カウンタMSCntで集計すると、CPU1はステップSE1−16に進み、レジスタpNAnsの値に対応する回答音データansNote[pNAns][7](次の回答音データを指定するポインタpNextNote)が空き状態を表すデータNULLであるか否か、すなわち次の回答音データの有無を判断する。次の回答音データが存在すると、判断結果は「NO」になり、ステップSE1−17に進み、回答音データansNote[pNAns][7]のポインタpNextNoteをレジスタpNAnsにストアし、当該レジスタpNAnsの内容を更新させた後、上述したステップSE1−6に処理を戻す。
これに対し、次の回答音データが存在しない場合には、上記ステップSE1−16の判断結果が「YES」となり、ステップSE1−18に進む。ステップSE1−18では、次の課題音データとそれに対応する回答音データとを読み出す為、ポインタiAを歩進させた後、上述のステップSE1−2に処理を戻す。そして、歩進されたポインタiAに対応した課題履歴データtestHist[iA]が課題履歴管理データベースDBに登録されていない場合には、集計対象の検索が終了したとして、ステップSE1−2の判断結果が「YES」になり、本処理を完了させる。
以上のように、集計処理では、課題履歴管理データベースDBに登録される課題履歴データtestHistを参照して検索した課題音とこれに対応する回答音の音長の適否を判断し、適正な回答音の場合には今回集計対象にされた課題音の音長比QGate(ポインタnIndex)と、前回集計対象にされた課題音の音長比QGate(ポインタbIndex)とで定まる正答集計カウンタOKCnt中の配列要素[nIndex][bIndex]を歩進させ、一方、誤った音長の回答音の場合には誤答集計カウンタMSCnt中の配列要素[nIndex][bIndex]を歩進させる。これにより、正答集計カウンタOKCntには聴き分けできるリズム(音の並び)が集計され、誤答集計カウンタMSCntには聴き間違えたリズム(音の並び)が集計される。
(7)正誤判定処理(1)の動作
次に、図24〜図26を参照して正誤判定処理(1)の動作を説明する。前述した分析処理(図21参照)のステップSE3を介して本処理が実行されると、CPU1は図24に示すステップSE3−1に処理を進め、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]の内容を読み出すための行ポインタiおよび列ポインタjをゼロリセットする。なお、ここで言う行ポインタiは前述のポインタnIndexに対応し、列ポインタjは前述のポインタbIndexに対応する。また、行ポインタi(列ポインタj)の「0」〜「8」は、ポインタnIndex(ポインタbIndex)の「1/4」、「3/8」、「1/2」、「3/4」、「1」、「3/2」、「2」、「3」および「4」に相当する。
次に、図24〜図26を参照して正誤判定処理(1)の動作を説明する。前述した分析処理(図21参照)のステップSE3を介して本処理が実行されると、CPU1は図24に示すステップSE3−1に処理を進め、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]の内容を読み出すための行ポインタiおよび列ポインタjをゼロリセットする。なお、ここで言う行ポインタiは前述のポインタnIndexに対応し、列ポインタjは前述のポインタbIndexに対応する。また、行ポインタi(列ポインタj)の「0」〜「8」は、ポインタnIndex(ポインタbIndex)の「1/4」、「3/8」、「1/2」、「3/4」、「1」、「3/2」、「2」、「3」および「4」に相当する。
次いで、ステップSE3−2〜SE3−15では、行ポインタiを「0」から「8」まで歩進させる行走査と列ポインタjを「0」から「8」まで歩進させる列走査とを行いながら、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]を読み出し、その内容から聴き分けが「非常に得意なリズム」、「得意なリズム」、「普通のリズム」、「やや不得意なリズム」、「不得意なリズム」および「出題されていないリズム」のいずれであるかを判定した結果をレジスタTempoRslt[i][j]にストアする。
すなわち、行ポインタiおよび列ポインタjに応じて正答集計カウンタOKCnt[i][j]から読み出される正答数と、誤答集計カウンタMSCnt[i][j]からそれぞれ読み出される誤答数とが共に「0」の場合には、ステップSE3−5の判断結果が「YES」となり、列ポインタjを歩進させる。この場合、レジスタTempoRslt[i][j]の値は「出題無し」を表す初期値「0」となる。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の4倍以上ある場合には、ステップSE3−6の判断結果が「YES」となり、ステップSE3−7に進み、「非常に得意なリズム」を表す判定値「5」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の3/2倍以上ある場合には、ステップSE3−9の判断結果が「YES」となり、ステップSE3−10に進み、「得意なリズム」を表す判定値「4」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の4倍以上ある場合には、ステップSE3−6の判断結果が「YES」となり、ステップSE3−7に進み、「非常に得意なリズム」を表す判定値「5」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の3/2倍以上ある場合には、ステップSE3−9の判断結果が「YES」となり、ステップSE3−10に進み、「得意なリズム」を表す判定値「4」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の2/3倍以上ある場合には、ステップSE3−11の判断結果が「YES」となり、ステップSE3−12に進み、「普通のリズム」を表す判定値「3」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍以上ある場合には、ステップSE3−13の判断結果が「YES」となり、ステップSE3−14に進み、「やや不得意なリズム」を表す判定値「2」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍より少ない場合には、ステップSE3−13の判断結果が「NO」となり、ステップSE3−15に進み、「不得意なリズム」を表す判定値「1」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍以上ある場合には、ステップSE3−13の判断結果が「YES」となり、ステップSE3−14に進み、「やや不得意なリズム」を表す判定値「2」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍より少ない場合には、ステップSE3−13の判断結果が「NO」となり、ステップSE3−15に進み、「不得意なリズム」を表す判定値「1」をレジスタTempoRslt[i][j]にストアする。
こうして、レジスタTempoRslt[i][j]に判定結果を登録し終えると、CPU1は図25に示すステップSE3−16〜SE3−32を実行し、レジスタTempoRslt[i][j]に格納される判定結果の内から判定値「1(不得意なリズム)」あるいは判定値「2(やや不得意なリズム)」を検索する。すなわち、9行9列の配列要素を備えるレジスタTempoRslt[i][j]を、図26に図示する検索順序に従って読み出すように行ポインタiおよび列ポインタjを更新する。なお、図26に図示する検索順序は、最初にレジスタTempoRslt[4][4]の内容、つまり4分音符が並ぶ単純なリズムから始り、徐々に複雑なリズム(音の並び)に移行する過程を表している。そして、レジスタTempoRslt[i][j]の内から判定値「1」あるいは「2」が検索されると、検索時点の行ポインタiをレジスタNoteGate[iCnt][0]に、列ポインタjをレジスタNoteGate[iCnt][1]にストアする。
以上のように、正誤判定処理(1)では、聴き分けできるリズムを集計した正答集計カウンタOKCntと、聴き間違えたリズムを集計した誤答集計カウンタMSCntとから聴き分けが「非常に得意なリズム」、「得意なリズム」、「普通のリズム」、「やや不得意なリズム」、「不得意なリズム」および「出題されていないリズム」のいずれであるかを判定した結果をレジスタTempoRslt[i][j]に集計する。そして、判定結果を集計したレジスタTempoRslt[i][j]の内から聴き間違えが起こり易く苦手(やや不得意・不得意)なリズムを、単純なリズムから徐々に複雑なリズムに移行する順序で検索して行き、該当するリズム(音の並び)の先行音の音長比をレジスタNoteGate[iCnt][0]に、後続音の音長比をレジスタNoteGate[iCnt][1]に登録する。なお、ここで言う音長比とは4分音符長に対する比率である。
(8)訓練音作成処理(1)の動作
次に、図27〜図30を参照して訓練音作成処理(1)の動作を説明する。前述した分析処理(図21参照)のステップSE6を介して本処理が実行されると、CPU1は図27のステップSE6−1に処理を進め、ポインタiをゼロリセットし、続くステップSE6−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE6−3を介して訓練課題データtrainを作成するtrain[i][x]設定処理を実行する。
次に、図27〜図30を参照して訓練音作成処理(1)の動作を説明する。前述した分析処理(図21参照)のステップSE6を介して本処理が実行されると、CPU1は図27のステップSE6−1に処理を進め、ポインタiをゼロリセットし、続くステップSE6−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE6−3を介して訓練課題データtrainを作成するtrain[i][x]設定処理を実行する。
ステップSE6−3を介してtrain[i][x]設定処理が実行されると、CPU1は図28に示すステップSEa1〜SEa8にて訓練課題情報管理テーブルT4(図8参照)に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
すなわち、ステップSEa1では、第1問目であるか否かを判断する。第1問目であれば、判断結果は「YES」になり、ステップSEa2に進み、ポインタiに「2」を乗算した値をレジスタmにストアする。一方、第1問目でなければ、判断結果が「NO」になり、ステップSEa3に進み、ポインタiに「2」を乗算した値に「1」を加えてレジスタmにストアする。
すなわち、ステップSEa1では、第1問目であるか否かを判断する。第1問目であれば、判断結果は「YES」になり、ステップSEa2に進み、ポインタiに「2」を乗算した値をレジスタmにストアする。一方、第1問目でなければ、判断結果が「NO」になり、ステップSEa3に進み、ポインタiに「2」を乗算した値に「1」を加えてレジスタmにストアする。
続いて、ステップステップSEa4では、レジスタmの値を訓練課題データtrain[m][0]の訓練課題番号train#として登録する。ステップSEa5では、訓練課題データtrain[m][1]に再生テンポtempo(既定値)を登録する。ステップSEa6では、訓練課題データtrain[m][2]に回答制限時間limit(既定値)を登録する。ステップSEa7では、訓練課題データtrain[m][3]に出題音数iNotes(既定値)を登録する。出題音数iNotesは、訓練課題音管理テーブルT5(図9参照)に格納する訓練課題音の数を表す。ステップSEa8では、先頭の訓練課題音を指定するポインタpNoteとして、m×iNotesを訓練課題データtrain[m][4]に登録する。
こうして、訓練課題情報管理テーブルT4に訓練課題データtrain[m][0]〜train[m][4]が登録されると、CPU1は図27に示すステップSE6−4を介して1音目設定処理を実行する。1音目設定処理が実行されると、CPU1は図29に示すステップSEb1に処理を進め、訓練課題情報管理テーブルT4から訓練課題データtrain[i][4](ポインタpNote)を読み出してレジスタIDXにストアする。続いて、ステップSEb2では、訓練課題データtrain[i][4](ポインタpNote)を、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][0](識別番号trNote#)として訓練課題音管理テーブルT5に登録する。
次いで、ステップSEb3では、訓練課題データtrain[i][0](訓練課題番号train#)を、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][1](訓練課題番号train#)として訓練課題音管理テーブルT5に登録する。ステップSEb4では、訓練課題音の音高値「60(C4音:MIDIノートナンバ)」を、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)として訓練課題音管理テーブルT5に登録する。そして、ステップSEb5では、変換テーブルganeratioを用いてレジスタNoteGate[0][1]に格納される音長比を音符単位の音長に変換し、これに4分音符長div4を乗じて音長gateを算出する。
ステップSEb6では、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][3](発音タイミングtime_on)に、1音目の発音タイミングとして「0」を訓練課題音管理テーブルT5に登録する。続いて、ステップSEb7では、訓練課題音データtrNote[IDX][3](発音タイミングtime_on)に、上記ステップSEb5にて算出した音長gateを加算して得る消音タイミングを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][4](消音タイミングtime_off)として訓練課題音管理テーブルT5に登録する。
以上のようにして、1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定し終えると、CPU1は図27に示すステップSE6−5に進み、ポインタjに初期値「1」をセットする。次いで、ステップSE6−6〜SE6−8では、出題音数iNoteを超えるまでポインタjを歩進させる毎に、ステップSE6−7を介して2音目以降設定処理を行う。
2音目以降設定処理が実行されると、CPU1は図30に示すステップSEc1に処理を進め、訓練課題情報管理テーブルT4から読み出した訓練課題データtrain[i][4](ポインタpNote)にポインタjの値を加えてレジスタIDXにストアする。次いで、ステップSEc2〜SEc9では、訓練課題音管理テーブルT5に2音目以降の識別番号trNote#、訓練課題番号train#、音高pitch、発音タイミングtime_on、消音タイミングtime_offおよび1つ前の訓練課題音のポインタpNextNoteを設定する。
すなわち、ステップSEc2では、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][0](識別番号trNote#)にレジスタIDXの値を登録する。ステップSEb3では、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][1](訓練課題番号train#)にポインタiの値を登録する。ステップSEc4では、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)に音高値「60(C4音:MIDIノートナンバ)」を登録する。ステップSEc5では、ランダム関数RNDにて発生させたランダム値「0」または「1」をレジスタxにストアする。そして、ステップSEc6では、レジスタxに格納されるランダム値で指定されるレジスタNoteGate[j][x]の内容、すなわち聴き間違えが起こり易く苦手なリズム(音の並び)の先行音または後続音のいずれかの音長比を変換テーブルganeratioにて音符単位の音長に変換し、これに4分音符長div4を乗じて音長gateを算出する。
ステップSEc7では、前音の消音タイミングtime_offである訓練課題音データtrNote[IDX−1][4]にオフセット時間αを加えたタイミングを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][3](発音タイミングtime_on)として登録する。続いて、ステップSEc8では、訓練課題音データtrNote[IDX][3](発音タイミングtime_on)に、上記ステップSEc6にて算出した音長gateを加算して得る消音タイミングを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][4](消音タイミングtime_off)として登録する。そして、ステップSEc9では、先に設定した訓練課題音データtrNote[IDX−1][5](ポインタpNextNote)に、現在設定中の訓練課題音データtrNote[IDX][0](訓練課題番号train#)をストアする。
2音目以降設定処理にて出題音数iNote分の訓練課題音データtrNoteを設定し終えると、図27に示すステップSE6−6の判断結果が「NO」となり、ステップSE6−9に進み、ポインタiを歩進させた後、上述したステップSE6−2に処理を戻す。以後、課題数nTrain分の訓練課題を作成するまでステップSE6−3〜SE6−9を繰り返す。そして、課題数nTrain分の訓練課題音を作成し終えると、ステップSE6−2の判断結果が「NO」となり、本処理を完了させる。
このように、訓練音作成処理(1)では、正誤判定処理(1)にて検索された、聴き間違えが起こり易く苦手なリズムに対応した訓練課題データtrainを訓練課題情報管理テーブルT4に登録し、その訓練課題データtrainに従って同一音高で音長が異なる先行音および後続音をランダムに組合せた訓練課題音データtrNoteを作成して訓練課題音管理テーブルT5に登録する。
(9)訓練音作成処理(2)の動作
次に、図31を参照して訓練音作成処理(2)の動作を説明する。前述した分析処理(図21参照)のステップSE7を介して本処理が実行されると、CPU1は図31に示すステップSE7−1に処理を進め、ポインタiをゼロリセットし、続くステップSE7−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE7−3に進む。ステップSE7−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4(図8参照)に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次に、図31を参照して訓練音作成処理(2)の動作を説明する。前述した分析処理(図21参照)のステップSE7を介して本処理が実行されると、CPU1は図31に示すステップSE7−1に処理を進め、ポインタiをゼロリセットし、続くステップSE7−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE7−3に進む。ステップSE7−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4(図8参照)に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次に、ステップSE7−4〜SE7−5では、分析モード画面AMG(図3参照)の音階レベル選択枠W1で指定される音階レベルに含まれる音高Pitchをランダム関数にてランダムに発生させる。そして、指定範囲内の音高Pitchが発生すると、ステップSE7−5の判断結果が「YES」になり、ステップSE7−6に進む。ステップSE7−6では、1音目設定処理を実行し、図29に示すステップSEb1〜SEb7にて1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定する。但し、本処理に対応する1音目設定処理の場合、図29に示すステップSEb4では、上記ステップSE7−4〜SE7−5にて発生させた音高Pitchを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)として訓練課題音管理テーブルT5に登録する。
1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定し終えると、CPU1は図31に示すステップSE7−7に処理を進め、ポインタjに初期値「1」をセットする。次いで、ステップSE7−8〜SE7−12では、出題音数iNotesを超えるまでポインタjを歩進させる毎に、指定範囲内でランダムに変化する音高Pitchを発生させながら、ステップSE7−11を介して図30に図示した2音目以降設定処理を実行する。但し、本処理に対応する2音目以降設定処理の場合、図30に示すステップSEc4では、上記ステップSE7−9〜SE7−10にて発生させた音高Pitchを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)として訓練課題音管理テーブルT5に登録する。
2音目以降設定処理にて出題音数iNote分の訓練課題音データtrNoteを設定し終えると、図31に示すステップSE7−8の判断結果が「NO」となり、ステップSE7−13に進み、ポインタiを歩進させた後、上述したステップSE7−2に処理を戻す。以後、課題数nTrain分の訓練課題を作成するまでステップSE7−3〜SE7−13を繰り返す。そして、課題数nTrain分の訓練課題を作成し終えると、ステップSE7−2の判断結果が「NO」となり、本処理を完了させる。
このように、訓練音作成処理(2)では、正誤判定処理(1)にて検索された、聴き間違えが起こり易く苦手なリズムに対応した訓練課題データtrainを訓練課題情報管理テーブルT4に登録し、その訓練課題データtrainに対応したリズム(音の並び)でランダムに音高を変化させた訓練課題音データtrNoteを作成して訓練課題音管理テーブルT5に登録する。
(10)正誤判定処理(2)の動作
次に、図32〜図33を参照して正誤判定処理(2)の動作を説明する。前述した分析処理(図21参照)のステップSE4を介して本処理が実行されると、CPU1は図32に示すステップSE4−1に処理を進め、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]の内容を読み出すための行ポインタiおよび列ポインタjをゼロリセットする。なお、ここで言う行ポインタiは前述のポインタnIndexに、列ポインタjは前述した前述のポインタbIndexにそれぞれ対応する。また、行ポインタi(列ポインタj)の「0」〜「8」は、ポインタnIndex(ポインタbIndex)の「1/4」、「3/8」、「1/2」、「3/4」、「1」、「3/2」、「2」、「3」および「4」に相当する。
次に、図32〜図33を参照して正誤判定処理(2)の動作を説明する。前述した分析処理(図21参照)のステップSE4を介して本処理が実行されると、CPU1は図32に示すステップSE4−1に処理を進め、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]の内容を読み出すための行ポインタiおよび列ポインタjをゼロリセットする。なお、ここで言う行ポインタiは前述のポインタnIndexに、列ポインタjは前述した前述のポインタbIndexにそれぞれ対応する。また、行ポインタi(列ポインタj)の「0」〜「8」は、ポインタnIndex(ポインタbIndex)の「1/4」、「3/8」、「1/2」、「3/4」、「1」、「3/2」、「2」、「3」および「4」に相当する。
次いで、ステップSE4−2〜SE4−15では、行ポインタiを「0」から「8」まで歩進させる行走査と列ポインタjを「0」から「8」まで歩進させる列走査とを行いながら、正答集計カウンタOKCnt[i][j]および誤答集計カウンタMSCnt[i][j]を読み出し、その内容から聴き分けが「非常に得意なリズム」、「得意なリズム」、「普通のリズム」、「やや不得意なリズム」、「不得意なリズム」および「出題されていないリズム」のいずれであるかを判定した結果をレジスタTempoRslt[i][j]にストアする。
すなわち、行ポインタiおよび列ポインタjに応じて正答集計カウンタOKCnt[i][j]から読み出される正答数と、誤答集計カウンタMSCnt[i][j]からそれぞれ読み出される誤答数とが共に「0」の場合には、ステップSE4−5の判断結果が「YES」となり、列ポインタjを歩進させる。この場合、レジスタTempoRslt[i][j]の値は「出題されていないリズム」を表す初期値「0」となる。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の4倍以上ある場合には、ステップSE4−6の判断結果が「YES」となり、ステップSE4−7に進み、「非常に得意なリズム」を表す判定値「5」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の3/2倍以上ある場合には、ステップSE4−9の判断結果が「YES」となり、ステップSE4−10に進み、「得意なリズム」を表す判定値「4」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の4倍以上ある場合には、ステップSE4−6の判断結果が「YES」となり、ステップSE4−7に進み、「非常に得意なリズム」を表す判定値「5」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の3/2倍以上ある場合には、ステップSE4−9の判断結果が「YES」となり、ステップSE4−10に進み、「得意なリズム」を表す判定値「4」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の2/3倍以上ある場合には、ステップSE4−11の判断結果が「YES」となり、ステップSE4−12に進み、「普通のリズム」を表す判定値「3」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍以上ある場合には、ステップSE4−13の判断結果が「YES」となり、ステップSE4−14に進み、「やや不得意なリズム」を表す判定値「2」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍より少ない場合には、ステップSE4−13の判断結果が「NO」となり、ステップSE4−15に進み、「不得意なリズム」を表す判定値「1」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍以上ある場合には、ステップSE4−13の判断結果が「YES」となり、ステップSE4−14に進み、「やや不得意なリズム」を表す判定値「2」をレジスタTempoRslt[i][j]にストアする。
正答集計カウンタOKCnt[i][j]から読み出される正答数が、誤答集計カウンタMSCnt[i][j]から読み出される誤答数の1/4倍より少ない場合には、ステップSE4−13の判断結果が「NO」となり、ステップSE4−15に進み、「不得意なリズム」を表す判定値「1」をレジスタTempoRslt[i][j]にストアする。
こうして、レジスタTempoRslt[i][j]に判定結果を登録し終えると、CPU1は図33に示すステップSE4−16〜SE4−32を実行し、レジスタTempoRslt[i][j]に格納される判定結果の内から判定値「1(不得意なリズム)」あるいは判定値「2(やや不得意なリズム)」を検索する。
すなわち、9行9列の配列要素を備えるレジスタTempoRslt[i][j]を、図26に図示する検索順序に従って読み出すように行ポインタiおよび列ポインタjを更新する。なお、図26に図示する検索順序は、最初にレジスタTempoRslt[4][4]の内容、つまり4分音符が並ぶ単純なリズムから始り、徐々に複雑なリズムに移行する過程を表している。そして、レジスタTempoRslt[i][j]の内から判定値「1」あるいは「2」が検索されると、検索時点の行ポインタiをレジスタNoteGate[iCnt][0]に、列ポインタjをレジスタNoteGate[iCnt][1]にストアして行き、検知数iGates分を検索した時点で検索を完了させる。
すなわち、9行9列の配列要素を備えるレジスタTempoRslt[i][j]を、図26に図示する検索順序に従って読み出すように行ポインタiおよび列ポインタjを更新する。なお、図26に図示する検索順序は、最初にレジスタTempoRslt[4][4]の内容、つまり4分音符が並ぶ単純なリズムから始り、徐々に複雑なリズムに移行する過程を表している。そして、レジスタTempoRslt[i][j]の内から判定値「1」あるいは「2」が検索されると、検索時点の行ポインタiをレジスタNoteGate[iCnt][0]に、列ポインタjをレジスタNoteGate[iCnt][1]にストアして行き、検知数iGates分を検索した時点で検索を完了させる。
以上のように、正誤判定処理(2)では、聴き分けできるリズムを集計した正答集計カウンタOKCntと、聴き間違えたリズムを集計した誤答集計カウンタMSCntとから「非常に得意なリズム」、「得意なリズム」、「普通のリズム」、「やや不得意なリズム」、「不得意なリズム」および「出題されていないリズム」のいずれであるかを判定した結果をレジスタTempoRslt[i][j]に集計する。そして、判定結果を集計したレジスタTempoRslt[i][j]の内から聴き間違えが起こり易く苦手(やや不得意・不得意)なリズムを、図26に図示する検索順序で検索を進め、該当するリズムを検索する毎に、当該リズム(音の並び)の先行音の音長比をレジスタNoteGate[iCnt][0]に、後続音の音長比をレジスタNoteGate[iCnt][1]に登録して行き、ポインタiCntが検知数iGatesに達するまで検索を進める。
(11)訓練音作成処理(3)の動作
次に、図34を参照して訓練音作成処理(3)の動作を説明する。前述した分析処理(図21参照)のステップSE9を介して本処理が実行されると、CPU1は図34のステップSE9−1に処理を進め、ポインタiをゼロリセットし、続くステップSE9−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE9−3に進む。ステップSE9−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4(図8参照)に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次に、図34を参照して訓練音作成処理(3)の動作を説明する。前述した分析処理(図21参照)のステップSE9を介して本処理が実行されると、CPU1は図34のステップSE9−1に処理を進め、ポインタiをゼロリセットし、続くステップSE9−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE9−3に進む。ステップSE9−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4(図8参照)に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次いで、ステップSE9−4では、上述の正誤判定処理(2)にて得られたレジスタNoteGate[][]の内容、すなわち聴き間違えが起こり易く苦手とする複数種のリズム(音の並び)の内から1つの音をランダムに指定する。そして、ステップSE9−5では、1音目設定処理を実行し、図29に示すステップSEb1〜SEb7にて1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定する。但し、本処理に対応する1音目設定処理の場合、図29に示すステップSEb5では、上記ステップSE9−4にてランダムに指定されたレジスタNoteGate[][]に格納される音長比を変換テーブルganeratioで音符単位の音長に変換し、それに4分音符長div4を乗じて音長gateを算出する。
1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定し終えると、CPU1は図34に示すステップSE9−6に処理を進め、ポインタjに初期値「1」をセットする。次いで、ステップSE9−7〜SE9−11では、出題音数iNoteを超えるまでポインタjを歩進させる毎に、聴き間違えが起こり易く苦手とする複数種のリズム(音の並び)の内から1つの音をランダムに指定しながら、ステップSE9−9を介して図30に図示した2音目以降設定処理を実行する。但し、本処理に対応する2音目以降設定処理の場合、図30に示すステップSEc5を行わず、ステップSEc6においては上記ステップSE9−8にてランダムに指定されたレジスタNoteGate[][]に格納される音長比を変換テーブルganeratioで音符単位の音長に変換し、それに4分音符長div4を乗じて音長gateを算出する。
2音目以降設定処理にて出題音数iNote分の訓練課題音データtrNoteを設定し終えると、図34に示すステップSE9−7の判断結果が「NO」となり、ステップSE9−11に進み、ポインタiを歩進させた後、上述したステップSE9−2に処理を戻す。以後、課題数nTrain分の訓練課題を作成するまでステップSE9−3〜SE9−11を繰り返す。そして、課題数nTrain分の訓練課題を作成し終えると、ステップSE9−2の判断結果が「NO」となり、訓練課題作成処理を完了させる。
このように、訓練課題作成処理(3)では、単純なリズムから徐々に複雑なリズムに難易度が変化する訓練課題データtrainを訓練課題情報管理テーブルT4に登録し、登録した訓練課題データtrainに対応した難易度のリズム(音の並び)において、聴き間違えが起こり易く苦手とするリズム(音の並び)をランダムに組合せた訓練課題音データtrNoteを作成して訓練課題音管理テーブルT5に登録する。
(12)訓練音作成処理(4)の動作
次に、図35を参照して訓練音作成処理(4)の動作を説明する。前述した分析処理(図21参照)のステップSE10を介して本処理が実行されると、CPU1は図35のステップSE10−1に処理を進め、ポインタiをゼロリセットし、続くステップSE10−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE10−3に進む。ステップSE10−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次に、図35を参照して訓練音作成処理(4)の動作を説明する。前述した分析処理(図21参照)のステップSE10を介して本処理が実行されると、CPU1は図35のステップSE10−1に処理を進め、ポインタiをゼロリセットし、続くステップSE10−2では、ポインタiが課題数nTrain(既定値)より小さいか否か、つまり訓練課題を作成し終えたかどうかを判断する。訓練課題を作成し終えていなければ、判断結果は「YES」となり、ステップSE10−3に進む。ステップSE10−3では、train[i][x]設定処理を実行し、図28に図示したステップSEa1〜SEa8にて訓練課題情報管理テーブルT4に登録する訓練課題データtrain[m][0]〜train[m][4]を作成する。
次に、ステップSE10−4では、前述した正誤判定処理(2)において得られたレジスタNoteGate[][]の内容、すなわち聴き間違えが起こり易く苦手とする複数種のリズム(音の並び)の内から1つの音をランダムに指定する。続くステップSE10−5〜SE10−6では、分析モード画面AMG(図3参照)の音階レベル選択枠W1で指定された音階レベルに含まれる音高Pitchをランダム関数にてランダムに発生させる。そして、指定範囲内の音高Pitchが発生すると、ステップSE10−6の判断結果が「YES」になり、ステップSE10−7に進む。ステップSE10−7では、1音目設定処理を実行し、図29に示すステップSEb1〜SEb7にて1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定する。
但し、本処理に対応する1音目設定処理の場合、図29に示すステップSEb4では、上記ステップSE10−5〜SE10−6にて発生させた音高Pitchを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)として訓練課題音管理テーブルT5に登録する。また、ステップSEb5では、上記ステップSE10−4にてランダムに指定されたレジスタNoteGate[][]に格納される音長比を変換テーブルganeratioで音符単位の音長に変換し、それに4分音符長div4を乗じて音長gateを算出する。
1音目の訓練課題音データtrNote[IDX][0]〜[4]を設定し終えると、CPU1は図35に示すステップSE10−8に処理を進め、ポインタjに初期値「1」をセットする。次いで、ステップSE10−9〜SE10−15では、出題音数iNoteを超えるまでポインタjを歩進させる毎に、聴き間違えが起こり易く苦手とする複数種のリズム(音の並び)の内から1つの音をランダムに指定する共に、指定範囲内でランダムに変化する音高Pitchを発生させながら、ステップSE10−13を介して図30に図示した2音目以降設定処理を実行する。
但し、本処理に対応する2音目以降設定処理の場合、図30に示すステップSEc4では、上記ステップSE10−11〜SE10−12にて発生した音高Pitchを、レジスタIDXの値に対応させた訓練課題音データtrNote[IDX][2](音高pitch)に登録する。また、ステップSEc5を行わず、ステップSEc6においては上記ステップSE10−10にてランダムに指定されたレジスタNoteGate[][]に格納される音長比を変換テーブルganeratioで音符単位の音長に変換し、それに4分音符長div4を乗じて音長gateを算出する。
2音目以降設定処理にて出題音数iNote分の訓練課題音データtrNoteを設定し終えると、図35に示すステップSE10−9の判断結果が「NO」となり、ステップSE10−15に進み、ポインタiを歩進させた後、上述したステップSE10−2に処理を戻す。以後、課題数nTrain分の訓練課題を作成するまでステップSE10−3〜SE10−15を繰り返す。そして、課題数nTrain分の訓練課題を作成し終えると、ステップSE10−2の判断結果が「NO」となり、本処理を完了させる。
このように、訓練音作成処理(4)では、単純なリズムから徐々に複雑なリズムに難易度が変化する訓練課題データtrainを訓練課題情報管理テーブルT4に登録し、登録した訓練課題データtrainに対応した難易度のリズムにおいて、聴き間違えが起こり易く苦手とするリズムをランダムに組合せ、かつその音高もランダムに変化させた訓練課題音データtrNoteを作成して訓練課題音管理テーブルT5に登録する。
以上説明したように、本実施の形態では、問題モード下で再生開始処理、回答処理および判定処理を実行すると、出題された課題音および回答された回答音を表す課題履歴データtestHistが課題履歴管理データベースDBに登録され、この後に分析モードに遷移して分析処理を実行すると、課題履歴管理データベースDBに登録される課題履歴データtestHistを参照して、聴き分けできるリズムを正答集計カウンタOKCntに集計し、聴き間違えたリズムを誤答集計カウンタMSCntに集計する。聴き分けできるリズムと聴き間違えたリズムとを集計した結果から聴き分けが「非常に得意なリズム」、「得意なリズム」、「普通のリズム」、「やや不得意なリズム」、「不得意なリズム」および「出題されていないリズム」を判定する。そして、2つの音の並び(先行音の音長比と後続音の音長比)で決るリズムの難易度を変化させながら、判定結果から聴き間違えが起こり易く苦手(やや不得意・不得意)なリズムを検索し、この検索結果から聴き間違えが起こり易く苦手なリズムの訓練課題音を作成する。この後、分析モード下で再生開始処理および回答処理を実行することによって、作成した訓練課題音の再生/回答が行われ、これにより聴き間違えが起こり易く苦手とするリズムの聴き取り能力を重点的に教習することが可能になる。
1 CPU
2 ROM
3 RAM
4 MIDIインタフェース
5 マウス
6 キーボード
7 表示部
10 DTM装置
20 電子楽器
2 ROM
3 RAM
4 MIDIインタフェース
5 マウス
6 キーボード
7 表示部
10 DTM装置
20 電子楽器
Claims (10)
- 出題された一連の課題音とそれらに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、
前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成する訓練課題作成手段と、
前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段と
を具備することを特徴とする音楽教習装置。 - 課題音の発音を指示して出題する出題手段と、
前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、
前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、
前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、
前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段と
を具備することを特徴とする音楽教習装置。 - 課題音の発音を指示して出題する出題手段と、
前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、
前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、
前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら2つの音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、
前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段と
を具備することを特徴とする音楽教習装置。 - 課題音の発音を指示して出題する出題手段と、
前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、
前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、
単純なリズムから複雑なリズムに難易度を変化させながら、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、
前記訓練課題作成手段により作成された一連の訓練課題音の発音を指示して出題する訓練課題出題手段と
を具備することを特徴とする音楽教習装置。 - 課題音の発音を指示して出題する出題手段と、
前記出題手段により出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶手段と、
前記課題履歴記憶手段に課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音を各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計手段と、
単純なリズムから複雑なリズムに難易度を変化させながら、前記集計手段の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成手段と、
前記訓練課題作成手段により作成された訓練課題音の発音を指示して出題する訓練課題出題手段と
を具備することを特徴とする音楽教習装置。 - 出題された一連の課題音とそれらに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、
前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムによる一連の訓練課題音を作成する訓練課題作成過程と、
前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。 - 課題音の発音を指示して出題する出題過程と、
前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、
前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、
前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、
前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。 - 課題音の発音を指示して出題する出題過程と、
前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、
前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、
前記集計過程による集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら2つの音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、
前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。 - 課題音の発音を指示して出題する出題過程と、
前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、
前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音とを各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、
単純なリズムから複雑なリズムに難易度を変化させながら、前記集計過程の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音を同一音高とし、かつそれら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、
前記訓練課題作成過程にて作成された一連の訓練課題音の発音を指示して出題する訓練課題出題過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。 - 課題音の発音を指示して出題する出題過程と、
前記出題過程で出題された課題音とそれに対応してユーザが回答した回答音とを対応付けた課題履歴を記憶する課題履歴記憶過程と、
前記課題履歴記憶過程にて課題履歴として記憶された一連の課題音と各課題音のそれぞれに対応して回答された一連の回答音を各々比較して聴き分けできるリズムおよび聴き間違えたリズムを集計する集計過程と、
単純なリズムから複雑なリズムに難易度を変化させながら、前記集計過程の集計結果から聴き間違えが起こり易く苦手なリズムを判定し、判定したリズムを形成する2つの音の音高をランダムに変化させると共に、それら音の音長をランダムに組合せた一連の訓練課題音を作成する訓練課題作成過程と、
前記訓練課題作成過程にて作成された訓練課題音の発音を指示して出題する訓練課題出題過程と
をコンピュータで実行させることを特徴とする音楽教習プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003383478A JP2005148269A (ja) | 2003-11-13 | 2003-11-13 | 音楽教習装置および音楽教習プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003383478A JP2005148269A (ja) | 2003-11-13 | 2003-11-13 | 音楽教習装置および音楽教習プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005148269A true JP2005148269A (ja) | 2005-06-09 |
Family
ID=34692189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003383478A Pending JP2005148269A (ja) | 2003-11-13 | 2003-11-13 | 音楽教習装置および音楽教習プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005148269A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018109696A (ja) * | 2017-01-04 | 2018-07-12 | 誠 木部 | 読譜練習用リズムパターンの自動生成に関する方法、システムおよびプログラム |
CN113096486A (zh) * | 2021-04-13 | 2021-07-09 | 陕西理工大学 | 一种便于远程学习的钢琴教学装置 |
-
2003
- 2003-11-13 JP JP2003383478A patent/JP2005148269A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018109696A (ja) * | 2017-01-04 | 2018-07-12 | 誠 木部 | 読譜練習用リズムパターンの自動生成に関する方法、システムおよびプログラム |
CN113096486A (zh) * | 2021-04-13 | 2021-07-09 | 陕西理工大学 | 一种便于远程学习的钢琴教学装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080115657A1 (en) | Electronic musical instrument and performance control program systems and methods | |
JP3842403B2 (ja) | 音楽教習システム、音楽教習方法、及び同方法を実現するためのプログラムを記録した記録媒体 | |
US20090044685A1 (en) | Ensemble system | |
JP3430267B2 (ja) | 電子楽器 | |
JP4506175B2 (ja) | 運指表示装置及びそのプログラム | |
JPH08297487A (ja) | 演奏指示装置 | |
JP2005148269A (ja) | 音楽教習装置および音楽教習プログラム | |
JP4178553B2 (ja) | 音楽教習装置および音楽教習プログラム | |
JP4475383B2 (ja) | 音楽教習装置および音楽教習プログラム | |
JP3275362B2 (ja) | 演奏練習装置 | |
JP3266934B2 (ja) | 演奏練習装置 | |
JP3579927B2 (ja) | 自動演奏装置 | |
JP2522928Y2 (ja) | 電子楽器 | |
JP4178549B2 (ja) | 音楽教習装置および音楽教習プログラム | |
JP3582315B2 (ja) | 練習支援装置、練習支援方法および記憶媒体 | |
JP4482853B2 (ja) | 演奏診断装置および演奏診断プログラム | |
JP4192936B2 (ja) | 自動演奏装置 | |
JP4221567B2 (ja) | 演奏練習装置、演奏練習方法および演奏練習プログラム | |
JP2005049628A (ja) | 音楽教習装置および音楽教習プログラム | |
JP5980613B2 (ja) | スクリーニング支援システム及びスクリーニング支援プログラム | |
JP4697666B2 (ja) | 楽譜表示装置および楽譜表示プログラム | |
JP4655872B2 (ja) | 演奏評価システムおよび演奏評価処理のプログラム | |
JP3252173B2 (ja) | 演奏練習装置 | |
JP2714557B2 (ja) | 演奏練習装置 | |
JP4228346B2 (ja) | 演奏支援情報生成装置および演奏支援情報生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090622 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091015 |