(57)【特許請求の範囲】
【請求項１】
楽音信号を発生する複数の発音チャンネルと、
複数の異なる種類の楽音信号の発生指示にそれぞれ応答して、前記複数の異なる種類の楽音信号の発生を前記複数の発音チャンネルのいずれかに割り当てる割り当て手段とを備えた楽音信号発生装置において、
音量レベルに関する複数の互いに異なる閾値を記憶する閾値記憶手段を備え、
前記割り当て手段は、
前記複数の互いに異なる閾値のうちの１つの閾値を参照する参照情報であって、各発音チャンネルにて発生中の楽音信号の種類に応じた１つの閾値を参照するための参照情報を発音チャンネルごとに記憶する参照情報記憶手段と、
前記複数の発音チャンネルのうち、発生中の楽音信号の音量レベルが、前記参照情報を用いて参照した閾値以下である発音チャンネルを、新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第１選択手段を有することを特徴とする楽音信号発生装置。
【請求項２】
請求項１に記載の楽音信号発生装置において、
前記第１選択手段は、
所定の時間間隔ごとに、前記複数の発音チャンネルにて発生中の楽音信号の音量レベルと、前記参照した閾値とを比較して、前記発生されている楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルを空きチャンネルとして設定する空きチャンネル設定手段と、
新たな楽音信号の発生の指示があったとき、前記設定されている空きチャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして決定する割り当てチャンネル決定手段とを有することを特徴とする楽音信号発生装置。
【請求項３】
請求項１又は２に記載の楽音信号発生装置において、
前記楽音信号は、演奏者の手動演奏によって発生される楽音信号と、自動演奏によって発生される楽音信号とを含み、
前記手動演奏に対応した閾値は、前記自動演奏に対応した閾値よりも小さいことを特徴とする楽音信号発生装置。
【請求項４】
請求項１乃至３のうちのいずれか１つに記載の楽音信号発生装置において、
前記割り当て手段は、
前記発生中の楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルがないとき、前記複数の発音チャンネルのうち、楽音信号を最も古くから発生している発音チャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第２選択手段を有することを特徴とする楽音信号発生装置。
【請求項５】
請求項１乃至３のうちのいずれか１つに記載の楽音信号発生装置において、
前記割り当て手段は、
前記発生中の楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルがないとき、前記複数の発音チャンネルのうち、発生している楽音信号の音量レベルが最も小さい発音チャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第２選択手段を有することを特徴とする楽音信号発生装置。
【請求項６】
請求項４又は５に記載の楽音信号発生装置において、さらに、
前記第２選択手段によって選択された発音チャンネルにて発生中の楽音信号の音量レベルを急速に減衰させるトランケート手段を備えたことを特徴とする楽音信号発生装置。

【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音信号を発生するための複数の発音チャンネルを備え、楽音信号発生の指示に応答して楽音信号発生を発音チャンネルに割り当てる楽音信号発生装置に関する。
【背景技術】
【０００２】
従来から、例えば下記特許文献１に示されているように、楽音信号を発生するための複数の発音チャンネルを備えた楽音信号発生装置は知られている。この楽音信号発生装置においては、演奏者が鍵盤を操作して演奏する手動演奏によって発生する楽音信号発生の指示及び予めメモリに記憶しておいた演奏情報を読み出して演奏する自動演奏によって発生する楽音信号発生の指示に応じて、楽音信号発生を１つ又は複数の発音チャンネルに割り当てる。そして、各発音チャンネルにおいて発生した楽音信号の音量レベルが減衰して所定の閾値（以下、ダンプレベルという。）以下になると、新たな押鍵に対してその発音チャンネルが開放されて空きチャンネルとなり、新たに他の楽音信号を発生することができるようになる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２６５３４３号公報
【発明の概要】
【０００４】
上記従来の楽音信号発生装置においては、手動演奏に係る楽音信号と自動演奏に係る楽音信号のダンプレベルは共通である。この場合、空きチャンネルを効率的に確保するためには、ダンプレベルを大きくしておけばよい。このように設定すると、自動演奏においては、同時に複数の楽音が発生され、その音色も多様であることが多いので、そのうちの１つの楽音を比較的音量レベルが大きい段階で消音して、他の楽音を発生させても、楽音が不自然に途切れたように感じられ難いが、手動演奏においては、同時に発生される楽音の数が少なく、音色の種類も限られているので、楽音が不自然に途切れたように感じられ易い。とくに、手動演奏に係る音色が、ピアノ音のように減衰が長い音色である場合には、楽音が不自然に途切れたように感じられ、演奏上好ましくない。一方、ダンプレベルを小さく設定した場合は、発音チャンネルがなかなか開放されず、すぐに発音チャンネルが不足してしまうという問題があった。
【０００５】
本発明は上記問題に対処するためになされたもので、その目的は、演奏中の楽音が不自然に途切れたように感じられることを抑制した楽音信号発生装置を提供することにある。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、後述する実施形態の対応箇所の符号を括弧内に記載しているが、本発明の各構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。
【０００６】
上記目的を達成するために、本発明の特徴は、楽音信号を発生する複数の発音チャンネル（ＣＨ０，ＣＨ１・・・ＣＨ１２７）と、複数の異なる種類の楽音信号の発生指示にそれぞれ応答して、前記複数の異なる種類の楽音信号の発生を前記複数の発音チャンネルのいずれかに割り当てる割り当て手段（Ｓ２８）とを備えた楽音信号発生装置において、音量レベルに関する複数の互いに異なる閾値を記憶する閾値記憶手段（ＤＳ０，ＤＳ１）を備え、前記割り当て手段は、前記複数の互いに異なる閾値のうちの１つの閾値を参照する参照情報であって、各発音チャンネルにて発生中の楽音信号の種類に応じた１つの閾値を参照するための参照情報を発音チャンネルごとに記憶する参照情報記憶手段（ＤＰ０，ＤＰ１・・・ＤＰ１２７）と、前記複数の発音チャンネルのうち、発生中の楽音信号の音量レベルが、前記参照情報を用いて参照した閾値以下である発音チャンネルを、新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第１選択手段（Ｓ１６ｂ，Ｓ１６ｈ，Ｓ４２〜Ｓ５６）を有することにある。この場合、第１選択手段は、所定の時間間隔ごとに、複数の発音チャンネルにて発生中の楽音信号の音量レベルと、前記参照した閾値とを比較して、前記発生されている楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルを空きチャンネルとして設定する空きチャンネル設定手段（Ｓ４２〜Ｓ５６）と、新たな楽音信号の発生の指示があったとき、前記設定されている空きチャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして決定する割り当てチャンネル決定手段（Ｓ１６ｂ，Ｓ１６ｈ）とを有するとよい。
【０００７】
上記のように構成した楽音信号発生装置によれば、音量レベルの減衰速度が同一であるとき、閾値の大きい楽音信号を発生している発音チャンネルは、閾値の小さい楽音信号を発生している発音チャンネルよりも楽音信号の発生開始からの経過時間が早い時点で開放される。そこで、演奏上の重要度が低い楽音信号の種類については閾値を大きくしておけば、楽音信号の音量レベルが比較的大きくても、楽音信号の発生開始からの経過時間が短い時点で消音して、その楽音信号を発生している発音チャンネルを新たな楽音信号の発生を割り当てる発音チャンネルとして選択できる。一方、演奏上の重要度が高い楽音信号の種類については閾値を小さくしておけば、楽音信号の発生開始からの経過時間が長くなったとしても、その楽音信号を発生している発音チャンネルにて、音量レベルが十分に小さくなるまでその楽音信号を発生させておくことができる。これにより、演奏中の楽音が不自然に途切れたように感じられることを抑制できる。
【０００８】
また、本発明の他の特徴は、楽音信号は、演奏者の手動演奏によって発生される楽音信号と、自動演奏によって発生される楽音信号とを含み、手動演奏に対応した閾値（ＤＳ０）は、自動演奏に対応した閾値（ＤＳ１）よりも小さくしたことにある。これによれば、自動演奏よりも演奏上の重要度が高い手動演奏によって発生される楽音信号が不自然に途切れたように感じられることを抑制できる。
【０００９】
また、本発明の他の特徴は、割り当て手段は、発生中の楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルがないとき、複数の発音チャンネルのうち、楽音信号を最も古くから発生している発音チャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第２選択手段（Ｓ１６ｃ）を有することにある。これによれば、音量レベルが閾値以下である発音チャンネルがないとき、最も古くから発生されていて演奏上重要でなくなっている楽音信号を発生している発音チャンネルを新たな楽音信号発生を割り当てる発音チャンネルとして選択するので、演奏中の楽音が不自然に途切れたように感じられることを抑制できる。
【００１０】
また、本発明の他の特徴は、割り当て手段は、発生中の楽音信号の音量レベルが前記参照した閾値以下である発音チャンネルがないとき、複数の発音チャンネルのうち、発生している楽音信号の音量レベルが最も小さい発音チャンネルを前記新たな楽音信号の発生を割り当てる発音チャンネルとして選択する第２選択手段を有することにある。これによれば、音量レベルが閾値以下である発音チャンネルがないとき、音量レベルが閾値より大きい楽音信号を発生している発音チャンネルのうち、音量レベルが最も小さく、演奏上重要でなくなっている楽音信号を発生している発音チャンネルを新たな楽音信号発生を割り当てる発音チャンネルとして選択するので、演奏中の楽音が不自然に途切れたように感じられることを抑制できる。

【００１１】
また、本発明の他の特徴は、第２選択手段によって選択された発音チャンネルにて発生中の楽音信号の音量レベルを急速に減衰させるトランケート手段（Ｓ１６ｇ）を備えたことにある。これによれば、第２選択手段によって選択した発音チャンネルにて発生中の楽音信号の音量レベルが急速に減衰するので、新たな楽音信号の発生を前記選択した発音チャンネルに割り当ててから前記新たな楽音信号の発生を開始するまでの時間を短くできる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る楽音信号発生装置を適用した電子楽器の全体ブロック図である。
【図２】図１の音源回路の具体的構成を示すブロック図である。
【図３】波形データの構成を示すメモリマップである。
【図４】図２の発音予約回路の具体的構成を示すブロック図である。
【図５】ボイスデータの構成を示すメモリマップである。
【図６】パート情報、ノート情報、発音チャンネル情報及びボイスデータの関係を示す模式図である。
【図７】ノート情報の構成を示すメモリマップである。
【図８】発音チャンネル情報の構成を示すメモリマップである。
【図９】発音予約プログラムを示すフローチャートである。
【図１０】図９の発音チャンネル確保ルーチンを示すフローチャートである。
【図１１】予約する発音チャンネルが空きチャンネルである場合の発音予約回路の動作を示すタイムチャートである。
【図１２】予約する発音チャンネルが空きチャンネルである場合のパラメータの書き込み動作を示すタイムチャートである。
【図１３】予約する発音チャンネルが発音中である場合の発音予約回路の動作を示すタイムチャートである。
【図１４】予約する発音チャンネルが発音中である場合のパラメータの書き込み動作を示すタイムチャートである。
【図１５】音量レベル取得処理プログラムを示すフローチャートである。
【図１６】パラメータ更新処理プログラムを示すフローチャートである。
【発明を実施するための形態】
【００１３】
ａ．全体構成
まず、本発明の一実施形態に係る楽音信号発生装置を適用した電子楽器の全体構成について図１を用いて説明する。図１に示すように、この電子楽器は、鍵盤１１、パネル操作子１２、ペダル操作子１３、操作子インターフェース回路１４、表示器１６、音源回路１７、サウンドシステム１８、コンピュータ部１９、記憶装置２１及び外部インターフェース回路２２を備えている。
【００１４】
鍵盤１１は、演奏者の手によって操作されて、それぞれ発生させる楽音信号の音高を指定するとともに楽音信号の発生及び停止を指示する複数の白鍵及び黒鍵からなる。パネル操作子１２は、電子楽器の操作パネル上に設けられ、演奏者の手によって操作されて、発生される楽音信号の音色、音量、効果等の楽音特性を設定するとともに、電子楽器全体の動作を設定する。ペダル操作子１３は、演奏者の足によって操作されて、発生される楽音信号の音色、音量、効果などの楽音特性を設定する。
【００１５】
鍵盤１１、パネル操作子１２及びペダル操作子１３は、バス２３に接続された操作子インターフェース回路１４に接続されている。そして、鍵盤１１、パネル操作子１２及びペダル操作子１３の操作を表す演奏情報及び操作情報が、操作子インターフェース回路１４及びバス２３を介して後述するコンピュータ部１９に供給される。表示器１６は、液晶ディスプレイ（ＬＣＤ）によって構成され、表示画面上に文字、図形などを表示する。この表示器１６の表示は、バス２３を介してコンピュータ部１９によって制御される。
【００１６】
音源回路１７は、複数の波形データを記憶した波形メモリＷＭを含み、波形メモリＷＭから、コンピュータ部１９によって指定された波形データを読み出してディジタル楽音信号を生成する複数の発音チャンネルを備える。各発音チャンネルにて生成されたディジタル楽音信号はサウンドシステム１８に供給される。なお、ディジタル楽音信号にコーラス効果、残響効果などの各種効果を付加するエフェクタ回路は、後述するように音源回路１７に含まれている。サウンドシステム１８は、音源回路１７から供給されたディジタル楽音信号をアナログ楽音信号にＤ／Ａ変換するＤ／Ａ変換器、変換したアナログ楽音信号を増幅するアンプ、及び増幅されたアナログ楽音信号を音響信号に変換して出力するスピーカを備えている。
【００１７】
コンピュータ部１９は、バス２３にそれぞれ接続されたＣＰＵ１９ａ、タイマ１９ｂ、ＲＯＭ１９ｃ及びＲＡＭ１９ｄからなる。ＣＰＵ１９ａは、操作子インターフェース回路１４及び外部インターフェース回路２２から供給される演奏情報に応じて、音源回路１７に発音のために必要な情報を供給する。とくに、ＣＰＵ１９ａは、演奏者による鍵盤１１の押鍵操作及び外部インターフェース回路２２を介した外部機器からの演奏情報の供給によって発生するノートオンイベントに対応した楽音の発生を、１つ又は複数の発音チャンネルに割り当てる。また、この電子楽器は、記憶装置２１に記憶された演奏情報を読み出して再生する自動演奏装置を備えている。この自動演奏装置による演奏情報の再生によってもノートオンイベントが発生し、ＣＰＵ１９ａは、このノートオンイベントに対応した楽音の発生を、１つ又は複数の発音チャンネルに割り当てる。
【００１８】
また、記憶装置２１は、ＨＤＤ、ＦＤＤ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどの大容量の不揮発性記録媒体と、同各記録媒体に対応するドライブユニットを含むものであり、各種データ及びプログラムの記憶及び読出しを可能にしている。これらのデータ及びプログラムは予め記憶装置２１に記憶されていてもよいし、外部インターフェース回路２２を介して外部から取り込んでもよい。そして、記憶装置２１に記憶された各種データ及びプログラムは、ＣＰＵ１９ａによって読み込まれ、電子楽器の制御に利用される。外部インターフェース回路２２は、ＭＩＤＩインターフェース回路及び通信インターフェース回路を含んでおり、他の電子音楽装置、パーソナルコンピュータなどのＭＩＤＩ対応の外部機器に接続可能となっているとともに、インターネットなどの通信ネットワークに接続可能となっている。
【００１９】
ｂ．音源回路の構成
次に、音源回路１７の構成について詳しく説明する。まず音源回路１７の全体構成について説明する。音源回路１７は、図２に示すように、波形データを記憶した波形メモリＷＭを備えている。また、音源回路１７は、波形メモリＷＭから波形データを読み出してディジタル楽音信号を生成する複数（例えば１２８個）の発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７を備えている。また、音源回路１７は、発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７にて生成されたディジタル楽音信号を累算してサウンドシステム１８に出力するチャンネル累算回路１７ａを備えている。また、音源回路１７は、ＣＰＵ１９ａによる発音チャンネルの予約の受け付け及び予約された発音チャンネルに発音の開始指示を行う発音予約回路１７ｂを備えている。つぎに、これらの波形メモリＷＭ、発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７、チャンネル累算回路１７ａ、及び発音予約回路１７ｂについて詳しく説明する。
【００２０】
ｂ１．波形メモリ
波形メモリＷＭには、図３に示すように複数種類の楽器の楽音波形を表す波形データが記憶されている。１つの楽器の楽音が複数の成分に分解されて別々の楽音波形として記憶されている場合もある。例えばピアノ音のように、発音開始時の音色が激しく変化する成分と、発音開始から終了まであまり音色が変化しない成分とに分解して別々の楽音波形として記憶している場合もある。そこで、１つの楽音波形を構成要素ごとに分解した楽音波形をエレメント波形といい、それぞれ別々の発音チャンネルによって読み出されたエレメント波形から生成されるそれぞれのディジタル楽音信号をエレメント信号という。生成された各エレメント信号は、チャンネル累算回路１７ａによって合成されて１つの楽器の楽音信号となる。なお、楽器の種類によっては、１つの楽音波形を構成要素ごとに分解することなく、１つの波形として記憶してもよい。この場合、１つの楽器の楽音信号が１つのエレメント波形のみから生成されるとみなすことができるので、この場合の楽音波形もエレメント波形という。
【００２１】
各エレメント波形は、鍵音高の所定の範囲毎（例えば、１オクターブ毎）に設けられた波形セットから構成され、各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７において補間処理を行うことにより、押鍵された鍵の音高に対応したディジタル楽音信号を生成する。また、波形セットは、押鍵強さの所定の範囲毎（例えば、４段階に分けた押鍵強さの段階毎）に設けられた波形データから構成され、各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７において補間処理を行うことにより、押鍵強さに対応した音色及び音量のエレメント信号を生成する。なお、各鍵ごとに波形セットを設けてもよい。また、エレメント波形を、鍵音高に関係なく、１つの波形セットのみから構成してもよい。さらに、各波形セットは、押鍵強さに関係なく、１つの波形データのみから構成される場合もある。
【００２２】
ｂ２．発音チャンネル
各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７は、それぞれ同様に構成されており、サンプリング周期ごとにエレメント信号の生成をそれぞれ行う。以下の説明では、発音チャンネルにおけるエレメント信号の生成を単に発音という。各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７は、低周波信号発生回路ＬＦＯ、ピッチ変更回路ＰＥＧ、カットオフ周波数変更回路ＦＥＧ及び音量変更回路ＡＥＧを備えている。さらに、各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７は、アドレス発生回路ＡＤＲ、サンプル補間回路ＳＰＩ、フィルタ回路ＦＬＴ及び音量制御回路ＡＭＰも備えている。
【００２３】
低周波信号発生回路ＬＦＯは、発音開始後、音高、音色及び音量を周期的に変化させる変調信号を生成して、アドレス発生回路ＡＤＲ、フィルタ回路ＦＬＴ及び音量制御回路ＡＭＰにそれぞれ供給する。低周波信号発生回路ＬＦＯには、ＣＰＵ１９ａから低周波信号制御パラメータが供給される。低周波信号制御パラメータには、低周波信号発生回路ＬＦＯから出力する変調信号の波形、周波数及び振幅を指定するデータが含まれる。
【００２４】
ピッチ変更回路ＰＥＧは、エレメント信号の音高を制御する音高制御信号をアドレス発生回路ＡＤＲに供給する。ピッチ変更回路ＰＥＧは、発音開始後の時間経過に従ってエレメント信号の音高が変化するように、時間経過に従って変化する音高制御信号を生成してアドレス発生回路ＡＤＲに供給する。この時間経過に従って変化する一連の音高制御信号をピッチエンベロープと呼ぶ。また、カットオフ周波数変更回路ＦＥＧは、エレメント信号の周波数特性を制御するカットオフ周波数制御信号をフィルタ回路ＦＬＴに供給する。カットオフ周波数制御回路ＦＥＧは、発音開始後の時間経過に従ってフィルタのカットオフ周波数が変化するように、時間経過に従って変化するカットオフ周波数制御信号を生成して、フィルタ回路ＦＬＴに供給する。この時間経過に従って変化する一連のカットオフ周波数制御信号をカットオフエンベロープと呼ぶ。また、音量変更回路ＡＥＧは、エレメント信号の音量を制御する音量制御信号を音量制御回路ＡＭＰに供給する。音量変更回路ＡＥＧは、発音開始後の時間経過に従ってエレメント信号の音量が変化するように、時間経過に従って変化する音量制御信号を生成して音量制御回路ＡＭＰに供給する。この時間経過に従って変化する一連の音量制御信号を音量エンベロープと呼ぶ。
【００２５】
アドレス発生回路ＡＤＲは、ＣＰＵ１９ａから供給された楽音パラメータの１つである押鍵された鍵の鍵音高を表す音高値、ピッチ変更回路ＰＥＧから供給された音高制御信号及び低周波信号発生回路ＬＦＯから供給された変調信号を合成し、ピッチシフト量を算出する。ここで、アドレス発生回路ＡＤＲには、ＣＰＵ１９ａから、楽音パラメータの１つとして、波形データ情報も供給される。波形データ情報は、波形メモリＷＭから読み出す波形データの先頭アドレス及び末尾アドレス、並びにこの波形データの音高を表す元ピッチからなる。ピッチシフト量とは、波形データ情報に含まれる元ピッチと発音する楽音のピッチとの差である。次に、アドレス発生回路ＡＤＲは、前記算出したピッチシフト量に応じて、波形データの読み出しレートを決定する。そして、アドレス発生回路ＡＤＲは、前記決定した読み出しレートで波形メモリＷＭから波形データを読み出す。ただし、ピッチシフト量に応じて決定される読み出しレートは、通常、小数部を含むので、波形データの読み出しアドレスも整数部と小数部からなる。そこで、この波形データの読み出しでは、整数部を用いて波形データの隣合う前後一対のサンプル値を読み出し、サンプル補間部ＳＰＩへ供給する。サンプル補間部ＳＰＩは、供給された一対のサンプル値とアドレスの小数部とを用いて補間演算を行ってディジタル楽音データを生成して、フィルタ回路ＦＬＴに供給する。
【００２６】
フィルタ回路ＦＬＴは、カットオフ周波数変更回路ＦＥＧから供給されたカットオフ周波数制御信号及び低周波信号発生回路ＬＦＯから供給された変調信号を合成して、フィルタのカットオフ周波数を算出する。フィルタ回路ＦＬＴには、ＣＰＵ１９ａから、フィルタ制御パラメータも供給される。フィルタ制御パラメータには、フィルタの種類（例えば、ハイパスフィルタ、ローパスフィルタなど）を選択するフィルタ選択情報が含まれる。フィルタ回路ＦＬＴは、フィルタ選択情報に従って選択したフィルタのカットオフ周波数を前記算出したカットオフ周波数に設定し、サンプル補間回路ＳＰＩから供給されたディジタル楽音データをこのフィルタでフィルタリング処理した後、音量制御回路ＡＭＰへ出力する。
【００２７】
音量制御回路ＡＭＰは、音量変更回路ＡＥＧから供給された音量制御信号及び低周波信号発生回路ＬＦＯから供給された変調信号を合成して、発生すべき楽音信号の音量を算出する。そして、音量制御回路ＡＭＰは、フィルタ回路ＦＬＴから供給されたディジタル楽音データを前記算出した音量に応じて増幅して、チャンネル累算回路１７ａへ出力する。
【００２８】
なお、本実施形態においては、音源回路１７は、１２８個の発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７を備えているが、発音チャンネルを１つのみ備えるようにしておいて、その発音チャンネルを時分割で利用してもよい。例えば１サンプリング周期を１２８分割すれば、分割された各期間においてなされる処理は、本実施形態における発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７においてなされる処理にそれぞれ対応する。
【００２９】
ｂ３．チャンネル累算回路１７ａ
チャンネル累算回路１７ａは、サンプリング周期ごとに、各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７から出力されたディジタル楽音信号を累算して、累算したディジタル楽音信号をサウンドシステム１８に出力する。なお、チャンネル累算回路１７ａは、各発音チャンネルから出力されるディジタル楽音信号にそれぞれ共通の効果（例えば、コーラス効果、残響効果など）を付加するエフェクト処理回路を備えている。
【００３０】
ｂ４．発音予約回路１７ｂ
次に、発音予約回路１７ｂについて説明する。発音予約回路１７ｂは、ＣＰＵ１９ａにより指定された発音チャンネルの予約に関する情報を生成して記憶するとともに、所定のタイミングで、その発音チャンネルに対し発音開始を指示する。
【００３１】
発音予約回路１７ｂは、図４に示すように、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７及び予約受付回路１７ｂ１を備えている。チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＨ１２７は、発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７にそれぞれ対応したビットで構成された１２８ビットからなるビットマップであり、ＣＰＵ１９ａが音源回路１７に対し、発音チャンネルを特定して指示を行うときに用いられる。例えば、複数のエレメント波形に分解された楽音波形の生成を行うために、ＣＰＵ１９ａは、発音予約回路１７ｂにエレメント信号の発生に使用する複数の発音チャンネルを指定する。このとき、ＣＰＵ１９ａは、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７のうち、使用する発音チャンネルに対応したビットであって、楽音波形を構成するエレメント信号の数と同数のビットを「予約」にセットする。その後、ＣＰＵ１９ａは、指示した発音チャンネルに共通のグループ番号を割り当てさせるために、予約受付回路１７ｂ１に予約トリガ信号を出力する。
【００３２】
なお、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７は、ＣＰＵ１９ａのメモリアドレス空間における「チャンネルビット０」〜「チャンネルビット１２７」で表わされるアドレスに割り当てられていて、ＣＰＵ１９ａは、「チャンネルビット０」〜「チャンネルビット１２７」を用いて、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＨ１２７のビット操作（予約する発音チャンネルの指定）を行うことができる。また、予約受付回路１７ｂ１内に設けられた図示しない予約トリガレジスタが、ＣＰＵ１９ａのメモリアドレス空間における「予約トリガ」で表わされるアドレスに割り当てられていて、ＣＰＵ１９ａは、「予約トリガ」を用いて、予約受付回路１７ｂ１に予約トリガ信号を出力することができる。
【００３３】
予約受付回路１７ｂ１は、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７で指定された複数の発音チャンネルに対し共通のグループ番号を割り当てる。上記の例のように、１つの楽音波形が複数のエレメント波形に分解されている場合（すなわち複数の発音チャンネルを同時に使用する場合）、これらの複数の発音チャンネルに共通のグループ番号を割り当てておき、同時に発音開始させる発音チャンネルをグループ番号で管理するようにしている。なお、１つの楽音波形が、１つのエレメント波形から構成される場合は、複数の発音チャンネルのグループ化はしないが、回路構成を共通にして簡単にするため、複数のエレメント信号を合成する場合と同様に、１つの発音チャンネルのみからなるグループを構成して、グループ番号を割り当てる。ただし、グループ数には上限があり、本実施形態では３０個のグループが使用可能である。そこで、各グループ番号が使用可能か否かを示すグループ使用可否フラグを記憶するグループ使用状況レジスタＧＵ１〜ＧＵ３０が設けられている。予約受付回路１７ｂ１は、グループ使用状況レジスタＧＵ１〜ＧＵ３０の中から「使用可」となっている１つのグループ番号を発音チャンネルに割り当てた後、グループ使用状況レジスタＧＵ１〜ＧＵ３０のうちで、そのグループ番号に対応するレジスタを「使用不可」にセットする。なお、「使用不可」にセットされたグループ使用可否フラグは、発音開始時に後述の発音開始指示回路１７ｂ６によって「使用可」にセットされる。ここで、ＣＰＵ１９ａは、予約しようとする発音チャンネルにグループ番号の割り当てが可能であることをグループフルフラグＧＦによって確認した上で、予約トリガ信号を出力するようになっている。したがって、予約トリガ信号を入力した予約受付回路１７ｂ１は必ずグループ番号を発音チャンネルに割り当てることができる。
【００３４】
グループフルフラグＧＦとは、空きグループがあるか否か（すなわち、発音チャンネルに対しグループ番号の割り当てが可能か否か）を示すフラグである。グループフルフラグＧＦは、グループフルフラグセット回路１７ｂ２によって、「空きグループ有り」又は「空きグループ無し」にセットされる。すなわち、グループフルフラグセット回路１７ｂ２は、グループ使用状況レジスタＧＵ１〜ＧＵ３０のうち、「使用可」となっているレジスタが１つでもあればグループフルフラグを「空きグループ有り」にセットする。一方、グループ使用状況レジスタＧＵ１〜ＧＵ３０のすべてのレジスタが「使用不可」となっていれば、グループフルフラグＧＦを「空きグループ無し」にセットする。なお、グループフルフラグＧＦは、ＣＰＵ１９ａのメモリアドレス空間における「グループフル」で表わされるアドレスに割り当てられていて、ＣＰＵ１９ａは、「グループフル」を用いて、グループフルフラグＧＦの値を読み込むことができる。
【００３５】
予約受付回路１７ｂ１は、取得したグループ番号を、キーオンマップに書き込む。キーオンマップは、発音チャンネルＣＨ０〜ＣＨ１２７にそれぞれ対応して設けられたキーオンマップレジスタＫＭ０〜ＫＭ１２７からなる。キーオンマップレジスタＫＭ０〜ＫＭ１２７は、グループ番号「１」〜「３０」のうちのいずれかの番号又は「グループ割り当てなし」を表す。キーオンマップは、ノートオンイベントが発生するごとに更新される。すなわち、ノートオンイベントが発生すると、ＣＰＵ１９ａによって、１つ又は複数の発音チャンネルが選択され、選択された発音チャンネルに係るキーオンマップレジスタに共通のグループ番号が書き込まれる。その後、予約受付回路１７ｂ１は、「予約」にセットされているチャンネル指定レジスタを「指定なし」にセットする。
【００３６】
レベル検出回路１７ｂ３は、各発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７の音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルを検出して、音量レベルレジスタＡＬ０，ＡＬ１・・・ＡＬ１２７に記録する。また、音量レベルレジスタＡＬ０，ＡＬ１・・・ＡＬ１２７内に記録された音量レベルは、ダンプレベル到達検出回路１７ｂ４に供給される。なお、音量レベルレジスタＡＬ０，ＡＬ１・・・ＡＬ１２７は、ＣＰＵ１９ａのメモリアドレス空間における「音量レベルＣＨ０」〜「音量レベルＣＨ１２７」で表わされるアドレスに割り当てられていて、ＣＰＵ１９ａは、「音量レベルＣＨ０」〜「音量レベルＣＨ１２７」を用いて、音量レベルレジスタＡＬ０，ＡＬ１・・・ＡＬ１２７の値を読み込むことができる。
【００３７】
レベル検出回路１７ｂ３による発音チャンネルＣＨ０〜ＣＨ１２７のエレメント信号の音量レベル検出及び検出結果のダンプレベル到達検出回路１７ｂ４への供給は、１サンプリング周期内に時分割でなされる。レベル検出回路１７ｂ３が一連の発音チャンネルＣＨ０〜ＣＨ１２７の楽音データのレベル検出を開始する直前に、キーオンマップの内容が、キーオンマップラッチ回路１７ｂ５によって、キーオンマップラッチとして、キーオンマップレジスタＫＭ０〜ＫＭ１２７と同様のキーオンマップラッチレジスタＫＭＬ０〜ＫＭＬ１２７にコピーされて保持される。ダンプレベル到達検出回路１７ｂ４は、キーオンマップラッチに基づいて、各グループに属する全ての発音チャンネルにて生成されているエレメント信号の音量レベルがダンプレベル以下になっているか否かの判定を行う。
【００３８】
ダンプレベル到達検出回路１７ｂ４は、上記の判定において、発音予約回路１７ｂが備えるダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１に記憶されたダンプレベルと各エレメント信号の音量レベルとを比較する。ダンプレベル設定レジスタＤＳ０は、演奏者が鍵盤１１を押離鍵して演奏する手動演奏に係るエレメント信号のダンプレベルを記憶し、ダンプレベル設定レジスタＤＳ１は、自動演奏装置が記憶装置２１に記憶された演奏情報を読み出して演奏する自動演奏によるエレメント信号のダンプレベルを記憶する。ダンプレベル設定レジスタＤＳ，ＤＳ１には、この電子楽器の電源投入時の初期化処理において、ＣＰＵ１９ａによって、それぞれ異なるダンプレベルが書き込まれる。ダンプレベル設定レジスタＤＳ０，ＤＳ１に書き込まれるダンプレベルは、エレメント信号がとり得る最大レベルに対する相対値で表される。また、ダンプレベル設定レジスタＤＳ０に書き込まれるダンプレベルは、ダンプレベル設定レジスタＤＳ１に書き込まれるダンプレベルよりも小さい。例えば、ダンプレベルＤＳ０には、「−９６ｄＢ」が書き込まれ、ダンプレベル設定レジスタＤＳ１には、「−８４ｄＢ」が書き込まれる。なお、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１は、ＣＰＵ１９ａのメモリアドレス空間における「ダンプレベル０」及び「ダンプレベル１」で表わされるアドレスにそれぞれ割り当てられていて、ＣＰＵ１９ａは、「ダンプレベル０」及び「ダンプレベル１」を用いて、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１にダンプレベルをそれぞれ書き込むことができる。また、「ダンプレベル０」及び「ダンプレベル１」を用いて、ダンプレベル設定レジスタＤＳ０，ＤＳ１からダンプレベルを読み込むことができる。
【００３９】
また、ダンプレベル到達検出回路１７ｂ４には、後述のパラメータ出力回路１７ｃ４から、各発音チャンネルごとに、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のどちらのレジスタに記憶されているダンプレベルを用いるかを表すダンプレベル参照情報ＤＰｎ（ｎ＝０，１・・・１２７）も供給される。ダンプレベル参照情報ＤＰｎは、対応する発音チャンネルＣＨｎのエレメント信号が手動演奏により発生させられている場合は、ダンプレベル設定レジスタＤＳ０のアドレスを表し、自動演奏により発生させられている場合は、ダンプレベル設定レジスタＤＳ１のアドレスを表す。ダンプレベル到達検出回路１７ｂ４は、ダンプレベル参照情報ＤＰｎを用いて、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１に記憶されているダンプレベルを取得する。そして、ダンプレベル到達検出回路１７ｂ４は、キーオンマップラッチ、各発音チャンネルＣＨｎの音量レベル及び前記取得したダンプレベルを用いて上記の判定を行い、判定結果をダンプレベル到達検出レジスタＤＬ１，ＤＬ２・・・ＤＬ３０に順次書き込んでいく。ダンプレベル到達検出レジスタＤＬ１，ＤＬ２・・・ＤＬ３０は、各グループに対応して設けられたレジスタであって、それぞれ「ダンプレベル到達」又は「ダンプレベル未到達」を表すデータを記憶する。まず、ダンプレベル到達検出回路１７ｂ４は、レベル検出回路１７ｂ３が一連の発音チャンネルＣＨ０〜ＣＨ１２７についてのエレメント信号の音量レベルの検出を開始する前に、ダンプレベル到達検出レジスタＤＬ１，ＤＬ２・・・ＤＬ３０を「ダンプレベル到達」にセットする。そして、レベル検出回路１７ｂ３によって検出された各発音チャンネルのエレメント信号の音量レベルとダンプレベル参照情報ＤＰ０〜ＤＰ１２７によって参照されるダンプレベルとをそれぞれ比較する。
【００４０】
例えば、発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）のエレメント信号の音量レベルがダンプレベル参照情報ＤＰｎによって参照されるダンプレベルよりも大きい場合、発音チャンネルＣＨｎに対応するキーオンマップラッチレジスタＫＭＬｎに記憶されているグループ番号ｍ（ｍ＝１，２・・・３０）を取得し、グループ番号ｍに対応するダンプレベル到達検出レジスタＤＬｍを「ダンプレベル未到達」にセットする。このとき、すでにダンプレベル到達検出レジスタＤＬｍが「ダンプレベル未到達」にセットされている場合は、ダンプレベル到達検出レジスタＤＬｍの操作を行うことなく、次の発音チャンネルの判定を行う。一方、発音チャンネルＣＨｎの音量レベルがダンプレベル参照情報ＤＰｎによって参照されるダンプレベル以下になっていた場合は、ダンプレベル到達検出レジスタＤＬｍの操作を行わない。なお、発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）のエレメント信号の音量レベルがダンプレベル参照情報ＤＰｎによって参照されるダンプレベルよりも大きい場合及び発音チャンネルＣＨｎの音量レベルがダンプレベル参照情報ＤＰｎによって参照されるダンプレベル以下になっていた場合のいずれにおいても、取得したキーオンマップレジスタの値が「グループ割り当てなし」の場合は、ダンプレベル到達検出レジスタＤＬｍの操作を行うことなく、次の発音チャンネルの判定を行う。
【００４１】
上記の判定処理を全ての発音チャンネルについて行った後、ダンプレベル到達検出レジスタＤＬｍが「ダンプレベル未到達」にセットされていれば、グループｍに属する発音チャンネルのうち、いずれか１つ又は複数の発音チャンネルのエレメント信号の音量レベルがダンプレベルよりも大きいことになる。一方、ダンプレベル到達検出レジスタＤＬｍが「ダンプレベル到達」にセットされていれば、グループｍに属する全発音チャンネルのエレメント信号の音量レベルがダンプレベル以下であることになる。
【００４２】
ここで、キーオンマップではなくキーオンマップラッチに基づいて、上記ダンプレベル到達の判定を行う理由について説明しておく。前述のように、ダンプレベル到達検出回路１７ｂ４が発音チャンネルＣＨ０、ＣＨ１・・・ＣＨ１２７のエレメント信号の音量レベルの判定をしている間であっても、キーオンマップレジスタＫＭ０〜ＫＭ１２７は更新されていく。
【００４３】
例えば、発音チャンネルＣＨ０が発音中でダンプレベルに到達していない状態であり、かつキーオンマップレジスタＫＭ０にはグループ番号が記録されていない（すなわち、発音チャンネルＣＨ０の予約がなされていない）ものとする。さらに、発音チャンネルＣＨ５は、発音に使用されていないチャンネル（空きチャンネル）であるとする。そして、レベル検出回路１７ｂ３及びダンプレベル到達検出回路１７ｂ４が発音チャンネルＣＨ０についての判定を行った後、発音チャンネルＣＨ５の判定を行うまでの間に、新たなノートオンイベントが発生して、発音チャンネルＣＨ０及び発音チャンネルＣＨ５が新たな発音に使用する発音チャンネルとして指定され、キーオンマップレジスタＫＭ０及びＫＭ５にグループ番号「３」が記録されたとする。その後、レベル検出回路１７ｂ３及びダンプレベル到達検出回路１７ｂ４が発音チャンネルＣＨ５の判定を行うと、発音チャンネルＣＨ５は空きチャンネルなので、ダンプレベルに到達していると判定される。すると、グループ番号「３」に属する発音チャンネルＣＨ０で発音中の楽音信号がダンプレベルに到達していないにもかかわらず、発音チャンネルＣＨ０及び発音チャンネルＣＨ５に対して後述する発音開始指示回路１７ｂ６によって、発音開始指示がなされる。したがって、発音チャンネルＣＨ０にて発音中の楽音が、突然途切れたような不自然な楽音となる。このような不自然な楽音の発生を防止するため、レベル検出回路１７ｂ３及びダンプレベル到達検出回路１７ｂ４が一連の発音チャンネルＣＨ０〜ＣＨ１２７についての判定をしている間は、各発音チャンネルの属するグループが変化しないようにしておく必要がある。したがって、キーオンマップの内容をキーオンマップラッチにコピーしておき、キーオンマップラッチに基づいてダンプレベル到達の判定を行うようにしている。
【００４４】
発音開始指示回路１７ｂ６は、ダンプレベル到達検出レジスタＤＬｍ（ｍ＝１，２・・・３０）が「ダンプレベル到達」にセットされていると、グループｍに属する全発音チャンネルに対して、発音の開始を指示する。そして、発音開始指示回路１７ｂ６は、グループｍに属する全発音チャンネルに対応するキーオンマップレジスタ及びキーオンマップラッチレジスタを「グループ割り当てなし」にセットする。また、発音開始指示回路１７ｂ６は、グループ使用状況レジスタＧＵｍを「使用可」にセットする。また、発音開始指示回路１７ｂ６は、発音開始指示の直前に、後述のパラメータ転送回路１７ｃ２及びパラメータ出力回路１７ｃ４に転送及び出力の指示を行う。
【００４５】
また、発音予約回路１７ｂは、各発音チャンネルが予約可能か否かを示す予約可否フラグを記憶する予約可否フラグレジスタＡＦ０、ＡＦ１・・・ＡＦ１２７を有している。予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７は、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７と同様に、発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７に対応した１２８ビットからなるビットマップである。予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７においては、予約可否フラグセット回路１７ｂ８によって、各ビットが「予約可」又は「予約不可」にセットされる。予約可否フラグセット回路１７ｂ８は、発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）に対応するキーオンマップレジスタＫＭｎに「１」〜「３０」のうちのいずれかのグループ番号が書き込まれている場合は、発音チャンネルＣＨｎに対応する予約可否フラグレジスタＡＦｎを「予約不可」にセットする。一方、予約可否フラグセット回路１７ｂ８は、キーオンマップレジスタＫＭｎが「グループ割り当てなし」にセットされてから所定の期間（例えば、サンプリング周期の５周期分）「予約不可」に保持した後、予約可否フラグレジスタＡＦｎを「予約可」にセットする。前記所定の期間においては、音源回路１７は、発音開始の処理中であり、新たにその発音チャンネルＣＨｎの予約を受け付けられる状態にないからである。
【００４６】
なお、予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７は、ＣＰＵ１９ａのメモリアドレス空間における「チャンネルビット０」〜「チャンネルビット１２７」で表わされるアドレスに割り当てられていて、ＣＰＵ１９ａは、「チャンネルビット０」〜「チャンネルビット１２７」を指定して読み込みを行うことにより、予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７内の値を読み込むことができる。上記のように、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７及び予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７は、同じアドレスに割り当てられているが、ＣＰＵ１９ａによる書き込み動作時においては、チャンネル指定レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７が指定され、読み込み動作時においては、予約可否フラグレジスタＡＦ０，ＡＦ１・・・ＡＦ１２７が指定されるようになっている。
【００４７】
また、発音予約回路１７ｂは、楽音パラメータ入出力回路１７ｃを備える。楽音パラメータ入出力回路１７ｃは、第１メモリ１７ｃ１、パラメータ転送回路１７ｃ２、第２メモリ１７ｃ３及びパラメータ出力回路１７ｃ４からなる。楽音パラメータ入出力回路１７ｃは、バス１６を介してＣＰＵ１９ａから供給される楽音パラメータを入力して、音源回路１７の各部に出力する。また、楽音パラメータ入出力回路１７ｃは、音源回路１７の各回路（ピッチ変更回路ＰＥＧ、カットオフ周波数変更回路ＦＥＧ、音量変更回路ＡＥＧなど）の状態を表すパラメータを入力して、ＣＰＵ１９ａに出力する。
【００４８】
第１メモリ１７ｃ１は、音源回路１７の各回路に供給するパラメータを発音チャンネルの予約時からその発音開始時まで記憶しておくメモリである。第１メモリ１７ｃ１の記憶領域は、発音チャンネルごと、かつパラメータの種類ごとに分割されて、ＣＰＵ１９ａのメモリアドレス空間の所定のアドレスにそれぞれ割り当てられている。例えば、第１メモリ１７ｃ１におけるダンプレベル参照情報ＤＰ０〜ＤＰ１２７の記憶領域は、ＣＰＵ１９ａのメモリアドレス空間において、「予約用ダンプレベル参照情報ＣＨ０」〜「予約用ダンプレベル参照情報ＣＨ１２７」で表わされるアドレスにそれぞれ割り当てられていて、ＣＰＵ１９ａは、「予約用ダンプレベル参照情報ＣＨ０」〜「予約用ダンプレベル参照情報ＣＨ１２７」を用いて、予約する発音チャンネルのダンプレベルを記憶したダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のいずれかのアドレスをダンプレベル参照情報ＤＰ０〜ＤＰ１２７として第１メモリ１７ｃ１に書き込むことができる。
【００４９】
また、パラメータ転送回路１７ｃ２は、発音開始指示回路１７ｂ６による発音開始指示に応答して、第１メモリ１７ｃ１に書き込まれたパラメータを第２メモリ１７ｃ３に転送する。第２メモリ１７ｃ３は、発音チャンネルにて生成中のエレメント信号に関するパラメータを記憶するメモリである。第２メモリ１７ｃ３の記憶領域も、第１メモリ１７ｃ１の記憶領域と同様に、発音チャンネルごと、かつパラメータの種類ごとに分割されていて、各パラメータの記憶領域は、ＣＰＵ１９ａのメモリアドレス空間の所定のアドレスにそれぞれ割り当てられている。
【００５０】
例えば、第２メモリ１７ｃ３におけるダンプレベル参照情報ＤＰ０〜ＤＰ１２７の記憶領域は、ＣＰＵ１９ａのメモリアドレス空間において、「実行用ダンプレベル参照情報ＣＨ０」〜「実行用ダンプレベル参照情報ＣＨ１２７」で表わされるアドレスにそれぞれ割り当てられている。予約された発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）にて発音を開始する場合、パラメータ転送回路１７ｃ２は、「予約用ダンプレベル参照情報ＣＨｎ」で表されるアドレスを用いてダンプレベル参照情報ＤＰｎを第１メモリ１７ｃ１から読み出し、「実行用ダンプレベル参照情報ＣＨｎ」で表されるアドレスを用いて前記読み出したダンプレベル参照情報ＤＰｎを第２メモリ１７ｃ３に書き込む。これにより、ダンプレベル参照情報ＤＰｎが第１メモリ１７ｃ１から第２メモリ１７ｃ３に転送される。また、詳しくは後述するように、ＣＰＵ１９ａは、発音チャンネルＣＨｎのエレメント信号の音量レベルがダンプレベル以下であるか否かを判定するとき、「実行用ダンプレベル参照情報ＣＨｎ」で表されるアドレスを用いて、第２メモリ１７ｃ３からダンプレベル参照情報ＤＰｎを読み出すことができる。そして、読み出したダンプレベル参照情報ＤＰｎを用いて、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１から上記の判定に用いるダンプレベルを読み出すことができる。
【００５１】
また、パラメータ出力回路１７ｃ４は、発音開始指示回路１７ｂ６による発音開始指示に応答して、第２メモリ１７ｃ３に書き込まれたパラメータを、音源回路１７の各部にそれぞれ出力する。例えば、ダンプレベル参照情報ＤＰ０〜ＤＰ１２７を、ダンプレベル到達検出回路１７ｂ４に出力する。なお、パラメータ出力回路１７ｃ４は、第２メモリ１７ｃ３に書き込まれたパラメータを、１サンプリング周期を１２８分割した時分割で出力する。すなわち、１サンプリング周期を１２８分割した各期間がそれぞれ発音チャンネルＣＨ０〜ＣＨ１２７に対応していて、パラメータ出力回路１７ｃ４は、各期間内に、対応する発音チャンネルのパラメータを出力する。
【００５２】
また、ＣＰＵ１９ａは、第２メモリ１７ｃ３にパラメータを直接書き込むことができる。例えば、ＣＰＵ１９ａは、各種エンベロープに関するパラメータを逐次更新して、発音中の楽音の音高、音色及び音量を変化させる。
【００５３】
なお、第１メモリ１７ｃ１と第２メモリ１７ｃ３を１つのメモリで構成してもよい。すなわち、大きな記憶容量を有するメモリの記憶領域を分割して、第１メモリ１７ｃ１に相当する領域と第２メモリ１７ｃ３に相当する領域を確保すればよい。
【００５４】
ｃ．コンピュータ部１９の構成
次に、コンピュータ部１９の構成について詳しく説明する。とくに、ＲＯＭ１９ｃ及びＲＡＭ１９ｄに記憶されるプログラム及び各種データについて詳しく説明する。ＲＯＭ１９ｃには、ボイスデータリストが記憶されている。ボイスデータリストは、図５に示すように、各音色ごとに規定されたボイスデータからなる。ボイスデータは、各音色の楽音波形を構成するエレメント波形ごとに設けられたエレメントデータ及び各エレメント信号の生成に共通に使用されるコモンデータからなる。
【００５５】
各エレメントデータの構成は共通である。各エレメントデータは、フィルタ回路ＦＬＴを制御するためのフィルタ制御パラメータ、低周波信号発生回路ＬＦＯを制御するための低周波信号制御パラメータ、各種エンベロープ生成用のエンベロープパラメータ及び波形データの選択に関する波形データ選択情報から構成されている。波形データ選択情報は、ノートナンバ及びベロシティと選択する波形データに関する情報を表す波形データ情報との対応関係を記録したテーブルである。波形データ情報は、波形データの先頭アドレス、末尾アドレス及び元ピッチからなる。
【００５６】
また、コモンデータは、音色名を表す音色名情報及びチャンネル累算回路１７ａにおいて各発音チャンネルから出力される全てのエレメント信号に共通の効果を付与するためのエフェクトパラメータなどから構成される。
【００５７】
また、ＲＯＭ１９ｃには、発音予約プログラム（図９）、発音チャンネル確保プログラム（図１０）、音量レベル取得の周期処理プログラム（図１５）及びパラメータ更新の周期処理プログラム（図１６）が記憶されている。発音予約プログラムは、ノートオンイベントが発生すると実行され、前記ノートオンイベントに対応した発音を行うために使用する発音チャンネルの予約及び発生させる楽音に関するパラメータの書き込みを行うためのプログラムである。発音チャンネル確保プログラムは、発音予約プログラムのサブルーチンであって、発音に必要な発音チャンネルを確保するためのプログラムである。発音予約プログラムの実行において、ＣＰＵ１９ａは、確保した発音チャンネルが他の発音処理に使用されているか否かに関わらず、前記発生したノートオンイベントに対応した楽音に関するパラメータを音源回路１７の第１メモリ１７ｃ１に書き込む。これにより、発音チャンネルの予約が終了する。すなわち、ＣＰＵ１９ａは、発音予約プログラムの実行により予約した発音チャンネルにて発音処理が開始されるのを待たずに発音予約プログラムを終了する。音源回路１７は、予約された発音チャンネルが前記発生したノートオンイベントに対応した楽音の生成のために使用可能な状態になると、発音予約プログラムの実行により第１メモリ１７ｃ１に書き込まれたパラメータを用いて発音処理を開始する。
【００５８】
音量レベル取得の周期処理プログラム及びパラメータ更新の周期処理プログラムは、タイマ１９ｂから供給される割り込み信号をトリガとして実行される。音量レベル取得の周期処理プログラムは、音量レベルレジスタＡＬ０〜ＡＬ１２７の値を定期的に読み出して、後述する各発音チャンネル情報を更新するプログラムである。また、パラメータ更新の周期処理プログラムは、発音中の各発音チャンネルにて発生されるエレメント信号をリアルタイムに変化させるために音源回路１７に供給する楽音パラメータを所定の周期で更新するプログラムであって、例えば、各エンベロープ生成のためのパラメータを第２メモリ１７ｃ３に書き込むプログラムである。
【００５９】
また、ＲＡＭ１９ｄには、各プログラムの実行により一時的に生成されるデータが記憶される。この一時的に生成されるデータには、メロディパート、伴奏パートなどの演奏パートごとに設けられたパート情報からなるパート情報リストＰＬが含まれる。本実施形態においては、１６個の演奏パートを備えていて、各演奏パートには、それぞれパート番号ＰＮ（ＰＮ＝０，１・・・１６）が付されている。したがって、パート情報リストＰＬは１６個のパート情報からなる。各パート情報は、図６に示すように、ノート情報リストＮＬへの参照情報及びボイスデータへの参照情報からなる。
【００６０】
ボイスデータへの参照情報は、各パートに割り当てられた音色のボイスデータへの参照情報である。ノート情報リストＮＬは、演奏パートごとに設けられている。各演奏パートごとのノート情報リストＮＬは、１つの演奏パートに属するノートオンイベントごとに発音中又は予約された発音に関する情報を記憶したノート情報からなる。各ノート情報には、図７に示すように、音高を表すノートナンバ、押鍵タッチ強さを表すべロシティ及び使用する発音チャンネルに関する情報を表す発音チャンネル情報への参照情報（チャンネル番号など）が含まれる。各ノート情報は、１つの楽音波形を構成するエレメント波形の数と同数の発音チャンネルへの参照情報を有する。図５乃至図７に示す例では、パート１に割り当てられた音色は、楽音波形が２つのエレメント波形から構成されている。したがって、パート１の各ノート情報は、発音チャンネルへの参照情報をそれぞれ２つずつ有する。ノート情報は、ノートオンイベントが発生するごとにノート情報リストＮＬに１つずつ追加される。また、ノートオフイベントの発生により発音が終了すると、ノート情報はノート情報リストＮＬから削除される。ただし、必ず最も古いノート情報から順番に削除されるとは限らない。そこで、各ノート情報は、１つ前のノート情報のアドレスを示す前方リンク及び１つ後のノート情報のアドレスを示す後方リンクを有している。なお、最も古いノート情報の前方リンク及び最も新しいノート情報の後方リンクには、リンク先のノート情報が無いことを示す値（例えば「０」）が記録される。ノート情報の追加及び削除がなされるごとに、前方リンク及び後方リンクを更新することにより、ノートオンイベントが発生した順にノート情報を辿ることができるようにしている。
【００６１】
発音チャンネル情報リストＣＬは、各発音チャンネルごとに設けられた発音チャンネル情報１乃至発音チャンネル情報１２７からなり、各発音チャンネル情報は、図８に示すように、発音中か否かを表す空きチャンネルフラグ、各種エンベロープに関するエンベロープ情報及びその発音チャンネル情報への参照情報を記憶しているノート情報への参照情報からなる。いずれのノート情報からも参照されていない発音チャンネル情報に対応した発音チャンネル（例えば、図６における発音チャンネルＣＨ４）は、空きチャンネルである。
【００６２】
次に、上記のように構成した電子楽器の動作について説明する。演奏者が鍵盤１１のいずれかの鍵を押鍵操作してノートオンイベントが発生すると、ＣＰＵ１９ａは、図１１に示すように、ステップＳ１０にて、発音予約プログラムを開始する。次に、ＣＰＵ１９ａは、ステップＳ１２にて、操作子インターフェース回路１４から供給された演奏情報から、押鍵された鍵を表すノート番号ＮＮ、押鍵の強さを表すベロシティＶＥＬ及びパート番号ＰＮを取得する。鍵盤１１には、予めいずれかの演奏パートが割り当てられていて、鍵盤１１の押鍵操作により、その演奏パートに割り当てられた音色で発音するようになっている。また、鍵域ごとに異なる演奏パートを割り当てることもできる。ＣＰＵ１９ａは、ノートオンイベントが鍵盤１１の押鍵操作により発生したこと、前記取得したノート番号ＮＮなどから押鍵された鍵が属する演奏パートを表すパート番号ＰＮを特定する。次に、ＣＰＵ１９ａは、ステップＳ１４にて、前記取得したパート番号ＰＮを用いて、対応するボイスデータを特定し、このボイスデータを構成するエレメントデータの数を取得する。すなわち、前記ステップＳ１２において取得したパートに割り当てられた音色で発音するのに必要な発音チャンネル数を取得する。そして、ＣＰＵ１９ａは、ステップＳ１６にて、図１０に示す発音チャンネル確保プログラムを実行して、前記ステップＳ１４において取得した数の発音チャンネルを確保する。
【００６３】
ＣＰＵ１９ａは、図１０に示すように、ステップＳ１６ａにて、発音チャンネル確保プログラムの実行を開始し、ステップＳ１６ｂにて、発音チャンネル情報の空きチャンネルフラグを参照して、空きチャンネルを検索する。ステップＳ１６ｂの検索結果、空きチャンネルがある場合、後述のステップＳ１６ｈに進む。一方、空きチャンネルが無い場合、ＣＰＵ１９ａは、ステップＳ１６ｃにて、発音チャンネルＣＨ０，ＣＨ１・・・ＣＨ１２７のうちの、予約済みでない発音チャンネルの中から、トランケートする発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）を１つ選択する。予約済みが否かは、予約可否フラグＡＦｎ（ｎ＝０，１・・・１２７）を参照することにより判断する。また、予約済みでない発音チャンネルのうち、どの発音チャンネルをトランケートするかは、予め定められた規則に従う。例えば、発音チャンネル情報を参照して、エレメント信号の音量レベルが最も小さい発音チャンネルをトランケートするチャンネルとして決定する。また、ノート情報の前方リンクを次々と辿って最も古いノート情報を特定し、最も古いノート情報が参照している発音チャンネル情報に記録されているエレメント信号の音量レベルが最も小さい発音チャンネルをトランケートするチャンネルとして決定してもよい。
【００６４】
次に、ＣＰＵ１９ａは、ステップＳ１６ｄにて、前記ステップＳ１６ｃの処理により選択したトランケートする発音チャンネルＣＨｎに対応する発音チャンネル情報ｎ内のノート情報への参照情報を用いて、発音チャンネル情報ｎを参照しているノート情報（参照元のノート情報）を特定し、この参照元のノート情報から発音チャンネル情報ｎへの参照情報を削除する。そして、ＣＰＵ１９ａは、ステップＳ１６ｅにて、参照元のノート情報内の発音チャンネル情報への参照情報が全て削除されたか否かを判定する。ステップＳ１６ｅの判定の結果、参照元のノート情報内の発音チャンネル情報への参照情報が全て削除されている場合、ＣＰＵ１９ａは、ステップＳ１６ｆにて、ノート情報リストＮＬから参照元のノート情報を削除する。一方、ステップＳ１６ｅの処理の結果、参照元のノート情報内に他の発音チャンネル情報への参照情報が残っている場合は、ノート情報リストＮＬから参照元のノート情報を削除することなく、ステップＳ１６ｇに進む。そして、ＣＰＵ１９ａは、ステップ１６ｇにて、前記ステップＳ１６ｃの処理により選択した発音チャンネルＣＨｎのトランケートを指示する。具体的には、発音チャンネルＣＨｎのエレメント信号の音量レベルを急速に小さくするエンベロープを音量変更回路ＡＥＧに生成させるためのパラメータを第２メモリ１７ｃ３に書き込む。
【００６５】
そして、ＣＰＵ１９ａは、ステップＳ１６ｈにて、前記ステップＳ１６ｇにおいてトランケート指示を行った発音チャンネルＣＨｎを新たな発音に使用する発音チャンネルとして確保する。また、上述のステップＳ１６ｂによる空きチャンネルの検索の結果、空きチャンネルが有った場合、ＣＰＵ１９ａは、ステップＳ１６ｈにて、その空きチャンネルを新たな発音に使用する発音チャンネルとして確保する。
【００６６】
次に、ＣＰＵ１９ａは、ステップＳ１６ｉにて、発音に必要なチャンネル数分の発音チャンネルを確保したかの判定を行う。すなわち、図９のステップＳ１４の処理により取得したエレメントデータの数と同じ数の発音チャンネルを確保した場合は、ステップＳ１６ｊにて、発音チャンネル確保プログラムを終了して、発音予約プログラムに戻る。一方、確保した発音チャンネルの数が、ステップＳ１４の処理により取得したエレメントデータ数未満の場合は、ステップＳ１６ｂ〜ステップＳ１６ｈからなる処理を繰り返し実行して、エレメントデータ数分の発音チャンネルを確保する。
【００６７】
ふたたび図９の説明に戻る。発音チャンネル確保プログラムの実行により、発音に必要なチャンネル数分の発音チャンネルを確保すると、ＣＰＵ１９ａは、ステップＳ１８にて、ノート情報リストＮＬに新たなノート情報を１つ追加する（図６及び図７参照）。そして、追加したノート情報に、前記ステップＳ１２にて取得したノートナンバ及びベロシティを書き込む。また、確保した発音チャンネルに対応する発音チャンネル情報への参照情報を書き込む。さらに、１つ前に発生したノートオンイベントに対応するノート情報への参照情報である前方リンクを書き込む。次に、ＣＰＵ１９ａは、ステップＳ２０にて、前記ステップＳ１６の処理により確保した発音チャンネルに対応する発音チャンネル情報を初期化する（図６及び図８参照）。具体的には、空きチャンネルフラグを「使用中」にセットし、ノート情報への参照情報として、前記ステップＳ１８の処理により追加した新たなノート情報への参照情報をセットする。また、各種エンベロープの初期値をセットする。
【００６８】
次に、ＣＰＵ１９ａは、ステップＳ２０にて、前記ステップＳ１６の処理により確保した発音チャンネルのそれぞれについての各種パラメータを第１メモリ１７ｃ１に書き込む。すなわち、ステップＳ１４において特定したボイスデータから、エフェクトパラメータ、エンベロープパラメータ、波形データの先頭及び末尾アドレス、元ピッチなどを取得して、これらを第１メモリ１７ｃ１にそれぞれ書き込む。また、ＣＰＵ１９ａは、第１メモリ１７ｃ１にダンプレベル参照情報を第１メモリ１７ｃ１に書き込む。すなわち、ＣＰＵ１９ａは、ステップＳ１２において取得したパート番号ＰＮに応じて、第１メモリ１７ｃ１にダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のアドレスを書き込む。この例においては、手動演奏によってノートオンイベントが発生しているので、ダンプレベル設定レジスタＤＳ０のアドレスを書き込む。なお、自動演奏によってノートオンイベントが発生した場合は、ダンプレベル設定レジスタＤＳ１のアドレスを書き込む。
【００６９】
ふたたび、図９の説明に戻る。ＣＰＵ１９ａは、ステップＳ２４にて、チャンネル指示レジスタＣＳ０，ＣＳ１・・・ＣＳ１２７のうち、前記ステップＳ１６の処理により確保した発音チャンネルに対応するレジスタを「予約」にセットする。次に、ＣＰＵ１９ａは、ステップＳ２６にて、グループフルレジスタＧＦが「空きグループあり」になるまで待つ。なお、上述のように、本実施形態においては３０個のグループを使用することができるので、ステップＳ２６の開始時にグループフルレジスタＧＦが「空きグループ無し」の状態になっていることはほとんど無い。たとえ、ステップＳ２６の開始時にグループフルレジスタＧＦが「空きグループ無し」の状態になっていても、音源回路１７において、発音チャンネルに対するトランケート処理が行われ、予約中の楽音の生成が開始されることにより、短時間（例えば数ミリ秒）でグループフルレジスタＧＦが「空きグループあり」になる。したがって、ステップＳ２６の待ち時間が長くなって、ＣＰＵ１９ａが他の処理をタイミング良く実行できなくなるという問題は発生しない。
【００７０】
ＣＰＵ１９ａは、ステップＳ２６の処理にて、「空きグループあり」と判定すると、ステップＳ２８にて、予約受付回路１７ｂ１に対し、予約トリガ信号を出力し、ステップＳ３０にて、発音予約プログラムを終了する。これにより、１つのノートオンイベントについての発音チャンネルの予約が完了する。
【００７１】
つぎに、発音予約プログラムのステップＳ１６において確保した発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）が空きチャンネルであって、ステップＳ１８乃至ステップＳ２８において、発音チャンネルＣＨｎを予約した場合の音源回路１７の動作について図１１を用いて説明する。
【００７２】
予約トリガ信号を入力した予約受付回路１７ｂ１は、グループ使用可否フラグＧＵ０，ＧＵ１・・・ＧＵ３０から空きグループ番号ｍを取得するとともに、そのグループ使用可否フラグＧＵｍを「使用中」にセットする。そして、取得した空きグループ番号ｍを、発音チャンネルＣＨｎに対応するキーオンマップレジスタＫＭｎに書き込む。その後、予約受付回路１７ｂ１は、チャンネル指定レジスタＣＳを「指定なし」にセットする。キーオンマップレジスタＫＭｎにグループ番号ｍが書き込まれると、予約可否フラグセット回路１７ｂ８が、発音チャンネルＣＨｎに対応する予約可否フラグＡＦｎを「予約不可」にセットする。また、キーオンマップレジスタＫＭｎにグループ番号ｍが書き込まれたサンプリング周期の次のサンプリング周期の開始時に、キーオンマップラッチ回路１７ｂ５が、キーオンマップＫＭの内容をキーオンマップラッチＫＭＬにコピーする。すなわち、キーオンマップラッチレジスタＫＭＬｎにグループ番号ｍが書き込まれる。
【００７３】
そして、ダンプレベル到達検出回路１７ｂ４は、音量レベルレジスタＡＬ０〜ＡＬ１２７を介してレベル検出回路１７ｂ３から供給される各発音チャンネルのエレメント信号の音量レベル、及びキーオンマップラッチに基づいて、グループｍに属する全ての発音チャンネルにて生成されているエレメント信号の音量レベルがそれぞれの発音チャンネルに設定されているダンプレベルに到達したか否かを判定する。発音チャンネルＣＨｎについての判定において、ダンプレベル到達検出回路１７ｂ４には、パラメータ出力回路１７ｃ４からダンプレベル参照情報ＤＰｎが供給される。ダンプレベル到達検出回路１７ｂ４は、ダンプレベル参照情報ＤＰｎを用いて、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１を参照し、発音チャンネルＣＨｎについての上記の判定に用いるダンプレベルを取得する。この例の場合、手動演奏によってノートオンイベントが発生しているので、ダンプレベル参照情報ＤＰｎには、ダンプレベル設定レジスタＤＳ０のアドレスが書き込まれている。したがって、ダンプレベル到達検出回路１７ｂ４は、ダンプレベル設定レジスタＤＳ０に記憶されているダンプレベルを取得する。そして、ダンプレベル到達検出回路１７ｂ４は、判定結果をダンプレベル到達検出レジスタＤＬｍに書き込む。上記のように、発音チャンネルＣＨｎの予約時においては、発音チャンネルＣＨｎは空きチャンネルとなっている。すなわち、発音チャンネルＣＨｎのエレメント信号の音量レベルは、ダンプレベル参照情報ＤＰｎにより参照されるダンプレベルよりも小さくなっている。したがって、ダンプレベル到達検出回路１７ｂ４は、ＣＰＵ１９ａが発音チャンネルＣＨｎの予約を行ったサンプリング周期の次のサンプリング周期にて、発音チャンネルＣＨｎの音量レベルはダンプレベルに到達していると判定する。
【００７４】
一方、ＣＰＵ１９ａによる発音予約プログラムのステップＳ２２の処理によって、図１２に示すように、第１メモリ１７ｃ１にパラメータが書き込まれ、これらのパラメータは、ダンプレベル到達検出レジスタＤＬｍの値が「ダンプレベル到達」になるまで、第１メモリ１７ｃ１に保持されている。そして、ダンプレベル到達レジスタＤＬｍの値が「ダンプレベル到達」になると、その次のサンプリング周期にて、パラメータ転送回路１７ｃ２が、第１メモリ１７ｃ１に書き込まれているパラメータを第２メモリ１７ｃ３にコピーする。第１メモリ１７ｃ１に保持されていたパラメータが第２メモリ１７ｃ３にコピーされた後に発生したノートオンイベントに対応して再び発音チャンネルＣＨｎが予約され、その新たな予約に係るパラメータが第１メモリ１７ｃ１に書き込まれるまでは、元のパラメータは、第１メモリ１７ｃ１に残るが、この記憶領域は参照されず、未使用となる。
【００７５】
そして、発音開始指示回路１７ｂ６が、グループｍに属する全発音チャンネルに対し、発音開始を指示するとともに、これらの発音チャンネルに対応するキーオンマップレジスタ及びキーオンマップラッチレジスタを「グループ割り当てなし」にセットする。さらに、発音開始指示回路１７ｂ６は、グループ使用状況レジスタＧＵｍを「使用可」にセットする。予約可否フラグセット回路１７ｂ８は、キーオンマップレジスタＫＭｎが「グループ割り当てなし」にセットされても、所定時間（例えば、サンプリング周期の５周期分）だけ予約可否フラグを「予約不可」に保持し、その後「予約可」にセットする。
【００７６】
パラメータ転送回路１７ｃ２によって第２メモリ１７ｃ３に書き込まれたパラメータは、パラメータ出力回路１７ｃ４によって、サンプリング周期ごとに、ダンプレベル到達検出回路１７ｂ４及び各発音チャンネルの所定の回路にそれぞれ出力される。
【００７７】
つぎに、発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）の発音中（すなわち、空きチャンネルでないとき）に、新たなノートオンイベントが発生し、ＣＰＵ１９ａが、このノートオンイベントに対応する楽音生成のために発音チャンネルＣＨｎの予約をした場合の音源回路１７の動作について、図１３を用いて説明する。この例においては、予約する発音チャンネルＣＨｎは、ノートオフイベント発生後の楽音を発音中である。すなわち、音源回路１７は、発音チャンネルＣＨｎにて生成されているエレメント信号の音量レベルをサンプリング周期ごとに徐々に小さくしている。そして、ＣＰＵ１９ａが、発音チャンネル確保プログラムのステップＳ１６ｇを実行して、発音チャンネルＣＨｎのトランケート指示を行うと、音量変更回路ＡＥＧが、エレメント信号の音量レベルの減少率を大きくするエンベロープを生成して音量制御回路ＡＭＰに供給するので、急速に音量レベルが小さくなっていく。そして、ダンプレベル到達検出回路１７ｂ４は、サンプリング周期ごとに、音量レベルレジスタＡＬ０〜ＡＬ１２７を介してレベル検出回路１７ｂ３から供給される各発音チャンネルのエレメント信号の音量レベル、及びキーオンマップラッチに基づいて、グループｍに属する全ての発音チャンネルの音量レベルがそれぞれの発音チャンネルに設定されているダンプレベルに到達したか否かを判定する。この場合も、予約時に発音チャンネルＣＨｎが空きチャンネルである場合と同様に、ダンプレベル到達検出回路１７ｂ４には、パラメータ出力回路１７ｃ４からダンプレベル参照情報ＤＰｎが供給され、ダンプレベル到達検出回路１７ｂ４は、ダンプレベル参照情報ＤＰｎを用いて、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１に記憶されているダンプレベルを取得する。また、この例においても、手動演奏によってノートオンイベントが発生しているので、ダンプレベル参照情報ＤＰｎには、ダンプレベル設定レジスタＤＳ０のアドレスが書き込まれている。したがって、ダンプレベル到達検出回路１７ｂ４は、ダンプレベル設定レジスタＤＳ０に記憶されているダンプレベルを取得する。そして、取得したダンプレベルを用いて上記の判定を行い、ダンプレベル到達の判定結果を、ダンプレベル到達検出レジスタＤＬｍに書き込む。
【００７８】
上記のように、予約時に発音チャンネルＣＨｎが発音中である場合においては、予約時に発音チャンネルＣＨｎが空きチャンネルである場合と比べると、ダンプレベル到達検出回路１７ｂ４によって発音チャンネルＣＨｎがダンプレベルに到達していると判定されるまでにサンプリング周期の数周期分の時間がかかるという違いがあるが、図１４に示すように、パラメータの第１メモリ１７ｃ１及び第２メモリ１７ｃ３への書き込みの動作及びパラメータの各回路への出力の動作は、予約時に発音チャンネルＣＨｎが空きチャンネルである場合と同様である。
【００７９】
なお、上記の例においては、ノートオンイベント及びノートオフイベントは、鍵盤１１の手動演奏によって発生しているが、ノートオンイベント及びノートオフイベントは、自動演奏によっても発生する。この場合のＣＰＵ１９ａ及び音源回路１７の動作は、ステップＳ１２にて、自動演奏装置が再生する演奏情報に応じたパート番号ＰＮが割り当てられる点及びダンプレベル参照情報によってダンプレベル設定レジスタＤＳ１が参照される点を除いて、ノートオンイベント及びノートオフイベントが手動演奏によって発生した場合と同様である。
【００８０】
また、ＣＰＵ１９ａは、一定の時間間隔（例えば１ミリ秒）でタイマ１９ｃから割り込み信号を供給され、この割り込み信号に基づいて前記所定の時間間隔（例えば１０ミリ秒）ごとに、音量レベルチェックの周期処理プログラム及びパラメータ更新の周期処理プログラムを繰り返し実行する。
【００８１】
つぎに、音量レベル取得の周期処理プログラムについて説明する。図１５に示すように、ＣＰＵ１９ａは、ステップＳ４０にて、音量レベル取得の周期処理プログラムを開始すると、ステップＳ４２にて、１つの発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）を選択して、「音量レベルＣＨｎ」で表されるアドレスを用いて、発音チャンネルＣＨｎで生成されているエレメント信号の音量レベルを、音量レベルレジスタＡＬｎから読み出す。次に、ＣＰＵ１９ａは、ステップＳ４４にて、「実行用ダンプレベル参照情報ＣＨｎ」で表されるアドレスを用いて、第２メモリ１７ｃ３に記憶されているダンプレベル参照情報ＤＰｎを読み出す。次に、ＣＰＵ１９ａは、ステップＳ４６にて、前記ステップＳ４２において読み出したダンプレベル参照情報ＤＰｎを用いて、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１に記憶されているダンプレベルを読み出す。そして、ＣＰＵ１９ａは、ステップＳ４８にて、前記ステップＳ４４の処理により読み出したエレメント信号の音量レベルが、前記ステップＳ４６の処理により読み出したダンプレベル以下であるか否かを判定する。ステップＳ４８の判定の結果、エレメント信号の音量レベルがダンプレベル以下でない場合、後述のステップＳ５８に進む。
【００８２】
一方、ステップＳ４８の判定の結果、エレメント信号の音量レベルがダンプレベル以下である場合は、ステップＳ５０にて、発音チャンネルＣＨｎに対応する発音チャンネル情報ｎの空きチャンネルフラグを「空き」にセットする。つぎに、ＣＰＵ１９ａは、ステップＳ５２にて、発音チャンネル情報ｎに記録されているノート情報への参照情報を用いて、発音チャンネル情報ｎへの参照情報を記憶している参照元のノート情報を特定する。そして、参照元のノート情報の発音チャンネル情報ｎへの参照情報を削除する。つぎに、ＣＰＵ１９ａは、ステップＳ５４にて、参照元のノート情報内のすべての発音チャンネル情報への参照情報が削除されているか否かを判定する。参照元のノート情報内に発音チャンネル情報への参照情報が残っている場合は、ステップＳ５８に進む。
【００８３】
一方、すべての発音チャンネル情報への参照情報が削除されている場合は、ＣＰＵ１９ａは、ステップＳ５６にて、そのノート情報を削除する。そして、削除したノート情報の１つ前及び１つ後のノート情報内の前方リンク及び後方リンクを更新する。次に、ＣＰＵ１９ａは、ステップＳ５８にて、全ての発音チャンネルの処理が終了したか否かの判定を行う。残りの発音チャンネルがあれば、ステップＳ４２乃至ステップＳ５６からなる処理を繰り返して、全ての発音チャンネルの音量レベルの取得を行う。すべての発音チャンネルの音量レベルの取得が終了すると、ＣＰＵ１９ａは、ステップＳ６０にて、音量レベル取得の周期処理プログラムを終了する。
【００８４】
つぎに、パラメータ更新の周期処理プログラムについて説明する。パラメータ更新の周期処理プログラムは、発音中の楽音の音高、音色及び音量を変化させるエンベロープを生成するためのパラメータなどを書き込むプログラムである。ＣＰＵ１９ａは、図１６に示すステップＳ６０にて、パラメータ更新の周期処理を開始すると、ステップＳ６２にて、１つの発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）を選択し、発音チャンネルＣＨｎに対応する予約可否フラグＡＦｎを参照して、発音チャンネルＣＨｎにて発生中の楽音信号がトランケート処理中か否かの判定を行う。すなわち、予約可否フラグＡＦｎが、「予約不可」であるということは、発音チャンネルＣＨｎにて生成中のエレメント信号がトランケート処理中であることになる。この場合、後述のステップＳ６６に進む。一方、予約可否フラグＡＦｎが「予約可」であるということは、発音チャンネルＣＨｎにて生成中のエレメント信号はトランケート処理中でないことになる。この場合、ＣＰＵ１９ａは、ステップＳ６４にて、第２メモリ１７ｃ３のパラメータを更新する。
【００８５】
上記ステップＳ６４のパラメータの書き込みの例としては、演奏者によるパネル操作子１２、ペダル操作子１３などの操作により発生する演奏情報及び外部インターフェース回路２２を介したＭＩＤＩ対応の外部機器から送信された演奏情報に応じて、発音中の楽音の音高、音色、音量などを変化させる場合が挙げられる。これらの場合、ＣＰＵ１９ａは、前記演奏情報に応じて、対応する発音チャンネルのパラメータを第２メモリ１７ｃ３に書き込んで更新する。更新されたパラメータは、更新されなかった他のパラメータとともに、パラメータ出力回路１７ｃ４によって各発音チャンネルの各回路に出力される。
【００８６】
ＣＰＵ１９ａは、第２メモリ１７ｃ３に記憶された発音チャンネルＣＨｎに関するパラメータを更新すると、ステップＳ６６にて、全ての発音チャンネルについてのパラメータの更新が終了したか否かの判定を行う。残りの発音チャンネルがあれば、ステップＳ６２乃至ステップＳ６４からなる処理を繰り返して、全ての発音チャンネルについてのパラメータの更新を行う。全ての発音チャンネルについてのパラメータの更新が終了すると、ＣＰＵ１９ａは、ステップＳ６８にて、パラメータ更新の周期処理プログラムを終了する。
【００８７】
上記の電子楽器においては、手動演奏のパートの楽音のダンプレベルを自動演奏のパートの楽音のダンプレベルよりも小さくした。したがって、音量レベル取得の周期処理のステップＳ４８において、自動演奏のパートのエレメント信号を発生している発音チャンネルは、手動演奏のパートのエレメント信号を発生している発音チャンネルよりも音量レベルが大きい段階でダンプレベル以下であると判定される。したがって、自動演奏のパートのエレメント信号と手動演奏のパートのエレメント信号の音量レベルの減衰速度が同一であるとき、自動演奏のパートのエレメント信号を発生している発音チャンネルは、手動演奏のパートのエレメント信号を発生している発音チャンネルよりも、エレメント信号の発生開始からの経過時間が短い時点で開放される。自動演奏のパートは、手動演奏のパートに比べて、音数が多く、音色も多様であるであることが多いので、自動演奏に係る発音チャンネルにおいては、比較的音量レベルが大きい段階で消音して、他のノートオンイベントに対応する楽音を発生させても、楽音が不自然に途切れたように感じ難い。一方、手動演奏に係る発音チャンネルにおいては、楽音の音量レベルの減衰時間が長く、発音開始からの経過時間が長くなったとしても、音量レベルが十分に小さくなるまで開放されないので、減衰時間の長い音色で演奏しても楽音が途切れたように感じ難い。したがって、自動演奏によって多くの発音チャンネルを使用しても、主に、自動演奏に使用した発音チャンネルの中から空きチャンネルを確保することができ、発音中の楽音をトランケートする機会を減らすことができる。とくに、自動演奏よりも演奏上の重要度が高い手動演奏のパートの楽音をトランケートする機会を減らすことができるので、演奏が不自然に途切れたように感じられるのを抑制できる。
【００８８】
また、発音チャンネル確保処理（図１０）において、音量レベルがダンプレベル以下である発音チャンネルがないとき、あらかじめ決められた規則に従って、新たな楽音信号の発生を割り当てる発音チャンネルを選択するようにした。例えば、最も古くから発生されていて演奏上重要でなくなっている楽音信号を発生している発音チャンネル又は音量レベルが閾値より大きい楽音信号を発生している発音チャンネルのうち、音量レベルが最も小さく、演奏上重要でなくなっている楽音信号を発生している発音チャンネルを新たな楽音信号発生を割り当てる発音チャンネルとして選択するようにした。そして、選択した発音チャンネルにて発生中の楽音信号をトランケートした後、新たな楽音信号の発生を開始するので、演奏中の楽音が不自然に途切れたように感じられることを抑制できるとともに、新たな楽音信号の発生を発音チャンネルに割り当ててから新たな楽音信号の発生を開始するまでの時間を短くできる。
【００８９】
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【００９０】
ｇ．変形例
上記実施形態においては、１つのノートオンイベントに対応した楽音信号の発生のために十分な数の空きチャンネルがある場合であっても、空きチャンネルが不足していて発音中の楽音をトランケートする場合と同様に、発音チャンネルを予約するようにした。これは、音源回路１７の処理手順を統一することにより、音源回路１７の回路構成を簡単にするためである。しかし、１つのノートオンイベントに対応した楽音信号の発生のために十分な数の空きチャンネルがある場合は、それらの発音チャンネルを予約する必要はない。すなわち、第１メモリ１７ｃ１及び第２メモリ１７ｃ３を介することなく、ＣＰＵ１９ａが、各発音チャンネルＣＨｎ（ｎ＝０，１・・・１２７）のレジスタにパラメータを直接書き込み可能に構成しておき、ＣＰＵ１９ａが、ステップＳ２２（図９）にて、パラメータを第１メモリ１７ｃ１ではなく、各発音チャンネルのレジスタに直接書き込んでもよい。ただし、ダンプレベル参照情報は、第２メモリ１７ｃ３に書き込んでおく。そして、ステップＳ２４乃至ステップＳ２８（図９）に代えて、ＣＰＵ１９ａが発音開始指示するようにすればよい。これによれば、ノートオンイベントに対応する十分な数の空きチャンネルがある場合には、発音チャンネルの予約のための処理を省略できるので、処理速度を向上させることができる。
【００９１】
また、上記の変形例においては、ダンプレベル到達検出回路１７ｂ４は、空きチャンネルが不足する場合にのみ、予約された発音チャンネルの音量レベルがダンプレベルに到達したか否かを判定する。このとき、比較対象とするダンプレベルは、全ての発音チャンネルに共通（例えば、ダンプレベル設定レジスタＤＳ０に記憶されているダンプレベル）としてもよい。このように構成しても、予約された発音チャンネルにおいては、トランケート処理によって、音量レベルが急速に減少しているので、ダンプレベルとしてどのような値を設定しても、ダンプレベルに到達したと判定されるのにサンプリング周期の数周期分の差しか生じない。これによれば、ダンプレベル到達検出回路１７ｂ４は、発音チャンネルごとにダンプレベルに到達したことを判定するために比較対象とするダンプレベルを取得する必要がないので、処理速度をさらに向上させることができる。
【００９２】
また、上記実施形態においては、手動演奏のパート用と自動演奏のパート用の２つのダンプレベルを設定するようにした。しかし、さらに多くのダンプレベルを設定してもよい。例えば、手動演奏パートにおいて、右手で演奏するメロディパートのダンプレベルと左手で演奏する伴奏パートのダンプレベルを異ならせてもよい。例えば、メロディパートのダンプレベルを「−９６ｄＢ」に設定し、伴奏パートのダンプレベルを「−９０ｄＢ」に設定してもよい。これによれば、演奏上最も重要な手動演奏のメロディパートの楽音がトランケートされる機会を減らすことができる。また、上記実施形態及びその変形例においては、パートを条件としてダンプレベルを設定するようにしたが、パート以外にも、エフェクトの種類、ＭＩＤＩチャンネル、演奏情報の送信元（外部機器又は内蔵の自動演奏装置）などを条件としてダンプレベルを設定するようにしてもよい。
【００９３】
また、上記実施形態においては、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１にダンプレベルをそれぞれ書き込んでおき、ダンプレベル参照情報ＤＰｎには、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のアドレスを書き込むようにした。そして、このダンプレベル参照情報ＤＰｎに書き込まれているアドレスを用いてダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のいずれかを特定するようにした。しかし、これに代えて、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１にそれぞれ対応するインデックス番号（「０」及び「１」）で識別するようにし、ダンプレベル参照情報ＤＰｎとしてインデックス番号を記憶するようにしてもよい。そして、このダンプレベル参照情報ＤＰｎに書き込まれているインデックス番号を用いてダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１のいずれかを特定するようにしてもよい。これによれば、ダンプレベル参照情報ＤＰｎの桁数を小さくすることができ、第１メモリ１７ｃ１及び第２メモリ１７ｃ３の記憶容量を小さくすることができる。また、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１の桁数を大きくする場合、ダンプレベル参照情報ＤＰｎの桁数を大きくする必要はない。すなわち、ダンプレベル参照情報ＤＰｎの桁数を小さくしたまま、ダンプレベル設定レジスタＤＳ０及びダンプレベル設定レジスタＤＳ１の桁数を大きくしてダンプレベルのダイナミックレンジを大きくすることができる。
【００９４】
また、上記実施形態においては、ダンプレベル設定レジスタＤＳ０，ＤＳ１にダンプレベルを書き込んでおき、キーオンイベントが発生して発音チャンネルを予約するごとに、予約する発音チャンネルにて発生させる楽音信号のダンプレベルを規定するために、ダンプレベル設定レジスタＤＳ０又はダンプレベル設定レジスタＤＳ１を参照するダンプレベル参照情報を第１メモリ１７ｃ１に書き込むようにした。しかしこれに代えて、ダンプレベル自体を第１メモリ１７ｃ１に書き込んでもよい。そして、第１メモリ１７ｃ１に書き込んだダンプレベルをパラメータ転送回路１７ｃ２によって第２メモリ１７ｃ３に転送し、第２メモリ１７ｃ３に転送されたダンプレベルをパラメータ出力回路１７ｃ４によって、ダンプレベル到達検出回路１７ｂ４に出力するようにしてもよい。これによれば、ダンプレベル設定レジスタＤＳ０，ＤＳ１を設けておく必要がないので、音源回路１７の回路構成をより簡単にできる。
【００９５】
また、上記実施形態においては、レベル検出回路１７ｂ３は、各発音チャンネルの音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルを検出するようにした。そして、ダンプレベル到達検出回路１７ｂ４は、レベル検出回路１７ｂ３が検出した音量レベルを用いて、各グループに属する発音チャンネルのエレメント信号がダンプレベルに到達したか否かを判定するようにした。また、レベル検出回路１７ｂ３が検出した音量レベルを用いて、トランケートする発音チャンネルを決定するようにした（図１０のステップＳ１６ｃ）。さらに、レベル検出回路１７ｂ３が検出した音量レベルを用いて、空きチャンネルを検索するようにした（図１５のステップＳ４６乃至Ｓ５７）。しかし、上記ダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索の各処理に対応して、各発音チャンネルの音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルを検出するレベル検出回路をそれぞれ設けてもよいし、２つのレベル検出回路を設けて、一方のレベル検出回路を各処理のうちのいずれか１つの処理用とし、他方のレベル検出回路を残りの処理用としてもよい。また、ダンプレベル到達の検出専用のレベル検出回路を設けた場合、このダンプレベル到達の検出専用のレベル検出回路は、上記実施形態のように、この電子楽器が有する全ての発音チャンネルにて生成されているエレメント信号の音量レベルを検出してもよいし、予約されている発音チャンネルにて生成されているエレメント信号の音量レベルのみを検出するようにしてもよい。
【００９６】
また、上記のダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索においては、各発音チャンネルの音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルではなく、音量変更回路ＡＥＧが音量制御回路ＡＭＰに供給する音量制御信号を用いてもよい。すなわち、レベル検出回路１７ｂ３は、音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルを検出するのではなく、音量変更回路ＡＥＧが音量制御回路ＡＭＰに供給する音量制御信号を検出するようにしてもよい。
【００９７】
また、音量制御回路ＡＭＰから出力されるエレメント信号の音量レベルを検出するレベル検出回路１７ｂ３に加えて、音量変更回路ＡＥＧが音量制御回路ＡＭＰに供給する音量制御信号を検出する音量制御信号検出回路を設けておき、ダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索の各処理に応じて、レベル検出回路１７ｂ３及び音量制御信号検出回路によってそれぞれ検出される音量レベル及び音量制御信号を組み合わせて用いてもよいし、適宜使い分けるようにしてもよい。
【００９８】
また、上記実施形態においては、音源回路１７は、波形メモリＷＭから波形データを読み出して発音する波形メモリ音源とした。しかし、本発明は、波形メモリ音源に限られず、楽音信号を発生させる発音チャンネルを有する音源であれば、どのような方式の音源であっても適用でき、上記実施形態と同様の効果が得られる。
【符号の説明】
【００９９】
１７ｂ…発音予約回路、１７ｂ３…レベル検出回路、１７ｂ４…ダンプレベル到達検出回路、１７ｂ６…発音開始指示回路、１７ｃ…楽音パラメータ入出力回路、１７ｃ１…第１メモリ、１７ｃ２…パラメータ転送回路、１７ｃ３…第２メモリ、１７ｃ４…パラメータ出力回路、１９ａ…ＣＰＵ、ＤＳ０，ＤＳ１…ダンプレベル設定レジスタ
【図１】
0005648791.tif 000002
【図２】
0005648791.tif 000003
【図３】
0005648791.tif 000004
【図４】
0005648791.tif 000005
【図５】
0005648791.tif 000006
【図６】
0005648791.tif 000007
【図７】
0005648791.tif 000008
【図８】
0005648791.tif 000009
【図９】
0005648791.tif 000010
【図１０】
0005648791.tif 000011
【図１１】
0005648791.tif 000012
【図１２】
0005648791.tif 000013
【図１３】
0005648791.tif 000014
【図１４】
0005648791.tif 000015
【図１５】
0005648791.tif 000016
【図１６】
0005648791.tif 000017