(57)【特許請求の範囲】
【請求項１】
それぞれ毎に優先順位とリリース中の発音を優先させるか否かを表す優先フラグとが設定されている複数の音色の内の何れかに応じた楽音の発生処理を、キーオンの指示に応答して複数の発音チャンネルの内の何れかに割り当てる発音チャンネル割当装置であって、
新たなキーオンが指示されたときに空いている発音チャンネルが無い場合、リリース中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第１の発音チャンネルと、キーオン指示中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第２の発音チャンネルとをそれぞれ検出し、第１の発音チャンネルが発生している楽音の音色の優先順位が第２の発音チャンネルのそれより低い場合には、第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当て、その逆の場合には、第１の発音チャンネルが発生している楽音の音色の優先フラグが肯定であれば第２の発音チャンネルに、否定であれば第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする発音チャンネル割当装置。
【請求項２】
第１の発音チャンネルが発生している楽音の音色の優先順位が第２の発音チャンネルのそれより高く、かつ、優先フラグが肯定であっても、第１の発音チャンネルが発音終了を表す所定値を目標値としてエンベロープを生成している場合には、第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする請求項１記載の発音チャンネル割当装置。
【請求項３】
楽音のリリースはそれぞれが異なる傾きを有する複数の区間から構成され、優先フラグは各区間毎に設定されていることを特徴とする請求項１記載の発音チャンネル割当装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、互いに異なる音色の楽音を複数同時発音する電子楽器に用いて好適な発音チャンネル割当装置に関する。
【０００２】
【従来の技術】
従来より、同時発音チャンネルの数が鍵の数より少ない電子楽器においては、全ての発音チャンネルが楽音を発生している最中に新たな押鍵がなされた場合、この新たな押鍵に対応して発音すべき発音チャンネルを割り当てる発音チャンネル割当装置を備えている。
このような割り当てはトランケート処理と呼ばれ、従来、この種の装置によるトランケート処理では、全ての発音チャンネルの内、最も減衰の進んだエンベロープレベルの楽音を発生している発音チャンネルへ新たに押鍵された鍵の楽音発生をアサインしたり、最も古く離鍵された発音チャンネルへ新たに押鍵された鍵の楽音発生をアサインする方式などが知られている。
【０００３】
【発明が解決しようとする課題】
ところで、上述した従来の発音チャンネル割当装置にあっては、全ての発音チャンネルが発音状態の時に新たな押鍵があると、一意的にエンベロープレベルが最も低い楽音、あるいは最古離鍵された鍵の楽音を発音している発音チャンネルへ新押鍵に対応する楽音の発生を割り当てている。また、近年では、音色割り当てされた発音チャンネル（以下、これを音色チャンネルと称す）毎に付与された優先順位に従って楽音を発生する、所謂、マルチティンバー発音チャンネルが多用されてきており、こうした発音チャンネルにあっては、例えば、通常の減衰波形とは異なり、リリース波形が比較的長い場合や、リリース領域で２段減衰する等の特徴的なエンベロープ形状の楽音を、トランケートさせず優先的に発音継続させることができないという弊害がある。
【０００４】
結局、従来の発音チャンネル割当装置では、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てすることができないという問題がある。
そこで本発明は、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てを行うことができる発音チャンネル割当装置を提供することを目的としている。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、それぞれ毎に優先順位とリリース中の発音を優先させるか否かを表す優先フラグとが設定されている複数の音色の内の何れかに応じた楽音の発生処理を、キーオンの指示に応答して複数の発音チャンネルの内の何れかに割り当てる発音チャンネル割当装置であって、新たなキーオンが指示されたときに空いている発音チャンネルが無い場合、リリース中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第１の発音チャンネルと、キーオン指示中の楽音を発生している発音チャンネルの中で最も優先順位の低い音色の楽音を発生している第２の発音チャンネルとをそれぞれ検出し、第１の発音チャンネルが発生している楽音の音色の優先順位が第２の発音チャンネルのそれより低い場合には、第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当て、その逆の場合には、第１の発音チャンネルが発生している楽音の音色の優先フラグが肯定であれば第２の発音チャンネルに、否定であれば第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする。
【０００６】
請求項２に記載の発明によれば、第１の発音チャンネルが発生している楽音の音色の優先順位が第２の発音チャンネルのそれより高く、かつ、優先フラグが肯定であっても、第１の発音チャンネルが発音終了を表す所定値を目標値としてエンベロープを生成している場合には、第１の発音チャンネルに新たなキーオンの指示に応じた楽音の発生処理を割り当てることを特徴とする。
また、請求項３に記載の発明によれば、楽音のリリースはそれぞれが異なる傾きを有する複数の区間から構成され、優先フラグは各区間毎に設定されていることを特徴とする。
【０００７】
【作用】
本発明では、発音チャンネル情報記憶手段が各発音チャンネル毎にアサインされる音色に対応した楽音パラメータを記憶しておき、各発音チャンネルの全てが前記アサインされた音色の楽音を発生している最中に新たな押鍵が発生した場合、発音チャンネル検出手段が発音チャンネル情報記憶手段から各発音チャンネル毎にアサインされる音色の楽音パラメータに基づいて最も消音に適した楽音を発生している発音チャンネルを検出し、楽音発生指示手段がこの発音チャンネル検出手段によって検出された発音チャンネルへ新たな押鍵に対応した楽音の発生を指示する。
これにより、特徴的なエンベロープ形状等の、その楽音の音色の特徴を考慮した発音チャンネル割り当てを行うことが可能になる。
【０００８】
【実施例】
以下、図面を参照して本発明の実施例について説明する。
Ａ．第１実施例
（１）実施例の構成
図１は、本発明の第１実施例を適用した電子楽器の構成を示すブロック図である。この図において、１は鍵盤部であり、各鍵毎の押離鍵操作および押離鍵速度を検出し、検出した押離鍵操作に対応したキーオン信号、キーナンバおよびキーオフ信号を発生すると共に、押離鍵速度に対応したベロシティ情報を発生する。２は楽器パネル（図示略）に配設される各種スイッチやホイール等の操作子から構成される操作部であり、各種スイッチ操作に応じたスイッチ信号およびホイール操作に対応する操作子信号を発生する。
【０００９】
なお、この操作部２に配設される各種スイッチの内には、後述する発音チャンネル部８の各発音チャンネル毎に音色設定するスイッチや、音色割当された発音チャンネルの発音優先順位を決めるスイッチ等がある。３は楽器各部を制御するＣＰＵである。このＣＰＵ３では、後述する発音チャンネル決定処理を実行し、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮した発音割当を実現しており、その動作については追って説明する。４は、上記ＣＰＵ３によってロードされる各種制御プログラムを記憶するプログラムＲＯＭである。５は音色テーブルＴＣＴＢＬ等を記憶するデータＲＯＭである。
【００１０】
ここで、図２を参照して音色テーブルＴＣＴＢＬの構成について説明しておく。音色テーブルＴＣＴＢＬは、図示されていない音色スイッチにより選択指定される各音色番号毎の属性ＲＰＦ〜ＲＲ２から形成されている。これら属性の内、リリース優先フラグＲＰＦは、トランケート時に優先して発音を継続させるか否かを識別するものであり、当該フラグＲＰＦが「１」となる音色が割り当てられた発音チャンネルでは発音が優先される。波形番号ＷＮは、音色番号に対応して波形メモリ（図示略）に記憶される波形内容を指定する。なお、この実施例では、波形メモリは後述する発音チャンネル部８内部に設ける態様としているが、これに替えてデータＲＯＭ５の所定記憶エリアに波形信号を記憶する態様としても良い。
【００１１】
アタック目標値ＡＴ〜リリース２レートＲＲ２は、それぞれＡＤＳＲ型エンベロープ制御パラメータであり、その一例を図６（イ）に図示する。この図から判るように、ノートオン（キーオン）からアタック目標値ＡＴまでをアタックレートＡＲで立ち上がらせ、この後にディケイ目標値までをディケイレートＤＲで減衰させる。続いて、サステイン目標値までサステインレートＳＲでレベル保持する過程でノートオフ（キーオフ）された時に、リリース１目標値ＲＴ１までリリース１レートＲＲ１に従って変化させ、この後、リリース２目標値ＲＴ２までリリース２レートＲＲ２に従って変化させる２段過程を経て消音させる。こうした２段過程によるリリース制御は、例えば、ピアノ特有のエンベロープ形状の楽音を生成し得る。なお、通常のエンベロープ制御では、図６（ロ）に示す形態でエンベロープ波形を制御することになり、この場合、リリース２目標値ＲＴ２およびリリース２レートＲＲ２が省略される。
【００１２】
次に、再び図１を参照して実施例の構成について説明を進める。図１において、６はＣＰＵ３の各種演算結果やレジスタ値／フラグ値、あるいは後述する発音チャンネルテーブルＴＧＴＢＬやパートテーブルＣＨＴＢＬが一時記憶されるワークＲＡＭである。このワークＲＡＭ６には、図３に示すレジスタ構成にて形成されるパートテーブルＣＨＴＢＬが設けられており、演奏パート毎にアサインされる音色番号がテーブル形式で格納されている。この実施例が外部から入力される演奏信号に応じて自動演奏する場合には、このテーブルＣＨＴＢＬにセットされる各演奏パートの音色番号に従って上述した音色テーブルＴＣＴＢＬが参照され、当該音色番号に対応するリリース優先フラグＲＰＦ，波形番号ＷＮおよびエンベロープ制御パラメータＡＴ〜ＲＲ２に基づくエンベロープ制御を後述する発音チャンネル部８に指示するようになっている。
【００１３】
さらに、ワークＲＡＭ６には、図４に示すレジスタ構成からなる発音チャンネルテーブルＴＧＴＢＬが設けられている。発音チャンネルテーブルＴＧＴＢＬには、発音チャンネル部８の発音チャンネル（発音チャンネル）毎に与えられる楽音制御パラメータＮＯＴ（ｎ）〜ＥＶＰ（ｎ）が格納されており（但し、ｎは発音チャンネル番号を示す）、この実施例の場合、３２音の同時発音チャンネルにそれぞれ対応する楽音制御パラメータＮＯＴ（ｎ）〜ＥＶＰ（ｎ）が一時記憶される。
【００１４】
これらパラメータの内、ＮＯＴ（ｎ）は押鍵された鍵のキーナンバ、あるいはＭＩＤＩ入力されるノートナンバである。ＣＨ（ｎ）演奏パート番号（音色に対応）、ＫＯＦ（ｎ）はキーオン時（あるいは演奏信号入力時のノートオン時）に「１」となる押鍵フラグである。ＲＰＦ（ｎ）は、演奏パート番号ＣＨ（ｎ）に対応する音色に割り付けられたリリース優先フラグＲＰＦである。ＥＶＬ（ｎ），ＥＶＳ（ｎ），ＥＶＲ（ｎ）およびＥＶＰ（ｎ）は、現時点におけるエンベロープ制御値が順次格納されるレジスタであり、それぞれエンベロープレベル、エンベロープステップ、エンベロープレートおよびエンベロープ目標値を表す。
【００１５】
次いで、再び図１に戻り、実施例の構成について説明を進める。図１において、７は演奏信号入出力インタフェース回路から構成される外部入力部であり、例えば、外部シーケンサ等から供給される演奏信号をバスＢを介してＣＰＵ３へ供給したり、ＣＰＵ３によって生成される演奏信号を外部演奏楽器へ出力する。演奏信号は、例えば、図５に図示するように、ノートオン／オフおよび演奏パート番号を表すステータスバイトＳＴ、ノート番号を表すデータ１バイトＤＡＴＡ１およびベロシティを表すデータ２バイトＤＡＴＡ２の３バイト・シリアルデータから形成される。
【００１６】
音源部８は、周知の波形メモリ読みだし方式で構成される波形発生部（図示略）とエンベロープ生成部とからなる。音源部８では、波形発生部がＣＰＵ３から供給される波形番号ＷＮに対応する波形信号を波形メモリから読み出す一方、エンベロープ生成部がＣＰＵ３によって発音チャンネル割当された各発音チャンネル毎に、発音チャンネルテーブルＴＧＴＢＬにセットされる楽音制御パラメータに基づいて時分割に波形信号をエンベロープ制御するよう構成されている。なお、この実施例において、発音チャンネル部８は、３２音の同時発音チャンネル（以下、これをチャンネルと記述する場合もある。）を備えている。
９は、発音チャンネル部８から出力される楽音波形をアナログの楽音信号に変換して次段のサウンドシステム１０に供給するＤ／Ａ変換部である。サウンドシステム１０は、Ｄ／Ａ変換部９から出力される楽音信号を増幅して次段のスピーカＳＰから楽音として発音させる。
尚、本実施例の電子楽器においては、演奏パートの発音優先順位が設定されており、図７のパート優先順位がこれにあたる。このパート優先順位とは、例えば、リズム楽器のパートと和音楽器のパートであれば、リズム楽器の優先順位が高く、いずれか一方を消音しなければならない場合、和音楽器のパートが消音されるというものである。
【００１７】
上記構成による実施例にあっては、図７に示す発音チャンネル割当順位でトランケートすることによって、「優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等」、その楽音の属性を考慮した発音チャンネル割り当てを実現することを要旨としており、以下、この割当順位について概説しておく。
図７に示す割当順位は、全ての発音チャンネルが発音中である時に新たなキーオン（あるいはノートオン）が発生した時、リリース中の発音チャンネルの内で最も優先順位の低いパートが割り当てられたチャンネルＸＤＣと、キーオン（あるいはノートオン）中の発音チャンネルの内で最も優先順位の低いパートが割り当てられたチャンネルＹＤＣとをサーチし、これらチャンネルＸＤＣ，ＹＤＣの優先順位の優劣に対応する下記３ケースにおいて、チャンネルＸＤＣ，ＹＤＣのいずれをトランケートするかを図示したものである。すなわち、
【００１８】
〔ケース１〕：チャンネルＸＤＣ≦チャンネルＹＤＣ（すなわちチャンネルＹＤＣの方が優先順位が高い）の場合には、チャンネルＹＤＣが割当順位５位となり、チャンネルＸＤＣが割当順位１位となるから、割当順位の高いリリース中のチャンネルＸＤＣがトランケートされる。
〔ケース２〕：チャンネルＸＤＣ≧チャンネルＹＤＣ（すなわちチャンネルＸＤＣの方が優先順位が高い）であって、チャンネルＸＤＣのリリース優先フラグＲＰＦが「０（ＯＦＦ）」の場合には、チャンネルＸＤＣが割当順位２位となり、チャンネルＹＤＣが割当順位３位となるから、割当順位の高いリリース中のチャンネルＸＤＣがトランケートされる。
〔ケース３〕：チャンネルＸＤＣ≧チャンネルＹＤＣ（すなわちチャンネルＸＤＣの方が優先順位が高い）であって、チャンネルＸＤＣのリリース優先フラグＲＰＦが「１（ＯＮ）」の場合には、チャンネルＸＤＣが割当順位４位となり、チャンネルＹＤＣが割当順位３位となるから、割当順位の高いキーオン中のチャンネルＹＤＣがトランケートされる。
【００１９】
なお、全ての発音チャンネルが発音中である時に新たなキーオン（あるいはノートオン）が発生した時、リリース中にあるチャンネルが存在しない場合には、一意的にキーオン（あるいはノートオン）中のチャンネルの内で最も優先順位の低いチャンネルＹＤＣをトランケートする。一方、キーオン（あるいはノートオン）中にあるチャンネルが存在しない場合には、一意的にリリース中のチャンネルの内で最も優先順位の低いチャンネルＸＤＣをトランケートする。
【００２０】
（２）第１実施例の動作
次に、こうしたルールに基づいて発音チャンネル割当を行う第１実施例の動作について図８〜図１４を参照して説明する。ここでは、まず、図８を参照してメイン処理ルーチンの動作について説明した後、このメイン処理ルーチンにおいてコールされる各処理ルーチンの動作を図９〜図１４を参照して順次説明する。
【００２１】
▲１▼メイン処理ルーチンの動作（全体動作）
この実施例による電子楽器に電源が投入されると、ＣＰＵ３はデータＲＯＭ５から制御プログラムをロードして図８に示すメイン処理ルーチンを起動し、ステップＳＡ１に処理を進める。ステップＳＡ１では、ワークＲＡＭ６に格納されるパートテーブルＣＨＴＢＬやチャンネルテーブルＴＧＴＢＬの他、各種レジスタ／フラグ類をリセットするイニシャライズがなされ、次のステップＳＡ２に処理を進める。ステップＳＡ２では、楽器パネル面に配設される各種スイッチ操作に応じた設定処理、例えば、音色スイッチによる音色設定、あるいは演奏パート毎の音色割当などがなされる。
【００２２】
次いで、ステップＳＡ３に進むと、ＣＰＵ３は押離鍵操作に対応したキーオン／オフイベントに基づく発音／消音を指示する鍵処理が行われる。ここでは、特に、キーオンイベントが重複した時にチャンネル決定処理ルーチン（後述する）に基づき、前述した割当ルールに従ったチャンネル割り当てが行われる。そして、続く、ステップＳＡ４では、演奏入力に対応したノートオン／オフイベントに基づく発音／消音指示がなされる。なお、このステップＳＡ４においても、ステップＳＡ３と同様に、後述する発音チャンネル決定処理ルーチンに基づくトランケートが行われ、以後、ストップスイッチが操作される迄、ステップＳＡ２〜ＳＡ４を繰り返して楽音を生成する。
【００２３】
（２）イニシャル処理ルーチンの動作
電源投入後、ＣＰＵ３の処理がステップＳＡ１に進むと、図９に示すイニシャル処理ルーチンが実行され、ステップＳＢ１に処理を進める。ステップＳＢ１では、ループカウンタ値が格納されるレジスタＮＵＭの値をゼロリセットし、続く、ステップＳＢ２では、このレジスタＮＵＭの値によって指定されるレジスタＥＶＬ（ＮＵＭ）の内容をゼロリセットする。次いで、ステップＳＢ３に進むと、レジスタＮＵＭの値が「３１」以上であるか、すなわち、前述したチャンネルテーブルＴＧＴＢＬにおけるエンベロープレベルＥＶＬ（ＮＵＭ）が全てイニシャライズされたか否かを判断する。
【００２４】
ここで、全発音チャンネルにおけるエンベロープレベルＥＶＬ（ＮＵＭ）がゼロリセットによりイニシャライズされた場合には、判断結果が「ＹＥＳ」となり、このルーチンを完了する。一方、そうでない場合には、判断結果が「ＮＯ」となり、ステップＳＢ４へ進み、レジスタＮＵＭの値をインクリメントして歩進させた後、上記ステップＳＢ２へ処理を戻し、以後、３２チャンネル分のエンベロープレベルＥＶＬ（ＮＵＭ）が全てイニシャライズされるまでステップＳＢ２〜ＳＢ４を繰り返す。
【００２５】
▲３▼鍵処理ルーチンの動作
こうして、各発音チャンネルの初期設定がなされた後、ステップＳＡ２（図８参照）のスイッチ処理にて音色設定等が行われると、ＣＰＵ３はステップＳＡ３に進み、図１０に示す鍵処理ルーチンを実行し、ステップＳＣ１に処理を進める。
【００２６】
（ａ）押鍵時の動作
ステップＳＣ１では、押鍵操作に応じたキーオンイベントが発生したか否かを判断する。ここで、演奏者が所定の鍵を押鍵したとする。そうすると、キーオンイベントが発生してこのステップＳＣ１の判断結果は「ＹＥＳ」となり、次のステップＳＣ２へ処理を進める。ステップＳＣ２では、押鍵された鍵のキーナンバに対応した音高の楽音を発生すべく、発音チャンネルを決定するチャンネル決定処理ルーチン（後述する）を実行する。このチャンネル決定処理ルーチンでは、全発音チャンネルが発音中である時に新押鍵された場合、前述した割当順位に従ってトランケートする。
【００２７】
そして、この発音チャンネル決定処理ルーチンによってトランケートすべきチャンネルが定められると、ＣＰＵ３は次のステップＳＣ３に処理を進める。なお、チャンネル決定処理ルーチンでは、チャンネル割当したチャンネルの番号（発音チャンネル番号）をレジスタＤＣＯにセットするようにしている。次いで、ステップＳＣ３に進むと、このレジスタＤＣＯの値に対応するチャンネルテーブルＴＧＴＢＬのレジスタＮＯＴ（ＤＣＯ）に押鍵された鍵のキーナンバをセットする。
【００２８】
次に、ステップＳＣ４に進むと、チャンネルテーブルＴＧＴＢＬのレジスタＣＨ（ＤＣＯ）に「１」をセットする。これは、押鍵操作された鍵の楽音が演奏パート番号「１」の優先順位となるからである。続いて、ステップＳＣ５に進むと、押鍵フラグを記憶するレジスタＫＯＦ（ＤＣＯ）に「１」をセットして押鍵状態にある旨を表わし、続く、ステップＳＣ６では演奏パート番号「１」にアサインされた音色番号のリリース優先フラグＲＰＦを、前述した音色テーブルＴＣＴＢＬから読み出し、これをチャンネルテーブルＴＧＴＢＬのレジスタＲＰＦ（ＤＣＯ）にセットする。
【００２９】
次いで、ステップＳＣ７に進むと、演奏パート番号「１」にアサインされた音色番号に対応する各種エンベロープ制御パラメータＡＴ〜ＲＲ２を、音色テーブルＴＣＴＢＬから順次読み出し、これらパラメータＡＴ〜ＲＲ２に応じて経時変化するエンベロープ情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）を生成してチャンネルテーブルＴＧＴＢＬに書き込む一方、レジスタＤＣＯの値に対応する発音チャンネル（以下、これをチャンネルＤＣＯと記す。番号ＤＣＯの発音チャンネルを意味する）へ発音指示する。これにより、発音チャンネル部８ではチャンネルＤＣＯがチャンネルテーブルＴＧＴＢＬにセットされたエンベロープ情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）に従って楽音を生成する。
【００３０】
（ｂ）離鍵時の動作
次に、押鍵されていた鍵が離鍵操作されると、上述したステップＳＣ１の判断結果が「ＮＯ」となり、ステップＳＣ８に処理を進める。ステップＳＣ８では、離鍵されたか否かを判断し、この場合、離鍵操作されることで判断結果が「ＹＥＳ」となり、次のステップＳＣ９に進む。ステップＳＣ９では、離鍵された鍵に対応するキーナンバが割り当てられ、かつ、演奏パート番号「１」とされたチャンネルをチャンネルテーブルＴＧＴＢＬを参照して検索し、検索したチャンネル番号をレジスタＤＣＯにセットする。
そして、ステップＳＣ１０に進むと、ＣＰＵ３はレジスタＫＯＦ（ＤＣＯ）に記憶される押鍵フラグを「０」にする。これにより、押鍵された鍵がキーオフ状態に設定され、続く、ステップＳＣ１１では、このキーオフ状態に基づきチャンネルＤＣＯへ消音を指示する。消音指示に際しては、当該チャンネルに与えるエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）も強制的にゼロリセットされる。
【００３１】
このように、鍵処理ルーチンでは、押鍵操作された場合には、後述するチャンネル決定処理ルーチンによりトランケートされたチャンネルに対して押鍵された鍵のキーナンバをセットすると共に、演奏パート番号「１」を割り付ける。そして、この演奏パート番号「１」に割り付けられた音色に対応するエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）を発生し、これらエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）を発音チャンネル部８に供給して発音指示する。
一方、離鍵操作された時には、離鍵された鍵のキーナンバに対応するチャンネルを検索し、検索したチャンネルへ消音指示すると共に、エンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）をゼロリセットする。なお、この鍵処理ルーチンにおいて、押離鍵操作がなされず、キーオン／キーオフイベントが生成されない場合には、何等処理されることなくこのルーチンを終了する。
【００３２】
▲４▼外部入力処理ルーチンの動作
次に、外部入力部７（図１参照）を介して供給される演奏信号に応じて発音／消音制御する外部入力処理ルーチンの動作について図１１を参照して説明する。上述した鍵処理ルーチンが完了すると、ＣＰＵ３はステップＳＡ４（図８参照）に進み、これにより図１１に示す鍵処理ルーチンが実行されてステップＳＤ１に処理を進める。
【００３３】
（ａ）ノートオン時の動作
まず、ステップＳＤ１では、外部入力部７（図１参照）を介して、例えば、外部シーケンサあるいは電子楽器からの演奏信号入力の有無を判断する。ここで、演奏信号入力が無い場合には、判断結果が「ＮＯ」となり、このルーチンを終了してメイン処理ルーチンへ復帰する。
一方、ＭＩＤＩ入力が有ると、ここでの判断結果が「ＹＥＳ」となり、次のステップＳＤ２に処理を進める。ステップＳＤ２では、入力された演奏信号のステータスバイトＳＴが「ノートオン」を表わすデータであるか否かを判断する。ここで、「ノートオン」である場合には、このステップＳＤ２の判断結果が「ＹＥＳ」となり、ステップＳＤ３へ処理を進める。
【００３４】
ステップＳＤ３では、「ノートオン」に対応するノート番号の楽音を発生すべく、発音チャンネルを決定するチャンネル決定処理ルーチン（後述する）を実行する。そして、このチャンネル決定処理ルーチンに基づき、「ノートオン」すべきチャンネルがトランケートされると、ＣＰＵ３は次のステップＳＤ４に処理を進める。そして、ステップＳＤ４では、チャンネル決定処理ルーチンの処理によりレジスタＤＣＯにセットされたチャンネル番号に従い、レジスタＮＯＴ（ＤＣＯ）にノート番号をセットする。なお、このノート番号は、例えば、演奏信号が３バイトシリアルデータで形成されている場合、図５に図示するように、第２バイト目のデータに相当する。
【００３５】
次いで、ステップＳＤ５に進むと、ＣＰＵ３は演奏信号のステータスバイトＳＴから抽出した演奏パート番号を、チャンネルテーブルＴＧＴＢＬのレジスタＣＨ（ＤＣＯ）にセットする。続いて、ステップＳＤ６に進むと、押鍵フラグ（ノートオンフラグ）を記憶するレジスタＫＯＦ（ＤＣＯ）に「１」をセットしてノートオン状態にある旨を表わす。そして、ステップＳＤ７に進むと、ＣＰＵ３はレジスタＣＨ（ＤＣＯ）にセットされた演奏パート番号にアサインされた音色番号のリリース優先フラグＲＰＦを、前述した音色テーブルＴＣＴＢＬから読み出し、これをチャンネルテーブルＴＧＴＢＬのレジスタＲＰＦ（ＤＣＯ）にセットする。
【００３６】
次に、ステップＳＤ８に進むと、この演奏パート番号にアサインされた音色番号に対応する各種エンベロープ制御パラメータＡＴ〜ＲＲ２を、音色テーブルＴＣＴＢＬから順次読み出し、これらパラメータＡＴ〜ＲＲ２に応じて経時変化するエンベロープ情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）を生成してチャンネルテーブルＴＧＴＢＬに順次書き込む一方、発音チャンネルＤＣＯへ発音指示する。これにより、音源部８では、チャンネルＤＣＯがチャンネルテーブルＴＧＴＢＬにセットされたエンベロープ情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）に従ってノートオンされた楽音を生成する。
【００３７】
（ｂ）ノートオフ時の動作
次に、入力された演奏信号が「ノートオフ」であると、上述したステップＳＤ２の判断結果が「ＮＯ」となり、ステップＳＤ９に処理を進める。ステップＳＤ９では、演奏入力されたノート番号と演奏パート番号とが割り当てられたチャンネルをチャンネルテーブルＴＧＴＢＬから検索し、検索したチャンネルの番号をレジスタＤＣＯにセットする。そして、この後、ＣＰＵ３はステップＳＤ１０に処理を進め、レジスタＫＯＦ（ＤＣＯ）の押鍵フラグ（ノートオンフラグ）を「０」にする。これにより、ノートオフ状態に設定され、続く、ステップＳＤ１１では、チャンネルＤＣＯへ消音を指示する。消音指示に際しては、当該チャンネルＤＣＯに与えるエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）も強制的にゼロリセットする。
【００３８】
このように、外部入力処理ルーチンでは、演奏入力が「ノートオン」の時、後述するチャンネル決定処理ルーチンによりトランケートされたチャンネルに対してノート番号をセットすると共に、演奏パート番号を割り付ける。そして、この演奏パート番号が割り付けられた音色に対応するエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）を発生し、これらエンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）に従った楽音発生を発音チャンネル部８に指示する。
一方、演奏入力が「ノートオフ」の時には、ノートオフされたノート番号および演奏パート番号が割り当てられたチャンネルの番号をチャンネルテーブルＴＧＴＢＬから検索し、検索したチャンネルＤＣＯへ消音指示すると共に、エンベロープ制御情報ＥＶＬ（ＤＣＯ）〜ＥＶＰ（ＤＣＯ）をゼロリセットするようになっている。
【００３９】
▲５▼チャンネル決定処理ルーチンの動作
次に、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音の属性を考慮して発音チャンネルを割り当てるチャンネル決定処理ルーチンの動作について図１２〜図１４を参照して説明する。
ＣＰＵ３の処理が鍵処理ルーチンにおけるステップＳＣ２（図１０参照）、あるいは外部入力処理ルーチンにおけるステップＳＤ３（図１１参照）に進むと、図１２に示すチャンネル決定処理ルーチンが実行され、ステップＳＥ１に処理を進める。
【００４０】
（ａ）空きチャンネルサーチ動作
ステップＳＥ１では、ループカウンタ値がセットされるレジスタＮＵＭをゼロクリアし、続く、ステップＳＥ２では、レジスタＥＶＬ（ＮＵＭ）の値が「０」であるか否かを判断する。すなわち、レジスタＮＵＭで指定されるチャンネルが消音状態であるか否かを判断する。ここで、発音中であると、判断結果が「ＮＯ」となり、次のステップＳＥ４に進む。ステップＳＥ４では、レジスタＮＵＭの値が「３１」以上、つまり、全３２チャンネル分をサーチしたか否かを判断する。ここで、全３２チャンネル分のサーチがなされていない時には、判断結果が「ＮＯ」となり、ステップＳＥ５に進み、レジスタＮＵＭに格納されるチャンネルの番号を１インクリメントして歩進させ、ステップＳＥ２へ処理を戻す。これ以後、ＣＰＵ３は全チャンネル分のサーチが完了するまで上記ステップＳＥ２〜ＳＥ５を繰り返す。
【００４１】
こうして空きチャンネルサーチにおいて、消音状態のチャンネルがサーチされると、上記ステップＳＥ２の判断結果が「ＹＥＳ」となり、ステップＳＥ３に進む。ステップＳＥ３に進むと、ＣＰＵ３は、レジスタＮＵＭで指定される発音チャンネルが空きチャンネルであるとして、この空きチャンネルに発音を割り当てるべく、レジスタＮＵＭに格納されるループカウンタ値をチャンネル番号としてレジスタＤＣＯに書き込む。これにより、レジスタＤＣＯの値に対応するチャンネルが新押鍵（新ノートオン）に対応して割り当てられる。これに対し、全チャンネルが発音中にあり、空きチャンネルが存在しない場合には、上記ステップＳＥ４の判断結果が「ＹＥＳ」となり、ステップＳＥ６へ処理を進める。
【００４２】
（ｂ）リリース中のチャンネルサーチ動作
次に、ステップＳＥ６に進むと、レジスタＸＤＣに「−１」をセットする。このレジスタＸＤＣには、リリース中にある最も優先順位の低いチャンネルをサーチした結果が一時記憶されるようになっており、この場合、未サーチ状態を表わすフラグ値「−１」がセットされる。次いで、ステップＳＥ７では、レジスタＮＵＭをゼロクリアし、続く、ステップＳＥ８では、レジスタＫＯＦ（ＮＵＭ）が「０」、すなわち、レジスタＮＵＭで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「ＮＯ」となり、ステップＳＥ９に進み、全３２チャンネル分のサーチがなされたか否かを判断する。そして、全３２チャンネル分のサーチが完了していない時には、ステップＳＥ１０に進み、レジスタＮＵＭに格納されるチャンネル番号（ループカウンタ値）を１インクリメントして歩進させ、上記ステップＳＥ８に戻る。
【００４３】
そして、いま、例えば、レジスタＮＵＭで指定されるチャンネルがリリース中であったとする。そうすると、上記ステップＳＥ８の判断結果が「ＹＥＳ」となり、ステップＳＥ１１に処理を進める。ステップＳＥ１１に進むと、ＣＰＵ３はレジスタＸＤＣの値が「−１」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタＸＤＣにセットされているか否かを判断する。
リリース中のチャンネルをサーチした結果が当該レジスタＸＤＣにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「ＮＯ」となり、ステップＳＥ１２に進む。ステップＳＥ１２では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号が格納されるレジスタＮＵＭの値を、レジスタＸＤＣに書き込む。
【００４４】
この後、ＣＰＵ３は再び上述したステップＳＥ９を介して全３２チャンネル分のサーチがなされたか否かを判断し、サーチ完了していない時には、ステップＳＥ１０にてレジスタＮＵＭを歩進させて次のサーチに移行する。
そして、次のサーチでリリース中のチャンネルが検出されると、ステップＳＥ８の判断結果が「ＹＥＳ」となり、ステップＳＥ１１に進む。この場合、ステップＳＥ１１では、レジスタＸＤＣには先にサーチしたリリース中のチャンネルの番号がセットされているから、判断結果は「ＹＥＳ」となり、ステップＳＥ１３へ処理を進める。
【００４５】
ステップＳＥ１３では、レジスタＣＨ（ＸＤＣ）の値がレジスタＣＨ（ＮＵＭ）より大であるか否か、すなわち、先にサーチされたリリースチャンネルに割り当てられている演奏パート番号が、現在サーチされたリリースチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
この実施例の場合、演奏パート番号が小さい程、そのチャンネル番号に付与される優先順位が低くなるので、上記ステップＳＥ１３の判断は、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より上であるか否か」を判断することに相当する。よって、先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルのそれより上であると、この判断結果が「ＹＥＳ」となり、ステップＳＥ１２に進み、先にサーチされたリリースチャンネルより優先順位の低い、現在サーチされたリリースチャンネルのチャンネルの番号をレジスタＸＤＣにセットする。
【００４６】
これに対し、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より下となる」場合には、ステップＳＥ１３の判断結果は「ＮＯ」となり、上述したステップＳＥ９へ処理を進める。
このように、ステップＳＥ６〜ＳＥ１３では、リリース中のチャンネルを順次サーチし、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位のチャンネルの番号をレジスタＸＤＣに書き込んで更新し、最終的にリリース中の最も優先順位の低いチャンネルがレジスタＸＤＣに格納される。
【００４７】
（ｃ）キーオン中のチャンネルサーチ動作
このようにして、リリース中の最も優先順位の低いチャンネルＸＤＣが定まると、ＣＰＵ３は、図１３に示すステップＳＥ１４に進む。ステップＳＥ１４では、レジスタＹＤＣに「−１」をセットする。レジスタＹＤＣは、キーオン中の最も優先順位の低いチャンネルをサーチした結果が一時記憶されるものであり、この時点では未サーチ状態を表わすフラグ値「−１」がセットされる。次いで、ステップＳＥ１５に進むと、チャンネルサーチ開始にあたりレジスタＮＵＭをゼロクリアする。
【００４８】
次にステップＳＥ１６では、レジスタＫＯＦ（ＮＵＭ）が「１」、すなわち、レジスタＮＵＭで指定されるチャンネルがキーオン（ノートオン）中であるか否かを判断する。ここで、キーオン中でなければ、判断結果が「ＮＯ」となり、ステップＳＥ１７に進む。ステップＳＥ１７では、全３２チャンネル分のサーチがなされたか否かを判断する。そして、全３２チャンネル分のサーチが完了していない時には、判断結果が「ＮＯ」となり、ステップＳＥ１８に進み、レジスタＮＵＭを次のチャンネルの番号に歩進させ、上記ステップＳＥ１６に戻る。
【００４９】
ここで、例えば、レジスタＮＵＭで指定されるチャンネルがキーオン中であったとする。そうすると、上記ステップＳＥ１６の判断結果が「ＹＥＳ」となり、ステップＳＥ１９に処理を進める。ステップＳＥ１９に進むと、ＣＰＵ３はレジスタＹＤＣの値が「−１」より大であるか否か、すなわち、キーオン中のチャンネルをサーチした結果が当該レジスタＹＤＣにセットされているか否かを判断する。そして、キーオン中のチャンネルを初めてサーチした時には、ここでの判断結果が「ＮＯ」となり、ステップＳＥ２０に進む。ステップＳＥ２０では、キーオン中のチャンネルを初めてサーチした時のチャンネルの番号が格納されるレジスタＮＵＭの値を、レジスタＹＤＣに書き込む。
【００５０】
次いで、ＣＰＵ３は再び上述したステップＳＥ１７を介して全３２チャンネル分のサーチがなされたか否かを判断し、サーチが完了していない時には、ステップＳＥ１８においてレジスタＮＵＭを歩進させる。そして、このレジスタＮＵＭの更新に応じてキーオン中のチャンネルが検出されたとする。そうすると、ステップＳＥ１６の判断結果が「ＹＥＳ」となり、ステップＳＥ１９に進む。この場合、ステップＳＥ１９では、レジスタＹＤＣに先にサーチしたキーオン中のチャンネルの番号がセットされているから、判断結果は「ＹＥＳ」となり、次のステップＳＥ２１へ処理を進める。
【００５１】
ステップＳＥ２１では、レジスタＣＨ（ＹＤＣ）の値がレジスタＣＨ（ＮＵＭ）より大であるか否か、すなわち、先にサーチされたチャンネルに割り当てられている演奏パート番号が、現在サーチされたチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
本実施例の場合、前述したように、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップＳＥ２１の判断は、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否か」を判断することになる。よって、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「ＹＥＳ」となり、ステップＳＥ２０に進み、先にサーチされたチャンネルより優先順位の低い、現在サーチされたチャンネルの番号をレジスタＹＤＣにセットする。
【００５２】
これに対し、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より下となる」場合には、ステップＳＥ２１の判断結果が「ＮＯ」となり、上述したステップＳＥ１７へ処理を進める。
このように、ステップＳＥ１４〜ＳＥ２１では、キーオン中のチャンネルを順次サーチし、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位のチャンネルの番号をレジスタＹＤＣに書き込んで更新し、最終的にキーオン中の最も優先順位の低いチャンネルがレジスタＹＤＣに格納される。
【００５３】
（ｃ）トランケート処理
次に、上述したリリース中およびキーオン中のチャンネルサーチ結果に基づいてなされるトランケート処理について図１４に示すフローチャートを参照して説明する。
〔１〕チャンネルＸＤＣ≦チャンネルＹＤＣの場合
この場合、リリース中の最も優先順位の低いチャンネルの番号がレジスタＸＤＣに格納され、キーオン中の最も優先順位の低いチャンネルの番号がレジスタＹＤＣに格納されるから、図１４に示すステップＳＥ２２およびステップＳＥ２３の判断結果は「ＹＥＳ」となり、ステップＳＥ２４に処理を進める。
【００５４】
そして、ステップＳＥ２４では、レジスタＣＨ（ＸＤＣ）の値がレジスタＣＨ（ＹＤＣ）の値以下であるか、つまり、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断する。この例の場合、リリース中のチャンネルにアサインされている演奏パートの方がキーオン中のチャンネルのものより低いので、判断結果は「ＹＥＳ」となり、ステップＳＥ２５に進み、レジスタＸＤＣに格納されるチャンネルの番号をレジスタＤＣＯに格納する。これにより、キーオン（ノートオン）中にあるチャンネルＹＤＣ側の発音が継続され、割当順位１位のチャンネルＸＤＣがトランケートされる。
【００５５】
〔２〕チャンネルＸＤＣ≧チャンネルＹＤＣであって、チャンネルＸＤＣのリリース優先フラグＲＰＦが「０（ＯＦＦ）」の場合
この場合も、リリース中の最も優先順位の低いチャンネルの番号がレジスタＸＤＣに格納され、キーオン中の最も優先順位の低いチャンネルの番号がレジスタＹＤＣに格納されるから、図１４に示すステップＳＥ２２およびステップＳＥ２３の両判断結果は共に「ＹＥＳ」となり、ステップＳＥ２４に処理を進める。そして、ステップＳＥ２４では、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断するが、この例の場合、リリース中のチャンネル（ＸＤＣ）にアサインされている演奏パートの方がキーオン中のチャンネル（ＹＤＣ）のものより高いので、判断結果は「ＮＯ」となり、ステップＳＥ２６に処理を進める。
【００５６】
次いで、ステップＳＥ２６に進むと、ＣＰＵ３はレジスタＲＰＦ（ＸＤＣ）の値が「１」、つまり、リリース中のチャンネルＸＤＣに割り付けられたリリース優先フラグＲＰＦが「１」であるか否かを判断する。この場合、リリース優先フラグＲＰＦは「０（ＯＦＦ）」であるから、判断結果は「ＮＯ」となり、ステップＳＥ２５へ処理を進め、レジスタＸＤＣに格納されるチャンネルの番号をレジスタＤＣＯに格納する。
これにより、キーオン（ノートオン）中にあるチャンネルＹＤＣ側の優先順位が低くとも、リリース優先フラグＲＰＦが「０」となる通常のリリース制御を行っているチャンネルＸＤＣがトランケートされる。
【００５７】
〔３〕チャンネルＸＤＣ≧チャンネルＹＤＣであって、チャンネルＸＤＣのリリース優先フラグＲＰＦが「１（ＯＮ）」の場合
この場合、リリース優先フラグＲＰＦは「１（ＯＮ）」であるから、上述したステップＳＥ２６の判断結果が「ＹＥＳ」となり、ステップＳＥ２７へ処理を進め、レジスタＹＤＣに格納されるチャンネルの番号をレジスタＤＣＯに格納する。これにより、リリース優先フラグＲＰＦが「１」となる特徴的なエンベロープ制御を行っているチャンネルＸＤＣが発音を継続し、キーオン（ノートオン）中のチャンネルＹＤＣ側がトランケートされる。
【００５８】
〔４〕その他の場合
なお、前述したリリース中およびキーオン中のチャンネルサーチ動作によって、リリース中にあるチャンネルがサーチされなかった場合、すなわち、全てチャンネルがキーオン（ノートオン）中である時には、上述したステップＳＥ２２の判断結果が「ＮＯ」となり、ステップＳＥ２７に進み、キーオン（あるいはノートオン）中のチャンネルの内で最も優先順位の低いチャンネルＹＤＣを一意的にトランケートする。
これに対し、全てチャンネルがリリース中である時には、上述したステップＳＥ２３の判断結果が「ＮＯ」となり、ステップＳＥ２５に進み、リリース中のチャンネルの内で最も優先順位の低いチャンネルＸＤＣを一意的にトランケートすることになる。
【００５９】
このように、第１実施例では、各チャンネルに割り付けられた音色毎の演奏パート優先順位と、特徴的なエンベロープ制御を識別するリリース優先フラグＲＰＦとを勘案した割当順位に従ってトランケートするので、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮したチャンネル（発音）割り当てが可能となっている。
【００６０】
Ｂ．第２実施例
次に、本発明の第２実施例について説明する。この第２実施例の構成は、上記第１実施例と同一の構成であるから、その説明を省略する。上述した第１実施例においては、全てのチャンネルが発音中に、新たなキーオン（あるいは入力信号に対応したノートオン）があると、リリース中のチャンネルの内の最も優先順位の低いチャンネルＸＤＣとキーオン（ノートオン）中のチャンネルの内の最も優先順位の低いチャンネルＹＤＣとをサーチし、これらチャンネルＸＤＣ，ＹＤＣ間の優先順位や前述したリリース優先フラグＲＰＦを勘案して両者の割当順位を比較し、より低い割当順位のチャンネルを新たなキーオン（ノートオン）に割り当てるトランケート処理を実現している。
【００６１】
ところで、このような第１実施例のトランケート処理においては、リリース優先フラグＲＰＦが「１（ＯＮ）」にセットされるチャンネル、すなわち、図６（イ）に図示するような２段リリース過程を有する特徴的なエンベロープ制御を行うチャンネルを優先的に発音継続させるようにしている。しかしながら、リリース優先フラグＲＰＦが「１（ＯＮ）」にセットされるチャンネルにおいて、エンベロープ波形レベルがゼロレベルまで減衰し切っている状態では、発音を継続させる意味合いが薄く、かえって、発音継続させることで、例えば、他の演奏上必要な音色の楽音がトランケートされてしまう等の弊害が生じる虞も有り得る。
そこで、第２実施例では、このような弊害を回避すべく、リリース優先フラグＲＰＦが「１（ＯＮ）」にセットされるチャンネルＸＤＣであっても、そのエンベロープレベルが単純に減衰するだけの状態に達している場合には、このチャンネルＸＤＣをトランケートするようにしている。以下、図１５を参照して動作説明する。
【００６２】
図１５は、第２実施例によるトランケート処理を説明するためのフローチャートである。この図に示すフローチャートが図１４に示す第１実施例と異なる点は、ステップＳＥ２６の次に、レジスタＥＶＰ（ＸＤＣ）に格納される値が「０」であるか否かを判断するステップＳＦ１を設けたことにある。すなわち、このステップＳＦ１では、リリース優先フラグＲＰＦが「１（ＯＮ）」にセットされたチャンネルＸＤＣのエンベロープ目標値が「０」であるか否かを判断するものであり、以下、このステップＳＦ１が追加された第２実施例によるトランケート処理について詳述する。
【００６３】
前述した第１実施例と同様に、リリース中およびキーオン中のチャンネルをサーチした結果が得られると、ＣＰＵ３は図１５に示すトランケート処理を実行し、ステップＳＥ２２に進む。ここで、リリース中にあるチャンネルがサーチされなかった場合、すなわち、全てチャンネルがキーオン（ノートオン）中である時には、判断結果が「ＮＯ」となり、ステップＳＥ２７に進み、キーオン（あるいはノートオン）中のチャンネルの内で最も優先順位の低いチャンネルＹＤＣを一意的にトランケートする。
一方、そうでない場合には、ステップＳＥ２３に進み、キーオン（ノートオン）中にあるチャンネルがサーチされているか否かを判断し、ここで、全てチャンネルがリリース中である時には、判断結果が「ＮＯ」となり、ステップＳＥ２５に進み、リリース中のチャンネルの内で最も優先順位の低いチャンネルＸＤＣを一意的にトランケートする。
【００６４】
そして、リリース中およびキーオン中のチャンネルがサーチされている時には、上記ステップＳＥ２２，２３の判断結果が「ＹＥＳ」となり、ステップＳＥ２４に進む。ステップＳＥ２４では、レジスタＣＨ（ＸＤＣ）の値がレジスタＣＨ（ＹＤＣ）の値以下であるか、つまり、リリース中のチャンネルにアサインされている演奏パートの方が低い優先順位であるかを判断する。ここで、チャンネルＸＤＣ≦チャンネルＹＤＣの場合、すなわち、リリース中のチャンネルにアサインされている演奏パートの方がキーオン中のチャンネルのものより低い時には、この判断結果が「ＹＥＳ」となり、ステップＳＥ２５に進み、キーオン（ノートオン）中にあるチャンネルＹＤＣ側の発音が継続され、割当順位１位のチャンネルＸＤＣがトランケートされる。
【００６５】
これに対し、チャンネルＸＤＣ≧チャンネルＹＤＣの場合には、ステップＳＥ２４の判断結果が「ＮＯ」となり、ステップＳＥ２６に進む。ステップＳＥ２６に進むと、ＣＰＵ３は、レジスタＲＰＦ（ＸＤＣ）の値が「１」、つまり、リリース中のチャンネルＸＤＣに割り付けられたリリース優先フラグＲＰＦが「１」であるか否かを判断する。ここで、リリース優先フラグＲＰＦが「０（ＯＦＦ）」であると、判断結果は「ＮＯ」となり、ステップＳＥ２５へ処理を進め、チャンネルＸＤＣ側がトランケートされる。この結果、チャンネルＹＤＣ側の優先順位が低くとも、チャンネルＸＤＣ側がリリース優先フラグＲＰＦを「０」とした通常のリリース制御を行っているから、キーオン（ノートオン）中の発音を継続させるようにしている。
【００６６】
一方、リリース優先フラグＲＰＦが「１（ＯＮ）」とされている場合には、上記ステップＳＥ２６の判断結果が「ＹＥＳ」となり、ステップＳＦ１へ処理を進める。ステップＳＦ１に進むと、ＣＰＵ３はレジスタＥＶＰ（ＸＤＣ）に格納される現在のエンベロープ目標値が「０」であるか否かを判断する。なお、ここで言うレジスタＥＶＰ（ＸＤＣ）とは、前述したチャンネルテーブルＴＧＴＢＬ（図４参照）にセットされる値である。
【００６７】
そして、チャンネルＸＤＣが特徴的なエンベロープ制御を行っている最中であると、現在のエンベロープ目標値が「０」にならないので、ここでの判断結果が「ＮＯ」となり、ステップＳＥ２７へ処理を進め、レジスタＹＤＣに格納されるチャンネルの番号をレジスタＤＣＯに格納する。これにより、リリース優先フラグＲＰＦが「１」となる特徴的なエンベロープ制御を行っているチャンネルＸＤＣの発音が継続され、キーオン（ノートオン）中のチャンネルＹＤＣ側がトランケートされる。
【００６８】
これに対し、リリース優先フラグＲＰＦが「１（ＯＮ）」とされているリリース波形が単純に減衰するだけの状態に達している時には、レジスタＥＶＰ（ＸＤＣ）に格納される現在のエンベロープ目標値が「０」となり、上記ステップＳＦ１の判断結果が「ＹＥＳ」となり、ステップＳＥ２５に進み、チャンネルＸＤＣをトランケートする。これにより、リリース優先フラグＲＰＦを「１（ＯＮ）」としたチャンネルＸＤＣであっても、そのエンベロープレベルがゼロレベルに収束しかかった時には、発音が継続されずにトランケートされ、キーオン（ノートオン）中のチャンネルＹＤＣ側の発音が優先される。こうすることによって、演奏効果上に必要な音色の楽音をトランケートするといった虞を回避することが可能になる。
【００６９】
Ｃ．変形例
次に、上述した第２実施例に対応する変形例について説明する。この変形例では、図１６に図示するように、音色テーブルＴＣＴＢＬにおいて２つのリリース優先フラグＲＰＦ１，ＲＰＦ２を備える点に特徴がある。
第２実施例にあっては、リリース優先フラグＲＰＦが「１（ＯＮ）」とされているチャンネルであっても、そのチャンネルが制御するリリース領域が単純に減衰するだけの時には、トランケートするようになっており、変形例ではこうしたチャンネル割当をより簡便に行うべく音色テーブルＴＣＴＢＬに２つのリリース優先フラグＲＰＦ１，ＲＰＦ２を設けている。
【００７０】
すなわち、図６（イ）に図示するような２段階のリリース過程を持つ特徴的なエンベロープ波形を制御する場合において、リリース優先フラグＲＰＦ１を「１（ＯＮ）」、リリース優先フラグＲＰＦ２を「０（ＯＦＦ）」と設定しておけば、リリース１領域でのチャンネル割当順位が低く、かつ、リリース２領域でのチャンネル割当順位が高くなるため、上述した第２実施例と同様に、リリース領域１の発音が優先され、リリース２領域で通常のエンベロープ制御態様と同様にトランケートすることが可能なる。
なお、演奏上、特定の音色が割り付けられたチャンネルのリリース波形を意図的に発音優先させたい場合などでは、このリリース優先フラグＲＰＦ１，ＲＰＦ２の両者を「１（ＯＮ）」としておけば、リリース領域１、２が共に発音優先され、所望の演奏効果を得ることも可能になる。
【００７１】
Ｄ．第３実施例
次に、本発明による第３実施例について図１７〜図２１を参照して説明する。なお、第３実施例の構成は、前述した第１実施例と同一であるので、その説明については省略する。
この第３実施例では、図１７に示す割当順位から解るように、リリース中のチャンネルの内、リリース優先フラグＲＰＦが「０（ＯＦＦ）」となっているチャンネルが割当順位１位でトランケートされ、次いで、リリース優先フラグＲＰＦが「１（ＯＮ）」なるチャンネル、キーオン（ノートオン）中のチャンネルの順でトランケートされる。なお、リリース優先フラグＲＰＦが「０（ＯＦＦ）」とされているチャンネルが複数存在する時には、その中で最も演奏パート優先順位の低いパートが割り当てられるチャンネルをトランケートするようにしている。
【００７２】
第３実施例が前述した第１実施例と異なる点は、チャンネル決定時の処理にあり、それ以外の動作は共通するので、以下、図１８〜図２１を参照して第３実施例によるチャンネル決定処理ルーチンの動作について説明する。
第１実施例と同様に、ＣＰＵ３の処理が鍵処理ルーチンにおけるステップＳＣ２（図１０参照）、あるいは外部入力処理ルーチンにおけるステップＳＤ３（図１１参照）に進むと、図１８に示すチャンネル決定処理ルーチンが実行され、ステップＳＧ１に処理を進める。
【００７３】
（ａ）空きチャンネルサーチ動作
まず、ステップＳＧ１では、レジスタＤＣＯに「−１」をセットする。このレジスタＤＣＯには、トランケートされるチャンネルの番号が一時記憶されるが、ここでは、トランケートすべきチャンネルが未決定である旨を表わすフラグ値「−１」をセットする。次いで、ステップＳＧ２に進むと、ＣＰＵ３は、ループカウント値がセットされるレジスタＮＵＭをゼロクリアし、続く、ステップＳＧ３では、レジスタＥＶＬ（ＮＵＭ）の値が「０」であるか否かを判断する。すなわち、レジスタＮＵＭの値に対応するチャンネルが消音状態であるか否かを判断する。
【００７４】
ここで、レジスタＮＵＭで指定されるチャンネルが消音状態にあれば、判断結果が「ＹＥＳ」となり、ステップＳＧ４に進む。ステップＳＧ４では、レジスタＮＵＭで指定されるチャンネルが空きチャンネルであるとして、この空きチャンネルに発音を割り当てるべく、レジスタＮＵＭの値をレジスタＤＣＯに書き込む。これにより、レジスタＤＣＯに格納されるチャンネルの番号のチャンネルが新押鍵（新ノートオン）に割り当てられる。
【００７５】
一方、レジスタＮＵＭに対応するチャンネルが発音中にある場合には、上記ステップＳＧ３の判断結果が「ＮＯ」となり、次のステップＳＧ５に進む。ステップＳＧ５では、レジスタＮＵＭの値が「３１」以上、つまり、全３２チャンネル分をサーチしたか否かを判断する。ここで、全３２チャンネル分のサーチがなされていない時には、判断結果が「ＮＯ」となり、ステップＳＧ６に進み、レジスタＮＵＭに格納されるチャンネルの番号を１インクリメントして歩進させ、上述したステップＳＧ３へ処理を戻す。これ以後、ＣＰＵ３は全チャンネル分のサーチが完了するまで上記ステップＳＧ３〜ＳＧ６を繰り返す。
そして、いま、例えば、全３２チャンネル分のサーチがなされ、この結果、空きチャンネルが存在しなかったとする。そうすると、上記ステップＳＧ５の判断結果が「ＹＥＳ」となり、図１９に示すステップＳＧ７へ処理を進める。
【００７６】
（ｂ）リリース中、かつ、リリース優先フラグＲＰＦが「０（ＯＦＦ）」のチャンネルサーチ動作
次に、ステップＳＧ７に進むと、レジスタＮＵＭをゼロクリアし、次のステップＳＧ８に処理を進める。ステップＳＧ８に進むと、ＣＰＵ３はレジスタＫＯＦ（ＮＵＭ）が「０」、すなわち、レジスタＮＵＭで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「ＮＯ」となり、ステップＳＧ９に進み、全３２チャンネル分のサーチがなされたか否かを判断する。そして、全３２チャンネル分のサーチが完了していない時には、判断結果が「ＮＯ」となり、ステップＳＧ１０に処理を進め、レジスタＮＵＭに格納されるループカウンタ値（チャンネル番号）を更新して上記ステップＳＧ８に処理を戻す。
【００７７】
ここで、例えば、レジスタＮＵＭの値で指定されるチャンネルがリリース中であると、上記ステップＳＧ８の判断結果が「ＹＥＳ」となり、ステップＳＧ１１に処理を進める。ステップＳＧ１１に進むと、ＣＰＵ３はレジスタＲＰＦ（ＮＵＭ）の値が「０」、すなわち、リリース中のチャンネルに付与されるリリース優先フラグＲＰＦが「０（ＯＦＦ）」されているか否かを判断する。ここで、対応するチャンネルのリリース優先フラグＲＰＦが「１（ＯＮ）」である時には、判断結果が「ＮＯ」となり、上述したステップＳＧ９，ＳＧ１０を介してチャンネル番号を更新し、再度ステップＳＧ８に処理を戻す。
【００７８】
一方、リリース優先フラグＲＰＦが「０（ＯＦＦ）」である時には、上記ステップＳＧ１１の判断結果が「ＹＥＳ」となり、次のステップＳＧ１２に処理を進める。ステップＳＧ１２では、レジスタＤＣＯにセットされる値が「−１」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタＤＣＯにセットされているか否かを判断する。
そして、リリース中のチャンネルをサーチした結果が当該レジスタＤＣＯにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「ＮＯ」となり、ステップＳＧ１３に進む。ステップＳＧ１３では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号、すなわち現レジスタＮＵＭの値をレジスタＤＣＯに書き込む。
【００７９】
こうして、一旦リリース中のチャンネルがサーチされると、ＣＰＵ３は再び上述したステップＳＧ９を介して全３２チャンネル分のサーチがなされたか否かを判断し、サーチ完了していない時には、ステップＳＧ１０にてレジスタＮＵＭを更新して次のサーチに移行する。
そして、例えば、次のサーチでリリース中、かつ、リリース優先フラグＲＰＦが「０」のチャンネルを検出したとする。そうすると、上述したステップＳＧ８、ＳＧ１１における各判断結果が「ＹＥＳ」となり、ステップＳＧ１２に進む。この場合、ステップＳＧ１２では、レジスタＤＣＯには先にサーチしたリリース中、かつ、リリース優先フラグＲＰＦ「０」となるチャンネルの番号（以下、これをリリースチャンネルと称す）がセットされているから、判断結果は「ＹＥＳ」となり、ステップＳＧ１４へ処理を進める。
【００８０】
ステップＳＧ１４では、レジスタＣＨ（ＤＣＯ）の値がレジスタＣＨ（ＮＵＭ）より大であるか否か、すなわち、先にサーチされたリリースチャンネルに割り当てられている演奏パート番号が、現在サーチされたリリースチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
この実施例の場合、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップＳＧ１４の判断は、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より上であるか否か」を判断することに相当する。よって、先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルのそれより上であると、この判断結果が「ＹＥＳ」となり、ステップＳＧ１３に進み、先にサーチされたリリースチャンネルより優先順位の低い、現在サーチされたリリースチャンネルのチャンネルの番号をレジスタＤＣＯにセットする。
【００８１】
これに対し、「先にサーチされたリリースチャンネルの優先順位が現在サーチされたリリースチャンネルの優先順位より下となる」場合には、ステップＳＧ１４の判断結果が「ＮＯ」となり、上述したステップＳＧ９へ処理を進める。
そして、この後、全チャンネル分のサーチが完了すると、このステップＳＧ９の判断結果が「ＹＥＳ」となり、ステップＳＧ１５へ進む。ステップＳＧ１５に進むと、ＣＰＵ３はレジスタＤＣＯの値が「−１」であるか否か、すなわち、リリース中であって、リリース優先フラグＲＰＦが「０（ＯＦＦ）」、かつ、最も優先順位の低いリリースチャンネルをサーチしたか否かを判断し、サーチした場合には判断結果が「ＮＯ」となり、本ルーチンを終了する。一方、そうでない場合には後述するステップＳＧ１６へ処理を進める。
以上のように、ステップＳＧ７〜ＳＧ１４では、リリース中であって、リリース優先フラグＲＰＦが「０（ＯＦＦ）」とされたチャンネルの内、最も優先順位の低いチャンネルの番号、つまり、チャンネル割当順位１位となるチャンネルの番号をレジスタＤＣＯに格納する。これにより、チャンネル割当順位１位とされたチャンネルがトランケートされることになる。
【００８２】
（ｃ）リリース中、かつ、リリース優先フラグＲＰＦが「１（ＯＮ）」のチャンネルサーチ動作
リリース中、かつ、リリース優先フラグＲＰＦが「０（ＯＦＦ）」のチャンネルが存在しない場合、すなわち、上記ステップＳＧ１５の判断結果が「ＹＥＳ」となると、ＣＰＵ３は図２０に示すステップＳＧ１６へ処理を進める。ステップＳＧ１６では、チャンネルサーチ開始にあたりレジスタＮＵＭをゼロクリアする。次いで、ステップＳＧ１７では、レジスタＫＯＦ（ＮＵＭ）が「０」、すなわち、レジスタＮＵＭで指定されるチャンネルがリリース中であるか否かを判断する。ここで、リリース中でなければ、判断結果が「ＮＯ」となり、ステップＳＧ１８に進む。ステップＳＧ１８では、全３２チャンネル分のサーチがなされたか否かを判断する。そして、全３２チャンネル分のサーチが完了していない時には、判断結果が「ＮＯ」となり、ステップＳＧ１９に進み、レジスタＮＵＭを次のチャンネルの番号に歩進させ、上記ステップＳＧ１７に戻る。
【００８３】
ここで、例えば、レジスタＮＵＭで指定されるチャンネルがリリース中であったとする。そうすると、上記ステップＳＧ１７の判断結果が「ＹＥＳ」となり、ステップＳＧ２０に処理を進める。ステップＳＧ２０に進むと、ＣＰＵ３はレジスタＤＣＯの値が「−１」より大であるか否か、すなわち、リリース中のチャンネルをサーチした結果が当該レジスタＤＣＯにセットされているか否かを判断する。
そして、リリース中のチャンネルをサーチした結果が当該レジスタＤＣＯにセットされていない場合、つまり、リリース中のチャンネルを初めてサーチした時には、ここでの判断結果が「ＮＯ」となり、ステップＳＧ２１に進む。ステップＳＧ２１では、リリース中のチャンネルを初めてサーチした時のチャンネルの番号、つまり、現レジスタＮＵＭの値をレジスタＤＣＯにセットする。
【００８４】
次いで、ＣＰＵ３は再び上述したステップＳＧ１８を介して全３２チャンネル分のサーチがなされたか否かを判断し、サーチが完了していない時には、ステップＳＧ１９においてレジスタＮＵＭを歩進させる。そして、このレジスタＮＵＭの更新に応じてリリース中のチャンネルが検出されたとする。そうすると、ステップＳＧ１７の判断結果が「ＹＥＳ」となり、ステップＳＧ２０に進む。この場合、ステップＳＧ２０では、レジスタＤＣＯに先にサーチしたリリース中のチャンネルの番号がセットされているから、判断結果は「ＹＥＳ」となり、ステップＳＧ２２へ処理を進める。
【００８５】
ステップＳＧ２２では、レジスタＣＨ（ＤＣＯ）の値がレジスタＣＨ（ＮＵＭ）より大であるか否か、すなわち、先にサーチされたチャンネルに割り当てられている演奏パート番号が、現在サーチされたチャンネルに割り当てられている演奏パート番号より大であるか否かを判断する。
本実施例の場合、前述した第１実施例と同様に、演奏パート番号が小さい程、そのパート番号に付与される優先順位が低くなるので、上記ステップＳＧ２２では、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否か」を判断することになる。よって、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「ＹＥＳ」となり、ステップＳＧ２１に進み、先にサーチされたチャンネルより優先順位の低い、現在サーチされたチャンネルのチャンネルの番号をレジスタＤＣＯにセットする。
【００８６】
これに対し、「先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より下となる」場合には、ステップＳＧ２２の判断結果が「ＮＯ」となり、上述したステップＳＧ１８へ処理を進める。
そして、全チャンネル分のサーチが完了すると、このステップＳＧ１８の判断結果が「ＹＥＳ」となり、ステップＳＧ２３へ進み、レジスタＤＣＯの値が「−１」であるか否かを判断する。ここで、リリース中のチャンネルをサーチした場合には判断結果が「ＮＯ」となり、本ルーチンを終了するが、そうでない場合には後述するステップＳＧ２４へ処理を進める。
【００８７】
このように、上記ステップＳＧ１６〜ＳＧ２３においては、前述した（ｂ）項の動作に続いてリリース中のチャンネルを順次サーチするので、結果的に、リリース中、かつ、リリース優先フラグＲＰＦが「１（ＯＮ）」のチャンネルサーチがなされる。このチャンネルサーチでは、先にサーチしたチャンネルの優先順位と現在サーチしたチャンネルの優先順位とを比較し、より低い優先順位にあるチャンネルの番号をレジスタＤＣＯに書き込んで更新するから、最終的に、リリース中であって、リリース優先フラグＲＰＦが「１（ＯＮ）」のチャンネルの内の最も優先順位の低いチャンネル、つまり、チャンネル割当順位２位のチャンネル（図１７参照）の番号がレジスタＤＣＯに格納される。これにより、チャンネル割当順位２位とされたチャンネルがトランケートされることになる。
【００８８】
（ｃ）キーオン（ノートオン）中のチャンネルサーチ処理
リリース中のチャンネルが存在しない時には、上記ステップＳＧ２３の判断結果が「ＹＥＳ」となり、図２１に示すステップＳＧ２４へ処理を進め、これ以後、キーオン（ノートオン）中のチャンネルをサーチする。
まず、ステップＳＧ２４では、レジスタＮＵＭをゼロクリアし、続く、ステップＳＧ２５では、レジスタＮＵＭの値をレジスタＤＣＯにセットする。次いで、ステップＳＧ２６では、全３２チャンネル分のサーチがなされたか否かを判断する。そして、全３２チャンネル分のサーチが完了していない時には、判断結果が「ＹＥＳ」となり、ステップＳＧ２７に進み、レジスタＮＵＭの値を歩進させ、次のステップＳＧ２８に進む。
【００８９】
ステップＳＧ２８に進むと、ＣＰＵ３は、レジスタＣＨ（ＤＣＯ）の値がレジスタＣＨ（ＮＵＭ）より大であるか否か、すなわち、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルの優先順位より上であるか否かを判断する。ここで、先にサーチされたチャンネルの優先順位が現在サーチされたチャンネルのそれより上であると、この判断結果が「ＹＥＳ」となり、ステップＳＧ２５に進み、現サーチ時点で最も優先順位の低いチャンネルの番号をレジスタＤＣＯにセットする。
一方、上記ステップＳＧ２８の判断結果が「ＮＯ」の場合には、再びステップＳＧ２６に戻り、以後、全チャンネルのサーチが完了するまでの間、ステップＳＧ２６〜ＳＧ２８を繰り返し、全チャンネルのサーチが完了した時にステップＳＧ２６の判断結果が「ＮＯ」となり、このルーチンを終了する。
【００９０】
このように、上記ステップＳＧ２４〜ＳＧ２８では、前述した（ｃ）項の動作に続いて最も優先順位の低いチャンネルを順次サーチするので、結果的に、キーオン（ノートオン）中の最も優先順位の低いチャンネルサーチがなされることになり、こうしたサーチによって得られたチャンネルがチャンネル割当順位３位のチャンネル（図１７参照）としてレジスタＤＣＯにセットされる。これにより、チャンネル割当順位３位とされたチャンネルがトランケートされることになる。
【００９１】
以上説明したように、第３実施例では、全発音チャンネルが発音割当されている時に新たなキーオン（ノートオン）が発生すると、最初に、リリース中、かつ、リリース優先フラグＲＰＦが「０（ＯＦＦ）」とされたチャンネルの内の最も優先順位の低いチャンネルをサーチし、これに該当するチャンネルがあった時には、当該チャンネルを割当順位１位としてトランケートする。次いで、この割当順位１位に該当するチャンネルがサーチし得ない時には、リリース中、かつ、リリース優先フラグＲＰＦが「１（ＯＮ）」とされたチャンネルの内の最も優先順位の低いチャンネルをサーチし、これに該当するチャンネルがあった時には、当該チャンネルを割当順位２位としてトランケートする。そして、割当順位１位、２位のチャンネルが存在しない場合には、キーオン（ノートオン）中のチャンネルの内の最も優先順位の低いチャンネルをトランケートするようにしており、このようにすることで、優先順位が付与された各音色の楽音や、特徴的なエンベロープ形状を持つ楽音等、その楽音の属性を考慮した発音割り当てが可能になる訳である。
【００９２】
なお、上述した各実施例では、リリース波形の発音継続を優先させるべくリリース優先フラグＲＰＦを設けるようにしたが、これはリリース波形に限定されず、例えば、サステイン領域の発音継続を優先させるフラグを設け、このフラグに応じて上述した各実施例と同様なトランケート処理を行うようにしても良い。
また、例えば、所定音高以上の楽音に対して発音を優先的に継続させるフラグを設けてトランケートする態様として新たな演奏効果を得ることも可能である。
【００９３】
【発明の効果】
本発明によれば、発音チャンネル情報記憶手段が各発音チャンネル毎にアサインされる音色に対応した楽音パラメータを記憶しておき、各発音チャンネルの全てが前記アサインされた音色の楽音を発生している最中に新たな押鍵が発生した場合、発音チャンネル検出手段が発音チャンネル情報記憶手段から各発音チャンネル毎にアサインされる音色の楽音パラメータに基づいて最も消音に適した楽音を発生している発音チャンネルを検出し、楽音発生指示手段がこの発音チャンネル検出手段によって検出された発音チャンネルへ新たな押鍵に対応した楽音の発生を指示するので、リリースエンベロープに特徴を有する等の、後に特徴を有する音色の楽音を消音してしまうことがなく、楽音の音色の特徴を考慮した発音割り当てを行うことができる。
【図面の簡単な説明】
【図１】本発明による第１実施例の構成を示すブロック図である。
【図２】第１実施例における音色テーブルＴＣＴＢＬの構成を示す図である。
【図３】第１実施例におけるパートテーブルＣＨＴＢＬの構成を示す図である。
【図４】第１実施例におけるチャンネルテーブルＴＧＴＢＬの構成を示す図である。
【図５】第１実施例における演奏信号形式の一例を説明するための図である。
【図６】エンベロープ波形形状を説明するための図である。
【図７】第１実施例による発音チャンネル割当順位を説明するための図である。
【図８】第１実施例におけるメイン処理ルーチンの動作を示すフローチャートである。
【図９】第１実施例におけるイニシャル処理ルーチンの動作を示すフローチャートである。
【図１０】第１実施例における鍵処理ルーチンの動作を示すフローチャートである。
【図１１】第１実施例における外部入力処理ルーチンの動作を示すフローチャートである。
【図１２】第１実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図１３】第１実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図１４】第１実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図１５】第２実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図１６】変形例を説明するための図である。
【図１７】第３実施例によるチャンネル割当順位を説明するための図である。
【図１８】第３実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図１９】第３実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図２０】第３実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【図２１】第１実施例におけるチャンネル決定処理ルーチンの動作を示すフローチャートである。
【符号の説明】
１  鍵盤部
２  操作部
３  ＣＰＵ（発音チャンネル検出手段、楽音発生指示手段）
４  プログラムＲＯＭ
５  データＲＯＭ
６  ワークＲＡＭ（発音チャンネル情報記憶手段）
７  外部入力部
８  音源部
９  Ｄ／Ａ変換部
１０  サウンドシステム
【図１】
0003567293.tif 000002
【図２】
0003567293.tif 000003
【図３】
0003567293.tif 000004
【図４】
0003567293.tif 000005
【図５】
0003567293.tif 000006
【図６】
0003567293.tif 000007
【図７】
0003567293.tif 000008
【図８】
0003567293.tif 000009
【図９】
0003567293.tif 000010
【図１０】
0003567293.tif 000011
【図１１】
0003567293.tif 000012
【図１２】
0003567293.tif 000013
【図１３】
0003567293.tif 000014
【図１４】
0003567293.tif 000015
【図１５】
0003567293.tif 000016
【図１６】
0003567293.tif 000017
【図１７】
0003567293.tif 000018
【図１８】
0003567293.tif 000019
【図１９】
0003567293.tif 000020
【図２０】
0003567293.tif 000021
【図２１】
0003567293.tif 000022