JP3800867B2 - 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 - Google Patents
演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3800867B2 JP3800867B2 JP17318599A JP17318599A JP3800867B2 JP 3800867 B2 JP3800867 B2 JP 3800867B2 JP 17318599 A JP17318599 A JP 17318599A JP 17318599 A JP17318599 A JP 17318599A JP 3800867 B2 JP3800867 B2 JP 3800867B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- note
- key
- time
- pitch
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B15/00—Teaching music
- G09B15/001—Boards or like means for providing an indication of chords
- G09B15/002—Electrically operated systems
- G09B15/003—Electrically operated systems with indication of the keys or strings to be played on instruments
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Educational Administration (AREA)
- Educational Technology (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、演奏を教習する演奏教習装置及び演奏教習処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
演奏を教習するナビゲーション機能を有する演奏教習装置が普及している。例えば、ナビゲーション機能をもつ鍵盤装置においては、操作子である鍵盤の各鍵内にLED等の発光手段を設けて、曲の音符データの進行に合わせて音高データに対応する鍵を発音タイミングに合わせて発光させ、曲の演奏教習を行っている。このようなナビゲーション機能を有する鍵盤装置の中には、複数のレッスンモードで演奏を教習するものもある。例えば、第1のレッスンモード及び第2のレッスンモードの2つのレッスンモードを持ったものがある。第1のレッスンモードでは、押鍵するタイミングのみを習得するためのナビゲーションを行う。このモードにおいては、発光している鍵に限らずどの鍵を押鍵しても、押鍵のタイミングと鍵数とが合っていれば正しいと判定する。第2のレッスンモードでは、押鍵するタイミングだけでなく押鍵の音高も合っている場合に正しいと判定する。
【0003】
【発明が解決しようとする課題】
しかしながら、第1のレッスンモード1及び第2のレッスンモードの2つのレッスンモードを持った従来の鍵盤装置においては、和音を含む曲の演奏教習には以下のような問題があった。
演奏時には同時に押鍵する和音であっても、SMF(Standard Midi File)等の汎用の曲データでは、ノートオンやノートオフ等のイベントデータがシリアルに配列されているので、鍵の発光開始時間が少しずつずれてしまう。また、演奏法的に故意に和音の各構成音を同時に押鍵せずに微妙な時間差で押鍵する場合もある。
ところが、発音期間の少なくとも一部が重複している複数の音符については、譜面の上では同時に演奏すべき和音として演奏者が解釈するのが普通である。こため、第1のレッスンモードでは、和音を構成する音数分の押鍵がないと正しいと判定しないため、押鍵するタイミングのみを習得することができなかった。一方、第2のレッスンモードでは、SMFの曲データの場合に、和音の各構成音の発音タイミングの順番通りに押鍵しなければ正しいと判定しないため、本来の和音の演奏を習得することができなかった。
本発明の課題は、和音を含む曲データを異なるレッスンモードで練習する場合に、それぞれのレッスンモードの習得目的に合った演奏教習ができるようにすることである。
【0004】
【課題を解決するための手段】
請求項1に記載の演奏教習装置は、曲の演奏を行うための複数の操作子と、この各操作子に対応して設けられた発光手段と、操作すべき操作子に対応する音高データ、発音期間を表す発音開始及び発音終了タイミングを示す時間データを含む音符データからなる曲データを取得する曲データ取得手段と、この曲データ取得手段により得られた曲データを構成する音符データのうち、発音期間の一部が重複している複数の音符データについては当該発音期間の全てが重複するように補正するデータ補正手段と、このデータ補正手段により補正された曲データを構成する音符データを、当該音符データに含まれる時間データに基づいたタイミングで順次読み出すとともに、当該読み出された音符データの音高データに対応する発光手段を当該音符データの発音開始タイミングに合わせて発光させた後、当該読み出しを停止させる読み出し制御手段と、前記読み出し制御手段によって操作すべき操作子に対応する発光手段が発光されている際に、前記操作子の操作に応答して前記読み出し制御手段の読み出しを再開させるとともに、当該発光手段の発光開始から所定時間内に操作すべき操作子が操作されたことが検出されない場合には警告報知を行う演奏判定手段と、を備えた構成になっている。
【0005】
請求項2に記載の記憶媒体は、曲の演奏を行うための複数の操作子と、この各操作子に対応して設けられた発光手段を有する演奏教習装置に適用されるプログラムを記憶する記憶媒体であって、操作すべき操作子に対応する音高データ、発音期間を表す発音開始及び発音終了タイミングを示す時間データを含む音符データからなる曲データを取得する曲データ取得順と、この曲データ取得手段により得られた曲データを構成する音符データのうち、発音期間の一部が重複している複数の音符データについては当該発音期間の全てが重複するように補正するデータ補正手順と、このデータ補正手段により補正された曲データを構成する音符データを、当該音符データに含まれる時間データに基づいたタイミングで順次読み出すとともに、当該読み出された音符データの音高データに対応する発光手段を当該音符データの発音開始タイミングに合わせて発光させた後、当該読み出しを停止させる読み出し制御手順と、前記読み出し制御手段によって操作すべき操作子に対応する発光手段が発光されている際に、前記操作子の操作に応答して前記読み出し制御手段の読み出しを再開させるとともに、当該発光手段の発光開始から所定時間内に操作すべき操作子が操作されない場合には警告報知を行う演奏判定手順と、を実行する演奏教習プログラムを記録している。
【0008】
請求項1又は請求項2の発明によれば、曲データにおいて発音期間の一部が重複している音符データについて対応する発光手段を発光させる際に、その発音期間の全てが重複するように補正し、操作開始タイミングを習得するためのレッスンモードにおいては、発光開始時間から所定時間内に任意の操作子が操作開始されない場合は警告報知を行う。
【0010】
【発明の実施の形態】
以下、本発明における演奏教習装置の第1及び第2実施形態について、鍵盤装置を例に採って図を参照して説明する。
図1は、各実施形態における鍵盤装置のシステム構成である。CPU1は、システムバスを介して、ROM2、RAM3、キースキャンインターフェース4、LEDC(LEDコントローラ)5、FDDC(フロッピーディスク・ドライブ・コントローラ)6、MIDIインターフェース7に接続されている。ROM2は、CPU1によって実行される演奏教習処理プログラムを記憶している。RAM3は、CPU1によって処理される各種データを一時的に記憶する。キースキャンインターフェース4は、複数の操作子からなる鍵盤及びスイッチ群を備えたキーボード8に接続され、その操作状態をスキャンしてCPU1に入力する。LEDC5は、各鍵内に設けられた発光手段であるLED(発光ダイオード)9の発光及び消光を制御する。FDDC6は、FDD(フロッピーディスク駆動装置)10を制御する。MIDIインターフェース7は、外部のMIDI装置から入力したMIDIデータを取り込んでRAM3にストアするとともに、CPU1によって作成されたMIDIデータを外部のMIDI音源に出力する。
【0011】
図2(1)は、図2(2)に示す音符をSMF形式で表わしたデータフォーマットである。図2(1)に示すように、アドレスADごとの音符データは、NOTEONやNOTEOFF等のイベントデータ(EVENT)、イベント開始までのデルタタイム(DTIME)、及び音高データで構成されている。このほか、ベロシティデータ等も含まれるが、説明の便宜を図るために省略する。アドレス2、3、4のNOTEONのイベントデータは発音開始タイミングが同じで和音を構成しているが、データとしてはシリアルデータの配列になっている。なお、曲データの最後はENDデータになっている。
【0012】
図3は、各実施形態において使用するレジスタ群、フラグ群等を示している。T1は実時間レジスタであり、ナビゲーションがスタートすると、5〜10msecごとに入るタイマインタラプトによってこのレジスタの時間データがインクリメントされる。T2はデルタタイムレジスタであり、曲の音符データのアドレスの進行に応じてデルタタイムがストアされる。LFは曲ロードフラグであり、このフラグが「1」のときに曲データをRAMにロードする。MODEはモードレジスタであり、このレジスタの値が「0」の場合はマニュアル演奏モードであり、「1」の場合は第1のレッスンモードであり、「2」の場合は第2のレッスンモードである。各レッスンモードについては後述する。STFはスタートフラグであり、このフラグが「1」になるとナビゲーションがスタートし、「0」になるとナビゲーションがストップする。ADは前述したように、音符データのアドレスを指定するレジスタである。
【0013】
TAはタイムレジスタであり、LEDの発光開始時間がストアされる。TBもタイムレジスタであり、押鍵開始時間がストアされる。BUFAはナビゲーションガイド用のバッファであり、BUFBは押鍵・離鍵用のバッファである。n、k、mは、それぞれ鍵番号、バッファBUFAのエリア、バッファBUFBのエリアを指定するポインタである。TCはタイムレジスタであり、LED消光開始時間がストアされる。TDもタイムレジスタであり、離鍵開始時間がストアされる。T3は判定レジスタであり、このレジスタの値によって演奏結果が正しいか否かを判定する。T4(m)は第2実施形態において使用する判定レジスタである。HF(m)は第2実施形態において使用する判定フラグである。各実施形態において使用するレジスタ群、フラグ群等についてはさらに後述する。
【0014】
次に、第1実施形態における演奏教習処理について、CPU1のフローチャート等を参照して詳細に説明する。図4はメインフローである。所定のイニシャライズ処理(ステップA1)の後、スイッチ処理(ステップA2)、曲ロード処理(ステップA3)、LED処理(ステップA4)、鍵盤処理(ステップA5)、発音処理(ステップA6)を繰り返し実行する。図5は、タイマインタラプト1のフローであり、一定時間(5〜10msec)ごとに実時間を計数するためにT1の値をインクリメントする。図6は、タイマインタラプト2のフローであり、一定時間ごとにストアされているデルタタイムの値をデクリメントする。
【0015】
図7及び図8は、メインフローにおけるステップA2のスイッチ処理のフローである。このフローにおいては、曲ロードスイッチがオンされたか否かを判別し(ステップB1)、このスイッチがオンされたときは、フラグLFを「1」にセットする(ステップB2)。そして、このフローを終了してメインフローに戻る。曲ロードスイッチがオンされない場合には、モードスイッチがオンされたか否かを判別する(ステップB3)。このスイッチがオンされたときは、選択されたモードを判別する(ステップB4)。通常の演奏であるマニュアルモードが選択されたときは、レジスタMODEを「0」にセットする(ステップB5)。第1のレッスンモードが選択されたときは、MODEを「1」にセットする(ステップB6)。第2のレッスンモードが選択されたときは、MODEを「2」にセットする(ステップB7)。MODEをセットした後は、このフローを終了してメインフローに戻る。
【0016】
曲ロードスイッチもモードスイッチもオンされない場合には、図8のフローにおいて、スタート/ストップスイッチがオンされたか否かを判別する(ステップB8)。このスイッチがオンされたときは、フラグSTFを反転する(ステップB9)。そして、反転したSTFが「1」であるか否かを判別する(ステップB10)。STFが「1」である場合には、レジスタADを「0」にセットして(ステップB11)、曲データの最初のアドレスを指定する。次に、指定した最初のアドレスにおけるデルタタイムDTIME(AD)をレジスタT2にセットする(ステップB12)。次に、タイマインタラプト1及び2を解除する(ステップB13)。そして、このフローを終了してメインフローに戻る。
【0017】
ステップB10においてSTFが「0」である場合には、タイマインタラプト1及び2を禁止する(ステップB14)。そして、このフローを終了してメインフローに戻る。上記各スイッチがオンされない場合には、その他のスイッチがオンされたか否かを判別し(ステップB15)、他のスイッチがオンされたときは、オンされたスイッチに対応するその他の処理を実行する(ステップB16)。そして、このフローを終了してメインフローに戻る。
【0018】
図10は、図4のメインフローにおけるステップA3の曲ロード処理のフローである。このフローにおいては、フラグLFが「1」すなわち曲ロードであるか否かを判別する(ステップC1)。LFが「0」である場合には、曲ロードではないので直ちにこのフローを終了してメインフローに戻る。LFが「1」である場合には、曲データをロードする(ステップC2)。ロードする曲データは、図1に示したFDDC6及びFDD10を介してフロッピーディスクからの場合、又は、MIDIインターフェース7を介して図示しない外部のMIDI装置からの場合がある。
【0019】
曲データをロードした際に、複数の音符データの発音期間の一部が重複しているか否か、すなわちその曲データが和音であるか否かを判別し(ステップC3)、発音期間の一部が重複している場合、すなわち和音が含まれている場合には、その発音期間の全てが重複するように補正する処理(この明細書ではクオンタイズ処理と称する)を実行する(ステップC4)。図10に示すように、クオンタイズ処理の前は、和音を構成する各音高データの発音開始タイミング及び消音タイミングがずれているが、クオンタイズ処理の後では、各音高データの発音開始タイミング及び消音タイミングが一致している。次に曲データが終了か否かを判別し(ステップC5)、終了でない場合にはステップC2に移行して曲データのロード処理を続行する。曲データが終了したときは、LFを「0」にセットして(ステップC6)、このフローを終了してメインフローに戻る。
【0020】
図11〜図14は、図4のメインフローにおけるステップA4のLED処理のフローである。このフローにおいては、MODEにストアされているデータが「1」又は「2」のいずれかであるか否かを判別する(ステップD1)。MODEのデータが「0」すなわちマニュアル演奏モードである場合には、直ちにこのフローを終了してメインフローに戻る。MODEのデータが「1」又は「2」である場合、すなわちナビゲーション演奏モードである場合には、STFが「1(スタート)」であるか否かを判別する(ステップD2)。STFが「0(ストップ)」である場合には、このフローを終了してメインフローに戻る。STFが「1」である場合には、レジスタT2にストアされているタイムデータが、図6のタイマインタラプト2の処理によってデクリメントされて「0」に達したか否かを判別する(ステップD3)。T2のタイムデータが「0」に達していない場合には、まだイベントの処理開始時間になっていないので、このフローを終了してメインフローに戻る。
【0021】
T2のタイムデータが「0」に達している場合には、レジスタADで指定したアドレスのイベントデータがノートオンであるか否かを判別する(ステップD4)。このデータがノートオンである場合には、図12のフローにおいて、BUFAのエリアを指定するポインタkを「1」にセットする(ステップD5)。次に、ノートオンのイベントデータの音高(NOTE)に対応するLEDを点灯して発光させる(ステップD6)。そして、ADで指定されたノートオンのイベントデータの音高データNOTE{EVENT(AD)}をBUFAのkで指定するエリアにストアする(ステップD7)。そして、kをインクリメントしてBUFAの次のエリアを指定し(ステップD8)、ADをインクリメントして次のアドレスのイベントデータを指定する(ステップD9)。
【0022】
そして、次のイベントデータが同じくノートオンであるか否かを判別する(ステップD10)。同じくノートオンであるである場合には、そのイベントデータのデルタタイムが「0」であるか否かを判別する(ステップD11)。すなわち、前のイベントデータと共に和音を構成するイベントデータであるか否かを判別する。和音を構成するイベントデータである場合には、ステップD6において対応するLEDを発光させ、ステップD7においてBUFAにそのイベントデータの音高データをストアする。そして、次のイベントデータを指定し、そのイベントデータが同じく和音を構成する場合には、LEDの発光及びBUFAのストアを繰り返す。
【0023】
ステップD10において次のイベントデータがノートオンでない場合、又は、ステップD11において次のイベントデータのデルタタイムが「0」でなく、和音を構成しない場合には、タイマインタラプト2を禁止して(ステップD12)、音符データの進行を中止する。すなわち、ナビゲーションに応じた押鍵操作を待つ。次に、ADで指定したイベントデータのデルタタイムをT2にストアする(ステップD13)。そして、レジスタTAにレジスタT1の実時間のデータをストアする(ステップD14)。したがって、LEDの発光開始時間のデータがTAにストアされる。そして、このフローを終了してメインフローに戻る。
【0024】
図11のステップD4において、ADで指定したアドレスのイベントデータがノートオンでない場合には、図13のフローにおいて、そのイベントデータがノートオフであるか否かを判別する(ステップD15)。そのイベントデータがノートオフである場合には、BUFAのエリアを指定するポインタkを「1」にセットする(ステップD16)。次に、ノートオフのイベントデータの音高(NOTE)に対応するLEDを消灯して発光を停止させる(ステップD17)。そして、ADで指定されたノートオフのイベントデータの音高データNOTE{EVENT(AD)}と同じ音高データをBUFAから捜す。すなわち、EVENT(AD)の音高データとBUFA(k)の音高データとが一致しているか否かを判別する(ステップD18)。
【0025】
音高データが一致していない場合には、kをインクリメントして(ステップD19)、BUFAの次のエリアを指定する。そして、kが最大値より大きくなったか否かを判別する(ステップD20)。最大値より大きくなったときは、kを「1」にセットして最初のエリアを指定する(ステップD21)。kが最大値以下である場合、又はkを「1」にセットした場合は、ステップD18に移行して、EVENT(AD)の音高データとBUFA(k)の音高データとが一致しているか否かを判別する。音高データが一致したときは、そのエリアBUFA(k)に「−1」をストアする(ステップD22)。この「−1」の値は、ノートオンからノートオフに変化したことを示すデータである。そして、kをインクリメントして(ステップD23)、BUFAの次のエリアを指定する。また、ADをインクリメントして(ステップD24)、ADで指定するイベントデータが前のイベントデータと同じくノートオフであるか否かを判別する(ステップD25)。
【0026】
イベントデータががノートオフである場合には、そのデルタタイムが「0」であるか否かを判別する(ステップD26)。すなわち、前のイベントデータと共に和音を構成するイベントデータであるか否かを判別する。和音を構成する場合にはステップD17に移行してLEDの発光停止を行い、ステップD22においてBUFA(k)に[−1]をストアする。そして、次のイベントデータを指定し、そのイベントデータが同じく和音を構成する場合には、LEDの発光停止及びBUFAへの「−1」のストアを繰り返す。
【0027】
ステップD25において次のイベントデータがノートオフでない場合、又は、ステップD26において次のイベントデータのデルタタイムが「0」でなく、和音を構成しない場合には、タイマインタラプト2を禁止して(ステップD27)、音符データの進行を中止する。すなわち、ナビゲーションに応じた離鍵操作を待つ。次に、ADで指定したイベントデータのデルタタイムをT2にストアする(ステップD28)。そして、レジスタTCにレジスタT1の実時間のデータをストアする(ステップD29)。したがって、LEDの発光停止時間のデータがTCにストアされる。そして、このフローを終了してメインフローに戻る。
【0028】
ADで指定したイベントデータが、図11のステップD4においてノートオンでなく、かつ、図13のステップD15においてノートオフでない場合には、そのイベントデータが曲の終了を示すENDデータであるか否かを判別する(ステップD30)。そのイベントデータがENDデータである場合には、STFを「0」にセットして(ステップD31)、タイマインタラプト1及び2を禁止して(ステップD32)、このフローを終了してメインフローに戻る。
【0029】
ステップD30において、イベントデータがENDデータでない場合、すなわち、そのイベントデータがノートデータ以外のプログラムチェンジ等のデータである場合には、図14のフローにおいて、そのイベントデータに応じた処理を行う(ステップD33)。次に、ADをインクリメントして(ステップD34)、ADで指定するイベントデータのデルタタイムをT2にストアする(ステップD35)。そして、図11のステップD3に移行する。
【0030】
図15〜図18は、図4のメインフローにおけるステップA5の鍵盤処理のフローである。このフローにおいては、キースキャンインターフェースを介して鍵を走査し(ステップE1)、押鍵操作又は離鍵操作による鍵変化があるか否かを判別する(ステップE2)。鍵変化がない場合には直ちにこのフローを終了してメインフローに戻る。押鍵による鍵変化(オン)があったときは、鍵番号を指定するポインタnを「1」にセットすると共に、鍵変化用のバッファBUFBのエリアを指定するポインタmを「1」にセットする(ステップE3)。
【0031】
そして、nをインクリメントしながら、下記のループ処理を実行して押鍵された鍵番号を検索する。すなわち、nで指定する音高(NOTE)の鍵がオンであるか否かを判別し(ステップE4)、オンである場合にはその鍵番号nをBUFB(m)にストアする(ステップE5)。そして、mをインクリメントしてBUFBの次のエリアを指定する(ステップE6)。この後、又はステップE4においてnで指定する音高(NOTE)の鍵がオンでない場合には、nをインクリメントして次の鍵番号を指定する(ステップE7)。そして、nが鍵数より大きい値になったか否かを判別する(ステップE8)。nが鍵数以下である場合には、ステップE4に移行して、nで指定する音高(NOTE)の鍵がオンであるか否かを判別する。
【0032】
ステップE8においてnが鍵数より大きい値になった場合、すなわち、すべての鍵の走査が終了したときは、レジスタTBにT1の実時間データをストアする(ステップE9)。したがって、TBには押鍵開始時間のデータがストアされる。次に、TBのデータからTAのデータを減算して、その結果をレジスタT3にストアする(ステップE10)。したがって、押鍵すべき鍵に対応するLEDの発光開始時間から、実際に押鍵された操作開始時間を減算した値、すなわち、押鍵をガイドした時から押鍵操作までの時間差をT3にストアする。
【0033】
次に、図16のフローにおいて、T3にストアされたデータが所定時間以内であるか否かを判別する(ステップE11)。この所定時間は、運指に要する時間であり、曲のテンポや演奏者の熟練度によって変化する時間である。この所定時間はあらかじめ設定されている。T3のデータが所定時間以内である場合には、音符データの進行に対して操作開始タイミングが遅れていない場合である。この場合には、レッスンモードを判別する。すなわち、MODEの値が「2」で第2のレッスンモードであるか否かを判別する(ステップE12)。MODEの値が「2」である場合には、BUFAにストアされた全ての音高データが、BUFBにストアされた全ての音高データと一致しているか否かを判別する(ステップE13)。すなわち、押鍵をガイドされた鍵が正しく押鍵されたか否かを判別する。
【0034】
全ての音高データが一致している場合には、演奏結果を正しいと判定し、タイマインタラプト2を解除して(ステップE14)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE15)、このフローを終了してメインフローに戻る。ステップE12においてMODEの値が「1」である場合、すなわち第1のレッスンモードである場合には、押鍵をガイドされた鍵が正しく押鍵されていなくとも、操作開始タイミングが遅れていなければ演奏結果を正しいと判定するので、タイマインタラプト2を解除して(ステップE14)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE15)、このフローを終了してメインフローに戻る。
【0035】
ステップE11において、T3の値が所定時間を超えている場合、すなわち、操作開始タイミングが遅れている場合には、その旨の警告を表示する(ステップE16)。また、ステップE13において、BUFAにストアされた全ての音高データが、BUFBにストアされた全ての音高データと一致していない場合にも、その旨の警告を表示する(ステップE16)。警告表示の後は、タイマインタラプト2を解除して(ステップE14)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE15)、このフローを終了してメインフローに戻る。
【0036】
図15のステップE2において、鍵変化が離鍵(オフ)によるものである場合には、図17のフローにおいて、鍵番号を指定するポインタnを「1」にセットすると共に、鍵変化用のバッファBUFBのエリアを指定するポインタmを「1」にセットする(ステップE17)。そして、nをインクリメントしながら、下記のループ処理を実行して離鍵された鍵番号を検索する。すなわち、nで指定する音高(NOTE)の鍵がオフであるか否かを判別する(ステップE18)。その鍵がオフである場合には、その鍵番号NOTE(n)とBUFB(m)のエリアにストアされている鍵番号NOTE{BUFB(m)}とが同じであるか否かを判別する(ステップE19)。同じでない場合には、mをインクリメントしてBUFBの次のエリアを指定する(ステップE20)。そして、mが最大値より大きいか否かを判別する(ステップE21)。最大値より大きくなったときは、mを「1」にセットして最初のエリアを指定する(ステップE22)。
【0037】
mが最大値以下である場合、又はmを「1」にセットした場合は、ステップE19に移行して、鍵番号NOTE(n)と鍵番号NOTE{BUFB(m)}とが同じであるか否かを判別する。鍵番号が同じである場合には、そのエリアBUFB(m)に「−1」をストアする(ステップE23)。そして、mをインクリメントしてBUFBの次のエリアを指定する(ステップE24)。この後、又はステップE18においてnで指定する音高(NOTE)がオフでない場合には、nをインクリメントして次の鍵番号を指定する(ステップE25)。そして、nが鍵数より大きい値になったか否かを判別する(ステップE26)。nが鍵数以下である場合には、ステップE18に移行して、nで指定する音高(NOTE)の鍵がオフであるか否かを判別する。
【0038】
ステップE26においてnが鍵数より大きい値になった場合、すなわち、すべての鍵の走査が終了したときは、レジスタTDにT1の実時間データをストアする(ステップE27)。したがって、TDには離鍵開始時間のデータがストアされる。次に、TDのデータからTCのデータを減算して、その結果をレジスタT3にストアする(ステップE28)。したがって、離鍵すべき鍵に対応するLEDの発光停止時間から、実際に離鍵された操作開始時間を減算した値、すなわち、離鍵をガイドした時から離鍵操作までの時間差をT3にストアする。
【0039】
次に、図18のフローにおいて、T3にストアされたデータが所定時間以内であるか否かを判別する(ステップE29)。T3のデータが所定時間以内である場合には、音符データの進行に対して操作開始タイミングが遅れていない場合である。この場合には、レッスンモードを判別する。すなわち、MODEの値が「2」で第2のレッスンモードであるか否かを判別する(ステップE30)。MODEの値が「2」である場合には、BUFBの全てのデータが「−1」であるか否かを判別する(ステップE31)。すなわち、離鍵をガイドされた鍵が正しく離鍵されたか否かを判別する。
【0040】
BUFBの全てのデータが「−1」である場合には、演奏結果を正しいと判定し、タイマインタラプト2を解除して(ステップE32)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE33)、このフローを終了してメインフローに戻る。ステップE30においてMODEの値が「1」である場合、すなわち第1のレッスンモードである場合には、離鍵をガイドされた鍵が正しく離鍵されていなくとも、離鍵の操作開始タイミングが遅れていなければ演奏結果を正しいと判定するので、タイマインタラプト2を解除して(ステップE32)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE33)、このフローを終了してメインフローに戻る。
【0041】
ステップE29において、T3の値が所定時間を超えている場合、すなわち、離鍵の操作開始タイミングが遅れている場合には、離鍵が遅れている旨の警告を表示する(ステップE34)。また、ステップE31において、BUFBの全てのデータが「−1」でない場合にも、離鍵の鍵が誤っている旨の警告を表示する(ステップE34)。警告表示の後は、タイマインタラプト2を解除して(ステップE32)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップE33)、このフローを終了してメインフローに戻る。
【0042】
このように、上記第1実施形態においては、鍵盤は、曲の演奏を行うための複数の操作子である。また、LEDは、操作すべき鍵に対応する音高データ及び操作開始タイミングを示す時間データを含む曲の音符データの進行に合わせて、演奏を教習するために各鍵に対応して設けられた発光手段である。そして、CPU1は、発音期間の一部が重複している複数の音符データについては、その発音期間の全てが重複するように補正して、演奏すべき音符データとするデータ補正手段を構成し、演奏すべき音符データの音高データに対応するLEDを操作開始タイミングに合わせて発光させる発光制御手段を構成する。
【0043】
CPU1はまた、複数の鍵に対応するLEDが発光された場合には、第1のレッスンモードにおいては、その発光開始時間から所定時間内に任意の鍵が操作開始された演奏結果を正しいと判定し、第2のレッスンモードにおいては、その発光開始時間から所定時間内に、その発光されたLEDに対応する複数の鍵が操作開始された場合には、その操作開始順序にかかわらず演奏結果を正しいと判定する演奏判定手段を構成する。
【0044】
したがって、和音を含む曲データを異なるレッスンモードで練習する場合に、それぞれのレッスンモードの習得目的に合った演奏教習ができる。
【0045】
この場合において、データ補正手段としてのCPU1は、曲の音符データの進行に先立って発音期間の一部が重複している複数の音符データの発音期間を補正する構成になっているが、他の実施形態として、CPU1は、曲の音符データの進行に伴って発音期間の一部が重複している複数の音符データの発音期間を補正する構成にしてもよい。
【0046】
また、上記第1実施形態においては、演奏教習装置として鍵盤装置を例に採って説明したが、本発明の適用できる装置としては、鍵盤装置に限定するものではない。例えば、管楽器の装置にも適用できる。この場合には、曲の演奏を行うための複数の操作子はキーであるので、各キーに対応してLEDを設ける構成となる。
【0047】
次に、第2実施形態における演奏教習処理について説明する。第2実施形態においては、CPU1のメインフロー、タイマインタラプト1及び2のフロー、並びに、メインフローにおけるイニシャライズ処理、スイッチ処理、曲ロード処理、発音処理については、第1実施形態と同じであるので、図面及びその説明については省略する。したがって、この第2実施形態においては、第1実施形態と異なる処理である、LED処理及び鍵盤処理について説明する。
【0048】
図19〜図23は、第2実施形態におけるLED処理のフローである。このフローにおいては、MODEにストアされているデータが「1」又は「2」のいずれかであるか否かを判別する(ステップF1)。MODEのデータが「0」すなわちマニュアル演奏モードである場合には、直ちにこのフローを終了してメインフローに戻る。MODEのデータが「1」又は「2」である場合、すなわちナビゲーション演奏モードである場合には、STFが「1(スタート)」であるか否かを判別する(ステップF2)。STFが「0(ストップ)」である場合には、このフローを終了してメインフローに戻る。STFが「1」である場合には、レジスタT2にストアされているタイムデータが、タイマインタラプト2の処理によってデクリメントされて「0」に達したか否かを判別する(ステップF3)。T2のタイムデータが「0」に達していない場合には、まだイベントの処理開始時間になっていないので、このフローを終了してメインフローに戻る。
【0049】
T2のタイムデータが「0」に達している場合には、レジスタADで指定したアドレスのイベントデータがノートオンであるか否かを判別する(ステップF4)。このデータがノートオンである場合には、図20のフローにおいて、BUFAのエリアを指定するポインタkを「1」にセットする(ステップF5)。次に、ノートオンのイベントデータの音高(NOTE)に対応するLEDを点灯して発光させる(ステップF6)。そして、ADで指定されたノートオンのイベントデータの音高データNOTE{EVENT(AD)}をBUFAのkで指定するエリアにストアする(ステップF7)。次に、kをインクリメントしてBUFAの次のエリアを指定し(ステップF8)、ADをインクリメントして次のアドレスのイベントデータを指定する(ステップF9)。
【0050】
そして、次のイベントデータが同じくノートオンであるか否かを判別する(ステップF10)。同じくノートオンであるである場合には、そのイベントデータのデルタタイムが「0」であるか否かを判別する(ステップF11)。すなわち、前のイベントデータと共に和音を構成するイベントデータであるか否かを判別する。和音を構成するイベントデータである場合には、ステップF6において対応するLEDを発光させ、ステップF7においてBUFAにそのイベントデータの音高データをストアする。そして、次のイベントデータを指定し、そのイベントデータが同じく和音を構成する場合には、LEDの発光及びBUFAのストアを繰り返す。
【0051】
ステップF10において次のイベントデータがノートオンでない場合、又は、ステップF11において次のイベントデータのデルタタイムが「0」でなく、和音を構成しない場合には、タイマインタラプト2を禁止して(ステップF12)、音符データの進行を中止する。すなわち、ナビゲーションに応じた押鍵操作を待つ。次に、ADで指定したイベントデータのデルタタイムをT2にストアする(ステップF13)。そして、レジスタTAにレジスタT1の実時間のデータをストアする(ステップF14)。したがって、LEDの発光開始時間のデータがTAにストアされる。
【0052】
次に、図21のフローにおいて、BUFAのエリアを指定するポインタkを「1」にセットすると共に、BUFBのエリアを指定するポインタmを「1」にセットする(ステップF15)。そして、k及びmをインクリメントしながら、以下のループ処理を実行する。すなわち、BUFA(k)の音高データであるNOTE{BUFA(k)}と、BUFB(m)の音高データであるNOTE{BUFB(m)}とが一致しているか否かを判別する(ステップF16)。すなわち、押鍵すべき鍵に対応するLEDの発光開始を行ったときに、すでにその鍵が押鍵されているか否かを判別する。
【0053】
音高データが一致しない場合、すなわち、発光開始を行ったときにまだその鍵が押鍵されていない場合には、mをインクリメントして(ステップF17)、BUFBの次のエリアを指定する。そして、mが最大値より大きい値であるか否かを判別する(ステップF18)。mが最大値以下である場合には、ステップF16に移行して、音高データの一致を判別する。ステップF18において、mが最大値より大きい値になった場合は、BUFA(k)の音高データと同じ音高データがBUFBの全てのエリアにない場合である。この場合には、mを「1」にセットし(ステップF19)、kをインクリメントする(ステップF20)。そして、kが最大値より大きい値になったか否かを判別する(ステップF21)。kが最大値以下である場合には、ステップF16に移行して、音高データの一致を判別する。
【0054】
音高データが一致した場合、すなわち、発光開始を行ったときに、すでにその鍵が押鍵されている場合には、BUFBの各エリアに対応して設けられているレジスタT4(1)〜T4(MAX)の中のmで指定するレジスタT4(m)に、TB{BUFB(m)}のデータからTAのデータを減算した結果をストアする(ステップF22)。すなわち、LEDの発光開始時間より前にすでに対応する鍵が押鍵されているので、その操作開始時間から発光開始時間を減算した時間差のデータをT4(m)にストアする。そして、T4(m)にストアされたデータが一定時間T0以内であるか否かを判別する(ステップF23)。
【0055】
この場合は、押鍵ガイドよりも少し早く押鍵された状態である。すなわち、演奏者の習熟度が向上して、押鍵ガイドを待つまでもなく演奏ができた場合である。ただし、T4(m)にストアされたデータがあまりに大きい値の場合には、演奏者の習熟度が向上したためでなく、誤って偶然に押鍵したか又は演奏のテンポが曲のテンポとずれた場合である。したがって、T4(m)のデータがT0以内である場合に、その演奏結果を正しいと判定して、判定フラグHF(m)を「1」にセットする(ステップF24)。HF(m)を「1」にセットした後、又は、ステップF23において、T4(m)のデータがT0のデータを超えている場合には、mをインクリメントして(ステップF25)、BUFBの次のエリアを指定する。そして、mが最大値より大きい値であるか否かを判別する(ステップF18)。
【0056】
図19のステップF4において、ADで指定したアドレスのイベントデータがノートオンでない場合には、図22のフローにおいて、そのイベントデータがノートオフであるか否かを判別する(ステップF26)。そのイベントデータがノートオフである場合には、BUFAのエリアを指定するポインタkを「1」にセットする(ステップF27)。次に、ノートオフのイベントデータの音高(NOTE)に対応するLEDを消灯して発光を停止させる(ステップF28)。そして、ADで指定されたノートオンのイベントデータの音高データNOTE{EVENT(AD)}と同じ音高データをBUFAから捜す。すなわち、EVENT(AD)の音高データとBUFA(k)の音高データとが一致しているか否かを判別する(ステップF29)。
【0057】
音高データが一致していない場合には、kをインクリメントして(ステップF30)、BUFAの次のエリアを指定する。そして、kが最大値より大きくなったか否かを判別する(ステップF31)。最大値より大きくなったときは、kを「1」にセットして最初のエリアを指定する(ステップF32)。kが最大値以下である場合、又はkを「1」にセットした場合は、ステップF28に移行して、EVENT(AD)の音高データとBUFA(k)の音高データとが一致しているか否かを判別する。音高データが一致したときは、そのエリアBUFA(k)に「−1」をストアする(ステップF22)。この「−1」の値は、ノートオンからノートオフに変化したことを示すデータである。そして、kをインクリメントして(ステップF34)、BUFAの次のエリアを指定する。また、ADをインクリメントして(ステップF35)、ADで指定するイベントデータが前のイベントデータと同じくノートオフであるか否かを判別する(ステップF36)。
【0058】
イベントデータががノートオフである場合には、そのデルタタイムが「0」であるか否かを判別する(ステップF37)。すなわち、前のイベントデータと共に和音を構成するイベントデータであるか否かを判別する。和音を構成する場合にはステップF28に移行してLEDの発光停止を行い、ステップF33においてBUFA(k)に[−1]をストアする。そして、次のイベントデータを指定し、そのイベントデータが同じく和音を構成する場合には、LEDの発光停止及びBUFAへの「−1」のストアを繰り返す。
【0059】
ステップF36において次のイベントデータがノートオフでない場合、又は、ステップF37において次のイベントデータのデルタタイムが「0」でなく、和音を構成しない場合には、タイマインタラプト2を禁止して(ステップF38)、音符データの進行を中止する。すなわち、ナビゲーションに応じた離鍵操作を待つ。次に、ADで指定したイベントデータのデルタタイムをT2にストアする(ステップF39)。そして、レジスタTCにレジスタT1の実時間のデータをストアする(ステップF40)。したがって、LEDの発光停止時間のデータがTCにストアされる。そして、このフローを終了してメインフローに戻る。
【0060】
ADで指定したイベントデータが、図19のステップF4においてノートオンでなく、かつ、図22のステップF26においてノートオフでない場合には、そのイベントデータが曲の終了を示すENDデータであるか否かを判別する(ステップF41)。そのイベントデータがENDデータである場合には、STFを「0」にセットして(ステップF42)、タイマインタラプト1及び2を禁止して(ステップF43)、このフローを終了してメインフローに戻る。
【0061】
ステップF41において、イベントデータがENDデータでない場合、すなわち、そのイベントデータがノートデータ以外のプログラムチェンジ等のデータである場合には、図23のフローにおいて、そのイベントデータに応じた処理を行う(ステップF44)。次に、ADをインクリメントして(ステップF45)、ADで指定するイベントデータのデルタタイムをT2にストアする(ステップF46)。そして、図19のステップF3に移行する。
【0062】
図24〜図27は、メインフローにおける鍵盤処理のフローである。このフローにおいては、キースキャンインターフェースを介して鍵を走査し(ステップG1)、押鍵操作又は離鍵操作による鍵変化があるか否かを判別する(ステップG2)。鍵変化がない場合には直ちにこのフローを終了してメインフローに戻る。押鍵による鍵変化(オン)があったときは、鍵番号を指定するポインタnを「1」にセットすると共に、鍵変化用のバッファBUFBのエリアを指定するポインタmを「1」にセットする(ステップG3)。
【0063】
そして、nをインクリメントしながら、下記のループ処理を実行して押鍵された鍵番号を検索する。すなわち、nで指定する音高(NOTE)の鍵がオンであるか否かを判別し(ステップG4)、オンである場合には、そのNOTE(n)の音高データとBUFB(m)の音高データであるNOTE{BUFB(m)}とが一致しているか否かを判別する(ステップG5)。音高データが一致していない場合には、mをインクリメントして(ステップG6)、BUFBの次のエリアを指定する。そして、mが最大値より大きい値になったか否かを判別する(ステップG7)。mが最大値以下である場合には、ステップG5に移行して、音高データの一致を判別する。mが最大値より大きくなったときは、mを「1」にセットしてBUFBの最初のエリアを指定する(ステップG8)。
【0064】
ステップG5において音高データが一致したときは、すでに同じ音高データがBUFBにストアされている場合である。この場合には、ポインタmに対応する判定フラグHF(m)が「0」であるか否かを判別する(ステップG9)。HF(m)が「0」である場合には、すでにストアされている音高データが古いデータであり、演奏結果の判定対象にならないデータである。したがって、改めて今回押鍵された鍵の鍵番号nをBUFB(m)にストアする(ステップG10)。すなわち、やり直された押鍵による音高データをストアする。そして、mをインクリメントしてBUFBの次のエリアを指定する(ステップG11)。ステップG9において、HF(m)が「1」である場合には、すでにストアされている音高データが正しい演奏結果によるものと判定する。この場合には、mをインクリメントしてBUFBの次のエリアを指定する(ステップG11)。
【0065】
mをインクリメントした後、又はステップG4においてnで指定する音高(NOTE)の鍵がオンでない場合には、nをインクリメントして次の鍵番号を指定する(ステップG12)。そして、nが鍵数より大きい値になったか否かを判別する(ステップG13)。nが鍵数以下である場合には、ステップG4に移行して、nで指定する音高(NOTE)の鍵がオンであるか否かを判別する。ステップG13においてnが鍵数より大きい値になった場合、すなわち、すべての鍵の走査が終了したときは、レジスタTBにT1の実時間データをストアする(ステップG14)。したがって、TBには今回の押鍵開始時間のデータがストアされ、、LEDの発光開始時間より前に押鍵されてBUFBにストアされている音高データの操作開始時間は無視される。次に、TBのデータからTAのデータを減算して、その結果をレジスタT3にストアする(ステップG15)。したがって、押鍵すべき鍵に対応するLEDの発光開始時間より後に押鍵された操作開始時間を減算した値、すなわち、押鍵をガイドした後の押鍵操作までの時間差をT3にストアする。
【0066】
次に、図25のフローにおいて、T3にストアされたデータが所定時間以内であるか否かを判別する(ステップG16)。この所定時間は、運指に要する時間であり、曲のテンポや演奏者の熟練度によって変化する時間であり、あらかじめ設定されている。T3のデータが所定時間以内である場合には、音符データの進行に対して操作開始タイミングが遅れていない場合である。この場合には、レッスンモードを判別する。すなわち、MODEの値が「2」で第2のレッスンモードであるか否かを判別する(ステップG17)。MODEの値が「2」である場合には、BUFAにストアされた全ての音高データが、BUFBにストアされた全ての音高データと一致しているか否かを判別する(ステップG18)。すなわち、押鍵をガイドされた鍵が正しく押鍵されたか否かを判別する。
【0067】
全ての音高データが一致している場合には、演奏結果を正しいと判定し、タイマインタラプト2を解除して(ステップG19)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG20)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG21)。そして、このフローを終了してメインフローに戻る。ステップG17においてMODEの値が「1」である場合、すなわち第1のレッスンモードである場合には、押鍵をガイドされた鍵が正しく押鍵されていなくとも、操作開始タイミングが遅れていなければ演奏結果を正しいと判定するので、タイマインタラプト2を解除して(ステップG19)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG20)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG21)。そして、このフローを終了してメインフローに戻る。
【0068】
ステップG16において、T3の値が所定時間を超えている場合、すなわち、操作開始タイミングが遅れている場合には、押鍵タイミングが遅れている旨の警告を表示する(ステップG22)。また、ステップG18において、BUFAにストアされた全ての音高データが、BUFBにストアされた全ての音高データと一致していない場合には、押鍵された鍵が誤っている旨の警告を表示する(ステップG22)。警告表示の後は、タイマインタラプト2を解除して(ステップG19)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG20)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG21)。そして、このフローを終了してメインフローに戻る。
【0069】
図24のステップG2において、離鍵による鍵変化(オフ)である場合には、図26のフローにおいて、鍵番号を指定するポインタnを「1」にセットすると共に、鍵変化用のバッファBUFBのエリアを指定するポインタmを「1」にセットする(ステップG23)。そして、nをインクリメントしながら、下記のループ処理を実行して離鍵された鍵番号を検索する。すなわち、nで指定する音高(NOTE)の鍵がオフであるか否かを判別する(ステップG24)。その鍵がオフである場合には、その鍵番号NOTE(n)とBUFB(m)のエリアにストアされている鍵番号NOTE{BUFB(m)}とが同じであるか否かを判別する(ステップG25)。同じでない場合には、mをインクリメントしてBUFBの次のエリアを指定する(ステップG26)。そして、mが最大値より大きいか否かを判別する(ステップG27)。最大値より大きくなったときは、mを「1」にセットして最初のエリアを指定する(ステップG28)。
【0070】
mが最大値以下である場合、又はmを「1」にセットした場合は、ステップG25に移行して、鍵番号NOTE(n)と鍵番号NOTE{BUFB(m)}とが同じであるか否かを判別する。鍵番号が同じである場合には、そのエリアBUFB(m)に「−1」をストアする(ステップG29)。そして、mをインクリメントしてBUFBの次のエリアを指定する(ステップG30)。この後、又はステップG24においてnで指定する音高(NOTE)がオフでない場合には、nをインクリメントして次の鍵番号を指定する(ステップG31)。そして、nが鍵数より大きい値になったか否かを判別する(ステップG32)。nが鍵数以下である場合には、ステップG24に移行して、nで指定する音高(NOTE)の鍵がオフであるか否かを判別する。
【0071】
ステップG32においてnが鍵数より大きい値になった場合、すなわち、すべての鍵の走査が終了したときは、レジスタTDにT1の実時間データをストアする(ステップG33)。したがって、TDには離鍵開始時間のデータがストアされる。次に、TDのデータからTCのデータを減算して、その結果をレジスタT3にストアする(ステップG34)。したがって、離鍵すべき鍵に対応するLEDの発光停止時間から、実際に離鍵された操作開始時間を減算した値、すなわち、離鍵をガイドした時から離鍵操作までの時間差をT3にストアする。
【0072】
次に、図27のフローにおいて、T3にストアされたデータが所定時間以内であるか否かを判別する(ステップG35)。T3のデータが所定時間以内である場合には、音符データの進行に対して操作開始タイミングが遅れていない場合である。この場合には、レッスンモードを判別する。すなわち、MODEの値が「2」で第2のレッスンモードであるか否かを判別する(ステップG36)。MODEの値が「2」である場合には、BUFBの全てのデータが「−1」であるか否かを判別する(ステップG37)。すなわち、離鍵をガイドされた鍵が正しく離鍵されたか否かを判別する。
【0073】
BUFBの全てのデータが「−1」である場合には、演奏結果を正しいと判定し、タイマインタラプト2を解除して(ステップG38)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG39)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG40)。そして、このフローを終了してメインフローに戻る。ステップG36においてMODEの値が「1」である場合、すなわち第1のレッスンモードである場合には、離鍵をガイドされた鍵が正しく離鍵されていなくとも、離鍵の操作開始タイミングが遅れていなければ演奏結果を正しいと判定するので、タイマインタラプト2を解除して(ステップG38)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG39)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG40)。そして、このフローを終了してメインフローに戻る。
【0074】
ステップG35において、T3の値が所定時間を超えている場合、すなわち、離鍵の操作開始タイミングが遅れている場合には、離鍵が遅れている旨の警告を表示する(ステップG41)。また、ステップG37において、BUFBの全てのデータが「−1」でない場合にも、離鍵の鍵が誤っている旨の警告を表示する(ステップG41)。警告表示の後は、タイマインタラプト2を解除して(ステップG38)、音符データの進行を再開する。そして、BUFA及びBUFBをクリアして(ステップG39)、フラグHF(1)〜(MAX)をすべて「0」にセットする(ステップG40)。このフローを終了してメインフローに戻る。
【0075】
このように、上記第2実施形態においては、第1実施形態の場合と同様に、鍵盤は、曲の演奏を行うための複数の操作子である。また、LEDは、操作すべき鍵に対応する音高データ及び操作開始タイミングを示す時間データを含む曲の音符データの進行に合わせて、演奏を教習するために各鍵に対応して設けられた発光手段である。そして、CPU1は、発音期間の一部が重複している複数の音符データについては、その発音期間の全てが重複するように補正して、演奏すべき音符データとするデータ補正手段を構成し、演奏すべき音符データの音高データに対応するLEDを操作開始タイミングに合わせて発光させる発光制御手段を構成する。
【0076】
しかしながら、第2実施形態におけるCPU1は、複数の鍵に対応するLEDが発光された場合には、第1のレッスンモードにおいては、その発光開始時間から所定時間以前に任意の鍵が操作開始された演奏結果も正しいと判定し、第2のレッスンモードにおいては、その発光開始時間から所定時間以前に、その発光されたLEDに対応する複数の鍵が操作開始された場合でも、その操作開始順序にかかわらず演奏結果を正しいと判定する演奏判定手段を構成する。
【0077】
したがって、この第2実施形態においても、和音を含む曲データを異なるレッスンモードで練習する場合に、それぞれのレッスンモードの習得目的に合った演奏教習ができる。
【0078】
なお、上記第1実施形態及び第2実施形態においては、ROM等のメモリに格納された演奏教習処理プログラムを実行する装置について説明したが、フロッピーディスクやCD等の汎用の記録媒体に、各実施形態においてフローチャートによって示した演奏教習処理プログラムを記録し、パソコン等の汎用の情報処理装置によってこの記録媒体から演奏教習処理プログラムを読み出して実行させる構成にしてもよい。
【0079】
【発明の効果】
本発明によれば、和音を含む曲データを異なるレッスンモードで練習する場合に、それぞれのレッスンモードの習得目的に合った演奏教習ができる。
【図面の簡単な説明】
【図1】本発明による演奏教習装置の各実施形態のブロック図。
【図2】各実施形態において演奏教習の対象となる曲データのフォーマットを示す図。
【図3】図1のRAMに設けられたレジスタやフラグの内容を示す図。
【図4】各実施形態におけるCPUのメインフローチャート。
【図5】各実施形態におけるタイマインタラプト1のフローチャート。
【図6】各実施形態におけるタイマインタラプト2のフローチャート。
【図7】各実施形態におけるスイッチ処理のフローチャート。
【図8】図7に続くスイッチ処理のフローチャート。
【図9】各実施形態における曲ロード処理のフローチャート。
【図10】和音のクオンタイズ処理の説明図。
【図11】第1実施形態におけるLED処理のフローチャート。
【図12】図11に続くLED処理のフローチャート。
【図13】図11に続くLED処理のフローチャート。
【図14】図13に続くLED処理のフローチャート。
【図15】第1実施形態における鍵盤処理のフローチャート。
【図16】図15に続く鍵盤処理のフローチャート。
【図17】図15に続く鍵盤処理のフローチャート。
【図18】図17に続く鍵盤処理のフローチャート。
【図19】第2実施形態におけるLED処理のフローチャート。
【図20】図19に続くLED処理のフローチャート。
【図21】図20に続くLED処理のフローチャート。
【図22】図19に続くLED処理のフローチャート。
【図23】図22に続くLED処理のフローチャート。
【図24】第2実施形態における鍵盤処理のフローチャート。
【図25】図24に続く鍵盤処理のフローチャート。
【図26】図24に続く鍵盤処理のフローチャート。
【図27】図26に続く鍵盤処理のフローチャート。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 キースキャンインターフェース
5 LEDコントローラ
6 FDDコントローラ
7 MIDIインターフェース
8 キーボード
9 LED
Claims (2)
- 曲の演奏を行うための複数の操作子と、
この各操作子に対応して設けられた発光手段と、
操作すべき操作子に対応する音高データ、発音期間を表す発音開始及び発音終了タイミングを示す時間データを含む音符データからなる曲データを取得する曲データ取得手段と、
この曲データ取得手段により得られた曲データを構成する音符データのうち、発音期間の一部が重複している複数の音符データについては当該発音期間の全てが重複するように補正するデータ補正手段と、
このデータ補正手段により補正された曲データを構成する音符データを、当該音符データに含まれる時間データに基づいたタイミングで順次読み出すとともに、当該読み出された音符データの音高データに対応する発光手段を当該音符データの発音開始タイミングに合わせて発光させた後、当該読み出しを停止させる読み出し制御手段と、
前記読み出し制御手段によって操作すべき操作子に対応する発光手段が発光されている際に、前記操作子の操作に応答して前記読み出し制御手段の読み出しを再開させるとともに、当該発光手段の発光開始から所定時間内に操作すべき操作子が操作されたことが検出されない場合には警告報知を行う演奏判定手段と、
を備えたことを特徴とする演奏教習装置。 - 曲の演奏を行うための複数の操作子と、この各操作子に対応して設けられた発光手段を有する演奏教習装置に適用されるプログラムを記憶する記憶媒体であって、
操作すべき操作子に対応する音高データ、発音期間を表す発音開始及び発音終了タイミングを示す時間データを含む音符データからなる曲データを取得する曲データ取得順と、
この曲データ取得手段により得られた曲データを構成する音符データのうち、発音期間の一部が重複している複数の音符データについては当該発音期間の全てが重複するように補正するデータ補正手順と、
このデータ補正手段により補正された曲データを構成する音符データを、当該音符データに含まれる時間データに基づいたタイミングで順次読み出すとともに、当該読み出された音符データの音高データに対応する発光手段を当該音符データの発音開始タイミングに合わせて発光させた後、当該読み出しを停止させる読み出し制御手順と、
前記読み出し制御手段によって操作すべき操作子に対応する発光手段が発光されている際に、前記操作子の操作に応答して前記読み出し制御手段の読み出しを再開させるとともに、当該発光手段の発光開始から所定時間内に操作すべき操作子が操作されない場合には警告報知を行う演奏判定手順と、
を実行する演奏教習プログラムを記録した記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17318599A JP3800867B2 (ja) | 1999-06-18 | 1999-06-18 | 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 |
US09/586,127 US6222109B1 (en) | 1999-06-18 | 2000-06-02 | Music performance training apparatus and recording medium having a training program stored thereon |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17318599A JP3800867B2 (ja) | 1999-06-18 | 1999-06-18 | 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001005454A JP2001005454A (ja) | 2001-01-12 |
JP2001005454A5 JP2001005454A5 (ja) | 2005-04-21 |
JP3800867B2 true JP3800867B2 (ja) | 2006-07-26 |
Family
ID=15955676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP17318599A Expired - Fee Related JP3800867B2 (ja) | 1999-06-18 | 1999-06-18 | 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6222109B1 (ja) |
JP (1) | JP3800867B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5847048B2 (ja) * | 2012-09-26 | 2016-01-20 | 株式会社エクシング | ピアノロール型譜表示装置、ピアノロール型譜表示プログラム、及びピアノロール型譜表示方法 |
JP7331890B2 (ja) * | 2021-08-02 | 2023-08-23 | カシオ計算機株式会社 | 電子楽器、電子楽器の制御方法、及びプログラム |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3744366A (en) | 1972-02-29 | 1973-07-10 | J Delcastillo | Indicating head for use with a keyboard instrument teaching device |
US3885490A (en) | 1973-02-01 | 1975-05-27 | Cecil F Gullickson | Single track sight and sound musical instrument instruction device |
US3958487A (en) | 1975-02-18 | 1976-05-25 | Abraham Goldman | Teaching device for musical instruments |
US4040324A (en) | 1976-04-12 | 1977-08-09 | Harry Green | Chord indicator for instruments having organ and piano-type keyboards |
IT1113061B (it) | 1978-02-21 | 1986-01-20 | S I El Spa Soc Ind Elettronich | Apparecchiatura elettronica per l'insegnamento e la letture della musica |
US4314499A (en) | 1978-04-24 | 1982-02-09 | Donald Olsen | Musical instruments facilitating teaching, composing and improvisation |
US4331062A (en) | 1980-06-02 | 1982-05-25 | Rogers Allen E | Visual note display apparatus |
US4366741A (en) | 1980-09-08 | 1983-01-04 | Musitronic, Inc. | Method and apparatus for displaying musical notations |
US4437378A (en) | 1981-03-30 | 1984-03-20 | Casio Computer Co., Ltd. | Electronic musical instrument |
JPS59223492A (ja) * | 1983-06-03 | 1984-12-15 | カシオ計算機株式会社 | 電子楽器 |
JP2623809B2 (ja) * | 1989-01-19 | 1997-06-25 | ヤマハ株式会社 | 自動押鍵指示装置 |
JPH09198043A (ja) * | 1996-01-19 | 1997-07-31 | Kawai Musical Instr Mfg Co Ltd | 鍵盤楽器 |
JP3567611B2 (ja) * | 1996-04-25 | 2004-09-22 | ヤマハ株式会社 | 演奏支援装置 |
US6011210A (en) * | 1997-01-06 | 2000-01-04 | Yamaha Corporation | Musical performance guiding device and method for musical instruments |
-
1999
- 1999-06-18 JP JP17318599A patent/JP3800867B2/ja not_active Expired - Fee Related
-
2000
- 2000-06-02 US US09/586,127 patent/US6222109B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6222109B1 (en) | 2001-04-24 |
JP2001005454A (ja) | 2001-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1453035B1 (en) | Musical instrument capable of changing style of performance through idle keys, method employed therefor and computer program for the method | |
JP3900712B2 (ja) | 鍵盤楽器のセンサ較正装置及びセンサ較正方法 | |
US8053658B2 (en) | Electronic musical instrument using on-on note times to determine an attack rate | |
JP3800867B2 (ja) | 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 | |
US20100077907A1 (en) | Electronic musical instrument | |
JP3358292B2 (ja) | 電子楽器 | |
JP3743024B2 (ja) | 演奏練習装置 | |
JP4618704B2 (ja) | コード練習装置 | |
JP3969019B2 (ja) | 鍵盤演奏装置及び鍵盤演奏処理のプログラム | |
JP3845761B2 (ja) | 演奏教習装置及び演奏教習処理のプログラムを記憶した記憶媒体 | |
JP3743364B2 (ja) | 演奏練習装置 | |
JP4096784B2 (ja) | 演奏評価装置および演奏評価プログラム | |
JP4453233B2 (ja) | 楽譜表示制御装置及び楽譜表示処理のプログラム | |
JP2640992B2 (ja) | 電子楽器の発音指示装置及び発音指示方法 | |
WO2021100743A1 (ja) | 発音制御装置、鍵盤楽器、発音制御方法およびプログラム | |
JP2004240254A (ja) | 電子楽器 | |
JP2572317B2 (ja) | 自動演奏装置 | |
JP2526032Y2 (ja) | 電子楽器 | |
JP2572316B2 (ja) | 自動演奏装置 | |
JP3885737B2 (ja) | 演奏評価装置および演奏評価プログラム | |
JP2578327B2 (ja) | 自動演奏装置 | |
JP2000315080A (ja) | 演奏誘導装置 | |
JP2513619Y2 (ja) | 電子弦楽器 | |
JP3885546B2 (ja) | 演奏教習装置及び演奏教習処理のプログラム | |
JP3896727B2 (ja) | 演奏教習装置及び演奏教習処理プログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040616 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040616 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060203 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060322 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060424 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3800867 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |