(57)【特許請求の範囲】
【請求項１】
ＣＰＵが、
１つの楽音が複数の周波数成分からなる複数の楽音であって、発音開始タイミングが異なり、しかも同時に発生される複数の楽音のうち、同じ周波数の成分音を判別手段に対して判別させ、
上記異なる発音開始タイミングうち、後のタイミングにおいて、この判別された同じ周波数の各成分音ごとの各エンベロープ波形につき、合成したエンベロープ波形を演算させ、これを１つのエンベロープ波形として出力手段に対して出力させ、
このエンベロープ波形が１つに合成された成分音を、割り当て手段に対して１つのチャンネルにまとめて割り当てさせることであって、このチャンネルは時分割処理により複数形成されるものであることを特徴とする楽音のチャンネル割り当て方法。
【請求項２】
１つの楽音が複数の周波数成分からなる複数の楽音であって、発音開始タイミングが異なり、しかも同時に発生される複数の楽音のうち、同じ周波数の成分音を判別する手段と、
上記異なる発音開始タイミングうち、後のタイミングにおいて、この判別された同じ周波数の各成分音ごとの各エンベロープ波形につき、合成したエンベロープ波形を演算し、これを１つのエンベロープ波形として出力する手段と、
このエンベロープ波形が１つに合成された成分音を、１つのチャンネルにまとめて割り当てる手段とを備え、このチャンネルは時分割処理により複数形成されるものであることを特徴とする楽音のチャンネル割り当て装置。
【請求項３】
新たな楽音が発生されるときまたは発生されている楽音が消滅されるとき、この楽音またはこの楽音の成分音の同じ周波数の各エンベロープ発生量につき、合成したエンベロープ発生量の各エンベロープタイム及びエンベロープスピードを演算して、この演算したエンベロープタイム及びエンベロープスピードに基づいて、上記周波数の楽音またはこの楽音の成分音の合成エンベロープを１つのチャンネルで生成することを特徴とする請求項２記載の楽音のチャンネル割り当て装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音のチャンネル割り当て装置、楽音のチャンネル割り当て方法、楽音のエンベロープ制御装置または楽音のエンベロープ制御方法に関し、特に同じ周波数の楽音の合成の制御に関する。
【０００２】
【従来技術】
従来、電子楽器のチャンネル割り当て装置では、同時に発音できる楽音数より多くない数の楽音生成チャンネルが時分割処理により構成され、新たな楽音の発生の指示があると、この楽音が上記複数のチャンネルの空きチャンネルに割り当てられ、これにより楽音が発生される。
【０００３】
この各チャンネルに割り当てられる楽音は、キーボードの各キーの操作に応じており、音高（周波数）が異なっている。この楽音の波形は同じであったり異なっていたりする。この楽音の波形が異なれば音色も異なる。
【０００４】
また、同時に発生される各楽音のエンベロープは、それぞれ個別かつ独立に生成される。このエンベロープは、アタック、ディケイ、サステーン、リリースなどの各フェーズに分かれている。各フェーズはエンベロープスピード及びエンベロープレベル、またはエンベロープスピード及びエンベロープタイム、またはエンベロープレベル及びエンベロープタイムで決定される。
【０００５】
【発明が解決しようとする課題】
ところが、各チャンネルに割り当てられる複数の楽音の中には場合によって同じ音高（周波数）のものがあり、このような同じ周波数の楽音に別々のチャンネルを割り当てるのは無駄であった。また、それぞれ個別に生成されるエンベロープの楽音の中にも場合によって同じ音高（周波数）のものがあり、このような同じ周波数の楽音に別々のエンベロープを付加するのは無駄であった。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明では、同時に発生される複数の楽音のうち同じ周波数の楽音を判別し、この判別された楽音の発生量を合成して１つのチャンネルにまとめて割り当てるようにした。これにより、使用するチャンネルの数を減らしてチャンネルの有効利用を図ることができる。
【０００７】
また、本発明では、同時に発生される複数の楽音のうち同じ周波数の楽音を判別し、この判別された各楽音のエンベロープ波形を合成して１つの楽音として出力するようにした。これにより、使用するチャンネルの数を減らしてチャンネルの有効利用を図ることができる。
【０００８】
【発明の実施の形態】
１．全体回路
図１は楽音制御装置または電子楽器の全体回路を示す。キーボード１１の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路１２によってスキャンされ、キーオン、キーオフを示すデータが検出され、コントローラ２によってプログラム／データ記憶部４に書き込まれる。そして、それまでプログラム／データ記憶部４に記憶されていた各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が、コントローラ２によって行われる。
【０００９】
このキーボード１１の各キーには段差タッチスイッチが設けられ、各段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン／オフごとにオンイベント／オフイベントの検出が行われる。この段差スイッチによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。
【００１０】
このキーボード１１は、ローアキーボード、アッパーキーボード、ペダルキーボード等から成っており、それぞれにつき異なる音色の楽音、つまりエンベロープ波形の異なる楽音が発音される。そして、アッパーキーボードについては、１つのキーオンで２音色の楽音を同時に鳴らすことも可能である。なお、キーボード１１は、電子弦楽器、電子吹奏（管）楽器、電子打楽器（パッド等）、コンピュータのキーボード等で代用される。
【００１１】
パネルスイッチ群１３の各スイッチは、パネルスキャン回路１４によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、コントローラ２によってプログラム／データ記憶部４に書き込まれる。そして、それまでプログラム／データ記憶部４に記憶されていた各スイッチのオン、オフの状態を示すデータと比較され、各スイッチのオンイベント、オフイベントの判別が、コントローラ２によって行われる。
【００１２】
ミディインターフェース１５は、外部接続された電子楽器との間で楽音データの送受を行うためのインタフェースである。この楽音データはＭＩＤＩ（ミュージカルインスツルメントデジタルインタフェース）規格のもので、この楽音データに基づいた発音も行われる。
【００１３】
上記キーボード１１またはミディインターフェース１５には、自動演奏装置も含まれる。これらキーボード１１、パネルスイッチ群１３及びミディインターフェース１５から発生された演奏情報（楽音発生情報）は、楽音を発生させるための情報である。
【００１４】
上記演奏情報（楽音発生情報）は、音楽的ファクタ（因子）情報であり、音高（音域）情報（音高決定因子）、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、ＭＩＤＩ等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、ＭＩＤＩ等に対応している。
【００１５】
上記音高情報はキーナンバデータＫＮとして取り込まれる。このキーナンバデータＫＮはオクターブデータ（音域データ）と音名データとからなる。演奏分野情報は、パートナンバデータＰＮとして取り込まれ、このパートナンバデータＰＮは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【００１６】
発音時間情報は、トーンタイムデータＴＭとして取り込まれ、後述のフローチャートによって求められたり、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズで代用される。この発音時間情報は特願平６−２１９３２４号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【００１７】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ４０のオン／オフデータが「１」の楽音の数に基づき、この数は特願平６−２４２８７８号の図９及び図１５、特願平６−２４７６８５５号の図８及び図１８、特願平６−２７６８５７号の図９及び図２０、特願平６−２７６８５８号の図９及び図２１のフローチャートに基づいて求められる。
【００１８】
共鳴度情報は、同時に発音している１つの楽音と他の楽音との共鳴度を示す。この１つの楽音の音高周波数と他の楽音の音高周波数とが１：２、２：３、３：４、４：５、５：６など小さい整数数倍比であれば共鳴度情報の値は大きく、９：８、１５：８、１５：１６、４５：３２、６４：４５など大きい整数数倍比であれば共鳴度情報の値は小さくなる。この共鳴度情報は特願平１−３１４８１８号の第７図の共鳴相関テーブル５３または共鳴比率テーブル５４から読み出される。
【００１９】
さらに、上記パネルスイッチ群１３には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。
【００２０】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ（因子）情報であり、音色情報（音色決定因子）、タッチ情報（発音指示操作の速さ／強さ）、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像（ステレオ）情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報（楽音情報）に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体される。
【００２１】
上記音色情報は、鍵盤楽器（ピアノ等）、管楽器（フルート等）、弦楽器（バイオリン等）、打楽器（ドラム等）の楽器（発音媒体／発音手段）の種類等に対応しており、トーンナンバデータＴＮとして取り込まれる。上記エンベロープ情報は、エンベロープレベルＥＬ、エンベロープタイムＥＴ、エンベロープフェーズＥＦなどである。
【００２２】
このような音楽的ファクタ情報は、コントローラ２へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報（楽音発生情報）及び楽音制御情報はコントローラ２で処理され、各種データが楽音信号発生部５へ送られ、楽音波形信号ＭＷが発生される。コントローラ２はＣＰＵ、ＲＯＭ及びＲＡＭなどからなっている。
【００２３】
プログラム／データ記憶部４（内部記憶媒体／手段）はＲＯＭまたは書き込み可能なＲＡＭ、フラッシュメモリまたはＥＥＰＲＯＭ等の記憶装置からなり、光ディスクまたは磁気ディスク等の情報記憶部７（外部記憶媒体／手段）に記憶されるコンピュータのプログラムが書き写され記憶される（インストール／転送される）。またプログラム／データ記憶部４には外部の電子楽器またはコンピュータから上記ＭＩＤＩ装置または送受信装置を介して送信されるプログラムも記憶される（インストール／転送される）。このプログラムの記憶媒体は通信媒体も含む。
【００２４】
このインストール（転送／複写）は、情報記憶部７が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ２が各種処理を行うための後述するフローチャートに応じたプログラムである。
【００２５】
なお、本装置に予め別のオペレーティングシステム、システムプログラム（ＯＳ）、その他のプログラムが記憶され、上記プログラムはこれらのＯＳ、その他のプログラムとともに実行されてもよい。このプログラムは本装置（コンピュータ本体）にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項（クレーム）に記載された処理・機能を実行させることができればよい。
【００２６】
また、このプログラムの一部又は全部が本装置以外の１つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ／既に処理されたデータ／プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【００２７】
このプログラム／データ記憶部４には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【００２８】
楽音信号発生部５では、所定長の楽音波形信号ＭＷが繰り返し発生されサウンドシステム６から発音出力される。上記音高情報に応じて、この繰り返し発生される楽音波形信号ＭＷの発生速度は変化される。また上記音高色情報などの音楽的ファクタ情報に応じて、この繰り返し発生される楽音波形信号ＭＷの波形形状は切り換えられる。この楽音信号発生部５は時分割処理によって複数の楽音信号が同時に生成されポリフォニックに発音される。
【００２９】
タイミング発生部３からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータＣＨＮｏ、タイムカウントデータＴＩなどを含む。このタイムカウントデータＴＩは、絶対時間つまり時間の経過を示し、このタイムカウントデータＴＩのオーバフローリセットから次のオーバフローリセットまでの周期は、各楽音のうち最も長い発音時間より長く、場合によって数倍に設定される。
【００３０】
２．成分音テーブル２０
図２はプログラム／データ記憶部４内の成分音テーブル２０を示す。この成分音テーブル２０には、各音色（トーンナンバデータＴＮ）の楽音を構成する各成分音のデータが記憶され、対応する成分音のデータがトーンナンバデータＴＮから変換され読み出される。この成分音のデータは、複数の周波数ナンバ比データＦＮＲと複数のエンベロープデータからなっている。
【００３１】
周波数ナンバ比データＦＮＲは、音高に応じた基本周波数に対する各成分音の周波数の比を示す。指定された音高周波数に対して、この周波数ナンバ比データＦＮＲが乗算され、各成分音の周波数が求められる。基本周波数の周波数ナンバ比データＦＮＲは「１」であるから省略されてもよい。
【００３２】
エンベロープデータは、上記各成分音ごとのエンベロープを示す。この各エンベロープデータは、各エンベロープフェーズごとのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴからなっている。エンベロープスピードデータＥＳはエンベロープのデジタル演算１周期当たりの演算のステップ値を示す。エンベロープタイムデータＥＴは各フェーズごとのエンベロープ演算時間（発生時間、発音時間）、つまり上記デジタル演算の各フェーズのごとの演算回数を示す。このエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴによって演算されるエンベロープ波形の振幅は、各成分音（各楽音）の発生量を示す。
【００３３】
この成分音の数は１つの音色につき複数であるが、場合によって１つもある。この成分音は１つの楽音につき合成されて出力される。この合成割合は上記エンベロープデータに応じて変化する。もしこのエンベロープデータによるエンベロープ演算レベルが「０」であれば、当該成分音の割合は「０」となる。この各成分音のそれぞれに１つずつチャンネルが割り当てられ、個別にエンベロープ制御され、合成されて出力される。
【００３４】
３．アサインメントメモリ４０
図３は、楽音信号発生部５のアサインメントメモリ４０を示す。アサインメントメモリ４０には、複数（１６、３２または６４等）のチャンネルメモリエリアが形成されており、上記楽音信号発生部５に形成された複数の楽音生成チャンネルに割り当てられた成分音に関するデータが記憶される。
【００３５】
これら各チャンネルメモリエリアには、チャンネルが割当られた成分音の周波数ナンバデータＦＮ、キーナンバデータＫＮ及び上記エンベロープスピードデータＥＳ並びにエンベロープタイムデータＥＴが記憶される。なお、場合によって、トーンナンバデータＴＮ、タッチデータＴＣ、トーンタイムデータＴＭ、パートナンバデータＰＮ、オン／オフデータ、エンベロープフェーズデータＥＦ等も記憶される。
【００３６】
オン／オフデータは割り当られ発音する楽音（成分音）がキーオン中または発音中（“１”）かキーオフ中または消音中（“０”）かを示す。周波数ナンバデータＦＮは割り当られ発音する成分音の周波数値を示し、上記キーナンバデータＫＮから変換され、さらに上記周波数ナンバ比データＦＮＲが乗算される。上記プログラム／データ記憶部４には、この変換のためのテーブル（デコーダ）が設けられている。
【００３７】
上記エンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴは上述したとおりである。このエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴは、同じ周波数の新たな成分音が当該チャンネルに割り当てられるたびに書き換えられ、この新たな成分音を合成したエンベロープのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴに置き換えられる。
【００３８】
キーナンバデータＫＮは割り当られ発音する楽音の音高（周波数）を示し、上記音高情報に応じて決定される。このキーナンバデータＫＮは、１つの楽音を構成する各成分音すべてについて記憶され、オンイベントがあって当該成分音がチャンネル割り当てされ合成されるたびに、キーナンバデータＫＮがアサインメントメモリ４０の該当チャンネルメモリエリアに付加記憶され、オフイベントのたびに対応するキーナンバデータＫＮは消去される。キーナンバデータＫＮの上位データは音域またはオクターブを示し、下位データは音名を示す。
【００３９】
この各キーナンバデータＫＮに対応して当該成分音のエンベロープのリリースのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴが記憶される。このリリースのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴが１つの成分音で複数あれば、この複数全て記憶される。
【００４０】
トーンナンバデータＴＮは、割り当てられ発音する楽音の音色を示し、上記音色情報に応じて決定される。このトーンナンバデータＴＮが異なれば音色も異なり、この楽音の楽音波形も異なる。タッチデータＴＣは、発音操作の速さまたは強さを示し、上記段差スイッチの操作に基づいて求められ、または上記タッチ情報に応じて決定される。パートナンバデータＰＮは、上述したように各演奏エリアを示し、発音操作された楽音がどの演奏エリアからのものかによって設定される。トーンタイムデータＴＭは、キーオンイベントからの経過時間を示す。
【００４１】
これら各チャンネルメモリエリアの各データは、オンタイミング及び／又はオフタイミングに書き込まれ、各チャンネルタイミングごとに書き換えられたり、読み出されたりして、上記楽音信号発生部５で処理される。このアサインメントメモリ４０は、楽音信号発生部５の中ではなく、プログラム／データ記憶部４またはコントローラ２の中に設けてもよい。
【００４２】
上記時分割処理によって形成されるチャンネル、すなわち複数の楽音（成分音）を並行して発生するための複数の楽音発生システムへの各楽音の割り当て方法またはトランケート方法は、例えば特願平１−４２２９８号、特願平１−３０５８１８号、特願平１−３１２１７５号、特願平２−２０８９１７８号、特願平２−４０９５７７号、特願平２−４０９５７８号に示された方法が使われる。
【００４３】
４．楽音信号発生部５
図４は上記楽音信号発生部５を示す。上記アサインメントメモリ４０の各チャンネルの周波数ナンバデータＦＮ等は波形読み出し部４１へ送られ、楽音波形データＭＷが周波数ナンバデータＦＮに応じた速度（音高）で読み出される。読み出された楽音波形データＭＷは乗算器４３でエンベロープデータＥＮが乗算合成され、累算器４４で全チャンネルの楽音波形データが累算合成され、上記サウンドシステム６で発音される。
【００４４】
この楽音波形データＭＷはサイン波１種類だけである。したがって、１つの楽音につき周波数の異なる複数のサイン波が高調波合成されて出力される。よって各サイン波の振幅や周波数が変化すれば、合成される楽音の波形も変化し音色も変化する。このサイン波はメモリに記憶されるのではなく、三角関数演算によって上記トーンタイムデータＴＭまたは上記タイムカウントデータＴＩから変換されてもよい。
【００４５】
なお、この楽音波形データＭＷはサイン波以外の複雑な波形でもよいし、音色、パート、音高（音域）、タッチ、発音時間ごとに異なる波形が記憶され選択されてもよい。この場合、トーンナンバデータＴＮ、パートナンバデータＰＮ、タッチデータＴＣ等は、波形読み出し部４１へ送られ、波形メモリ４２からトーンナンバデータＴＮ、パートナンバデータＰＮ、タッチデータＴＣに応じた楽音波形データＭＷが選択され、この選択された楽音波形データＭＷが周波数ナンバデータＦＮに応じた速度（音高）で読み出される。上記アサインメントメモリ４０の各チャンネルのエンベロープスピードデータＥＳは、加算器４６、エンベロープ演算メモリ４８で時分割に順次累算され、エンベロープ演算データＥＮが演算され、上記乗算器４３へ上記エンベロープデータＥＮとして送られる。エンベロープ演算メモリ４８は時分割チャンネル数に応じたエリアを有し、各チャンネルのエンベロープ演算データＥＮが記憶され、各チャンネルごとにエンベロープが演算される。
【００４６】
このエンベロープ演算メモリ４８は、上記チャンネルナンバデータＣＨＮｏによってアドレス指定され、この指定されたアドレスのみが書き込み／読み出しされたりリセットされたりする。このエンベロープ演算メモリ４８の各チャンネルエリアはオフイベント信号または／及びオンイベント信号によって個別にリセット（クリア）される。
【００４７】
上記アサインメントメモリ４０の各チャンネルのエンベロープタイムデータＥＴは、セレクタ４７、エンベロープタイムメモリ４９及び加算器５１で順次「−１」され、「０」になるとフェーズ終了信号がナンドゲート群５２で検出され出力される。このフェーズ終了信号はエンベロープの各フェーズの終了を示す。
【００４８】
このフェーズ終了信号はフェーズカウンタ５０へ入力され、インクリメントすなわち＋１される。このフェーズカウンタ５０では、各チャンネルのエンベロープのフェーズがカウントされる。このフェーズカウンタ５０は、上記時分割チャンネル数に応じたカウンタが設けられ、上記チャンネルナンバデータＣＨＮｏによって指定されるカウンタのみがイネーブルとされ、この指定されたカウンタのみがインクリメントされたりリセットされたりする。
【００４９】
上記フェーズカウンタ５０は、オンイベント及びオフイベント時にコントローラ２によって、上記チャンネルナンバデータＣＨＮｏによって指定されるカウンタのみがリセット（クリア）される。このとき上述したようにエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴの合成／書き換えが行われる。
【００５０】
このフェーズカウンタ５０のエンベロープフェーズデータＥＦは上記アサインメントメモリ４０にアドレスデータとして送られ、各チャンネルの中の各フェーズごとのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴが読み出されたり書き込まれたりする。アサインメントメモリ４０は、上記チャンネルナンバデータＣＨＮｏによってアドレス指定され、この指定されたアドレスのみが書き込み／読み出しされたクリアされたりする。このアサインメントメモリ４０の各チャンネルエリアはオフイベント信号または／及びオンイベント信号によって個別にリセット（クリア）される。
【００５１】
上記フェーズ終了信号は上記セレクタ４７に送られて、上記エンベロープタイムデータＥＴが次のフェーズのエンベロープタイムデータＥＴに切り換えられる。上記エンベロープタイムメモリ４９は、上記チャンネルナンバデータＣＨＮｏによってアドレス指定され、この指定されたアドレスのみが書き込み／読み出しされたりリセットされたりする。このエンベロープタイムメモリ４９の各チャンネルエリアはオフイベント信号（オンイベント信号）によって個別にリセット（クリア）される。
【００５２】
５．処理全体
図５はコントローラ（ＣＰＵ）２によって実行される処理全体のフローチャートを示す。この処理全体は本楽音生成装置の電源オンによって開始され、電源オフまで繰り返し実行される。
【００５３】
まず、プログラム／データ記憶部４の初期化など種々のイニシャライズ処理が行われ（ステップ０１）、上記キーボード１１またはミディインターフェース１５での手動演奏または自動演奏に基づき、発音処理が行われる（ステップ０３）。
【００５４】
この発音処理では、空きチャンネルがサーチされ、サーチされた空きチャンネルにオンイベントに係る楽音が割り当てられる。この楽音の内容は、上記キーボード１１またはミディインターフェース１５からの上記演奏情報（楽音発生情報）、楽音制御情報の音楽的ファクタ情報及びこのときプログラム／データ記憶部４に既に記憶されている音楽的ファクタ情報によって決定される。
【００５５】
この場合、サーチされた空きチャンネルのアサインメントメモリ４０のエリアに「１」のオン／オフデータ、周波数ナンバデータＦＮ、エンベロープスピードデータＥＳ、エンベロープタイムデータＥＬ、「０」のエンベロープフェーズデータＥＦなどが書き込まれる。場合によって、トーンナンバデータＴＮ、タッチデータＴＣ、パートナンバデータＰＮ、「０」のトーンタイムデータＴＭも書き込まれる。
【００５６】
次いで、上記キーボード１１またはミディインターフェース１５での手動演奏または自動演奏に基づき、消音（減衰）処理が行われる（ステップ０５）。この消音（減衰）処理では、オフイベント（キーオフイベント、消音イベント）に係る楽音が割り当てられているチャンネルがサーチされ当該楽音が減衰され消音される。この場合、キーオフイベントに係る楽音のエンベロープフェーズがリリースとなり、エンベロープレベルが次第に「０」になる。
【００５７】
さらに、上記ミディインターフェース１５またはパネルスイッチ群１３の各種スイッチの操作があれば、このスイッチに対応する音楽的ファクタ情報が取り込まれ、プログラム／データ記憶部４に記憶され、音楽的ファクタ情報が変更される（ステップ０６）。この後、その他の処理が実行され（ステップ０７）、上記ステップ０２からこのステップ０７までの処理が繰り返される。
【００５８】
６．発音処理
図６は上記ステップ０３の発音処理のフローチャートを示す。まずオンイベントがあると（ステップ１１）、上記成分音テーブル２０に基づいてこのオンイベントに係る楽音のトーンナンバデータＴＮに対応する周波数ナンバ比データＦＮＲ及びエンベロープスピードデータＥＳ並びにエンベロープタイムデータＥＴが読み出される（ステップ１２）。
【００５９】
次いで、このオンイベントに係る楽音のキーナンバデータＫＮに対応した周波数ナンバデータＦＮに、この読み出された各周波数ナンバ比データＦＮＲが乗算され、各成分音の周波数ナンバデータＦＮが求められる（ステップ１３）。そして、アサインメントメモリ４０内の既に割り当てられている各成分音の周波数ナンバデータＦＮと、この求められた各周波数ナンバデータＦＮとが一致していれば（ステップ１４）、このチャンネルの各フェーズのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴが合成エンベロープのものに書き換えられ、キーナンバデータＫＮが付加記憶される（ステップ１５）。この合成エンベロープでは、既にこのチャンネルに割り当てられている単独成分音または合成成分音のエンベロープに、この新たな成分音のエンベロープが加算合成される。このステップ１５のエンベロープ合成処理は後述する。
【００６０】
また、既に割り当てられている各成分音の周波数ナンバデータＦＮと、求められた各周波数ナンバデータＦＮとが一致していなければ（ステップ１４）、空きチャンネルがサーチされ（ステップ１６）、サーチされた空きチャンネルのアサインメントメモリ４０のエリアに上記成分音の周波数ナンバデータＦＮ、キーナンバデータＫＮ及びエンベロープスピードデータＥＳ並びにエンベロープタイムデータＥＴが書き込まれる（ステップ１７）。以上のエンベロープ合成処理またはチャンネル割り当て処理が他の成分音についても繰り返され（ステップ１８）、その他の処理が行われる（ステップ１９）。
【００６１】
７．エンベロープ合成処理
図７は、上記ステップ１５のエンベロープ合成処理のフローチャートを示す。まず、上記フェーズカウンタ５０の当該チャンネルのフェーズカウント値とエンベロープタイムメモリ４９の当該チャンネルの残存エンベロープタイムデータＥＴがコントローラ２によって読み出され（ステップ２１）、この残存エンベロープタイムデータＥＴに残りのフェーズのエンベロープタイムデータＥＴが順次累算され、現在時点から成分音ａの各フェーズの末尾までの絶対時間が求められる（ステップ２２）。
【００６２】
図８の例では、成分音ａが発音開始し（タイミングＴａ０）、成分音ｂが発音開始し（タイミングＴｂ０）、続いて成分音ａのアタックフェーズが終了し（タイミングＴａ１）、この後成分音ａのディケイが終了し（タイミングＴａ２）、成分音ｂのアタックが終了し（タイミングＴｂ１）、成分音ａのサスティーンが終了し（タイミングＴａ３）、成分音ｂのディケイが終了し（タイミングＴｂ２）、成分音ａのリリースが終了し（タイミングＴａ４）、成分音ｂのサスティーンが終了し（タイミングＴｂ３）、成分音ｂのリリースが終了する（タイミングＴｂ４）。
【００６３】
この場合、上記残存エンベロープタイムデータＥＴは（Ｔａ１−Ｔｂ０）となり、上記残りのフェーズのエンベロープタイムデータＥＴの累算値は（Ｔａ２−Ｔｂ０）、（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）となる。各フェーズの各エンベロープタイムデータＥＴはこれら各タイミングＴａ０、Ｔａ１、Ｔａ２、Ｔａ３、Ｔａ４の間の時間を示している。したがって、この残りのフェーズのエンベロープタイムデータＥＴが累算されれば、成分音ｂの発音開始から各タイミングＴａ１、Ｔａ２、Ｔａ３、Ｔａ４までの時間が求められる。
【００６４】
この求められた各絶対時間（Ｔａ２−Ｔｂ０）、（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）には、この各タイミング直前のフェーズの成分音ａのエンベロープスピードデータＥＳと成分音ａを示すフラグａ（「１」）も対応づけて記憶される（ステップ２３）。
【００６５】
次いで、成分音ｂについても同様にして、残存エンベロープタイムデータＥＴに残りのフェーズのエンベロープタイムデータＥＴが順次累算され、現在時点から成分音ｂの各フェーズの末尾までの絶対時間が求められる（ステップ２４）。この絶対時間は同様に（Ｔｂ１−Ｔｂ０）、（Ｔｂ２−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）となる。この求められた各絶対時間（Ｔｂ１−Ｔｂ０）、（Ｔｂ２−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）には、この各タイミング直前のフェーズの成分音ｂのエンベロープスピードデータＥＳと成分音ｂを示すフラグｂ（「０」）も対応づけて記憶される（ステップ２５）。
【００６６】
なお、上記タイミングＴａ３、Ｔｂ３は、いずれもオフ操作のタイミングであり、上記タイミングＴａ４、Ｔｂ４はいずれもオフ操作のタイミングによってシフトされる。したがって、上記絶対時間（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）はここでは求められない。しかし、エンベロープの形状がオフ操作によって変化しない場合には求められる。上記絶対時間（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）は、後述するように消音処理のときに求められる。このため、各成分音のサスティーンの末尾については、絶対時間は取り得る最大値とされ、エンベロープスピードデータＥＳは「０」とされる。
【００６７】
ただし、上記成分音ａがリリースに入っていて、成分音ｂが発音開始する場合には、上記絶対時間（Ｔａ４−Ｔｂ０）は求められる。成分音ａはすでにオフ操作され、リリース終了のタイミングがはっきりしているからである。
【００６８】
そして、上記ステップ２２乃至２５で求められた絶対時間（Ｔａ２−Ｔｂ０）、（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）、（Ｔｂ１−Ｔｂ０）、（Ｔｂ２−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）は大きい順に並べられ、対応づけられたエンベロープスピードデータＥＳも同様に並べ変えられる（ステップ２６）。これにより、図８（３）に示すような各タイミングが順番にソートされる。
【００６９】
図９（１）はこのようにしてソートされた絶対時間とエンベロープスピードデータＥＳと成分音フラグを示す。このデータ内容は、上記図８（３）の合成エンベロープ波形に対応したものとなっている。
【００７０】
次いで、各絶対時間（Ｔａ２−Ｔｂ０）、（Ｔａ３−Ｔｂ０）、（Ｔａ４−Ｔｂ０）、（Ｔｂ１−Ｔｂ０）、（Ｔｂ２−Ｔｂ０）、（Ｔｂ３−Ｔｂ０）、（Ｔｂ４−Ｔｂ０）から、それぞれ１つ前の絶対時間が減算される（ステップ２７）。これにより、図８（３）の合成エンベロープ波形の各タイミングの間の新たなフェーズの合成エンベロープタイムデータＥＴｓが図９（２）左欄に示すように求められる。なお、先頭の合成エンベロープタイムデータＥＴｓは、上記絶対時間の先頭の（Ｔａ２−Ｔｂ０）がそのままコピーされる。
【００７１】
さらに、各絶対時間に対応したエンベロープスピードデータＥＳには、より先の絶対時間のエンベロープスピードデータＥＳであって、自己の成分音フラグａ、ｂと異なるフラグを有するデータＥＳが加算合成される（ステップ２８）。これにより、成分音ａのエンベロープスピードＥＳと成分音ｂのエンベロープスピードＥＳとが図８（３）の各フェーズごとに加算合成され、図８（３）の合成エンベロープ波形の各タイミングの間の新たなフェーズの合成エンベロープスピードデータＥＳｓが図９（２）右欄に示すように求められる。
【００７２】
このようにして求められた合成エンベロープ波形の各フェーズの合成エンベロープタイムデータＥＴｓ及び合成エンベロープスピードデータＥＳｓは、上記アサインメントメモリ４０の対応するチャンネルエリアに書き込まれ、フェーズカウンタ５０の対応チャンネルのカウンタがクリアされる（ステップ２９）。これにより合成エンベロープの生成が開始される。この場合、合成エンベロープのオンイベント（または後述するオフイベント）の時点以降の部分が、アサインメントメモリ４０に記憶され生成される。
【００７３】
こうして、成分音ａのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴは、同じ周波数の新たな成分音ｂが当該チャンネルに割り当てられるたびに書き換えられ、この新たな成分音ｂを合成したエンベロープの合成エンベロープスピードデータＥＳｓ及び合成エンベロープタイムデータＥＴｓに置き換えられる。
【００７４】
よって、同じ周波数の各楽音の発生量が合成され、１つのチャンネルにまとめて割り当てられることになる。また、同じ周波数の各楽音のエンベロープ波形が合成され、１つの楽音として出力されることになる。
【００７５】
そして、成分音ａのリリース以降のエンベロープスピードデータＥＳとエンベロープタイムデータＥＴとが成分音ａのキーナンバデータＫＮに対応してアサインメントメモリ４０に記憶され、成分音ｂのリリース以降のエンベロープスピードデータＥＳとエンベロープタイムデータＥＴも成分音ｂのキーナンバデータＫＮに対応してアサインメントメモリ４０に記憶される（ステップ３０）。このリリース以降のエンベロープスピードデータＥＳとエンベロープタイムデータＥＴは、オフイベント以降にエンベロープ合成処理が行われる。
【００７６】
８．消音処理
図１０は上記ステップ０５の消音処理のフローチャートを示す。まずオフイベントがあると（ステップ３１）、このオフイベントに係るキーナンバデータＫＮと同じキーナンバデータＫＮが記憶されているアサインメントメモリ４０のチャンネルがサーチされる（ステップ３２）。
【００７７】
そして、該当するチャンネルが発見されると（ステップ３３）、上述したステップ１５のエンベロープ合成処理と同様の処理が実行され（ステップ３４）、このキーナンバデータＫＮと対応するエンベロープスピードデータＥＳとエンベロープタイムデータＥＴが当該チャンネルエリアから消去される（ステップ３５）。以上のオフイベントによるエンベロープ合成処理が他の成分音についても繰り返され（ステップ３６）、その他の処理が行われる（ステップ３７）。
【００７８】
このステップ３４のエンベロープ合成処理では、上記キーナンバデータＫＮに対応して記憶されたリリース以降のエンベロープスピードデータＥＳとエンベロープタイムデータＥＴとが読み出され、同様のエンベロープ合成処理が実行される。ただし、この場合このリリースのエンベロープスピードデータＥＳはマイナス値であるから実質的に減算される。これはディケイも同様である。なお、このステップ３４のエンベロープ合成処理では、上記ステップ３０のリリースのエンベロープスピードデータＥＳ及びエンベロープタイムデータＥＴのセット処理は行われない。
【００７９】
こうして、オフイベントのときにも、合成成分音ａ＋ｂの合成エンベロープスピードデータＥＳｓ及び合成エンベロープタイムデータＥＴｓは書き換えられ、この新たなリリースを考慮したエンベロープの合成エンベロープスピードデータＥＳｓ及び合成エンベロープタイムデータＥＴｓに置き換えられる。
【００８０】
よって、オフイベントのときにも、同じ周波数の各楽音の発生量が合成され、１つのチャンネルにまとめて割り当てられることになる。また、同じ周波数の各楽音のエンベロープ波形が合成され、１つの楽音として出力されることになる。
【００８１】
９．トーンタイムデータＴＭ及び同時発音数の処理
図１１はコントローラ２によって一定周期ごとに実行されるインタラプト処理のフローチャートを示す。この処理で上記トーンタイムデータＴＭのインクリメント及び同時発音数のカウントが行われる。
【００８２】
この処理では、上記アサインメントメモリ４０の各チャンネルエリアにつき（ステップ４１、４６、４７）、オン／オフデータが「１」で楽音が発音中のものについて（ステップ４３）、そのトーンタイムデータＴＭが「＋１」される（ステップ４４）。
【００８３】
また、同じくアサインメントメモリ４０の各チャンネルエリアにつき（ステップ４１、４６、４７）、いったん同時発音数データがクリアされた後（ステップ４２）、オン／オフデータが「１」で楽音が発音中のものがカウント（ステップ４３）、同時発音数が順次「＋１」される（ステップ４５）。このカウントされた同時発音数はプログラム／データ記憶部４に記憶される。
【００８４】
そして、その他の周期的な処理が行われる（ステップ４８）。こうして、各チャンネルの楽音の発音経過時間がカウントされ記憶され上記発音時間情報として利用され、またそのときどきの全チャンネルの発音中の楽音の数がカウントされ記憶され上記同時発音数情報として利用される。
【００８５】
本発明は上記実施例に限定されず、本発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、波形メモリ４２に記憶される楽音波形データＭＷはサイン波以外の複雑な波形でもよいし、音色、音高（音域）、タッチ、パート、発音時間ごとに異なる波形が記憶され切り替え選択されてもよい。このような複雑な形状の波形は上記各成分音の楽音波形として読み出され出力される。
【００８６】
また、各チャンネルに割り当てられる楽音は成分音以外の１つの独立した楽音であってもよい。この場合、同じチャンネルに割り当てられる楽音の波形は同じ波形形状であり、同じ音高（周波数）である。このような場合でも同様にエンベロープの合成または発生量の合成を行うことができる。
【００８７】
さらに、合成されるのはエンベロープ以外の楽音波形データＭＷの振幅でもよい。この場合上記ステップ１５、３４で合成されるのは、振幅決定因子例えばタッチデータＴＣなどである。そして、アサインメントメモリ４０の各チャンネルのタッチデータＴＣは、上記オンイベント及びオフイベントごとに相加され、この相加されたタッチデータＴＣはアサインメントメモリ４０から上記乗算器４３へ送られ、楽音波形データＭＷに乗算される。なお、この相加されたタッチデータＴＣは、当該チャンネルの各エンベロープスピードデータＥＳに乗算されてもよい。この乗算されたエンベロープスピードデータＥＳを使って上記ステップ１５、３４のエンベロープ合成が行われる。
【００８８】
また、上記チャンネルは時分割処理によって形成されたが、このチャンネルと同じ数の楽音信号発生部５が設けられ、各楽音信号発生部５〜の楽音波形データＭＷが加算器で加算合成されてもよい。
【００８９】
さらに、上記エンベロープデータは、エンベロープスピードデータＥＳとエンベロープレベルデータＥＬ、またはエンベロープレベルデータＥＬとエンベロープタイムデータＥＴとで代用されてもよい。この場合、隣り合う２つのエンベロープレベルデータＥＬの差がエンベロープスピードデータＥＳで除算されて上記エンベロープタイムデータＥＴが求められる。また、隣り合う２つのエンベロープレベルデータＥＬの差がエンベロープタイムデータＥＴで除算されて上記エンベロープスピードデータＥＳが求められる。
【００９０】
また、本発明は電子楽器またはコンピュータなどにおいて実施され得る。上記各図の回路の機能はソフトウエア（フローチャート）によって実施されても良いし、上記各図のフローチャートの機能はハードウエア（回路）によって実施されてもよい。各請求項記載の発明は、当該発明をコンピュータに実行させるコンピュータプログラムを記憶した媒体、コンピュータプログラムの通信装置（方法）、楽音発生装置（方法）、楽音制御装置（方法）としても実現可能である。
出願当初の特許請求の範囲は以下のとおりであった。
［１］同時に発生される複数の楽音がそれぞれ割り当てられる複数のチャンネルにつき、  この同時に発生される複数の楽音のうち、同じ周波数の楽音を判別し、  この判別された同じ周波数の楽音の発生量を合成して、１つのチャンネルにまとめて割り当てることを特徴とする楽音のチャンネル割り当て装置。
［２］同時に発生される複数の楽音がそれぞれ割り当てられる複数のチャンネルにつき、  この同時に発生される複数の楽音のうち、同じ周波数の楽音を判別させ、  この判別された同じ周波数の楽音の発生量を合成して、１つのチャンネルにまとめて割り当てさせることを特徴とする楽音のチャンネル割り当て方法。
［３］同時に発生される複数の楽音のうち、同じ周波数の楽音を判別し、  この判別された同じ周波数の各楽音のエンベロープ波形を合成して１つの楽音として出力することを特徴とする楽音のエンベロープ制御装置。
［４］同時に発生される複数の楽音のうち、同じ周波数の楽音を判別させ、  この判別された同じ周波数の各楽音のエンベロープ波形を合成して１つの楽音として出力させることを特徴とする楽音のエンベロープ制御方法。
［５］上記同時に発生される複数の楽音は、１つの楽音を構成する成分音であり、  この同時に発生される複数の楽音は、同じ波形または異なる波形の楽音であり、  新たな楽音が発生されるときまたは発生されている楽音が消滅されるとき、この楽音またはこの楽音の成分音の同じ周波数の各エンベロープ発生量につき、合成したエンベロープ発生量の各エンベロープレベル、エンベロープタイム及びエンベロープスピードのいずれか２つを演算して、この演算したエンベロープレベル、エンベロープタイム及びエンベロープスピードのいずれか２つに基づいて、上記周波数の楽音またはこの楽音の成分音の合成エンベロープを１つのチャンネルで生成することを特徴とする請求項１、２、３または４記載の楽音のチャンネル割り当て装置、楽音のチャンネル割り当て方法、楽音のエンベロープ制御装置または楽音のエンベロープ制御方法。
【００９１】
【発明の効果】
以上詳述したように、本発明では、同時に発生される複数の楽音のうち同じ周波数の楽音を判別し、この判別された楽音の発生量を合成して１つのチャンネルにまとめて割り当てるようにした。したがって、使用するチャンネルの数を減らしてチャンネルの有効利用を図ることができる等の効果を奏する。
【００９２】
また、本発明では、同時に発生される複数の楽音のうち同じ周波数の楽音を判別し、この判別された各楽音のエンベロープ波形を合成して１つの楽音として出力するようにした。したがって、使用するチャンネルの数を減らしてチャンネルの有効利用を図ることができる等の効果を奏する。
【図面の簡単な説明】
【図１】楽音制御装置の全体回路を示す。
【図２】成分音テーブル２０を示す。
【図３】アサインメントメモリ４０を示す。
【図４】楽音信号発生部５を示す。
【図５】処理全体のフローチャートを示す。
【図６】発音処理のフローチャートを示す。
【図７】エンベロープ合成処理のフローチャートを示す。
【図８】同じ周波数の成分音ａと成分音ｂとのエンベロープ合成の波形の例を示す。
【図９】同じ周波数の成分音ａと成分音ｂとのエンベロープ合成のデータの例を示す。
【図１０】消音処理のフローチャートを示す。
【図１１】インタラプト処理のフローチャートを示す。
【符号の説明】
２…コントローラ（ＣＰＵ）、３…タイミング発生部、４…プログラム／データ記憶部、５…楽音信号発生部、６…サウンドシステム、７…情報記憶部、１１…キーボード、１３…パネルスイッチ群、１５…ミディインターフェース、２０…成分音テーブル、４０…アサインメントメモリ、４１…波形読み出し部、４２…波形メモリ、４７…セレクタ、４８…エンベロープ演算メモリ、４９…エンベロープタイムメモリ、５０…フェーズカウンタ、４６，５１…加算器、５２…ナンドゲート群。
【図１】
0003673384.tif 000002
【図２】
0003673384.tif 000003
【図３】
0003673384.tif 000004
【図４】
0003673384.tif 000005
【図５】
0003673384.tif 000006
【図６】
0003673384.tif 000007
【図７】
0003673384.tif 000008
【図８】
0003673384.tif 000009
【図９】
0003673384.tif 000010
【図１０】
0003673384.tif 000011
【図１１】
0003673384.tif 000012