JP3567293B2 - 発音チャンネル割当装置 - Google Patents
発音チャンネル割当装置 Download PDFInfo
- Publication number
- JP3567293B2 JP3567293B2 JP33620294A JP33620294A JP3567293B2 JP 3567293 B2 JP3567293 B2 JP 3567293B2 JP 33620294 A JP33620294 A JP 33620294A JP 33620294 A JP33620294 A JP 33620294A JP 3567293 B2 JP3567293 B2 JP 3567293B2
- Authority
- JP
- Japan
- Prior art keywords
- channel
- tone
- priority
- register
- key
- 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)
Description
【産業上の利用分野】
本発明は、互いに異なる音色の楽音を複数同時発音する電子楽器に用いて好適な発音チャンネル割当装置に関する。
【0002】
【従来の技術】
従来より、同時発音チャンネルの数が鍵の数より少ない電子楽器においては、全ての発音チャンネルが楽音を発生している最中に新たな押鍵がなされた場合、この新たな押鍵に対応して発音すべき発音チャンネルを割り当てる発音チャンネル割当装置を備えている。
このような割り当てはトランケート処理と呼ばれ、従来、この種の装置によるトランケート処理では、全ての発音チャンネルの内、最も減衰の進んだエンベロープレベルの楽音を発生している発音チャンネルへ新たに押鍵された鍵の楽音発生をアサインしたり、最も古く離鍵された発音チャンネルへ新たに押鍵された鍵の楽音発生をアサインする方式などが知られている。
【0003】
【発明が解決しようとする課題】
ところで、上述した従来の発音チャンネル割当装置にあっては、全ての発音チャンネルが発音状態の時に新たな押鍵があると、一意的にエンベロープレベルが最も低い楽音、あるいは最古離鍵された鍵の楽音を発音している発音チャンネルへ新押鍵に対応する楽音の発生を割り当てている。また、近年では、音色割り当てされた発音チャンネル(以下、これを音色チャンネルと称す)毎に付与された優先順位に従って楽音を発生する、所謂、マルチティンバー発音チャンネルが多用されてきており、こうした発音チャンネルにあっては、例えば、通常の減衰波形とは異なり、リリース波形が比較的長い場合や、リリース領域で2段減衰する等の特徴的なエンベロープ形状の楽音を、トランケートさせず優先的に発音継続させることができないという弊害がある。
【0004】
結局、従来の発音チャンネル割当装置では、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てすることができないという問題がある。
そこで本発明は、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てを行うことができる発音チャンネル割当装置を提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、それぞれ毎に優先順位とリリース中の発音を優先させるか否かを表す優先フラグとが設定されている複数の音色の内の何れかに応じた楽音の発生処理を、キーオンの指示に応答して複数の発音チャンネルの内の何れかに割り当てる発音チャンネル割当装置であって、新たなキーオンが指示されたときに空いている発音チャンネルが無い場合、リリース中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第1の発音チャンネルと、キーオン指示中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第2の発音チャンネルとをそれぞれ検出し、第1の発音チャンネルが発生している楽音の音色の優先順位が第2の発音チャンネルのそれより低い場合には、第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当て、その逆の場合には、第1の発音チャンネルが発生している楽音の音色の優先フラグが肯定であれば第2の発音チャンネルに、否定であれば第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする。
【0006】
請求項2に記載の発明によれば、第1の発音チャンネルが発生している楽音の音色の優先順位が第2の発音チャンネルのそれより高く、かつ、優先フラグが肯定であっても、第1の発音チャンネルが発音終了を表す所定値を目標値としてエンベロープを生成している場合には、第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする。
また、請求項3に記載の発明によれば、楽音のリリースはそれぞれが異なる傾きを有する複数の区間から構成され、優先フラグは各区間毎に設定されていることを特徴とする。
【0007】
【作用】
本発明では、発音チャンネル情報記憶手段が各発音チャンネル毎にアサインされる音色に対応した楽音パラメータを記憶しておき、各発音チャンネルの全てが前記アサインされた音色の楽音を発生している最中に新たな押鍵が発生した場合、発音チャンネル検出手段が発音チャンネル情報記憶手段から各発音チャンネル毎にアサインされる音色の楽音パラメータに基づいて最も消音に適した楽音を発生している発音チャンネルを検出し、楽音発生指示手段がこの発音チャンネル検出手段によって検出された発音チャンネルへ新たな押鍵に対応した楽音の発生を指示する。
これにより、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てを行うことが可能になる。
【0008】
【実施例】
以下、図面を参照して本発明の実施例について説明する。
A.第1実施例
(1)実施例の構成
図1は、本発明の第1実施例を適用した電子楽器の構成を示すブロック図である。この図において、1は鍵盤部であり、各鍵毎の押離鍵操作および押離鍵速度を検出し、検出した押離鍵操作に対応したキーオン信号、キーナンバおよびキーオフ信号を発生すると共に、押離鍵速度に対応したベロシティ情報を発生する。2は楽器パネル(図示略)に配設される各種スイッチやホイール等の操作子から構成される操作部であり、各種スイッチ操作に応じたスイッチ信号およびホイール操作に対応する操作子信号を発生する。
【0009】
なお、この操作部2に配設される各種スイッチの内には、後述する発音チャンネル部8の各発音チャンネル毎に音色設定するスイッチや、音色割当された発音チャンネルの発音優先順位を決めるスイッチ等がある。3は楽器各部を制御するCPUである。このCPU3では、後述する発音チャンネル決定処理を実行し、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮した発音割当を実現しており、その動作については追って説明する。4は、上記CPU3によってロードされる各種制御プログラムを記憶するプログラムROMである。5は音色テーブルTCTBL等を記憶するデータROMである。
【0010】
ここで、図2を参照して音色テーブルTCTBLの構成について説明しておく。音色テーブルTCTBLは、図示されていない音色スイッチにより選択指定される各音色番号毎の属性RPF〜RR2から形成されている。これら属性の内、リリース優先フラグRPFは、トランケート時に優先して発音を継続させるか否かを識別するものであり、当該フラグRPFが「1」となる音色が割り当てられた発音チャンネルでは発音が優先される。波形番号WNは、音色番号に対応して波形メモリ(図示略)に記憶される波形内容を指定する。なお、この実施例では、波形メモリは後述する発音チャンネル部8内部に設ける態様としているが、これに替えてデータROM5の所定記憶エリアに波形信号を記憶する態様としても良い。
【0011】
アタック目標値AT〜リリース2レートRR2は、それぞれADSR型エンベロープ制御パラメータであり、その一例を図6(イ)に図示する。この図から判るように、ノートオン(キーオン)からアタック目標値ATまでをアタックレートARで立ち上がらせ、この後にディケイ目標値までをディケイレートDRで減衰させる。続いて、サステイン目標値までサステインレートSRでレベル保持する過程でノートオフ(キーオフ)された時に、リリース1目標値RT1までリリース1レートRR1に従って変化させ、この後、リリース2目標値RT2までリリース2レートRR2に従って変化させる2段過程を経て消音させる。こうした2段過程によるリリース制御は、例えば、ピアノ特有のエンベロープ形状の楽音を生成し得る。なお、通常のエンベロープ制御では、図6(ロ)に示す形態でエンベロープ波形を制御することになり、この場合、リリース2目標値RT2およびリリース2レートRR2が省略される。
【0012】
次に、再び図1を参照して実施例の構成について説明を進める。図1において、6はCPU3の各種演算結果やレジスタ値/フラグ値、あるいは後述する発音チャンネルテーブルTGTBLやパートテーブルCHTBLが一時記憶されるワークRAMである。このワークRAM6には、図3に示すレジスタ構成にて形成されるパートテーブルCHTBLが設けられており、演奏パート毎にアサインされる音色番号がテーブル形式で格納されている。この実施例が外部から入力される演奏信号に応じて自動演奏する場合には、このテーブルCHTBLにセットされる各演奏パートの音色番号に従って上述した音色テーブルTCTBLが参照され、当該音色番号に対応するリリース優先フラグRPF,波形番号WNおよびエンベロープ制御パラメータAT〜RR2に基づくエンベロープ制御を後述する発音チャンネル部8に指示するようになっている。
【0013】
さらに、ワークRAM6には、図4に示すレジスタ構成からなる発音チャンネルテーブルTGTBLが設けられている。発音チャンネルテーブルTGTBLには、発音チャンネル部8の発音チャンネル(発音チャンネル)毎に与えられる楽音制御パラメータNOT(n)〜EVP(n)が格納されており(但し、nは発音チャンネル番号を示す)、この実施例の場合、32音の同時発音チャンネルにそれぞれ対応する楽音制御パラメータNOT(n)〜EVP(n)が一時記憶される。
【0014】
これらパラメータの内、NOT(n)は押鍵された鍵のキーナンバ、あるいはMIDI入力されるノートナンバである。CH(n)演奏パート番号(音色に対応)、KOF(n)はキーオン時(あるいは演奏信号入力時のノートオン時)に「1」となる押鍵フラグである。RPF(n)は、演奏パート番号CH(n)に対応する音色に割り付けられたリリース優先フラグRPFである。EVL(n),EVS(n),EVR(n)およびEVP(n)は、現時点におけるエンベロープ制御値が順次格納されるレジスタであり、それぞれエンベロープレベル、エンベロープステップ、エンベロープレートおよびエンベロープ目標値を表す。
【0015】
次いで、再び図1に戻り、実施例の構成について説明を進める。図1において、7は演奏信号入出力インタフェース回路から構成される外部入力部であり、例えば、外部シーケンサ等から供給される演奏信号をバスBを介してCPU3へ供給したり、CPU3によって生成される演奏信号を外部演奏楽器へ出力する。演奏信号は、例えば、図5に図示するように、ノートオン/オフおよび演奏パート番号を表すステータスバイトST、ノート番号を表すデータ1バイトDATA1およびベロシティを表すデータ2バイトDATA2の3バイト・シリアルデータから形成される。
【0016】
音源部8は、周知の波形メモリ読みだし方式で構成される波形発生部(図示略)とエンベロープ生成部とからなる。音源部8では、波形発生部がCPU3から供給される波形番号WNに対応する波形信号を波形メモリから読み出す一方、エンベロープ生成部がCPU3によって発音チャンネル割当された各発音チャンネル毎に、発音チャンネルテーブルTGTBLにセットされる楽音制御パラメータに基づいて時分割に波形信号をエンベロープ制御するよう構成されている。なお、この実施例において、発音チャンネル部8は、32音の同時発音チャンネル(以下、これをチャンネルと記述する場合もある。)を備えている。
9は、発音チャンネル部8から出力される楽音波形をアナログの楽音信号に変換して次段のサウンドシステム10に供給するD/A変換部である。サウンドシステム10は、D/A変換部9から出力される楽音信号を増幅して次段のスピーカSPから楽音として発音させる。
尚、本実施例の電子楽器においては、演奏パートの発音優先順位が設定されており、図7のパート優先順位がこれにあたる。このパート優先順位とは、例えば、リズム楽器のパートと和音楽器のパートであれば、リズム楽器の優先順位が高く、いずれか一方を消音しなければならない場合、和音楽器のパートが消音されるというものである。
【0017】
上記構成による実施例にあっては、図7に示す発音チャンネル割当順位でトランケートすることによって、「優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等」、その楽音の属性を考慮した発音チャンネル割り当てを実現することを要旨としており、以下、この割当順位について概説しておく。
図7に示す割当順位は、全ての発音チャンネルが発音中である時に新たなキーオン(あるいはノートオン)が発生した時、リリース中の発音チャンネルの内で最も優先順位の低いパートが割り当てられたチャンネルXDCと、キーオン(あるいはノートオン)中の発音チャンネルの内で最も優先順位の低いパートが割り当てられたチャンネルYDCとをサーチし、これらチャンネルXDC,YDCの優先順位の優劣に対応する下記3ケースにおいて、チャンネルXDC,YDCのいずれをトランケートするかを図示したものである。すなわち、
【0018】
〔ケース1〕:チャンネルXDC≦チャンネルYDC(すなわちチャンネルYDCの方が優先順位が高い)の場合には、チャンネルYDCが割当順位5位となり、チャンネルXDCが割当順位1位となるから、割当順位の高いリリース中のチャンネルXDCがトランケートされる。
〔ケース2〕:チャンネルXDC≧チャンネルYDC(すなわちチャンネルXDCの方が優先順位が高い)であって、チャンネルXDCのリリース優先フラグRPFが「0(OFF)」の場合には、チャンネルXDCが割当順位2位となり、チャンネルYDCが割当順位3位となるから、割当順位の高いリリース中のチャンネルXDCがトランケートされる。
〔ケース3〕:チャンネルXDC≧チャンネルYDC(すなわちチャンネルXDCの方が優先順位が高い)であって、チャンネルXDCのリリース優先フラグRPFが「1(ON)」の場合には、チャンネルXDCが割当順位4位となり、チャンネルYDCが割当順位3位となるから、割当順位の高いキーオン中のチャンネルYDCがトランケートされる。
【0019】
なお、全ての発音チャンネルが発音中である時に新たなキーオン(あるいはノートオン)が発生した時、リリース中にあるチャンネルが存在しない場合には、一意的にキーオン(あるいはノートオン)中のチャンネルの内で最も優先順位の低いチャンネルYDCをトランケートする。一方、キーオン(あるいはノートオン)中にあるチャンネルが存在しない場合には、一意的にリリース中のチャンネルの内で最も優先順位の低いチャンネルXDCをトランケートする。
【0020】
(2)第1実施例の動作
次に、こうしたルールに基づいて発音チャンネル割当を行う第1実施例の動作について図8〜図14を参照して説明する。ここでは、まず、図8を参照してメイン処理ルーチンの動作について説明した後、このメイン処理ルーチンにおいてコールされる各処理ルーチンの動作を図9〜図14を参照して順次説明する。
【0021】
▲1▼メイン処理ルーチンの動作(全体動作)
この実施例による電子楽器に電源が投入されると、CPU3はデータROM5から制御プログラムをロードして図8に示すメイン処理ルーチンを起動し、ステップSA1に処理を進める。ステップSA1では、ワークRAM6に格納されるパートテーブルCHTBLやチャンネルテーブルTGTBLの他、各種レジスタ/フラグ類をリセットするイニシャライズがなされ、次のステップSA2に処理を進める。ステップSA2では、楽器パネル面に配設される各種スイッチ操作に応じた設定処理、例えば、音色スイッチによる音色設定、あるいは演奏パート毎の音色割当などがなされる。
【0022】
次いで、ステップSA3に進むと、CPU3は押離鍵操作に対応したキーオン/オフイベントに基づく発音/消音を指示する鍵処理が行われる。ここでは、特に、キーオンイベントが重複した時にチャンネル決定処理ルーチン(後述する)に基づき、前述した割当ルールに従ったチャンネル割り当てが行われる。そして、続く、ステップSA4では、演奏入力に対応したノートオン/オフイベントに基づく発音/消音指示がなされる。なお、このステップSA4においても、ステップSA3と同様に、後述する発音チャンネル決定処理ルーチンに基づくトランケートが行われ、以後、ストップスイッチが操作される迄、ステップSA2〜SA4を繰り返して楽音を生成する。
【0023】
(2)イニシャル処理ルーチンの動作
電源投入後、CPU3の処理がステップSA1に進むと、図9に示すイニシャル処理ルーチンが実行され、ステップSB1に処理を進める。ステップSB1では、ループカウンタ値が格納されるレジスタNUMの値をゼロリセットし、続く、ステップSB2では、このレジスタNUMの値によって指定されるレジスタEVL(NUM)の内容をゼロリセットする。次いで、ステップSB3に進むと、レジスタNUMの値が「31」以上であるか、すなわち、前述したチャンネルテーブルTGTBLにおけるエンベロープレベルEVL(NUM)が全てイニシャライズされたか否かを判断する。
【0024】
ここで、全発音チャンネルにおけるエンベロープレベルEVL(NUM)がゼロリセットによりイニシャライズされた場合には、判断結果が「YES」となり、このルーチンを完了する。一方、そうでない場合には、判断結果が「NO」となり、ステップSB4へ進み、レジスタNUMの値をインクリメントして歩進させた後、上記ステップSB2へ処理を戻し、以後、32チャンネル分のエンベロープレベルEVL(NUM)が全てイニシャライズされるまでステップSB2〜SB4を繰り返す。
【0025】
▲3▼鍵処理ルーチンの動作
こうして、各発音チャンネルの初期設定がなされた後、ステップSA2(図8参照)のスイッチ処理にて音色設定等が行われると、CPU3はステップSA3に進み、図10に示す鍵処理ルーチンを実行し、ステップSC1に処理を進める。
【0026】
(a)押鍵時の動作
ステップSC1では、押鍵操作に応じたキーオンイベントが発生したか否かを判断する。ここで、演奏者が所定の鍵を押鍵したとする。そうすると、キーオンイベントが発生してこのステップSC1の判断結果は「YES」となり、次のステップSC2へ処理を進める。ステップSC2では、押鍵された鍵のキーナンバに対応した音高の楽音を発生すべく、発音チャンネルを決定するチャンネル決定処理ルーチン(後述する)を実行する。このチャンネル決定処理ルーチンでは、全発音チャンネルが発音中である時に新押鍵された場合、前述した割当順位に従ってトランケートする。
【0027】
そして、この発音チャンネル決定処理ルーチンによってトランケートすべきチャンネルが定められると、CPU3は次のステップSC3に処理を進める。なお、チャンネル決定処理ルーチンでは、チャンネル割当したチャンネルの番号(発音チャンネル番号)をレジスタDCOにセットするようにしている。次いで、ステップSC3に進むと、このレジスタDCOの値に対応するチャンネルテーブルTGTBLのレジスタNOT(DCO)に押鍵された鍵のキーナンバをセットする。
【0028】
次に、ステップSC4に進むと、チャンネルテーブルTGTBLのレジスタCH(DCO)に「1」をセットする。これは、押鍵操作された鍵の楽音が演奏パート番号「1」の優先順位となるからである。続いて、ステップSC5に進むと、押鍵フラグを記憶するレジスタKOF(DCO)に「1」をセットして押鍵状態にある旨を表わし、続く、ステップSC6では演奏パート番号「1」にアサインされた音色番号のリリース優先フラグRPFを、前述した音色テーブルTCTBLから読み出し、これをチャンネルテーブルTGTBLのレジスタRPF(DCO)にセットする。
【0029】
次いで、ステップSC7に進むと、演奏パート番号「1」にアサインされた音色番号に対応する各種エンベロープ制御パラメータAT〜RR2を、音色テーブルTCTBLから順次読み出し、これらパラメータAT〜RR2に応じて経時変化するエンベロープ情報EVL(DCO)〜EVP(DCO)を生成してチャンネルテーブルTGTBLに書き込む一方、レジスタDCOの値に対応する発音チャンネル(以下、これをチャンネルDCOと記す。番号DCOの発音チャンネルを意味する)へ発音指示する。これにより、発音チャンネル部8ではチャンネルDCOがチャンネルテーブルTGTBLにセットされたエンベロープ情報EVL(DCO)〜EVP(DCO)に従って楽音を生成する。
【0030】
(b)離鍵時の動作
次に、押鍵されていた鍵が離鍵操作されると、上述したステップSC1の判断結果が「NO」となり、ステップSC8に処理を進める。ステップSC8では、離鍵されたか否かを判断し、この場合、離鍵操作されることで判断結果が「YES」となり、次のステップSC9に進む。ステップSC9では、離鍵された鍵に対応するキーナンバが割り当てられ、かつ、演奏パート番号「1」とされたチャンネルをチャンネルテーブルTGTBLを参照して検索し、検索したチャンネル番号をレジスタDCOにセットする。
そして、ステップSC10に進むと、CPU3はレジスタKOF(DCO)に記憶される押鍵フラグを「0」にする。これにより、押鍵された鍵がキーオフ状態に設定され、続く、ステップSC11では、このキーオフ状態に基づきチャンネルDCOへ消音を指示する。消音指示に際しては、当該チャンネルに与えるエンベロープ制御情報EVL(DCO)〜EVP(DCO)も強制的にゼロリセットされる。
【0031】
このように、鍵処理ルーチンでは、押鍵操作された場合には、後述するチャンネル決定処理ルーチンによりトランケートされたチャンネルに対して押鍵された鍵のキーナンバをセットすると共に、演奏パート番号「1」を割り付ける。そして、この演奏パート番号「1」に割り付けられた音色に対応するエンベロープ制御情報EVL(DCO)〜EVP(DCO)を発生し、これらエンベロープ制御情報EVL(DCO)〜EVP(DCO)を発音チャンネル部8に供給して発音指示する。
一方、離鍵操作された時には、離鍵された鍵のキーナンバに対応するチャンネルを検索し、検索したチャンネルへ消音指示すると共に、エンベロープ制御情報EVL(DCO)〜EVP(DCO)をゼロリセットする。なお、この鍵処理ルーチンにおいて、押離鍵操作がなされず、キーオン/キーオフイベントが生成されない場合には、何等処理されることなくこのルーチンを終了する。
【0032】
▲4▼外部入力処理ルーチンの動作
次に、外部入力部7(図1参照)を介して供給される演奏信号に応じて発音/消音制御する外部入力処理ルーチンの動作について図11を参照して説明する。上述した鍵処理ルーチンが完了すると、CPU3はステップSA4(図8参照)に進み、これにより図11に示す鍵処理ルーチンが実行されてステップSD1に処理を進める。
【0033】
(a)ノートオン時の動作
まず、ステップSD1では、外部入力部7(図1参照)を介して、例えば、外部シーケンサあるいは電子楽器からの演奏信号入力の有無を判断する。ここで、演奏信号入力が無い場合には、判断結果が「NO」となり、このルーチンを終了してメイン処理ルーチンへ復帰する。
一方、MIDI入力が有ると、ここでの判断結果が「YES」となり、次のステップSD2に処理を進める。ステップSD2では、入力された演奏信号のステータスバイトSTが「ノートオン」を表わすデータであるか否かを判断する。ここで、「ノートオン」である場合には、このステップSD2の判断結果が「YES」となり、ステップSD3へ処理を進める。
【0034】
ステップSD3では、「ノートオン」に対応するノート番号の楽音を発生すべく、発音チャンネルを決定するチャンネル決定処理ルーチン(後述する)を実行する。そして、このチャンネル決定処理ルーチンに基づき、「ノートオン」すべきチャンネルがトランケートされると、CPU3は次のステップSD4に処理を進める。そして、ステップSD4では、チャンネル決定処理ルーチンの処理によりレジスタDCOにセットされたチャンネル番号に従い、レジスタNOT(DCO)にノート番号をセットする。なお、このノート番号は、例えば、演奏信号が3バイトシリアルデータで形成されている場合、図5に図示するように、第2バイト目のデータに相当する。
【0035】
次いで、ステップSD5に進むと、CPU3は演奏信号のステータスバイトSTから抽出した演奏パート番号を、チャンネルテーブルTGTBLのレジスタCH(DCO)にセットする。続いて、ステップSD6に進むと、押鍵フラグ(ノートオンフラグ)を記憶するレジスタKOF(DCO)に「1」をセットしてノートオン状態にある旨を表わす。そして、ステップSD7に進むと、CPU3はレジスタCH(DCO)にセットされた演奏パート番号にアサインされた音色番号のリリース優先フラグRPFを、前述した音色テーブルTCTBLから読み出し、これをチャンネルテーブルTGTBLのレジスタRPF(DCO)にセットする。
【0036】
次に、ステップSD8に進むと、この演奏パート番号にアサインされた音色番号に対応する各種エンベロープ制御パラメータAT〜RR2を、音色テーブルTCTBLから順次読み出し、これらパラメータAT〜RR2に応じて経時変化するエンベロープ情報EVL(DCO)〜EVP(DCO)を生成してチャンネルテーブルTGTBLに順次書き込む一方、発音チャンネルDCOへ発音指示する。これにより、音源部8では、チャンネルDCOがチャンネルテーブルTGTBLにセットされたエンベロープ情報EVL(DCO)〜EVP(DCO)に従ってノートオンされた楽音を生成する。
【0037】
(b)ノートオフ時の動作
次に、入力された演奏信号が「ノートオフ」であると、上述したステップSD2の判断結果が「NO」となり、ステップSD9に処理を進める。ステップSD9では、演奏入力されたノート番号と演奏パート番号とが割り当てられたチャンネルをチャンネルテーブルTGTBLから検索し、検索したチャンネルの番号をレジスタDCOにセットする。そして、この後、CPU3はステップSD10に処理を進め、レジスタKOF(DCO)の押鍵フラグ(ノートオンフラグ)を「0」にする。これにより、ノートオフ状態に設定され、続く、ステップSD11では、チャンネルDCOへ消音を指示する。消音指示に際しては、当該チャンネルDCOに与えるエンベロープ制御情報EVL(DCO)〜EVP(DCO)も強制的にゼロリセットする。
【0038】
このように、外部入力処理ルーチンでは、演奏入力が「ノートオン」の時、後述するチャンネル決定処理ルーチンによりトランケートされたチャンネルに対してノート番号をセットすると共に、演奏パート番号を割り付ける。そして、この演奏パート番号が割り付けられた音色に対応するエンベロープ制御情報EVL(DCO)〜EVP(DCO)を発生し、これらエンベロープ制御情報EVL(DCO)〜EVP(DCO)に従った楽音発生を発音チャンネル部8に指示する。
一方、演奏入力が「ノートオフ」の時には、ノートオフされたノート番号および演奏パート番号が割り当てられたチャンネルの番号をチャンネルテーブルTGTBLから検索し、検索したチャンネルDCOへ消音指示すると共に、エンベロープ制御情報EVL(DCO)〜EVP(DCO)をゼロリセットするようになっている。
【0039】
▲5▼チャンネル決定処理ルーチンの動作
次に、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音の属性を考慮して発音チャンネルを割り当てるチャンネル決定処理ルーチンの動作について図12〜図14を参照して説明する。
CPU3の処理が鍵処理ルーチンにおけるステップSC2(図10参照)、あるいは外部入力処理ルーチンにおけるステップSD3(図11参照)に進むと、図12に示すチャンネル決定処理ルーチンが実行され、ステップSE1に処理を進める。
【0040】
(a)空きチャンネルサーチ動作
ステップSE1では、ループカウンタ値がセットされるレジスタNUMをゼロクリアし、続く、ステップSE2では、レジスタEVL(NUM)の値が「0」であるか否かを判断する。すなわち、レジスタNUMで指定されるチャンネルが消音状態であるか否かを判断する。ここで、発音中であると、判断結果が「NO」となり、次のステップSE4に進む。ステップSE4では、レジスタNUMの値が「31」以上、つまり、全32チャンネル分をサーチしたか否かを判断する。ここで、全32チャンネル分のサーチがなされていない時には、判断結果が「NO」となり、ステップSE5に進み、レジスタNUMに格納されるチャンネルの番号を1インクリメントして歩進させ、ステップSE2へ処理を戻す。これ以後、CPU3は全チャンネル分のサーチが完了するまで上記ステップSE2〜SE5を繰り返す。
【0041】
こうして空きチャンネルサーチにおいて、消音状態のチャンネルがサーチされると、上記ステップSE2の判断結果が「YES」となり、ステップSE3に進む。ステップSE3に進むと、CPU3は、レジスタNUMで指定される発音チャンネルが空きチャンネルであるとして、この空きチャンネルに発音を割り当てるべく、レジスタNUMに格納されるループカウンタ値をチャンネル番号としてレジスタDCOに書き込む。これにより、レジスタDCOの値に対応するチャンネルが新押鍵(新ノートオン)に対応して割り当てられる。これに対し、全チャンネルが発音中にあり、空きチャンネルが存在しない場合には、上記ステップSE4の判断結果が「YES」となり、ステップSE6へ処理を進める。
【0042】
(b)リリース中のチャンネルサーチ動作
次に、ステップSE6に進むと、レジスタXDCに「−1」をセットする。このレジスタXDCには、リリース中にある最も優先順位の低いチャンネルをサーチした結果が一時記憶されるようになっており、この場合、未サーチ状態を表わすフラグ値「−1」がセットされる。次いで、ステップSE7では、レジスタNUMをゼロクリアし、続く、ステップSE8では、レジスタKOF(NUM)が「0」、すなわち、レジスタNUMで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「NO」となり、ステップSE9に進み、全32チャンネル分のサーチがなされたか否かを判断する。そして、全32チャンネル分のサーチが完了していない時には、ステップSE10に進み、レジスタNUMに格納されるチャンネル番号(ループカウンタ値)を1インクリメントして歩進させ、上記ステップSE8に戻る。
【0043】
そして、いま、例えば、レジスタNUMで指定されるチャンネルがリリース中であったとする。そうすると、上記ステップSE8の判断結果が「YES」となり、ステップSE11に処理を進める。ステップSE11に進むと、CPU3はレジスタXDCの値が「−1」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタXDCにセットされているか否かを判断する。
リリース中のチャンネルをサーチした結果が当該レジスタXDCにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「NO」となり、ステップSE12に進む。ステップSE12では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号が格納されるレジスタNUMの値を、レジスタXDCに書き込む。
【0044】
この後、CPU3は再び上述したステップSE9を介して全32チャンネル分のサーチがなされたか否かを判断し、サーチ完了していない時には、ステップSE10にてレジスタNUMを歩進させて次のサーチに移行する。
そして、次のサーチでリリース中のチャンネルが検出されると、ステップSE8の判断結果が「YES」となり、ステップSE11に進む。この場合、ステップSE11では、レジスタXDCには先にサーチしたリリース中のチャンネルの番号がセットされているから、判断結果は「YES」となり、ステップSE13へ処理を進める。
【0045】
ステップSE13では、レジスタCH(XDC)の値がレジスタCH(NUM)より大であるか否か、すなわち、先にサーチされたリリースチャンネルに割り当てられている演奏パート番号が、現在サーチされたリリースチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
この実施例の場合、演奏パート番号が小さい程、そのチャンネル番号に付与される優先順位が低くなるので、上記ステップSE13の判断は、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より上であるか否か」を判断することに相当する。よって、先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルのそれより上であると、この判断結果が「YES」となり、ステップSE12に進み、先にサーチされたリリースチャンネルより優先順位の低い、現在サーチされたリリースチャンネルのチャンネルの番号をレジスタXDCにセットする。
【0046】
これに対し、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より下となる」場合には、ステップSE13の判断結果は「NO」となり、上述したステップSE9へ処理を進める。
このように、ステップSE6〜SE13では、リリース中のチャンネルを順次サーチし、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位のチャンネルの番号をレジスタXDCに書き込んで更新し、最終的にリリース中の最も優先順位の低いチャンネルがレジスタXDCに格納される。
【0047】
(c)キーオン中のチャンネルサーチ動作
このようにして、リリース中の最も優先順位の低いチャンネルXDCが定まると、CPU3は、図13に示すステップSE14に進む。ステップSE14では、レジスタYDCに「−1」をセットする。レジスタYDCは、キーオン中の最も優先順位の低いチャンネルをサーチした結果が一時記憶されるものであり、この時点では未サーチ状態を表わすフラグ値「−1」がセットされる。次いで、ステップSE15に進むと、チャンネルサーチ開始にあたりレジスタNUMをゼロクリアする。
【0048】
次にステップSE16では、レジスタKOF(NUM)が「1」、すなわち、レジスタNUMで指定されるチャンネルがキーオン(ノートオン)中であるか否かを判断する。ここで、キーオン中でなければ、判断結果が「NO」となり、ステップSE17に進む。ステップSE17では、全32チャンネル分のサーチがなされたか否かを判断する。そして、全32チャンネル分のサーチが完了していない時には、判断結果が「NO」となり、ステップSE18に進み、レジスタNUMを次のチャンネルの番号に歩進させ、上記ステップSE16に戻る。
【0049】
ここで、例えば、レジスタNUMで指定されるチャンネルがキーオン中であったとする。そうすると、上記ステップSE16の判断結果が「YES」となり、ステップSE19に処理を進める。ステップSE19に進むと、CPU3はレジスタYDCの値が「−1」より大であるか否か、すなわち、キーオン中のチャンネルをサーチした結果が当該レジスタYDCにセットされているか否かを判断する。そして、キーオン中のチャンネルを初めてサーチした時には、ここでの判断結果が「NO」となり、ステップSE20に進む。ステップSE20では、キーオン中のチャンネルを初めてサーチした時のチャンネルの番号が格納されるレジスタNUMの値を、レジスタYDCに書き込む。
【0050】
次いで、CPU3は再び上述したステップSE17を介して全32チャンネル分のサーチがなされたか否かを判断し、サーチが完了していない時には、ステップSE18においてレジスタNUMを歩進させる。そして、このレジスタNUMの更新に応じてキーオン中のチャンネルが検出されたとする。そうすると、ステップSE16の判断結果が「YES」となり、ステップSE19に進む。この場合、ステップSE19では、レジスタYDCに先にサーチしたキーオン中のチャンネルの番号がセットされているから、判断結果は「YES」となり、次のステップSE21へ処理を進める。
【0051】
ステップSE21では、レジスタCH(YDC)の値がレジスタCH(NUM)より大であるか否か、すなわち、先にサーチされたチャンネルに割り当てられている演奏パート番号が、現在サーチされたチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
本実施例の場合、前述したように、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップSE21の判断は、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否か」を判断することになる。よって、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「YES」となり、ステップSE20に進み、先にサーチされたチャンネルより優先順位の低い、現在サーチされたチャンネルの番号をレジスタYDCにセットする。
【0052】
これに対し、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より下となる」場合には、ステップSE21の判断結果が「NO」となり、上述したステップSE17へ処理を進める。
このように、ステップSE14〜SE21では、キーオン中のチャンネルを順次サーチし、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位のチャンネルの番号をレジスタYDCに書き込んで更新し、最終的にキーオン中の最も優先順位の低いチャンネルがレジスタYDCに格納される。
【0053】
(c)トランケート処理
次に、上述したリリース中およびキーオン中のチャンネルサーチ結果に基づいてなされるトランケート処理について図14に示すフローチャートを参照して説明する。
〔1〕チャンネルXDC≦チャンネルYDCの場合
この場合、リリース中の最も優先順位の低いチャンネルの番号がレジスタXDCに格納され、キーオン中の最も優先順位の低いチャンネルの番号がレジスタYDCに格納されるから、図14に示すステップSE22およびステップSE23の判断結果は「YES」となり、ステップSE24に処理を進める。
【0054】
そして、ステップSE24では、レジスタCH(XDC)の値がレジスタCH(YDC)の値以下であるか、つまり、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断する。この例の場合、リリース中のチャンネルにアサインされている演奏パートの方がキーオン中のチャンネルのものより低いので、判断結果は「YES」となり、ステップSE25に進み、レジスタXDCに格納されるチャンネルの番号をレジスタDCOに格納する。これにより、キーオン(ノートオン)中にあるチャンネルYDC側の発音が継続され、割当順位1位のチャンネルXDCがトランケートされる。
【0055】
〔2〕チャンネルXDC≧チャンネルYDCであって、チャンネルXDCのリリース優先フラグRPFが「0(OFF)」の場合
この場合も、リリース中の最も優先順位の低いチャンネルの番号がレジスタXDCに格納され、キーオン中の最も優先順位の低いチャンネルの番号がレジスタYDCに格納されるから、図14に示すステップSE22およびステップSE23の両判断結果は共に「YES」となり、ステップSE24に処理を進める。そして、ステップSE24では、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断するが、この例の場合、リリース中のチャンネル(XDC)にアサインされている演奏パートの方がキーオン中のチャンネル(YDC)のものより高いので、判断結果は「NO」となり、ステップSE26に処理を進める。
【0056】
次いで、ステップSE26に進むと、CPU3はレジスタRPF(XDC)の値が「1」、つまり、リリース中のチャンネルXDCに割り付けられたリリース優先フラグRPFが「1」であるか否かを判断する。この場合、リリース優先フラグRPFは「0(OFF)」であるから、判断結果は「NO」となり、ステップSE25へ処理を進め、レジスタXDCに格納されるチャンネルの番号をレジスタDCOに格納する。
これにより、キーオン(ノートオン)中にあるチャンネルYDC側の優先順位が低くとも、リリース優先フラグRPFが「0」となる通常のリリース制御を行っているチャンネルXDCがトランケートされる。
【0057】
〔3〕チャンネルXDC≧チャンネルYDCであって、チャンネルXDCのリリース優先フラグRPFが「1(ON)」の場合
この場合、リリース優先フラグRPFは「1(ON)」であるから、上述したステップSE26の判断結果が「YES」となり、ステップSE27へ処理を進め、レジスタYDCに格納されるチャンネルの番号をレジスタDCOに格納する。これにより、リリース優先フラグRPFが「1」となる特徴的なエンベロープ制御を行っているチャンネルXDCが発音を継続し、キーオン(ノートオン)中のチャンネルYDC側がトランケートされる。
【0058】
〔4〕その他の場合
なお、前述したリリース中およびキーオン中のチャンネルサーチ動作によって、リリース中にあるチャンネルがサーチされなかった場合、すなわち、全てチャンネルがキーオン(ノートオン)中である時には、上述したステップSE22の判断結果が「NO」となり、ステップSE27に進み、キーオン(あるいはノートオン)中のチャンネルの内で最も優先順位の低いチャンネルYDCを一意的にトランケートする。
これに対し、全てチャンネルがリリース中である時には、上述したステップSE23の判断結果が「NO」となり、ステップSE25に進み、リリース中のチャンネルの内で最も優先順位の低いチャンネルXDCを一意的にトランケートすることになる。
【0059】
このように、第1実施例では、各チャンネルに割り付けられた音色毎の演奏パート優先順位と、特徴的なエンベロープ制御を識別するリリース優先フラグRPFとを勘案した割当順位に従ってトランケートするので、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮したチャンネル(発音)割り当てが可能となっている。
【0060】
B.第2実施例
次に、本発明の第2実施例について説明する。この第2実施例の構成は、上記第1実施例と同一の構成であるから、その説明を省略する。上述した第1実施例においては、全てのチャンネルが発音中に、新たなキーオン(あるいは入力信号に対応したノートオン)があると、リリース中のチャンネルの内の最も優先順位の低いチャンネルXDCとキーオン(ノートオン)中のチャンネルの内の最も優先順位の低いチャンネルYDCとをサーチし、これらチャンネルXDC,YDC間の優先順位や前述したリリース優先フラグRPFを勘案して両者の割当順位を比較し、より低い割当順位のチャンネルを新たなキーオン(ノートオン)に割り当てるトランケート処理を実現している。
【0061】
ところで、このような第1実施例のトランケート処理においては、リリース優先フラグRPFが「1(ON)」にセットされるチャンネル、すなわち、図6(イ)に図示するような2段リリース過程を有する特徴的なエンベロープ制御を行うチャンネルを優先的に発音継続させるようにしている。しかしながら、リリース優先フラグRPFが「1(ON)」にセットされるチャンネルにおいて、エンベロープ波形レベルがゼロレベルまで減衰し切っている状態では、発音を継続させる意味合いが薄く、かえって、発音継続させることで、例えば、他の演奏上必要な音色の楽音がトランケートされてしまう等の弊害が生じる虞も有り得る。
そこで、第2実施例では、このような弊害を回避すべく、リリース優先フラグRPFが「1(ON)」にセットされるチャンネルXDCであっても、そのエンベロープレベルが単純に減衰するだけの状態に達している場合には、このチャンネルXDCをトランケートするようにしている。以下、図15を参照して動作説明する。
【0062】
図15は、第2実施例によるトランケート処理を説明するためのフローチャートである。この図に示すフローチャートが図14に示す第1実施例と異なる点は、ステップSE26の次に、レジスタEVP(XDC)に格納される値が「0」であるか否かを判断するステップSF1を設けたことにある。すなわち、このステップSF1では、リリース優先フラグRPFが「1(ON)」にセットされたチャンネルXDCのエンベロープ目標値が「0」であるか否かを判断するものであり、以下、このステップSF1が追加された第2実施例によるトランケート処理について詳述する。
【0063】
前述した第1実施例と同様に、リリース中およびキーオン中のチャンネルをサーチした結果が得られると、CPU3は図15に示すトランケート処理を実行し、ステップSE22に進む。ここで、リリース中にあるチャンネルがサーチされなかった場合、すなわち、全てチャンネルがキーオン(ノートオン)中である時には、判断結果が「NO」となり、ステップSE27に進み、キーオン(あるいはノートオン)中のチャンネルの内で最も優先順位の低いチャンネルYDCを一意的にトランケートする。
一方、そうでない場合には、ステップSE23に進み、キーオン(ノートオン)中にあるチャンネルがサーチされているか否かを判断し、ここで、全てチャンネルがリリース中である時には、判断結果が「NO」となり、ステップSE25に進み、リリース中のチャンネルの内で最も優先順位の低いチャンネルXDCを一意的にトランケートする。
【0064】
そして、リリース中およびキーオン中のチャンネルがサーチされている時には、上記ステップSE22,23の判断結果が「YES」となり、ステップSE24に進む。ステップSE24では、レジスタCH(XDC)の値がレジスタCH(YDC)の値以下であるか、つまり、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断する。ここで、チャンネルXDC≦チャンネルYDCの場合、すなわち、リリース中のチャンネルにアサインされている演奏パートの方がキーオン中のチャンネルのものより低い時には、この判断結果が「YES」となり、ステップSE25に進み、キーオン(ノートオン)中にあるチャンネルYDC側の発音が継続され、割当順位1位のチャンネルXDCがトランケートされる。
【0065】
これに対し、チャンネルXDC≧チャンネルYDCの場合には、ステップSE24の判断結果が「NO」となり、ステップSE26に進む。ステップSE26に進むと、CPU3は、レジスタRPF(XDC)の値が「1」、つまり、リリース中のチャンネルXDCに割り付けられたリリース優先フラグRPFが「1」であるか否かを判断する。ここで、リリース優先フラグRPFが「0(OFF)」であると、判断結果は「NO」となり、ステップSE25へ処理を進め、チャンネルXDC側がトランケートされる。この結果、チャンネルYDC側の優先順位が低くとも、チャンネルXDC側がリリース優先フラグRPFを「0」とした通常のリリース制御を行っているから、キーオン(ノートオン)中の発音を継続させるようにしている。
【0066】
一方、リリース優先フラグRPFが「1(ON)」とされている場合には、上記ステップSE26の判断結果が「YES」となり、ステップSF1へ処理を進める。ステップSF1に進むと、CPU3はレジスタEVP(XDC)に格納される現在のエンベロープ目標値が「0」であるか否かを判断する。なお、ここで言うレジスタEVP(XDC)とは、前述したチャンネルテーブルTGTBL(図4参照)にセットされる値である。
【0067】
そして、チャンネルXDCが特徴的なエンベロープ制御を行っている最中であると、現在のエンベロープ目標値が「0」にならないので、ここでの判断結果が「NO」となり、ステップSE27へ処理を進め、レジスタYDCに格納されるチャンネルの番号をレジスタDCOに格納する。これにより、リリース優先フラグRPFが「1」となる特徴的なエンベロープ制御を行っているチャンネルXDCの発音が継続され、キーオン(ノートオン)中のチャンネルYDC側がトランケートされる。
【0068】
これに対し、リリース優先フラグRPFが「1(ON)」とされているリリース波形が単純に減衰するだけの状態に達している時には、レジスタEVP(XDC)に格納される現在のエンベロープ目標値が「0」となり、上記ステップSF1の判断結果が「YES」となり、ステップSE25に進み、チャンネルXDCをトランケートする。これにより、リリース優先フラグRPFを「1(ON)」としたチャンネルXDCであっても、そのエンベロープレベルがゼロレベルに収束しかかった時には、発音が継続されずにトランケートされ、キーオン(ノートオン)中のチャンネルYDC側の発音が優先される。こうすることによって、演奏効果上に必要な音色の楽音をトランケートするといった虞を回避することが可能になる。
【0069】
C.変形例
次に、上述した第2実施例に対応する変形例について説明する。この変形例では、図16に図示するように、音色テーブルTCTBLにおいて2つのリリース優先フラグRPF1,RPF2を備える点に特徴がある。
第2実施例にあっては、リリース優先フラグRPFが「1(ON)」とされているチャンネルであっても、そのチャンネルが制御するリリース領域が単純に減衰するだけの時には、トランケートするようになっており、変形例ではこうしたチャンネル割当をより簡便に行うべく音色テーブルTCTBLに2つのリリース優先フラグRPF1,RPF2を設けている。
【0070】
すなわち、図6(イ)に図示するような2段階のリリース過程を持つ特徴的なエンベロープ波形を制御する場合において、リリース優先フラグRPF1を「1(ON)」、リリース優先フラグRPF2を「0(OFF)」と設定しておけば、リリース1領域でのチャンネル割当順位が低く、かつ、リリース2領域でのチャンネル割当順位が高くなるため、上述した第2実施例と同様に、リリース領域1の発音が優先され、リリース2領域で通常のエンベロープ制御態様と同様にトランケートすることが可能なる。
なお、演奏上、特定の音色が割り付けられたチャンネルのリリース波形を意図的に発音優先させたい場合などでは、このリリース優先フラグRPF1,RPF2の両者を「1(ON)」としておけば、リリース領域1、2が共に発音優先され、所望の演奏効果を得ることも可能になる。
【0071】
D.第3実施例
次に、本発明による第3実施例について図17〜図21を参照して説明する。なお、第3実施例の構成は、前述した第1実施例と同一であるので、その説明については省略する。
この第3実施例では、図17に示す割当順位から解るように、リリース中のチャンネルの内、リリース優先フラグRPFが「0(OFF)」となっているチャンネルが割当順位1位でトランケートされ、次いで、リリース優先フラグRPFが「1(ON)」なるチャンネル、キーオン(ノートオン)中のチャンネルの順でトランケートされる。なお、リリース優先フラグRPFが「0(OFF)」とされているチャンネルが複数存在する時には、その中で最も演奏パート優先順位の低いパートが割り当てられるチャンネルをトランケートするようにしている。
【0072】
第3実施例が前述した第1実施例と異なる点は、チャンネル決定時の処理にあり、それ以外の動作は共通するので、以下、図18〜図21を参照して第3実施例によるチャンネル決定処理ルーチンの動作について説明する。
第1実施例と同様に、CPU3の処理が鍵処理ルーチンにおけるステップSC2(図10参照)、あるいは外部入力処理ルーチンにおけるステップSD3(図11参照)に進むと、図18に示すチャンネル決定処理ルーチンが実行され、ステップSG1に処理を進める。
【0073】
(a)空きチャンネルサーチ動作
まず、ステップSG1では、レジスタDCOに「−1」をセットする。このレジスタDCOには、トランケートされるチャンネルの番号が一時記憶されるが、ここでは、トランケートすべきチャンネルが未決定である旨を表わすフラグ値「−1」をセットする。次いで、ステップSG2に進むと、CPU3は、ループカウント値がセットされるレジスタNUMをゼロクリアし、続く、ステップSG3では、レジスタEVL(NUM)の値が「0」であるか否かを判断する。すなわち、レジスタNUMの値に対応するチャンネルが消音状態であるか否かを判断する。
【0074】
ここで、レジスタNUMで指定されるチャンネルが消音状態にあれば、判断結果が「YES」となり、ステップSG4に進む。ステップSG4では、レジスタNUMで指定されるチャンネルが空きチャンネルであるとして、この空きチャンネルに発音を割り当てるべく、レジスタNUMの値をレジスタDCOに書き込む。これにより、レジスタDCOに格納されるチャンネルの番号のチャンネルが新押鍵(新ノートオン)に割り当てられる。
【0075】
一方、レジスタNUMに対応するチャンネルが発音中にある場合には、上記ステップSG3の判断結果が「NO」となり、次のステップSG5に進む。ステップSG5では、レジスタNUMの値が「31」以上、つまり、全32チャンネル分をサーチしたか否かを判断する。ここで、全32チャンネル分のサーチがなされていない時には、判断結果が「NO」となり、ステップSG6に進み、レジスタNUMに格納されるチャンネルの番号を1インクリメントして歩進させ、上述したステップSG3へ処理を戻す。これ以後、CPU3は全チャンネル分のサーチが完了するまで上記ステップSG3〜SG6を繰り返す。
そして、いま、例えば、全32チャンネル分のサーチがなされ、この結果、空きチャンネルが存在しなかったとする。そうすると、上記ステップSG5の判断結果が「YES」となり、図19に示すステップSG7へ処理を進める。
【0076】
(b)リリース中、かつ、リリース優先フラグRPFが「0(OFF)」のチャンネルサーチ動作
次に、ステップSG7に進むと、レジスタNUMをゼロクリアし、次のステップSG8に処理を進める。ステップSG8に進むと、CPU3はレジスタKOF(NUM)が「0」、すなわち、レジスタNUMで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「NO」となり、ステップSG9に進み、全32チャンネル分のサーチがなされたか否かを判断する。そして、全32チャンネル分のサーチが完了していない時には、判断結果が「NO」となり、ステップSG10に処理を進め、レジスタNUMに格納されるループカウンタ値(チャンネル番号)を更新して上記ステップSG8に処理を戻す。
【0077】
ここで、例えば、レジスタNUMの値で指定されるチャンネルがリリース中であると、上記ステップSG8の判断結果が「YES」となり、ステップSG11に処理を進める。ステップSG11に進むと、CPU3はレジスタRPF(NUM)の値が「0」、すなわち、リリース中のチャンネルに付与されるリリース優先フラグRPFが「0(OFF)」されているか否かを判断する。ここで、対応するチャンネルのリリース優先フラグRPFが「1(ON)」である時には、判断結果が「NO」となり、上述したステップSG9,SG10を介してチャンネル番号を更新し、再度ステップSG8に処理を戻す。
【0078】
一方、リリース優先フラグRPFが「0(OFF)」である時には、上記ステップSG11の判断結果が「YES」となり、次のステップSG12に処理を進める。ステップSG12では、レジスタDCOにセットされる値が「−1」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタDCOにセットされているか否かを判断する。
そして、リリース中のチャンネルをサーチした結果が当該レジスタDCOにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「NO」となり、ステップSG13に進む。ステップSG13では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号、すなわち現レジスタNUMの値をレジスタDCOに書き込む。
【0079】
こうして、一旦リリース中のチャンネルがサーチされると、CPU3は再び上述したステップSG9を介して全32チャンネル分のサーチがなされたか否かを判断し、サーチ完了していない時には、ステップSG10にてレジスタNUMを更新して次のサーチに移行する。
そして、例えば、次のサーチでリリース中、かつ、リリース優先フラグRPFが「0」のチャンネルを検出したとする。そうすると、上述したステップSG8、SG11における各判断結果が「YES」となり、ステップSG12に進む。この場合、ステップSG12では、レジスタDCOには先にサーチしたリリース中、かつ、リリース優先フラグRPF「0」となるチャンネルの番号(以下、これをリリースチャンネルと称す)がセットされているから、判断結果は「YES」となり、ステップSG14へ処理を進める。
【0080】
ステップSG14では、レジスタCH(DCO)の値がレジスタCH(NUM)より大であるか否か、すなわち、先にサーチされたリリースチャンネルに割り当てられている演奏パート番号が、現在サーチされたリリースチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
この実施例の場合、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップSG14の判断は、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より上であるか否か」を判断することに相当する。よって、先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルのそれより上であると、この判断結果が「YES」となり、ステップSG13に進み、先にサーチされたリリースチャンネルより優先順位の低い、現在サーチされたリリースチャンネルのチャンネルの番号をレジスタDCOにセットする。
【0081】
これに対し、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より下となる」場合には、ステップSG14の判断結果が「NO」となり、上述したステップSG9へ処理を進める。
そして、この後、全チャンネル分のサーチが完了すると、このステップSG9の判断結果が「YES」となり、ステップSG15へ進む。ステップSG15に進むと、CPU3はレジスタDCOの値が「−1」であるか否か、すなわち、リリース中であって、リリース優先フラグRPFが「0(OFF)」、かつ、最も優先順位の低いリリースチャンネルをサーチしたか否かを判断し、サーチした場合には判断結果が「NO」となり、本ルーチンを終了する。一方、そうでない場合には後述するステップSG16へ処理を進める。
以上のように、ステップSG7〜SG14では、リリース中であって、リリース優先フラグRPFが「0(OFF)」とされたチャンネルの内、最も優先順位の低いチャンネルの番号、つまり、チャンネル割当順位1位となるチャンネルの番号をレジスタDCOに格納する。これにより、チャンネル割当順位1位とされたチャンネルがトランケートされることになる。
【0082】
(c)リリース中、かつ、リリース優先フラグRPFが「1(ON)」のチャンネルサーチ動作
リリース中、かつ、リリース優先フラグRPFが「0(OFF)」のチャンネルが存在しない場合、すなわち、上記ステップSG15の判断結果が「YES」となると、CPU3は図20に示すステップSG16へ処理を進める。ステップSG16では、チャンネルサーチ開始にあたりレジスタNUMをゼロクリアする。次いで、ステップSG17では、レジスタKOF(NUM)が「0」、すなわち、レジスタNUMで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「NO」となり、ステップSG18に進む。ステップSG18では、全32チャンネル分のサーチがなされたか否かを判断する。そして、全32チャンネル分のサーチが完了していない時には、判断結果が「NO」となり、ステップSG19に進み、レジスタNUMを次のチャンネルの番号に歩進させ、上記ステップSG17に戻る。
【0083】
ここで、例えば、レジスタNUMで指定されるチャンネルがリリース中であったとする。そうすると、上記ステップSG17の判断結果が「YES」となり、ステップSG20に処理を進める。ステップSG20に進むと、CPU3はレジスタDCOの値が「−1」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタDCOにセットされているか否かを判断する。
そして、リリース中のチャンネルをサーチした結果が当該レジスタDCOにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「NO」となり、ステップSG21に進む。ステップSG21では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号、つまり、現レジスタNUMの値をレジスタDCOにセットする。
【0084】
次いで、CPU3は再び上述したステップSG18を介して全32チャンネル分のサーチがなされたか否かを判断し、サーチが完了していない時には、ステップSG19においてレジスタNUMを歩進させる。そして、このレジスタNUMの更新に応じてリリース中のチャンネルが検出されたとする。そうすると、ステップSG17の判断結果が「YES」となり、ステップSG20に進む。この場合、ステップSG20では、レジスタDCOに先にサーチしたリリース中のチャンネルの番号がセットされているから、判断結果は「YES」となり、ステップSG22へ処理を進める。
【0085】
ステップSG22では、レジスタCH(DCO)の値がレジスタCH(NUM)より大であるか否か、すなわち、先にサーチされたチャンネルに割り当てられている演奏パート番号が、現在サーチされたチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
本実施例の場合、前述した第1実施例と同様に、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップSG22では、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否か」を判断することになる。よって、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「YES」となり、ステップSG21に進み、先にサーチされたチャンネルより優先順位の低い、現在サーチされたチャンネルのチャンネルの番号をレジスタDCOにセットする。
【0086】
これに対し、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より下となる」場合には、ステップSG22の判断結果が「NO」となり、上述したステップSG18へ処理を進める。
そして、全チャンネル分のサーチが完了すると、このステップSG18の判断結果が「YES」となり、ステップSG23へ進み、レジスタDCOの値が「−1」であるか否かを判断する。ここで、リリース中のチャンネルをサーチした場合には判断結果が「NO」となり、本ルーチンを終了するが、そうでない場合には後述するステップSG24へ処理を進める。
【0087】
このように、上記ステップSG16〜SG23においては、前述した(b)項の動作に続いてリリース中のチャンネルを順次サーチするので、結果的に、リリース中、かつ、リリース優先フラグRPFが「1(ON)」のチャンネルサーチがなされる。このチャンネルサーチでは、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位にあるチャンネルの番号をレジスタDCOに書き込んで更新するから、最終的に、リリース中であって、リリース優先フラグRPFが「1(ON)」のチャンネルの内の最も優先順位の低いチャンネル、つまり、チャンネル割当順位2位のチャンネル(図17参照)の番号がレジスタDCOに格納される。これにより、チャンネル割当順位2位とされたチャンネルがトランケートされることになる。
【0088】
(c)キーオン(ノートオン)中のチャンネルサーチ処理
リリース中のチャンネルが存在しない時には、上記ステップSG23の判断結果が「YES」となり、図21に示すステップSG24へ処理を進め、これ以後、キーオン(ノートオン)中のチャンネルをサーチする。
まず、ステップSG24では、レジスタNUMをゼロクリアし、続く、ステップSG25では、レジスタNUMの値をレジスタDCOにセットする。次いで、ステップSG26では、全32チャンネル分のサーチがなされたか否かを判断する。そして、全32チャンネル分のサーチが完了していない時には、判断結果が「YES」となり、ステップSG27に進み、レジスタNUMの値を歩進させ、次のステップSG28に進む。
【0089】
ステップSG28に進むと、CPU3は、レジスタCH(DCO)の値がレジスタCH(NUM)より大であるか否か、すなわち、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否かを判断する。ここで、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「YES」となり、ステップSG25に進み、現サーチ時点で最も優先順位の低いチャンネルの番号をレジスタDCOにセットする。
一方、上記ステップSG28の判断結果が「NO」の場合には、再びステップSG26に戻り、以後、全チャンネルのサーチが完了するまでの間、ステップSG26〜SG28を繰り返し、全チャンネルのサーチが完了した時にステップSG26の判断結果が「NO」となり、このルーチンを終了する。
【0090】
このように、上記ステップSG24〜SG28では、前述した(c)項の動作に続いて最も優先順位の低いチャンネルを順次サーチするので、結果的に、キーオン(ノートオン)中の最も優先順位の低いチャンネルサーチがなされることになり、こうしたサーチによって得られたチャンネルがチャンネル割当順位3位のチャンネル(図17参照)としてレジスタDCOにセットされる。これにより、チャンネル割当順位3位とされたチャンネルがトランケートされることになる。
【0091】
以上説明したように、第3実施例では、全発音チャンネルが発音割当されている時に新たなキーオン(ノートオン)が発生すると、最初に、リリース中、かつ、リリース優先フラグRPFが「0(OFF)」とされたチャンネルの内の最も優先順位の低いチャンネルをサーチし、これに該当するチャンネルがあった時には、当該チャンネルを割当順位1位としてトランケートする。次いで、この割当順位1位に該当するチャンネルがサーチし得ない時には、リリース中、かつ、リリース優先フラグRPFが「1(ON)」とされたチャンネルの内の最も優先順位の低いチャンネルをサーチし、これに該当するチャンネルがあった時には、当該チャンネルを割当順位2位としてトランケートする。そして、割当順位1位、2位のチャンネルが存在しない場合には、キーオン(ノートオン)中のチャンネルの内の最も優先順位の低いチャンネルをトランケートするようにしており、このようにすることで、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮した発音割り当てが可能になる訳である。
【0092】
なお、上述した各実施例では、リリース波形の発音継続を優先させるべくリリース優先フラグRPFを設けるようにしたが、これはリリース波形に限定されず、例えば、サステイン領域の発音継続を優先させるフラグを設け、このフラグに応じて上述した各実施例と同様なトランケート処理を行うようにしても良い。
また、例えば、所定音高以上の楽音に対して発音を優先的に継続させるフラグを設けてトランケートする態様として新たな演奏効果を得ることも可能である。
【0093】
【発明の効果】
本発明によれば、発音チャンネル情報記憶手段が各発音チャンネル毎にアサインされる音色に対応した楽音パラメータを記憶しておき、各発音チャンネルの全てが前記アサインされた音色の楽音を発生している最中に新たな押鍵が発生した場合、発音チャンネル検出手段が発音チャンネル情報記憶手段から各発音チャンネル毎にアサインされる音色の楽音パラメータに基づいて最も消音に適した楽音を発生している発音チャンネルを検出し、楽音発生指示手段がこの発音チャンネル検出手段によって検出された発音チャンネルへ新たな押鍵に対応した楽音の発生を指示するので、リリースエンベロープに特徴を有する等の、後に特徴を有する音色の楽音を消音してしまうことがなく、楽音の音色の特徴を考慮した発音割り当てを行うことができる。
【図面の簡単な説明】
【図1】本発明による第1実施例の構成を示すブロック図である。
【図2】第1実施例における音色テーブルTCTBLの構成を示す図である。
【図3】第1実施例におけるパートテーブルCHTBLの構成を示す図である。
【図4】第1実施例におけるチャンネルテーブルTGTBLの構成を示す図である。
【図5】第1実施例における演奏信号形式の一例を説明するための図である。
【図6】エンベロープ波形形状を説明するための図である。
【図7】第1実施例による発音チャンネル割当順位を説明するための図である。
【図8】第1実施例におけるメイン処理ルーチンの動作を示すフローチャートである。
【図9】第1実施例におけるイニシャル処理ルーチンの動作を示すフローチャートである。
【図10】第1実施例における鍵処理ルーチンの動作を示すフローチャートである。
【図11】第1実施例における外部入力処理ルーチンの動作を示すフローチャートである。
【図12】第1実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図13】第1実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図14】第1実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図15】第2実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図16】変形例を説明するための図である。
【図17】第3実施例によるチャンネル割当順位を説明するための図である。
【図18】第3実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図19】第3実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図20】第3実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図21】第1実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【符号の説明】
1 鍵盤部
2 操作部
3 CPU(発音チャンネル検出手段、楽音発生指示手段)
4 プログラムROM
5 データROM
6 ワークRAM(発音チャンネル情報記憶手段)
7 外部入力部
8 音源部
9 D/A変換部
10 サウンドシステム
Claims (3)
- それぞれ毎に優先順位とリリース中の発音を優先させるか否かを表す優先フラグとが設定されている複数の音色の内の何れかに応じた楽音の発生処理を、キーオンの指示に応答して複数の発音チャンネルの内の何れかに割り当てる発音チャンネル割当装置であって、
新たなキーオンが指示されたときに空いている発音チャンネルが無い場合、リリース中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第1の発音チャンネルと、キーオン指示中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第2の発音チャンネルとをそれぞれ検出し、第1の発音チャンネルが発生している楽音の音色の優先順位が第2の発音チャンネルのそれより低い場合には、第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当て、その逆の場合には、第1の発音チャンネルが発生している楽音の音色の優先フラグが肯定であれば第2の発音チャンネルに、否定であれば第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする発音チャンネル割当装置。 - 第1の発音チャンネルが発生している楽音の音色の優先順位が第2の発音チャンネルのそれより高く、かつ、優先フラグが肯定であっても、第1の発音チャンネルが発音終了を表す所定値を目標値としてエンベロープを生成している場合には、第1の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする請求項1記載の発音チャンネル割当装置。
- 楽音のリリースはそれぞれが異なる傾きを有する複数の区間から構成され、優先フラグは各区間毎に設定されていることを特徴とする請求項1記載の発音チャンネル割当装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33620294A JP3567293B2 (ja) | 1994-12-24 | 1994-12-24 | 発音チャンネル割当装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33620294A JP3567293B2 (ja) | 1994-12-24 | 1994-12-24 | 発音チャンネル割当装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08179768A JPH08179768A (ja) | 1996-07-12 |
JP3567293B2 true JP3567293B2 (ja) | 2004-09-22 |
Family
ID=18296697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33620294A Expired - Fee Related JP3567293B2 (ja) | 1994-12-24 | 1994-12-24 | 発音チャンネル割当装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3567293B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003108135A (ja) * | 2001-09-28 | 2003-04-11 | Roland Corp | 自動演奏装置 |
WO2006043790A1 (en) * | 2004-10-22 | 2006-04-27 | Lg Electronics, Inc. | Apparatus and method for reproducing midi file |
JP4614131B2 (ja) * | 2005-09-14 | 2011-01-19 | カシオ計算機株式会社 | 波形発生装置および波形発生プログラム |
US7807915B2 (en) * | 2007-03-22 | 2010-10-05 | Qualcomm Incorporated | Bandwidth control for retrieval of reference waveforms in an audio device |
-
1994
- 1994-12-24 JP JP33620294A patent/JP3567293B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08179768A (ja) | 1996-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3671545B2 (ja) | 電子楽器 | |
US6066795A (en) | Techniques of using computer keyboard as musical instrument keyboard | |
JP2664098B2 (ja) | 電子楽器のペダル装置 | |
JP2500489B2 (ja) | 電子楽器 | |
JP3567293B2 (ja) | 発音チャンネル割当装置 | |
US5420374A (en) | Electronic musical instrument having data compatibility among different-class models | |
JP2541063B2 (ja) | 電子楽器 | |
JP2583809B2 (ja) | 電子楽器 | |
JPH10301567A (ja) | 電子楽器の音声制御装置 | |
JP2687810B2 (ja) | 電子楽器 | |
JPH0638192B2 (ja) | 楽音発生装置 | |
JP3285984B2 (ja) | マイナス・ワン演奏装置 | |
JP2538087B2 (ja) | 電子楽器 | |
JP3554770B2 (ja) | 楽音発生装置 | |
JP2943492B2 (ja) | 電子楽器 | |
JP3399068B2 (ja) | 電子楽器 | |
JP4441928B2 (ja) | 音量制御装置および音量制御処理プログラム | |
JP3285986B2 (ja) | 電子楽器のアサイン装置 | |
JP3139494B2 (ja) | 音色データ変換方法 | |
JP3282254B2 (ja) | 楽音発生装置 | |
JP3476863B2 (ja) | 電子楽器の自動伴奏装置 | |
JP3139492B2 (ja) | 音色データ変換方法 | |
JPH05108068A (ja) | フレーズ情報入出力装置 | |
JP3386826B2 (ja) | 電子楽器 | |
JPH07121162A (ja) | 電子楽器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040330 |
|
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: 20040518 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040531 |
|
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: 20080625 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090625 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090625 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100625 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110625 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110625 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120625 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |