JP4054913B2 - 演奏誘導装置および演奏誘導処理のプログラム - Google Patents
演奏誘導装置および演奏誘導処理のプログラム Download PDFInfo
- Publication number
- JP4054913B2 JP4054913B2 JP2003198879A JP2003198879A JP4054913B2 JP 4054913 B2 JP4054913 B2 JP 4054913B2 JP 2003198879 A JP2003198879 A JP 2003198879A JP 2003198879 A JP2003198879 A JP 2003198879A JP 4054913 B2 JP4054913 B2 JP 4054913B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- note
- counter
- pitch
- input
- 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
Landscapes
- Electrophonic Musical Instruments (AREA)
- Auxiliary Devices For Music (AREA)
Description
【発明の属する技術分野】
本発明は、演奏を誘導する演奏誘導装置および演奏誘導処理のプログラムに関する。
【0002】
【従来の技術】
例えば、鍵盤の演奏を誘導する演奏誘導装置としては、鍵盤の各鍵ごとにLEDなどの発光素子を配置して、押鍵すべき鍵を誘導する自動押鍵指示の機能を具備した電子楽器が知られている。ある電子楽器の提案によれば、記憶装置から音高情報が読出されるたびに該音高情報に応じて押すべき鍵が指示され、この指示された鍵を押すと、音高一致となって次の音高情報がその前の音高情報に対応する音符の長さに関係なく記憶装置から読出される。すなわち、指示通りに正しく押鍵していくと、個々の音符の長さに関係なく押鍵テンポのみに依存して押すべき鍵が次々に指示されるので、演奏練習者は自己の習熟度に応じた好みのテンポで押鍵練習を行うことができる(特許文献1参照)。
【0003】
【特許文献1】
特公平2−705号公報(第3頁43行目〜第4頁8行目)
【0004】
【発明が解決しようとする課題】
ところが、習熟度が低い演奏練習者にとっては、和音や発音時間が一部重なるような音高情報については、同時又は連続して複数の鍵が押すべき鍵が指示されても、その鍵を正しく押鍵することが困難であるという課題があった。この対策として、押鍵すべき鍵の音高とは異なる音高の鍵が押鍵されたときでも、その押鍵に応じて押鍵すべき鍵の音高で発音する方法が考えられる。
【0005】
図18は、この方法によって演奏誘導を行う場合のタイミングチャートの例を示す図である。図18(1)は、押鍵すべき音高C,E,Gの発音開始タイミングおよび発音終了タイミングを示している。これに対して、図18(2)および(3)は、任意の3つの鍵であるKey1,Key2,Key3の押鍵および離鍵による実際の発音のタイミングチャートを示している。
【0006】
図18(2)の例では、Key1の押鍵に応じて音高Cのノートイベントが発音開始され、Key2の押鍵に応じて発音中の音高Cのノートイベントが消音されるとともに、音高Eのノートイベントが発音開始される。また、Key3の押鍵に応じて発音中の音高Eのノートイベントが消音されるとともに、音高Gのノートイベントが発音開始される。すなわち、図18(2)の例においては、新たな押鍵が発生した時点で発音中の楽音は消音するようになっている。
【0007】
一方、図18(3)の例では、Key1の押鍵に応じて音高Cのノートイベントが発音開始され、Key2の押鍵に応じて音高Eのノートイベントが発音開始され、Key3の押鍵に応じて音高Gのノートイベントが発音開始される。すなわち、図18(3)の例においては、全ての押鍵が離鍵されるまで、音高C,E,Gの発音が継続するようになっている。
しかしながら、図18(2)の例では、和音や発音時間が一部重なるような楽音を発音できない。一方、図18(3)の例では、通常のメロディでは聴感上不自然な演奏になってしまう。
【0008】
本発明は、このような従来の問題を解決するものであり、和音や発音時間が一部重なるような楽音を発音でき、かつ、聴感上自然な演奏で通常のメロディを発音できる演奏誘導装置および演奏誘導処理のプログラムを提供することを目的とする。
【0009】
【課題を解決するための手段】
請求項1に記載の演奏誘導装置は、演奏操作に応じて発音開始指示又は発音終了指示を入力する入力手段と、キーカウンタと、ノートカウンタと、発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、前記入力手段による発音開始指示の入力のタイミングに応じてノートイベントを読み出すとともに、前記キーカウンタをインクリメントする読出手段と、前記入力手段からの発音終了指示の入力に応答して前記キーカウンタをデクリメントするキーオフ処理手段と、前記読出手段によって読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させるとともに、前記ノートカウンタをインクリメントするイベント処理手段と、このイベント手段により発音開始された楽音の発音経過時間をカウントする発音経過手段と、この発音経過手段によりカウントされた発音経過時間が、前記発音中の楽音に対応する発音持続時間を経過したと判別された場合に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数よりも多い場合に、前記発音持続時間を経過した発音中の楽音を消音させるとともに、前記ノートカウンタをデクリメントするノートオフ処理手段と、を有する構成になっている。
【0010】
この場合において、請求項2に記載のように、前記キーオフ処理手段は、前記キーカウンタのカウント数がゼロになった場合に、前記全ての発音中の楽音を消音するとともに、前記ノートカウンタのカウント数をゼロにする全消音手段を含むように構成してもよい。
また、請求項3に記載のように、前記入力手段は、発音終了指示の入力とともに音高が入力可能に構成され、前記キーオフ処理手段は、前記キーカウンタをデクリメントした後に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数より大きい場合に、入力された音高に最も近い音高を有する前記発音中の楽音を消音させる消音手段を含むように構成してもよい。
【0011】
請求項4に記載の演奏誘導処理のプログラムは、演奏操作に応じて発音開始指示又は発音終了指示を入力する入力手段を有する演奏誘導装置に適用されるコンピュータに、発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、前記発音開始指示の入力のタイミングに応じてノートイベントを読み出すとともに、キーカウンタをインクリメントする読出ステップと、前記発音終了指示の入力に応答して前記キーカウンタをデクリメントするキーオフ処理ステップと、前記読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させるとともに、ノートカウンタをインクリメントするイベント処理ステップと、この発音開始された楽音の発音経過時間をカウントする発音経過ステップと、このカウントされた発音経過時間が、前記発音中の楽音に対応する発音持続時間を経過したと判別された場合に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数よりも多い場合に、前記発音持続時間を経過した発音中の楽音を消音させるとともに、前記ノートカウンタをデクリメントするノートオフ処理ステップと、を実行させる構成になっている。
【0012】
この場合において、請求項5に記載のように、前記キーオフ処理ステップは、前記キーカウンタのカウント数がゼロになった場合に、前記全ての発音中の楽音を消音するとともに、前記ノートカウンタのカウント数をゼロにする全消音ステップを含むように構成してもよい。
また、請求項6に記載のように、前記入力手段は、発音終了指示の入力とともに音高が入力可能に構成され、前記キーオフ処理ステップは、前記キーカウンタをデクリメントした後に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数より大きい場合に、入力された音高に最も近い音高を有する前記発音中の楽音を消音させる消音ステップを含むように構成してもよい。
【0013】
【発明の実施の形態】
以下、本発明による演奏誘導装置の第1ないし第3の実施形態について、電子鍵盤楽器を例に採り、図を参照して説明する。
図1は、各実施形態における電子鍵盤楽器の構成を示すブロック図である。この図において、CPU1は、システムバスを介して、鍵盤2、スイッチ部3、ROM4、RAM5、表示部6、および音源7に接続され、これら各部との間で、コマンドおよびデータを授受しながら、この電子鍵盤楽器全体を制御する。
【0014】
鍵盤2は、演奏操作に応じて、押鍵又は離鍵およびその押鍵又は離鍵についての楽音の鍵番号すなわち音高をCPU1に入力する。スイッチ部3は、曲練習を開始又は停止するレッスンスイッチ、自動演奏による曲練習のモードを選択するモードスイッチ、その他のスイッチで構成され、操作に応じたオン/オフの状態をCPU1に入力する。レッスンにおいては、モードスイッチによって3通りの練習モードを選択することができる。
【0015】
第1の練習モードでは、自動演奏で読み出したノートイベントに応じて押鍵を誘導し、その鍵を正しく押鍵したときに発音を行って、次のノートイベントに曲データを進行させる。第2の練習モードでは、自動演奏で読み出したノートイベントに応じて押鍵を誘導するが、その鍵と異なる鍵を押鍵した場合でも、誘導した鍵の音高で発音を行って、次のノートイベントに曲データを進行させる。第3の練習モードでは、自動演奏で読み出したノートイベントに応じて押鍵を誘導するが、練習者の押鍵には関係なくその曲のテンポで順次ノートイベントを読み出す。なお、以下の各実施形態においては、第2の練習モードの場合について説明する。
【0016】
ROM4は、演奏誘導処理のプログラム、起動時のイニシャライズにおける初期値などをあらかじめ記憶している。RAM5は、FD(フレキシブルディスク)やCDなどの外部記憶媒体、外部のMIDI、又はネットワークから転送された練習曲の曲データを記憶するデータエリア、および、プログラムの実行に必要な各種のレジスタやフラグのデータエリアを持っている。表示部6は、鍵盤2の各鍵ごとに配置されたLEDであり、発光によって押鍵を誘導する。
音源7は、CPU1の発音指示および波形データに応じて、楽音信号を生成してD/A変換回路8に出力する。D/A変換回路8は、その楽音信号をディジタルからアナログに変換し、アンプ9を介してスピーカ10に供給して発音させる。また、音源7は、CPU1の消音指示に応じて発音中の発音を消音させる。
【0017】
図2は、RAM5のデータエリアの構成を示す図である。図2(1)は曲データのデータエリアを示している。曲データは、発音すべき楽音の音高、発音開始タイミングおよび発音終了タイミングからなるノートイベントを曲進行順に配列した構成になっている。すなわち、前ノートイベントからの時間であるDeltaの後に次のノートイベントが続く構成になっている。ノートイベントは、ノート番号すなわち音高を示すNoteNum、ベロシティを示すVel、発音時間を示すGateTimeで構成されている。曲の終りは、NoteNum=Vel=GateTime=0の値になっている。
【0018】
図2(2)はレジスタ、フラグ、カウンタのデータエリアを示している。Note[0]〜Note[NMAX]は、発音中のノート番号をストアするレジスタであり、ノートオフ時は0がストアされる。Time[0]〜Time[NMAX]は、Note[0]〜Note[NMAX]に対応するノートの発音残り時間をストアするレジスタである。DeltaCntは、次のノートイベントまでの時間をストアするレジスタである。Adrは、処理すべきイベントのアドレスすなわち処理イベントアドレスをストアするレジスタである。Key[0]〜Key[KMAX]は、押鍵中の鍵番号をストアするレジスタであり、離鍵時は0がストアされる。KeyOnは押鍵フラグであり、押鍵があれば「1」にセットされ、後述する曲データ進行インタラプト処理で押鍵に関する処理が完了した場合には0にリセットされる。KeyCntは、押鍵数をカウントするカウンタである。NoteCntは、発音中のノート数をカウントするカウンタである。Prtは、曲データ進行インタラプト処理で使用される状態識別変数であり、自動演奏の通常進行中では0、自動演奏の一時停止中(押鍵待機状態)では1、自動演奏の早送り中では2にセットされる。
【0019】
次に、図1の電子鍵盤楽器による第1の実施形態における演奏誘導処理の動作について、CPU1によって実行されるフローチャート、並びに、ノートイベント、押鍵および離鍵、発音状態の関係を示すタイミングチャートを参照して説明する。
図3は、メインフローチャートであり、初期化処理(ステップSA1)の後、スイッチ処理(ステップSA2)、鍵盤処理(ステップSA3)、その他の処理(ステップSA4)を繰り返し実行する。ステップSA1の初期化処理においては、Note[0]〜Note[NMAX]を全て0、Time[0]〜Time[NMAX]を全て0、DeltaCntを0、Adrを−1、Key[0]〜Key[KMAX]を全て0、KeyOnを0、KeyCntを0、NoteCntを0、Prtを0にそれぞれセットする。
【0020】
図4は、図3におけるステップSA2のスイッチ処理のフローチャートである。スイッチ部3のレッスンスイッチがオンされたか否かを判別し(ステップSB1)、オンされたときはAdrが−1であるか否かを判別する(ステップSB2)。−1である場合には、レッスン停止中でまだ曲データが読み出されていない状態でレッスンスイッチがオンされた状態であるので、Adrに曲データの先頭イベントアドレスをストアし、DeltaCntにAdrのイベントであるDeltaの値をストアし、Deltaに続く先頭のノートイベントのノート番号に対応する鍵のナビゲート表示、すなわち、ノート番号に対応する鍵番号のLEDを発光する(ステップSB3)。そして、メインフローに戻る。
ステップSB2において、Adrが−1でない場合には、曲練習が進行中にレッスンスイッチがオンされた状態であるので、Adrに−1をセットし、Note[0]〜Note[NMAX]の全てをクリアし、NoteCntおよびKeyCntそれぞれを「0」にセットし、鍵盤(メロディ)および伴奏の全ての発音を終了する(ステップSB4)。そして、メインフローに戻る。
ステップSB1において、レッスンスイッチがオンでない場合には、その他のスイッチ処理を行って(ステップSB5)、メインフローに戻る。
【0021】
図5は、図3のメインフローチャートにおけるステップSA3の鍵盤処理のフローチャートである。この処理では、鍵盤状態に変化があるか否かを判別する(ステップSC1)。押鍵の変化があったときは、変数n=0〜KMAXで、Key[n]=0(空き)のレジスタがあるか否かを判別する(ステップSC2)。Key[n]=0のレジスタがある場合には、Key[n]に押鍵番号をストアし、押鍵フラグKeyOnを1にセットし、KeyCntを1だけインクリメントする(ステップSC3)。この後は、ステップSC1に戻ってさらに鍵盤状態を判別する。離鍵の変化があったときには、キーオフ処理を実行する(ステップSC4)。この後は、ステップSC1に戻ってさらに鍵盤状態を判別する。鍵盤状態に変化がない場合には、メインフローに戻る。
【0022】
図6は、図5の鍵盤処理におけるステップSC4のキーオフ処理のフローチャートである。この処理では、変数n=0〜KMAXで、Key[n]=離鍵番号のレジスタがあるか否かを判別し(ステップSL1)、離鍵番号のレジスタがある場合には、Key[n]に0をストアし、KeyCntを1だけデクリメントする(ステップSL2)。そして、KeyCntが0になったか否かを判別する(ステップSL3)。KeyCntが0になったときは、Note[0]〜Note[NMAX]全てをクリアし、NoteCntに0をストアし、鍵盤の全音の発音を終了する(ステップSL4)。発音を終了した後、又は、ステップSL1において離鍵番号がない場合、若しくは、ステップSL3においてKeyCntが0でない場合には、図5の鍵盤処理のフローに戻る。
【0023】
図7は、一定時間(Deltaの単位時間間隔)ごとの割り込みである曲データ進行インタラプト処理のフローチャートである。この処理では、まず、Adrが−1であるか否かを判別する(ステップSD1)。Adrが−1である場合には、図3のメインフローに戻るが、Adrが−1でない場合、すなわち、曲データのレッスン中である場合には、KeyOnが1であるか否かを判別する(ステップSD2)。すなわち、押鍵がされたか否かを判別する。KeyOnが1である場合には、Prtを2(自動早送り)にセットし、KeyOnを0にリセットする(ステップSD3)。
【0024】
ステップSD2において、KeyOnが0である場合には、押鍵がされていないので、Prtが1であるか又は0であるかを判別する(ステップSD4)。Prtが0である(ステップSD4でNO)場合には、曲データ歩進処理を行う(ステップSD5)。一方、ステップSD3の後にも、ステップSD5に移行して曲データ歩進処理を行う。すなわち、Prtが0で自動演奏の通常進行中である場合、又は、Prtが2で自動演奏の早送りである場合には、いずれも曲データ歩進処理を行う。次に、発音経過処理を行う(ステップSD6)。ステップSD4において、Prtが1である場合には、自動演奏の一時停止中であるので、曲データ歩進処理は行わず、ステップSD6に移行して発音経過処理を行う。発音経過処理の後はメインフローに戻る。
【0025】
図8は、図7の曲データ進行インタラプト処理におけるステップSD5の曲データ歩進処理のフローチャートである。この処理では、時間更新処理を行って(ステップSE1)、DeltaCntが0であるか否かを判別する(ステップSE2)。DeltaCntが0でない場合には、伴奏発音処理を行う(ステップSE3)。DeltaCntが0である場合には、イベント処理を行う(ステップSE4)。伴奏発音処理又はイベント処理の後は、図7の曲データ進行インタラプト処理に戻る。
【0026】
図9は、図8の曲データ歩進処理におけるステップSE1の時間更新処理のフローチャートである。この処理では、DeltaCntが0であるか否かを判別し(ステップSF1)、0でない場合にはDeltaCntを1だけデクリメントする(ステップSF2)。そして、DeltaCntが0になったか否かを判別する(ステップSF3)。DeltaCntが0でない場合には、Prtが0であるか2であるかを判別する(ステップSF4)。Prtが2で自動演奏の早送り中である場合には、伴奏発音処理を行って(ステップSF5)、ステップSF2に移行してDeltaCntをデクリメントする。Prtが0である場合、又は、ステップSF1若しくはステップSF3においてDeltaCntが0である場合には、図8の曲データ歩進処理のフローに戻る。すなわち、次イベント処理までの時間が0でない場合には、タイマインタラプトごとにDeltaCntをデクリメントする。
【0027】
図10は、図8の曲データ歩進処理におけるステップSE4のイベント処理のフローチャートである。この処理では、Adrのコマンドがノートイベントであるか曲のエンドであるかを判別し(ステップSG1)、コマンドがノートイベントである場合には、Prtが0(通常進行)であるか2(早送り)であるかを判別する(ステップSG2)。0である場合には、次のノートイベントの発音タイミングに達したので、Prtを1(押鍵待機)にセットし、伴奏音発音処理を行う(ステップSG3)。そして、図7の曲データ進行インタラプト処理に戻る。
【0028】
ステップSG2において、Prtが2である場合には、変数n=0〜NMAXで、Note[n]=0があるか否かを判別する(ステップSG4)。Note[n]=0がある場合には、AdrのイベントのNoteNum、Velでの発音を開始し、Note[n]にNoteNumをストアし、Time[n]にGateTimeをストアし、NoteCntを1だけインクリメントする(ステップSG5)。この後、又は、ステップSG4においてNote[n]=0がない場合には、Adrに次イベントアドレスをストアし、DeltaCntにAdrのイベントのDeltaをストアし、当該鍵のナビゲートを表示する(ステップSG6)。
【0029】
次に、DeltaCntが0であるか否かを判別する(ステップSG7)。すなわち、次イベント処理までの時間が0になったか否かを判別する。DeltaCntが0でない場合には、Prtに0をセットし、伴奏発音処理を行う(ステップSG8)。そして、図7の曲データ進行インタラプト処理に戻る。DeltaCntが0である場合には、ステップSG1に移行してAdrのコマンドを判別する。コマンドがエンドである場合には、Adrを−1にセットし、Note[0]〜Note[NMAX]の全てをクリアし、NoteCntおよびKeyCntに0をストアし、鍵盤および伴奏の全音の発音を終了する(ステップSG9)。そして、図7の曲データ進行インタラプト処理に戻る。
【0030】
図11は、図7の曲データ進行インタラプト処理におけるステップSD6の発音経過処理のフローチャートである。この処理では、まず、Note[ ]を指定する変数nを初期値0にセットして(ステップSH1)、nをインクリメントしながら、ステップSH2〜ステップSH8のループ処理を繰り返す。このループ処理では、Note[n]=0であるか否かを判別し(ステップSH2)、Note[n]=0でない場合すなわちNote[n]のノートイベントが発音中である場合には、発音時間の残り時間Time[n]=0であるか否かを判別する(ステップSH3)。Time[n]=0でない場合にはTime[n]を1だけデクリメントし(ステップSH4)、再度Time[n]=0であるか否かを判別する(ステップSH5)。
【0031】
ステップSH5又はステップSH3において、Time[n]=0である場合には、ノートオフ処理を行う(ステップSH6)。ノートオフ処理の後、又は、ステップSH2においてNote[n]=0である場合、若しくは、ステップSH5においてTime[n]=0でない場合には、nを1だけインクリメントする(ステップSH7)。そして、nがNMAXより大きいか否かを判別する(ステップSH8)。nがNMAX以下である場合には、ステップSH2に移行してループ処理を繰り返す。ステップSH8において、nがNMAXより大きい場合、すなわち一定時間ごとの割り込みが入った時点で発音中のノートイベントの発音経過処理が終了したときは、図7の曲データ進行インタラプト処理に戻る。
【0032】
図12は、図11の発音経過処理におけるステップSH6のノートオフ処理のフローチャートである。この処理では、Note[n]の発音を終了し、NoteCntを1だけデクリメントして、Note[n]に0をストアして(ステップSJ1)、図11の発音経過処理に戻る。
【0033】
図13は、第1の実施形態における演奏誘導を行う場合のタイミングチャートの例を示す図である。図13(1)は、押鍵すべき音高C,E,Gのノートイベントの発音開始タイミングおよび発音終了タイミングを示している。これに対して、図13(2)は、任意の3つの鍵であるKey1,Key2,Key3の押鍵および離鍵による実際の発音のタイミングチャートを示している。
【0034】
Key1の押鍵のタイミングで音高Cのノートイベントの発音が開始され、Key1の離鍵のタイミングで全鍵オフとなるので、音高Cの発音終了タイミングに達する前に音高Cは消音される。次に、Key2の押鍵のタイミングで音高Eのノートイベントの発音が開始され、音高Eのノートイベントの発音終了タイミングで、Key2の離鍵のタイミングに達する前に音高Eは消音される。音高Eのノートイベントの発音中に、Key3の押鍵のタイミングで音高Gのノートイベントの発音が開始され、Key3の離鍵のタイミングで全鍵が離鍵となるので、音高Gの発音終了タイミングに達する前に音高Gは消音される。
【0035】
このように、第1の実施形態によれば、鍵盤2は、図5および図6に示すように、演奏操作に応じて押鍵又は離鍵およびその押鍵又は離鍵に係る楽音の音高(図13の例では、Key1,Key2,Key3の音高)をCPU1に入力する。CPU1は、発音すべき楽音の音高、発音開始タイミングおよび発音終了タイミングを含むノートイベントを曲進行順に配列してなる曲データを記憶しているRAM5から、鍵盤2による押鍵の入力に応じてノートイベントを読み出し、鍵盤2による次の押鍵の入力があるまで次のノートイベントの読み出しを待機し(図7において、ステップSD4でPrt=1の場合、図13の例では、音高Eのノートイベントの発音開始タイミング(t2)からKey2のオン(t3)までの場合)、鍵盤2によって読み出されたノートイベントの発音開始タイミングから発音終了タイミングまでノートイベントの音高で音源7から発音させ(図10および図11において、ステップSG5〜ステップSH6までの場合、図13の例では、Key2のオン(t3)から音高Eのノートイベントの発音終了タイミング、すなわちt3から音高Eのノートイベントの発音時間(GateTime)GTEが経過したタイミング(t4)までの場合)、鍵盤2から入力された押鍵によって発音中の楽音の全てに対して離鍵が入力されたときは音源7に対して発音中の全ての楽音を消音させる(図6において、ステップSL3のYESからステップSL4までの場合、図13の例では、Key1のオフ(t1)およびKey3のオフ(t5)の場合)。
したがって、この第1の実施形態の構成によれば、和音や発音時間が一部重なるような楽音を発音でき、かつ、全鍵離鍵にもかかわらず発音継続という不自然な動作を避けることで、聴感上自然な演奏で通常のメロディを発音できる。
【0036】
次に、図1の電子鍵盤楽器による第2の実施形態における演奏誘導処理の動作について、CPU1によって実行されるフローチャート、並びに、ノートイベント、押鍵および離鍵、発音状態の関係を示すタイミングチャートを参照して説明する。なお、この第2の実施形態において、CPU1によって実行されるフローチャートのほとんどは、第1の実施形態と同じであるので、第1の実施形態における図面を援用しつつ、異なる部分について動作を説明する。
【0037】
図14は、図11の発音経過処理におけるステップSH6のノートオフ処理の第2の実施形態におけるフローチャートである。この処理では、発音中のノートイベントの数であるNoteCntが、押鍵数であるKeyCntよりも多いか否かを判別し(ステップSK1)、NoteCntがKeyCntより多い場合には、Note[n]の発音を終了し、NoteCntを1だけデクリメントし、Note[n]に0をストアする(ステップSK2)。そして、図11の発音経過処理に戻る。
【0038】
図15は、第2の実施形態における楽音誘導を行う場合のタイミングチャートの例を示す図である。
図15(1)は、押鍵すべき音高C,E,Gの発音開始タイミングおよび発音終了タイミングを示し、図15(2)は、図15(1)の押鍵誘導に対する任意の鍵の押鍵および離鍵による実際の発音のタイミングチャートを示している。
図15(2)においては、3つの鍵であるKey1,Key2,Key3の同時押鍵によって音高Cのノートイベントの発音が開始される。その後、4つ目の鍵であるKey4の押鍵によって音高Eのノートイベントの発音が開始され、次に5つ目の鍵であるKey5の押鍵によって音高Gの発音が開始される。音高Cのノートイベントの発音終了タイミング(t1)では、KeyCnt=4、NoteCnt=2となっており、図14のステップSK1でNOとなるので、この時点では消音はされない。また音高Eのノートイベントの発音終了タイミング(t2)では、KeyCnt=5、NoteCnt=3となっており、同様に、この時点では消音はされない。Key1〜Key5の全ての離鍵によって、全部のノートイベントが消音される。これにより、押鍵数と発音中のノートイベント数との差の拡大を防止することができる。
【0039】
図15(3)は、押鍵すべき音高C,E,Gの同時発音の発音開始タイミングおよび発音終了タイミングを示し、図15(4)は、図15(3)の押鍵誘導に対する1つの鍵の押鍵および離鍵による実際の発音のタイミングチャートを示している。
図15(4)においては、鍵Key1の押鍵によって3つのノートイベントである音高C,E,Gが同時に発音を開始されるため、KeyCnt=1、NoteCnt=3となり、音高Gおよび音高Eのノートイベントがそれぞれ発音終了タイミング(t1、t2)に達したときに消音される。その後、音高Cのノートイベントが発音終了タイミング(t3)に達したとき、KeyCnt=1、NoteCnt=1であるから、この時点では音高Cのノートイベントは消音されない。そしてその後、Key1の離鍵によって全鍵が離鍵となった時点(t4)で、音高Cのノートイベントが消音される。これにより、押鍵数と発音中のノートイベント数との差の拡大を防止するとともに、離鍵されるまでノートオフしないという自然な演奏に近い曲データの発音が実現できる。
【0040】
このように、第2の実施形態によれば、CPU1は、鍵盤2によって読み出されて発音中のノートイベント数が、鍵盤2によって入力された押鍵数よりも多い場合には、入力された押鍵数に達するまで発音終了タイミングに達した発音中のノートイベントを消音させる(図14のフローチャート、図15のタイミングチャート)。
したがって、この第2の実施形態の構成によれば、和音や発音時間が一部重なるような楽音を発音でき、かつ、押鍵数と発音中のノートイベント数との差の拡大を防止するとともに、離鍵されるまでノートオフしないという自然な演奏に近い曲データの発音を実現して、聴感上自然な演奏で通常のメロディを発音できる。
【0041】
次に、図1の電子鍵盤楽器による第3の実施形態における演奏誘導処理の動作について、CPU1によって実行されるフローチャート、並びに、ノートイベント、押鍵および離鍵、発音状態の関係を示すタイミングチャートを参照して説明する。なお、この第3の実施形態においても、上記第2の実施形態と同様に、CPU1によって実行されるフローチャートのほとんどは、第1の実施形態と同じであるので、第1の実施形態における図面を援用しつつ、異なる部分について動作を説明する。
【0042】
図16は、図5の鍵盤処理におけるステップSC4のキーオフ処理の第3の実施形態におけるフローチャートである。この処理では、変数n=0〜KMAXで、Key[n]=離鍵番号のレジスタがあるか否かを判別し(ステップSM1)、離鍵番号のレジスタがある場合には、KeyCntを1だけデクリメントする(ステップSM2)。そして、NoteCntがKeyCntよりも多いか否かを判別する(ステップSM3)。NoteCntがKeyCnt以下である場合には、Key[n]に0をストアする(ステップSM4)。この後、又は、ステップSM1において離鍵番号がない場合には、図5の鍵盤処理のフローに戻る。
【0043】
ステップSM3において、NoteCntがKeyCntよりも多い場合には、レジスタNote[ ]を指定する変数rおよびR、発音中のノート番号と離鍵された鍵番号との音高差をストアするレジスタDにそれぞれ初期値0,−1,−1をセットして(ステップSM5)、ステップSM6〜ステップSM11のループ処理を繰り返す。このループ処理において、Note[r]=0であるか否かを判別し(ステップSM6)、Note[r]=0でない場合には、Note[r]からKey[n]を減算した結果の絶対値をレジスタdにストアする(ステップSM7)。すなわち、発音中のノートイベントのノート番号と離鍵された鍵の鍵番号との音高差をdにストアする。
【0044】
次に、Dが−1(初期値)であるか又はDがdより大きいか否かを判別する(ステップSM8)。Dが−1又はDがdより大きい場合には、Dにdの音高差をストアし、Rにrの値をストアする(ステップSM9)。この後、又は、ステップSM6においてNote[r]=0である場合、若しくは、ステップSM8においてDが−1でなく、かつ、Dがd以下である場合には、rを1だけインクリメントする(ステップSM10)。そして、rがNMAXより大きいか否かを判別する(ステップSM11)。すなわち、処理中の全てのノートイベントについてループ処理が終了したか否かを判別する。rがNMAX以下で、処理中の全てのノートイベントについてループ処理が終了していない場合には、ステップSM6に移行してループ処理を繰り返す。
【0045】
ループ処理のステップSM7で算出した音高差dが、ステップSM8においてDより小さい場合には、ステップSM9でそのときのdの音高差がDにストアされる。したがって、ステップSM11においてrがNMAXより大きくなって、処理中の全てのノートイベントについてループ処理が終了したときには、Key[n]の鍵番号に最も近い音高差のノート番号のNote[R]が検出されるか、又は、全てのNote[ ]が0であり、Rが初期値−1の状態である。したがって、ループ処理が終了したときは、Rが−1であるか否かを判別し(ステップSM12)、Rが−1でない場合には、Note[R]の発音を終了し、NoteCntを1だけデクリメントし、Note[R]に0をストアする(ステップSM13)。この後、又は、ステップSM12でRが−1の場合には、ステップSM3に移行してNoteCntがKeyCntより大きいか否かを判別する。
【0046】
図17は、第3の実施形態における楽音誘導を行う場合のタイミングチャートの例を示す図である。
図17(1)は、押鍵すべき音高C4,E4,G4の発音開始タイミングおよび発音終了タイミングを示し、図17(2)は、図17(1)の押鍵誘導に対する音高C4,E4,A4の鍵の押鍵および離鍵による実際の発音のタイミングチャートを示している。
図17(2)においては、KeyC4の押鍵によって音高C4のノートイベントの発音が開始され、KeyE4の押鍵によって音高E4のノートイベントの発音が開始され、KeyA4の押鍵によって音高G4のノートイベントの発音が開始される。その後、KeyC4の離鍵によって音高C4のノートイベントが消音され、KeyA4の離鍵によってKeyA4の音高に最も近い音高G4のノートイベントが消音される。さらにその後、KeyE4の離鍵によって音高E4のノートイベントが消音される。
【0047】
このように、第3の実施形態によれば、CPU1は、鍵盤2によって読み出されて発音中のノートイベント数が鍵盤2によって押鍵された鍵数以上の場合(図16のステップSM2の処理の後、ステップSM3でYESの場合、図17の例においては、KeyA4が離鍵の場合)において、鍵盤2によって離鍵がされたときには、離鍵の音高に最も近い音高の発音中のノートイベントを消音させる(図16のステップSM13、図17の例においては、音高G4のノートイベントの消音)。
したがって、和音や発音時間が一部重なるような楽音を発音でき、かつ、発音中のノート番号で、離鍵された鍵番号に最も近いものから順次消音し、押鍵数と発音ノート数とを一致させることにより、聴感上自然な演奏で通常のメロディを発音できる。
【0048】
また、上記各実施形態においては、電子鍵盤楽器を例に採って演奏誘導装置を説明したが、本発明の演奏誘導装置としては電子鍵盤楽器に限定されるものではない。例えば、鍵盤2の代わりに、弦を有する電子弦楽器やキースイッチおよびマウスピースを有する電子管楽器などにも本発明を適用することができる。すなわち、演奏操作に応じて発音開始指示又は発音終了指示、およびその発音開始指示又は発音終了指示に係る楽音の音高を入力する入力手段を有する装置において、演奏を誘導する機能をもった演奏誘導装置の全てに本発明を適用することができる。
【0049】
また、上記各実施形態および他の実施形態においては、ROM4にあらかじめ記憶された演奏誘導処理のプログラムをCPU1が実行する演奏誘導装置について説明したが、FD(フレキシブルディスク)やCD−ROMなどの外部記憶媒体を駆動するドライバを設けて、その外部記憶媒体から演奏誘導処理のプログラムをインストールする構成にしてもよい。あるいは、インターネットなどのネットワークを介して、外部のサーバなどの装置から演奏誘導処理のプログラムをインストールする構成にしてもよい。この場合には、プログラムの発明を実現できる。
【0050】
すなわち、その演奏誘導処理のプログラムは、演奏操作に応じて発音開始指示又は発音終了指示を入力する第1のステップと、発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、第1のステップによる発音開始指示の入力に応じてノートイベントを読み出し、第1のステップによる次の発音開始指示の入力があるまで次のノートイベントの読み出しを待機する第2のステップと、第2のステップによって読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させ、発音中の楽音の全てに対して発音終了指示が入力されない限りは各楽音の発音を前記発音持続時間だけ持続させる一方、発音中の楽音の全てに対して発音終了指示が入力されたときは発音手段に対して発音中の全ての楽音を消音させる第3のステップとを実行するものである。
【0051】
【発明の効果】
本発明によれば、演奏操作に応じて発音開始指示又は発音終了指示を入力し、発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、発音開始指示の入力に応じてノートイベントを読み出し、次の発音開始指示の入力があるまで次のノートイベントの読み出しを待機し、読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させ、発音中の楽音の全てに対して発音終了指示が入力されない限りは各楽音の発音を発音持続時間だけ持続させる一方、発音中の楽音の全てに対して発音終了指示が入力されたときは発音中の全ての楽音を消音させるので、和音や発音時間が一部重なるような楽音を発音でき、かつ、聴感上自然な演奏で通常のメロディを発音できるという効果が得られる。
【図面の簡単な説明】
【図1】本発明の各実施形態における電子鍵盤楽器の構成を示すブロック図。
【図2】図1におけるRAMのデータエリアの構成を示す図。
【図3】図1におけるCPUのメインフローチャート。
【図4】図3におけるスイッチ処理のフローチャート。
【図5】図3における鍵盤処理のフローチャート。
【図6】図5の鍵盤処理におけるキーオフ処理のフローチャート。
【図7】一定時間ごとの曲データ進行インタラプト処理のフローチャート。
【図8】図7の曲データ進行インタラプト処理における曲データ歩進処理のフローチャート。
【図9】図8の曲データ歩進処理における時間更新処理のフローチャート。
【図10】図8の曲データ歩進処理におけるイベント処理のフローチャート。
【図11】図7の曲データ進行インタラプト処理における発音経過処理のフローチャート。
【図12】図11の発音経過処理におけるノートオフ処理のフローチャート。
【図13】第1の実施形態における楽音誘導を行う場合のタイミングチャートの例を示す図。
【図14】図11の発音経過処理におけるノートオフ処理の第2の実施形態におけるフローチャート。
【図15】第2の実施形態における楽音誘導を行う場合のタイミングチャートの例を示す図。
【図16】図5の鍵盤処理におけるキーオフ処理の第3の実施形態におけるフローチャート。
【図17】第3の実施形態における楽音誘導を行う場合のタイミングチャートの例を示す図。
【図18】従来の方法によって楽音誘導を行う場合のタイミングチャートの例を示す図。
【符号の説明】
1 CPU
2 鍵盤
3 スイッチ部
4 ROM
5 RAM
6 表示部
7 音源
8 D/A変換回路
9 アンプ
10 スピーカ
Claims (6)
- 演奏操作に応じて発音開始指示又は発音終了指示を入力する入力手段と、
キーカウンタと、
ノートカウンタと、
発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、前記入力手段による発音開始指示の入力のタイミングに応じてノートイベントを読み出すとともに、前記キーカウンタをインクリメントする読出手段と、
前記入力手段からの発音終了指示の入力に応答して前記キーカウンタをデクリメントするキーオフ処理手段と、
前記読出手段によって読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させるとともに、前記ノートカウンタをインクリメントするイベント処理手段と、
このイベント手段により発音開始された楽音の発音経過時間をカウントする発音経過手段と、
この発音経過手段によりカウントされた発音経過時間が、前記発音中の楽音に対応する発音持続時間を経過したと判別された場合に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数よりも多い場合に、前記発音持続時間を経過した発音中の楽音を消音させるとともに、前記ノートカウンタをデクリメントするノートオフ処理手段と、
を有する演奏誘導装置。 - 前記キーオフ処理手段は、前記キーカウンタのカウント数がゼロになった場合に、前記全ての発音中の楽音を消音するとともに、前記ノートカウンタのカウント数をゼロにする全消音手段を含むことを特徴とする請求項1記載の演奏誘導装置。
- 前記入力手段は、発音終了指示の入力とともに音高が入力可能に構成され、
前記キーオフ処理手段は、前記キーカウンタをデクリメントした後に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数より大きい場合に、入力された音高に最も近い音高を有する前記発音中の楽音を消音させる消音手段を含むことを特徴とする請求項1記載の演奏誘導装置。 - 演奏操作に応じて発音開始指示又は発音終了指示を入力する入力手段を有する演奏誘導装置に適用されるコンピュータに、
発音すべき楽音の音高、および発音持続時間に関する情報を含むノートイベントを曲進行順に配列してなる曲データを記憶している所定の記憶手段から、前記発音開始指示の入力のタイミングに応じてノートイベントを読み出すとともに、キーカウンタをインクリメントする読出ステップと、
前記発音終了指示の入力に応答して前記キーカウンタをデクリメントするキーオフ処理ステップと、
前記読み出されたノートイベントの音高で所定の発音手段から楽音の発音を開始させるとともに、ノートカウンタをインクリメントするイベント処理ステップと、
この発音開始された楽音の発音経過時間をカウントする発音経過ステップと、
このカウントされた発音経過時間が、前記発音中の楽音に対応する発音持続時間を経過したと判別された場合に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数よりも多い場合に、前記発音持続時間を経過した発音中の楽音を消音させるとともに、前記ノートカウンタをデクリメントするノートオフ処理ステップと、
を実行させる演奏誘導処理のプログラム。 - 前記キーオフ処理ステップは、前記キーカウンタのカウント数がゼロになった場合に、前記全ての発音中の楽音を消音するとともに、前記ノートカウンタのカウント数をゼロにする全消音ステップを含むことを特徴とする請求項4記載の演奏誘導処理のプログラム。
- 前記入力手段は、発音終了指示の入力とともに音高が入力可能に構成され、
前記キーオフ処理ステップは、前記キーカウンタをデクリメントした後に、前記ノートカウンタのカウント数が、前記キーカウンタのカウント数より大きい場合に、入力された音高に最も近い音高を有する前記発音中の楽音を消音させる消音ステップを含むことを特徴とする請求項4記載の演奏誘導処理のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003198879A JP4054913B2 (ja) | 2003-07-18 | 2003-07-18 | 演奏誘導装置および演奏誘導処理のプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003198879A JP4054913B2 (ja) | 2003-07-18 | 2003-07-18 | 演奏誘導装置および演奏誘導処理のプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005037568A JP2005037568A (ja) | 2005-02-10 |
JP4054913B2 true JP4054913B2 (ja) | 2008-03-05 |
Family
ID=34208489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003198879A Expired - Fee Related JP4054913B2 (ja) | 2003-07-18 | 2003-07-18 | 演奏誘導装置および演奏誘導処理のプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4054913B2 (ja) |
-
2003
- 2003-07-18 JP JP2003198879A patent/JP4054913B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2005037568A (ja) | 2005-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6465136B2 (ja) | 電子楽器、方法、及びプログラム | |
JP5168297B2 (ja) | 自動伴奏装置および自動伴奏プログラム | |
JP5228315B2 (ja) | 自動伴奏生成装置および自動伴奏生成方法を実現するためのプログラム | |
JP5732982B2 (ja) | 楽音生成装置および楽音生成プログラム | |
CN104282297A (zh) | 乐音产生装置、电子乐器以及乐音产生方法 | |
CN108573689B (zh) | 电子乐器、乐音发生方法及记录介质 | |
JP4054913B2 (ja) | 演奏誘導装置および演奏誘導処理のプログラム | |
JP2005121876A (ja) | 波形発生装置 | |
JPH1091061A (ja) | 演奏指示装置及びプログラムを記録した媒体 | |
JPH10319993A (ja) | データ編集装置 | |
JP6528752B2 (ja) | 楽音再生装置、楽音再生方法、プログラムおよび電子楽器 | |
JP6149890B2 (ja) | 楽音生成装置および楽音生成プログラム | |
JP5692275B2 (ja) | 電子楽器 | |
JP5742592B2 (ja) | 楽音生成装置、楽音生成プログラム及び電子楽器 | |
JP5200368B2 (ja) | アルペジオ生成装置およびアルペジオ生成方法を実現するためのプログラム | |
JP2005128208A (ja) | 演奏再生装置及び演奏再生制御プログラム | |
JP4449370B2 (ja) | 自動伴奏生成装置及びプログラム | |
JP2006301274A (ja) | 電子楽器 | |
JP2010060583A (ja) | 電子楽器及びプログラム | |
JPH04331990A (ja) | 音声電子楽器 | |
JP6102975B2 (ja) | 楽音生成装置、楽音生成プログラム及び電子楽器 | |
JP3075750B2 (ja) | 自動演奏装置 | |
JP3557474B2 (ja) | 楽音発生装置 | |
JP5703543B2 (ja) | 電子楽器、方法及びプログラム | |
JP2009198657A (ja) | 演奏教習装置および演奏教習プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060208 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060405 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060718 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070626 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070720 |
|
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: 20071113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071126 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131221 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |