JP5504983B2 - 楽音信号発生装置 - Google Patents
楽音信号発生装置 Download PDFInfo
- Publication number
- JP5504983B2 JP5504983B2 JP2010052610A JP2010052610A JP5504983B2 JP 5504983 B2 JP5504983 B2 JP 5504983B2 JP 2010052610 A JP2010052610 A JP 2010052610A JP 2010052610 A JP2010052610 A JP 2010052610A JP 5504983 B2 JP5504983 B2 JP 5504983B2
- Authority
- JP
- Japan
- Prior art keywords
- reservation
- sound
- tone
- channel
- circuit
- 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.)
- Active
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
本発明は、楽音信号を発生するための発音チャンネルを有する音源回路を備え、新たな楽音信号の発生を前記発音チャンネルに割り当てて発音させる楽音信号発生装置に関する。
従来から、例えば下記特許文献1に示されているように、楽音信号の発生開始を指示するCPU及び前記指示により楽音信号の発生を開始する音源回路を備えた楽音信号発生装置は知られている。この音源回路は、楽音信号を発生するための複数の発音チャンネルを有する。上記の楽音信号発生装置においては、全ての発音チャンネルにおいて楽音信号を発生しているときに、CPUが音源回路に新たな楽音信号の発生開始を指示する場合、何れかの発音チャンネルを選択して、その発音チャンネルにて発生されている楽音信号の音量レベルを減衰させる指示を行う。そして、CPUは、前記楽音信号の音量レベルを減衰させる指示を行った発音チャンネルから出力される楽音信号の音量レベルを監視し続け、その音量レベルが所定の小さなレベル(以降、ダンプレベルという。)以下になったときに前記新たな楽音の発生開始を指示するようにしている。
しかし、上記従来の楽音信号発生装置においては、CPUが楽音信号の音量レベルを監視している間は、CPUは、他の処理を行うことができないので、楽音信号発生装置の処理速度が低下する原因となっていた。
本発明は上記問題に対処するためになされたもので、その目的は、処理速度を向上させた楽音信号発生装置を提供することにある。
上記目的を達成するために、本発明の特徴は、楽音信号を発生する発音チャンネル(CH0〜CH127)を有する音源部(17)と、楽音信号発生の指示に応答して、楽音信号発生を発音チャンネルに指示する制御部(19a)とを備えた楽音信号発生装置において、制御部は、楽音信号発生の指示に応答して発生させる楽音信号を規定する楽音情報を音源部に供給して、楽音信号を発生させる発音チャンネルを予約する予約手段(S22,S28)と、予約手段によって予約しようとする発音チャンネルが既に他の楽音信号発生のために予約されている場合に、前記他の予約をキャンセルするキャンセル手段(S16i)とを有し、音源部は、予約手段による予約及びキャンセル手段による予約のキャンセルに応答して発音チャンネルの予約の有無を表す予約情報を記憶する予約情報記憶手段(KM0〜KM127、KML0〜KML127、AF0〜AF127)と、前記予約した発音チャンネルにて発生されている楽音信号の音量レベルが所定の音量レベル以下であるときに、前記記憶した予約情報によって予約が表わされている発音チャンネルにて、楽音情報により規定される楽音信号の発生を開始させる楽音信号発生開始手段(17b3,17b4,17b6,AL0〜AL127,DL1〜DL30)とを有することにある。この場合、音源部は、楽音信号を発生する複数の発音チャンネルを有し、制御部は、楽音信号発生の指示に応答して楽音信号発生を複数の発音チャンネルのうちの1つ又は複数の発音チャンネルに割り当てるとよい。
上記のように構成した楽音信号発生装置によれば、予約しようとしている発音チャンネルに既に他の予約がされている場合であっても、前記他の予約を強制的にキャンセルして、後に発生した楽音信号発生指示に対応する楽音信号の発生のために、その発音チャンネルを予約することができる。したがって、予約をしようとする発音チャンネルが予約済みであっても、制御部は、その発音チャンネルの予約が実行されて空き状態になるのを待つ必要が無い。そして、制御部は、前記予約をした発音チャンネルにおける楽音信号発生の開始タイミングを制御する必要も無い。すなわち、楽音信号発生の開始タイミングは音源部によって制御されるので、制御部は、前記予約の後、すぐに他の処理の実行を開始できる。したがって、楽音信号発生装置の処理速度を向上させることができる。
また、本発明の他の特徴は、音源部は、予約手段による予約及びキャンセル手段による予約のキャンセルに応答して、予約情報を更新する更新手段(17b1,17b7)と、更新手段が前記他の予約をキャンセルして予約情報を更新したときにセットされ、楽音信号発生開始手段が前記他の楽音信号発生の指示に応答して楽音信号を発生開始させたときにクリアされるキャンセルフラグを記憶するキャンセルフラグ記憶手段(CF0〜CF127)と、制御部から供給された楽音情報に応じて、楽音信号の音量レベルを制御する音量レベル制御手段(AMP)とをさらに有し、制御部は、キャンセルフラグがクリアされているときに前記他の楽音信号発生のために予約されていた発音チャンネルにて発生されている楽音信号の音量レベルを強制的に減衰させることを前記音量レベル制御手段に指示する減衰指示手段(S16j)を有することにある。
上記のように構成した楽音信号発生装置によれば、制御部は、キャンセル指示をした前記他の予約が、音源部においてキャンセルされたか否かを判定することができる。制御部が、前記他の予約をキャンセルする指示を行っても、その指示が間に合わず、音源部が、前記他の予約に係る楽音信号の発音処理を開始することがある。この場合、制御部が、前記他の予約がキャンセルされたものとして新たにその発音チャンネルを予約すると、つぎに説明するように、新たな予約に係る楽音信号の発音処理開始が遅れることがある。すなわち、キャンセルされずに発音処理開始された前記他の予約に係る楽音が、例えばオルガンの音色のように持続系の音色の場合は、キーオフイベントが発生するまで、新たな予約に係る楽音の発音処理を開始できない。また、キャンセルされずに発音処理開始された前記他の予約に係る楽音が、例えばピアノの音色のように減衰系の音色であったとしても、減衰時間が長いと、ダンプレベルに達するまでは、新たな予約に係る楽音の発音処理開始できない。このように、新たな予約に係る楽音信号の発音処理開始が遅れることがある。そこで、前記他の予約がキャンセルされたか否かの判定を行い、判定の結果、前記他の予約がキャンセルされた場合には、新たな予約に係る楽音を発音させるために、その発音チャンネルの予約をし直せば良い。一方、キャンセルされなかった場合には、制御部は、前記他の予約に係る楽音を減衰させるとともに、その発音チャンネルを新たに予約する。このように、制御部が、前記他の予約がキャンセルされたか否かを判定して、キャンセルされずに発音処理開始した場合には、前記他の予約に係る楽音を強制的に減衰させることにより、新たな予約に係る楽音の発音処理開始が遅れることを防止できる。
なお、前記括弧内の符号は、本発明の理解を容易にするために、後述する実施形態との対応関係を示すものであるが、本発明はこれに限定されるものではない。
a.全体構成
まず、本発明の一実施形態について図面を用いて説明する。図1は、本発明の一実施形態に係る楽音信号発生装置が適用される電子楽器の全体ブロック図である。この電子楽器は、鍵盤11、パネル操作子12、ペダル操作子13、操作子インターフェース回路14、表示器16、音源回路17、サウンドシステム18、コンピュータ部19、記憶装置21及び外部インターフェース回路22を備えている。
まず、本発明の一実施形態について図面を用いて説明する。図1は、本発明の一実施形態に係る楽音信号発生装置が適用される電子楽器の全体ブロック図である。この電子楽器は、鍵盤11、パネル操作子12、ペダル操作子13、操作子インターフェース回路14、表示器16、音源回路17、サウンドシステム18、コンピュータ部19、記憶装置21及び外部インターフェース回路22を備えている。
鍵盤11は、演奏者の手によって操作されて、それぞれ発生させる楽音信号の音高を指定するとともに楽音信号の発生及び停止を指示する複数の白鍵及び黒鍵からなる。パネル操作子12は、電子楽器の操作パネル上に設けられた複数の操作子からなる。これらの操作子も、演奏者の手によって操作されて、発生される楽音信号の音色、音量、効果等の楽音特性を設定する操作子を含み、電子楽器全体の動作を設定するためのものである。これらの操作子には、オンオフ操作子に加えて、回転式操作子、スライド式操作子などの各種操作子が含まれる。また、パネル操作子12にはオンオフ操作子に対応したスイッチ、回転式操作子に対応したボリューム又はロータリーエンコーダ、スライド式操作子に対応したボリューム又はリニアエンコーダなど、各操作子に対応した作動素子も含まれる。
ペダル操作子13は、演奏者の足によって操作されて、発生される楽音信号の音色、音量、効果などの楽音特性を設定する。これらの操作子には、オンオフ操作子に加えてスライド式操作子が含まれる。また、ペダル操作子13には、オンオフ操作に対応したスイッチ、スライド式操作子に対応したボリューム又はリニアエンコーダなどの各操作子に対応した作動素子も含まれる。
鍵盤11、パネル操作子12及びペダル操作子13は、バス23に接続された操作子インターフェース回路14に接続されている。そして、鍵盤11、パネル操作子12及びペダル操作子13の操作を表す演奏情報が、操作子インターフェース回路14及びバス23を介して後述するコンピュータ部19に供給される。表示器16は、液晶ディスプレイ(LCD)によって構成され、表示画面上に文字、図形などを表示する。この表示器16の表示は、バス23を介してコンピュータ部19によって制御される。
音源回路17は、複数の波形データを記憶した波形メモリWMを含み、波形メモリWMから、CPU19aによって指定された波形データを読み出してディジタル楽音信号を生成し、サウンドシステム18に供給する。なお、ディジタル楽音信号にコーラス効果、残響効果などの各種効果を付加するエフェクタ回路は、後述するように音源回路17に含まれている。サウンドシステム18は、音源回路17から供給されたディジタル楽音信号をアナログ楽音信号にD/A変換するD/A変換器、変換したアナログ楽音信号を増幅するアンプ、及び増幅されたアナログ楽音信号を音響信号に変換して出力するスピーカを備えている。
コンピュータ部19は、バス23にそれぞれ接続されたCPU19a、タイマ19b、ROM19c及びRAM19dからなる。CPU19aは、操作子インターフェース回路14及び外部インターフェース回路22から供給される演奏情報に応じて、音源回路17に発音のために必要な情報を供給する。とくに、CPU19aは、演奏者による鍵盤11の押鍵操作によって発生するノートオンイベント及び外部インターフェース回路22を介して外部機器から供給される演奏情報又は記憶装置21に記憶されていて再生される演奏情報を構成するノートオンイベントに応じて、発音予約プログラムを実行し、音源回路17に対し新たな発音の予約を行う。すなわち、CPU19aは、新たな発音に係る楽音自体に関するパラメータ(以下、楽音パラメータという。)を音源回路17に供給するだけで、発音の開始指示は行わない。発音の開始タイミングは、音源回路17によって制御される。
また、記憶装置21は、HDD、FDD、CD−ROM、MO、DVDなどの大容量の不揮発性記録媒体と、同各記録媒体に対応するドライブユニットを含むものであり、各種データ及びプログラムの記憶及び読出しを可能にしている。これらのデータ及びプログラムは予め記憶装置21に記憶されていてもよいし、外部インターフェース回路22を介して外部から取り込んでもよい。そして、記憶装置21に記憶された各種データ及びプログラムは、CPU19aによって読み込まれ、電子楽器の制御に利用される。外部インターフェース回路22は、MIDIインターフェース回路及び通信インターフェース回路を含んでおり、他の電子音楽装置、パーソナルコンピュータなどのMIDI対応の外部機器に接続可能となっているとともに、インターネットなどの通信ネットワークに接続可能となっている。
b.音源回路の構成
次に、音源回路17の構成について詳しく説明する。まず音源回路17の全体構成について説明する。音源回路17は、図2に示すように、波形データを記憶した波形メモリWMを備えている。また、音源回路17は、波形メモリWMから波形データを読み出してディジタル楽音信号を生成する複数(例えば128個)の発音チャンネルCH0,CH1・・・CH127を備えている。また、音源回路17は、発音チャンネルCH0,CH1・・・CH127にて生成されたディジタル楽音信号を累算してサウンドシステム18に出力するチャンネル累算回路17aを備えている。また、音源回路17は、CPU19aによる発音チャンネルの予約の受け付け及び予約された発音チャンネルに発音の開始指示を行う発音予約回路17bを備えている。さらに、音源回路17は、CPU19aから出力された各発音チャンネル用の楽音パラメータを入力し、入力した楽音パラメータを各発音チャンネルCH0,CH1・・・CH127に所定のタイミングで出力する楽音パラメータ入出力回路17cを備えている。つぎに、これらの波形メモリWM、発音チャンネルCH0,CH1・・・CH127、チャンネル累算回路17a、発音予約回路17b及び楽音パラメータ入出力回路17cについて詳しく説明する。
次に、音源回路17の構成について詳しく説明する。まず音源回路17の全体構成について説明する。音源回路17は、図2に示すように、波形データを記憶した波形メモリWMを備えている。また、音源回路17は、波形メモリWMから波形データを読み出してディジタル楽音信号を生成する複数(例えば128個)の発音チャンネルCH0,CH1・・・CH127を備えている。また、音源回路17は、発音チャンネルCH0,CH1・・・CH127にて生成されたディジタル楽音信号を累算してサウンドシステム18に出力するチャンネル累算回路17aを備えている。また、音源回路17は、CPU19aによる発音チャンネルの予約の受け付け及び予約された発音チャンネルに発音の開始指示を行う発音予約回路17bを備えている。さらに、音源回路17は、CPU19aから出力された各発音チャンネル用の楽音パラメータを入力し、入力した楽音パラメータを各発音チャンネルCH0,CH1・・・CH127に所定のタイミングで出力する楽音パラメータ入出力回路17cを備えている。つぎに、これらの波形メモリWM、発音チャンネルCH0,CH1・・・CH127、チャンネル累算回路17a、発音予約回路17b及び楽音パラメータ入出力回路17cについて詳しく説明する。
b1.波形メモリ
波形メモリWMには、図3に示すように複数種類の楽器の楽音波形を表す波形データが記憶されている。1つの楽器の楽音が複数の成分に分解されて別々の楽音波形として記憶されている場合もある。例えばピアノ音のように、発音開始時の音色が激しく変化する成分と、発音開始から終了まであまり音色が変化しない成分とに分解して別々の楽音波形として記憶している場合もある。そこで、1つの楽音波形を構成要素ごとに分解した楽音波形をエレメント波形といい、それぞれ別々の発音チャンネルによって読み出されたエレメント波形から生成されるそれぞれのディジタル楽音信号をエレメント信号という。生成された各エレメント信号は、チャンネル累算回路17aによって合成されて1つの楽器の楽音信号となる。なお、楽器の種類によっては、1つの楽音波形を構成要素ごとに分解することなく、1つの波形として記憶してもよい。この場合、1つの楽音波形を構成要素ごとに分解していないので、厳密に言えば、この楽音波形はエレメント波形では無いが、1つの楽器の楽音信号が1つのエレメント波形のみから生成されるとみなすことができるので、この場合の楽音波形もエレメント波形という。
波形メモリWMには、図3に示すように複数種類の楽器の楽音波形を表す波形データが記憶されている。1つの楽器の楽音が複数の成分に分解されて別々の楽音波形として記憶されている場合もある。例えばピアノ音のように、発音開始時の音色が激しく変化する成分と、発音開始から終了まであまり音色が変化しない成分とに分解して別々の楽音波形として記憶している場合もある。そこで、1つの楽音波形を構成要素ごとに分解した楽音波形をエレメント波形といい、それぞれ別々の発音チャンネルによって読み出されたエレメント波形から生成されるそれぞれのディジタル楽音信号をエレメント信号という。生成された各エレメント信号は、チャンネル累算回路17aによって合成されて1つの楽器の楽音信号となる。なお、楽器の種類によっては、1つの楽音波形を構成要素ごとに分解することなく、1つの波形として記憶してもよい。この場合、1つの楽音波形を構成要素ごとに分解していないので、厳密に言えば、この楽音波形はエレメント波形では無いが、1つの楽器の楽音信号が1つのエレメント波形のみから生成されるとみなすことができるので、この場合の楽音波形もエレメント波形という。
各エレメント波形は、鍵音高の所定の範囲毎(例えば、1オクターブ毎)に設けられた波形セットから構成され、各発音チャンネルCH0,CH1・・・CH127において補間処理を行うことにより、押鍵された鍵の音高に対応したディジタル楽音信号を生成する。また、波形セットは、押鍵強さの所定の範囲毎(例えば、4段階に分けた押鍵強さの段階毎)に設けられた波形データから構成され、各発音チャンネルCH0,CH1・・・CH127において補間処理を行うことにより、押鍵強さに対応した音色及び音量のエレメント信号を生成する。なお、各鍵ごとに波形セットを設けてもよい。また、エレメント波形を、鍵音高に関係なく、1つの波形セットのみから構成してもよい。さらに、各波形セットは、押鍵強さに関係なく、1つの波形データのみから構成される場合もある。
b2.発音チャンネル
各発音チャンネルCH0,CH1・・・CH127は、それぞれ同様に構成されており、サンプリング周期ごとにエレメント信号の生成をそれぞれ行う。以下の説明では、発音チャンネルにおけるエレメント信号の生成を単に発音という。各発音チャンネルCH0,CH1・・・CH127は、低周波信号発生回路LFO、ピッチ変更回路PEG、カットオフ周波数変更回路FEG及び音量変更回路AEGを備えている。さらに、各発音チャンネルCH0,CH1・・・CH127は、アドレス発生回路ADR、サンプル補間回路SPI、フィルタ回路FLT及び音量制御回路AMPも備えている。
各発音チャンネルCH0,CH1・・・CH127は、それぞれ同様に構成されており、サンプリング周期ごとにエレメント信号の生成をそれぞれ行う。以下の説明では、発音チャンネルにおけるエレメント信号の生成を単に発音という。各発音チャンネルCH0,CH1・・・CH127は、低周波信号発生回路LFO、ピッチ変更回路PEG、カットオフ周波数変更回路FEG及び音量変更回路AEGを備えている。さらに、各発音チャンネルCH0,CH1・・・CH127は、アドレス発生回路ADR、サンプル補間回路SPI、フィルタ回路FLT及び音量制御回路AMPも備えている。
低周波信号発生回路LFOは、発音開始後、音高、音色及び音量を周期的に変化させる変調信号を生成して、アドレス発生回路ADR、フィルタ回路FLT及び音量制御回路AMPにそれぞれ供給する。低周波信号発生回路LFOには、楽音パラメータ入出力回路17cを介して、CPU19aから低周波信号制御パラメータが供給される。低周波信号制御パラメータには、低周波信号発生回路LFOから出力する変調信号の波形、周波数及び振幅を指定するデータが含まれる。
ピッチ変更回路PEGは、エレメント信号の音高を制御する音高制御信号をアドレス発生回路ADRに供給する。ピッチ変更回路PEGは、発音開始後の時間経過に従ってエレメント信号の音高が変化するように、時間経過に従って変化する音高制御信号を生成してアドレス発生回路ADRに供給する。この時間経過に従って変化する一連の音高制御信号をピッチエンベロープと呼ぶ。また、カットオフ周波数変更回路FEGは、エレメント信号の周波数特性を制御するカットオフ周波数制御信号をフィルタ回路FLTに供給する。カットオフ周波数制御回路FEGは、発音開始後の時間経過に従ってフィルタのカットオフ周波数が変化するように、時間経過に従って変化するカットオフ周波数制御信号を生成して、フィルタ回路FLTに供給する。この時間経過に従って変化する一連のカットオフ周波数制御信号をカットオフエンベロープと呼ぶ。また、音量変更回路AEGは、エレメント信号の音量を制御する音量制御信号を音量制御回路AMPに供給する。音量変更回路AEGは、発音開始後の時間経過に従ってエレメント信号の音量が変化するように、時間経過に従って変化する音量制御信号を生成して音量制御回路AMPに供給する。この時間経過に従って変化する一連の音量制御信号を音量エンベロープと呼ぶ。
例えば、カットオフエンベロープは、図4に示すように、カットオフ周波数制御信号の変化率が異なる第1乃至第5ステージからなる。カットオフ周波数変更回路FEGには、楽音パラメータ入出力回路17cを介して、CPU19aからカットオフエンベロープパラメータが供給される。カットオフエンベロープパラメータは、発音開始時のカットオフ周波数を表す初期レベル、各ステージの終了時のカットオフ周波数(アタックレベル、第1ディケイレベル、第2ディケイレベル及びリリースレベル)を表す各ステージの目標レベル及び各ステージの持続時間(アタックタイム、第1ディケイタイム、第2ディケイタイム及びリリースタイム)からなる。
発音開始時には、カットオフ周波数変更回路FEGに対して、初期レベル、第1ステージの目標レベル及び第1ステージの持続時間(すなわち、アタックレベル及びアタックタイム)のみが供給され、第2ステージ以降の目標レベル及び持続時間(すなわち、ディケイ1レベル、ディケイ2レベル、リリースレベル、ディケイ1タイム、ディケイ2タイム及びリリースタイム)は、1つ前のステージが終了した後に供給される。ただし、第4ステージにおいては、演奏者による鍵盤11の離鍵操作によってノートオフイベントが発生し、CPU19aからリリースレベル及びリリースタイムが供給されるまでの間、カットオフ周波数が第2ディケイレベルに維持される。カットオフ周波数変更回路FEGは、各ステージの目標レベル及び持続時間から、各ステージのカットオフ周波数の変化率を算出し、各サンプリング周期ごとに、カットオフ周波数制御信号を前記算出した変化率で変化させてフィルタ回路FLTに供給する。
なお、初期レベルと最終ステージの目標レベルは異なっていてもよい。また、CPU19aから供給される初期レベル及び各ステージの目標レベルは、絶対値で表わされていてもよいし、各ステージに共通の基準となるカットオフ周波数及び基準となるカットオフ周波数に対する相対値で表わされていてもよい。また、上記の例では、カットオフ周波数エンベロープは、5つのステージからなるようにしたが、ステージ数はこれに限られず、さらにステージ数を増やしてもよい。逆に、ステージ数を減らしてもよい。
ピッチ変更回路PEG及び音量変更回路AEGにも、カットオフ周波数変更回路FEGと同様に、CPU19aからピッチエンベロープパラメータ及び音量エンベロープパラメータが供給される。ピッチエンベロープパラメータ及び音量エンベロープパラメータもカットオフエンベロープパラメータと同様に、初期レベル、各ステージの目標レベル及び持続時間を含む。すなわち、ピッチエンベロープ及び音量エンベロープも、ピッチエンベロープパラメータ及び音量エンベロープパラメータによって規定される複数のステージからなり、各サンプリング周期ごとに、時間経過に従って変化する音高制御信号及び音量制御信号を生成して、アドレス発生回路ADR及び音量制御回路AMPにそれぞれ供給する。
アドレス発生回路ADRは、CPU19aから楽音パラメータ入出力回路17cを介して供給された楽音パラメータに含まれる押鍵された鍵の鍵音高を表す音高値、ピッチ変更回路PEGから供給された音高制御信号及び低周波信号発生回路LFOから供給された変調信号を合成してピッチシフト量を算出する。ここで、アドレス発生回路ADRには、CPU19aから、楽音パラメータ入出力回路17cを介して、波形データ情報が供給される。波形データ情報は、波形メモリWMから読み出す波形データの先頭アドレス及び末尾アドレス、並びにこの波形データの音高を表す元ピッチからなる。この元ピッチと発音する楽音のピッチとの差が、ピッチシフト量である。次に、アドレス発生回路ADRは、ピッチシフト量に応じて、波形データの読み出しレートを決定する。そして、アドレス発生回路ADRは、前記決定した読み出しレートで波形メモリWMから波形データを読み出す。ただし、ピッチシフト量に応じて決定される読み出しレートは、通常、小数部を含むので、波形データの読み出しアドレスも整数部と小数部からなる。そこで、この波形データの読み出しでは、整数部を用いて波形データの隣合う前後一対のサンプル値を読み出し、サンプル補間部SPIへ供給する。サンプル補間部SPIは、供給された一対のサンプル値とアドレスの小数部とを用いて補間演算を行ってディジタル楽音データを生成して、フィルタ回路FLTに供給する。
フィルタ回路FLTは、カットオフ周波数変更回路FEGから供給されたカットオフ周波数制御信号及び低周波信号発生回路LFOから供給された変調信号を合成して、フィルタのカットオフ周波数を算出する。フィルタ回路FLTには、CPU19aから、楽音パラメータ入出力回路17cを介して、フィルタ制御パラメータも供給されている。フィルタ制御パラメータには、フィルタの種類(例えば、ハイパスフィルタ、ローパスフィルタなど)を選択するフィルタ選択情報が含まれる。フィルタ回路FLTは、フィルタ選択情報に従って選択したフィルタのカットオフ周波数を前記算出したカットオフ周波数に設定し、サンプル補間回路SPIから供給された波形データをこのフィルタでフィルタリング処理した後、音量制御回路AMPへ出力する。
音量制御回路AMPは、音量変更回路AEGから供給された音量制御信号及び低周波信号発生回路LFOから供給された変調信号を合成して、発生すべき楽音信号の音量を算出する。そして、音量制御回路AMPは、フィルタ回路FLTから供給された波形データを前記算出された音量に応じて減衰又は増幅して、チャンネル累算回路17aへ出力する。
なお、本実施形態においては、音源回路17は、128個の発音チャンネルCH0,CH1・・・CH127を備えているが、発音チャンネルを1つのみ備えるようにしておいて、その発音チャンネルを時分割で利用してもよい。例えば1サンプリング周期を128分割すれば、分割された各期間においてなされる処理は、本実施形態における発音チャンネルCH0,CH1・・・CH127でなされる処理にそれぞれ対応する。
b3.チャンネル累算回路17a
チャンネル累算回路17aは、サンプリング周期ごとに、各発音チャンネルCH0,CH1・・・CH127から出力された楽音信号を累算して、累算した楽音信号をサウンドシステム18に出力する。なお、チャンネル累算回路17aは、各発音チャンネルから出力される楽音信号にそれぞれ共通の効果(例えば、コーラス効果、残響効果など)を付加するエフェクト処理回路を備えている。
チャンネル累算回路17aは、サンプリング周期ごとに、各発音チャンネルCH0,CH1・・・CH127から出力された楽音信号を累算して、累算した楽音信号をサウンドシステム18に出力する。なお、チャンネル累算回路17aは、各発音チャンネルから出力される楽音信号にそれぞれ共通の効果(例えば、コーラス効果、残響効果など)を付加するエフェクト処理回路を備えている。
b4.発音予約回路17b
次に、発音予約回路17bについて説明する。発音予約回路17bは、CPU19aにより指定された発音チャンネルにて発音する楽音に関する情報を生成して記憶するとともに、所定のタイミングで、その発音チャンネルに対し発音開始を指示する。
次に、発音予約回路17bについて説明する。発音予約回路17bは、CPU19aにより指定された発音チャンネルにて発音する楽音に関する情報を生成して記憶するとともに、所定のタイミングで、その発音チャンネルに対し発音開始を指示する。
発音予約回路17bは、図5に示すように、チャンネル指定レジスタCS0,CS1・・・CS127及び予約受付回路17b1を備えている。チャンネル指定レジスタCS0,CS1・・・CH127は、発音チャンネルCH0,CH1・・・CH127にそれぞれ対応したビットで構成された128ビットからなるビットマップであり、CPU19aが音源回路17に対し、後述する発音チャンネルの予約のキャンセルも含めて、発音チャンネルを特定して指示を行うときに用いられる。例えば、複数のエレメント波形に分解された楽音波形の生成を行うために、CPU19aは、発音予約回路17bにエレメント信号の発生に使用する複数の発音チャンネルを指示する。このとき、CPU19aは、チャンネル指定レジスタCS0,CS1・・・CS127のうち、使用する発音チャンネルに対応したビットであって、楽音波形を構成するエレメント信号の数と同数のビットを「予約」にセットする。その後、CPU19aは、予約受付回路17b1に、指示された発音チャンネルに共通のグループ番号を割り当てさせるために、予約受付回路17b1に予約トリガ信号を出力する。
なお、チャンネル指定レジスタCS0,CS1・・・CS127は、CPU19aのメモリアドレス空間における「チャンネルビット0」〜「チャンネルビット127」で表わされるアドレスに割り当てられていて、CPU19aは、「チャンネルビット0」〜「チャンネルビット127」を用いて、チャンネル指定レジスタCS0,CS1・・・CH127のビット操作(予約する発音チャンネルの指定)を行うことができる。また、予約受付回路17b1内に設けられた図示しない予約トリガレジスタが、CPU19aのメモリアドレス空間における「予約トリガ」で表わされるアドレスに割り当てられていて、CPU19aは、「予約トリガ」を用いて、予約受付回路17b1に予約トリガ信号を出力することができる。
予約受付回路17b1は、チャンネル指定レジスタCS0,CS1・・・CS127で指定された複数の発音チャンネルに対し共通のグループ番号を割り当てる。上記の例のように、1つの楽音波形が複数のエレメント波形に分解されている場合(すなわち複数の発音チャンネルを同時に使用する場合)、これらの複数の発音チャンネルに共通のグループ番号を割り当てておき、同時に発音開始させる発音チャンネルをグループ番号で管理するようにしている。なお、1つの楽音波形が、1つのエレメント波形から構成される場合は、複数の発音チャンネルのグルーピングはしないが、回路構成を共通にして簡単にするため、複数のエレメント信号を合成する場合と同様に、1つの発音チャンネルのみからなるグループを構成して、グループ番号を割り当てる。ただし、グループ数には上限があり、本実施形態では30個のグループが使用可能である。そこで、各グループ番号が使用可能か否かを示すグループ使用可否フラグを記憶するグループ使用状況レジスタGU1〜GU30が設けられている。予約受付回路17b1は、グループ使用状況レジスタGU1〜GU30の中から「使用可」となっている1つのグループ番号を発音チャンネルに割り当てた後、グループ使用状況レジスタGU1〜GU30のうちで、そのグループ番号に対応するレジスタを「使用不可」にセットする。なお、「使用不可」にセットされたグループ使用可否フラグは、発音開始時に後述の発音開始指示回路17b6によって「使用可」にセットされる。ここで、CPU19aは、予約しようとする発音チャンネルにグループ番号の割り当てが可能であることをグループフルフラグGFによって確認した上で、予約トリガ信号を出力するようになっている。したがって、予約トリガ信号を入力した予約受付回路17b1は必ずグループ番号を発音チャンネルに割り当てることができる。
グループフルフラグGFとは、空きグループがあるか否か(すなわち、発音チャンネルに対しグループ番号の割り当てが可能か否か)を示すフラグである。グループフルフラグGFは、グループフルフラグセット回路17b2によって、「空きグループ有り」又は「空きグループ無し」にセットされる。すなわち、グループフルフラグセット回路17b2は、グループ使用状況レジスタGU1〜GU30のうち、「使用可」となっているレジスタが1つでもあればグループフルフラグを「空きグループ有り」にセットする。一方、グループ使用状況レジスタGU1〜GU30のすべてのレジスタが「使用不可」となっていれば、グループフルフラグGFを「空きグループ無し」にセットする。なお、グループフルフラグGFは、CPU19aのメモリアドレス空間における「グループフル」で表わされるアドレスに割り当てられていて、CPU19aは、「グループフル」を用いて、グループフルフラグGFの値を読み込むことができる。
予約受付回路17b1は、取得したグループ番号を、キーオンマップに書き込む。キーオンマップは、発音チャンネルCH0〜CH127にそれぞれ対応して設けられたキーオンマップレジスタKM0〜KM127からなる。キーオンマップレジスタKM0〜KM127は、グループ番号「1」〜「30」のうちのいずれかの番号又は「グループ割り当てなし」を表す。キーオンマップは、ノートオンイベントが発生するごとに更新される。すなわち、ノートオンイベントが発生すると、CPU19aによって、1つ又は複数の発音チャンネルが選択され、選択された発音チャンネルに係るキーオンマップレジスタに共通のグループ番号が書き込まれる。その後、予約受付回路17b1は、「予約」にセットされているチャンネル指定レジスタを「指定なし」にセットする。
レベル検出回路17b3は、各発音チャンネルCH0,CH1・・・CH127の音量制御回路AMPから出力されるエレメント信号の音量レベルを検出して、音量レベルレジスタAL0,AL1・・・AL127に記録する。また、音量レベルレジスタAL0,AL1・・・AL127内に記録された音量レベルは、ダンプレベル到達検出回路17b4に供給される。なお、音量レベルレジスタAL0,AL1・・・AL127は、CPU19aのメモリアドレス空間における「音量レベル0」〜「音量レベル127」で表わされるアドレスに割り当てられていて、CPU19aは、「音量レベル0」〜「音量レベル127」を用いて、音量レベルレジスタAL0,AL1・・・AL127の値を読み込むことができる。
レベル検出回路17b3による発音チャンネルCH0〜CH127のエレメント信号の音量レベル検出及び検出結果のダンプレベル到達検出回路17b4への供給は、1サンプリング周期内に時分割でなされる。レベル検出回路17b3が一連の発音チャンネルCH0〜CH127の楽音データのレベル検出を開始する直前に、キーオンマップの内容が、キーオンマップラッチ回路17b5によって、キーオンマップラッチとして、キーオンマップレジスタKM0〜KM127と同様のキーオンマップラッチレジスタKML0,KML1・・・KML127にコピーされて保持される。ダンプレベル到達検出回路17b4は、キーオンマップラッチに基づいて、各グループに属する全ての発音チャンネルにて生成されているエレメント信号の音量レベルがダンプレベル以下になっているか否かの判定を行う。
ダンプレベル到達検出回路17b4は、判定結果をダンプレベル到達検出レジスタDL1,DL2・・・DL30に順次書き込んでいく。ダンプレベル到達検出レジスタDL1,DL2・・・DL30は、各グループに対応して設けられたレジスタであって、それぞれ「ダンプレベル到達」又は「ダンプレベル未到達」を表すデータを記憶する。まず、ダンプレベル到達検出回路17b4は、レベル検出回路17b3が一連の発音チャンネルCH0〜CH127についてのエレメント信号の音量レベルの検出を開始する前に、ダンプレベル到達検出レジスタDL1,DL2・・・DL30を「ダンプレベル到達」にセットする。そして、レベル検出回路17b3から供給される各エレメント信号の音量レベルとダンプレベルとを比較する。
例えば、発音チャンネルCHn(n=0,1・・・127)のエレメント信号の音量レベルがダンプレベルよりも大きい場合、発音チャンネルCHnに対応するキーオンマップラッチレジスタKMLnに記憶されているグループ番号m(m=1,2・・・30)を取得し、グループ番号mに対応するダンプレベル到達検出レジスタDLmを「ダンプレベル未到達」にセットする。このとき、すでにダンプレベル到達検出レジスタDLmが「ダンプレベル未到達」にセットされている場合は、ダンプレベル到達検出レジスタDLmの操作を行うことなく、次の発音チャンネルの判定を行う。一方、発音チャンネルCHnの音量レベルがダンプレベル以下になっていた場合は、ダンプレベル到達検出レジスタDLmの操作を行わない。なお、発音チャンネルCHn(n=0,1・・・127)のエレメント信号の音量レベルがダンプレベルよりも大きい場合及び発音チャンネルCHnの音量レベルがダンプレベル以下になっていた場合のいずれにおいても、取得したキーオンマップレジスタの値が「グループ割り当てなし」の場合は、ダンプレベル到達検出レジスタDLmの操作を行うことなく、次の発音チャンネルの判定を行う。
上記の判定処理を全ての発音チャンネルについて行った後、ダンプレベル到達検出レジスタDLmが「ダンプレベル未到達」にセットされていれば、グループmに属する発音チャンネルのうち、いずれか1つ又は複数の発音チャンネルのエレメント信号の音量レベルがダンプレベルよりも大きいことになる。一方、ダンプレベル到達検出レジスタDLmが「ダンプレベル到達」にセットされていれば、グループmに属する全発音チャンネルのエレメント信号の音量レベルがダンプレベル以下であることになる。
ここで、キーオンマップではなくキーオンマップラッチに基づいて、上記ダンプレベル到達の判定を行う理由について説明しておく。前述のように、ダンプレベル到達検出回路17b4が発音チャンネルCH0、CH1・・・CH127のエレメント信号の音量レベルの判定をしている間であっても、キーオンマップレジスタKM0〜KM127は更新されていく。
例えば、発音チャンネルCH0が発音中でダンプレベルに到達していない状態であり、かつキーオンマップレジスタKM0にはグループ番号が記録されていない(すなわち、発音チャンネルCH0の予約がなされていない)ものとする。さらに、発音チャンネルCH5は、発音に使用されていないチャンネル(空きチャンネル)であるとする。そして、レベル検出回路17b3及びダンプレベル到達検出回路17b4が発音チャンネルCH0についての判定を行った後、発音チャンネルCH5の判定を行うまでの間に、新たなノートオンイベントが発生して、発音チャンネルCH0及び発音チャンネルCH5が新たな発音に使用する発音チャンネルとして指定され、キーオンマップレジスタKM0及びKM5にグループ番号「3」が記録されたとする。その後、レベル検出回路17b3及びダンプレベル到達検出回路17b4が発音チャンネルCH5の判定を行うと、発音チャンネルCH5は空きチャンネルなので、ダンプレベルに到達していると判定される。すると、グループ番号「3」に属する発音チャンネルCH0で発音中の楽音信号がダンプレベルに到達していないにもかかわらず、発音チャンネルCH0及び発音チャンネルCH5に対して後述する発音開始指示回路17b6によって、発音開始指示がなされる。したがって、発音チャンネルCH0にて発音中の楽音が、突然途切れたような不自然な楽音となる。このような不自然な楽音の発生を防止するため、レベル検出回路17b3及びダンプレベル到達検出回路17b4が一連の発音チャンネルCH0〜CH127についての判定をしている間は、各発音チャンネルの属するグループが変化しないようにしておく必要がある。したがって、キーオンマップの内容をキーオンマップラッチにコピーしておき、キーオンマップラッチに基づいてダンプレベル到達の判定を行うようにしている。
発音開始指示回路17b6は、ダンプレベル到達検出レジスタDLm(m=1,2・・・30)が「ダンプレベル到達」にセットされていると、グループmに属する全発音チャンネルに対して、発音の開始を指示する。そして、発音開始指示回路17b6は、グループmに属する全発音チャンネルに対応するキーオンマップレジスタ及びキーオンマップラッチレジスタを「グループ割り当てなし」にセットする。また、発音開始指示回路17b6は、グループ使用状況レジスタGUmを「使用可」にセットする。また、発音開始指示回路17b6は、発音開始指示の直前に、後述の初期パラメータ出力回路17c2、通常パラメータ転送回路17c3及び通常パラメータ出力回路17c4に出力及び転送の指示を行う。
また、発生させるべき新たな楽音(例えばメロディー用の楽音)が、予約済みの発音チャンネルにて発音させる楽音(例えば、伴奏用の楽音)よりも、さらに優先的に発音させる必要がある場合がある。この場合、その発音チャンネルの予約を強制的にキャンセルして、新たな楽音のために、その発音チャンネルを予約できるようになっている。すなわち、発音予約回路17bは、発音チャンネルの予約をキャンセルするための予約キャンセル回路17b7を有している。発音チャンネルCHn(n=0,1・・・127)の予約をキャンセルする場合、CPU19aは、発音チャンネルCHnに対応するチャンネル指定レジスタCSnを「キャンセル」にセットした後、予約キャンセル回路17b7に対して、キャンセルトリガ信号を出力する。なお、チャンネル指定レジスタCS0〜CS127は、前述した発音チャンネルの予約にも利用されるが、予約終了時に「指定なし」にセットされるので、この発音チャンネルの予約のキャンセルにも利用される。また、予約キャンセル回路17b7内に設けられた、図示しないキャンセルトリガレジスタが、CPU19aのメモリアドレス空間における「キャンセルトリガ」で表わされるアドレスに割り当てられていて、CPU19aは、「キャンセルトリガ」を用いて、予約キャンセル回路17b7に対してキャンセルトリガ信号を出力することができる。なお、複数の発音チャンネルが予約されている場合でも、その複数の発音チャンネルの予約が同時にキャンセルされるのではなく、発音チャンネルの予約が1つずつキャンセルされる。
キャンセルトリガ信号を入力した予約キャンセル回路17b7は、チャンネル指定レジスタCSnによって指定された発音チャンネルCHn(n=0,1・・・127)に対応するキーオンマップレジスタKMnの値を「グループ割り当てなし」にセットする。これにより、発音チャンネルの予約がキャンセルされる。ただし、CPU19aが予約キャンセル回路17b7に対してキャンセルトリガ信号を出力した後、予約キャンセル回路17b7がキーオンマップレジスタKMnを「グループ割り当てなし」にセットしようとするまでの間に、その予約が実行されて発音チャンネルCHnにてエレメント信号の生成が開始されていることもある。すなわち、予約キャンセル回路17b7がキーオンマップレジスタKMnを「グループ割り当てなし」にセットしようとしたときには、すでに発音開始指示回路17b6によって、キーオンマップレジスタKMnが「グループ割り当てなし」にセットされていることがある。そこで、発音チャンネルの予約がキャンセルされたか否かを示す予約キャンセルフラグを記憶した予約キャンセルフラグレジスタCF0,CF1・・・CF127が設けられている。発音チャンネルCHnの予約がキャンセルされたとき、予約キャンセル回路17b7は、予約キャンセルフラグレジスタCFnを「キャンセル」にセットする。一方、予約が実行されて発音されたときは、予約キャンセル回路17b7は、予約キャンセルフラグレジスタCFnを「発音」にセットする。CPU19aは、キャンセルトリガ信号を出力した後、予約キャンセルフラグレジスタCFn内のフラグを読み込むことで、発音チャンネルの予約がキャンセルされたか否かを判断することができる。
なお、予約キャンセルフラグレジスタCF0,CF1・・・CF127は、CPU19aのメモリアドレス空間における「キャンセルビット0」〜「キャンセルビット127」で表わされるアドレスに割り当てられていて、CPU19aは、「キャンセルビット0」〜「キャンセルビット127」を用いて、予約キャンセルフラグレジスタCF0,CF1・・・CF127内のフラグの値を読み込むことができる。
また、発音予約回路17bは、各発音チャンネルが予約可能か否かを示す予約可否フラグを記憶する予約可否フラグレジスタAF0、AF1・・・AF127を有している。予約可否フラグレジスタAF0,AF1・・・AF127は、チャンネル指定レジスタCS0,CS1・・・CS127と同様に、発音チャンネルCH0,CH1・・・CH127に対応した128ビットからなるビットマップである。予約可否フラグレジスタAF0,AF1・・・AF127においては、予約可否フラグセット回路17b8によって、各ビットが「予約可」又は「予約不可」にセットされる。予約可否フラグセット回路17b8は、発音チャンネルCHn(n=0,1・・・127)に対応するキーオンマップレジスタKMnに「1」〜「30」のうちのいずれかのグループ番号が書き込まれている場合は、発音チャンネルCHnに対応する予約可否フラグレジスタAFnを「予約不可」にセットする。一方、予約可否フラグセット回路17b8は、キーオンマップレジスタKMnが「グループ割り当てなし」にセットされてから所定の期間(例えば、サンプリング周期の5周期分)「予約不可」に保持した後、予約可否フラグレジスタAFnを「予約可」にセットする。前記所定の期間においては、音源回路17は、発音開始の処理中であり、新たな発音チャンネルの予約を受け付けられる状態にないからである。
なお、予約可否フラグレジスタAF0,AF1・・・AF127は、CPU19aのメモリアドレス空間における「チャンネルビット0」〜「チャンネルビット127」で表わされるアドレスに割り当てられていて、CPU19aは、「チャンネルビット0」〜「チャンネルビット127」を指定して読み込みを行うことにより、予約可否フラグレジスタAF0,AF1・・・AF127内の値を読み込むことができる。上記のように、チャンネル指定レジスタCS0,CS1・・・CS127及び予約可否フラグレジスタAF0,AF1・・・AF127は、同じアドレスに割り当てられているが、CPU19aによる書き込み動作時においては、チャンネル指定レジスタCS0,CS1・・・CS127が指定され、読み込み動作時においては、予約可否フラグレジスタAF0,AF1・・・AF127が指定されるようになっている。
b5.楽音パラメータ入出力回路17c
次に、楽音パラメータ入出力回路17cについて説明する。楽音パラメータ入出力回路17cは、バス16を介してCPU19aから供給される楽音パラメータを入力して、各発音チャンネルCH0,CH1・・・CH127の各回路に出力する。また、楽音パラメータ入出力回路17cは、音源回路17の各回路(ピッチ変更回路PEG、カットオフ周波数変更回路FEG、音量変更回路AEGなど)の状態を表すパラメータを入力して、CPU19aに出力する。楽音パラメータ入出力回路17cは、図6に示すように、EGステージ検出回路17c1、初期パラメータ出力回路17c2、通常パラメータ転送回路17c3、通常パラメータ出力回路17c4、第1メモリ17c5及び第2メモリ17c6を備えている。
次に、楽音パラメータ入出力回路17cについて説明する。楽音パラメータ入出力回路17cは、バス16を介してCPU19aから供給される楽音パラメータを入力して、各発音チャンネルCH0,CH1・・・CH127の各回路に出力する。また、楽音パラメータ入出力回路17cは、音源回路17の各回路(ピッチ変更回路PEG、カットオフ周波数変更回路FEG、音量変更回路AEGなど)の状態を表すパラメータを入力して、CPU19aに出力する。楽音パラメータ入出力回路17cは、図6に示すように、EGステージ検出回路17c1、初期パラメータ出力回路17c2、通常パラメータ転送回路17c3、通常パラメータ出力回路17c4、第1メモリ17c5及び第2メモリ17c6を備えている。
EGステージ検出回路17c1は、ピッチ変更回路PEG、カットオフ周波数変更回路FEG及び音量変更回路AEGにて生成される制御信号のレベルが現在のステージの目標レベルに到達したか否かを検出する。EGステージ検出回路17c1内には、ピッチ変更回路PEG、カットオフ周波数変更回路FEG及び音量変更回路AEGのうちの1つの回路を順次1つずつ指定するための図示しない検出対象指定レジスタDD及び検出結果を記憶するステージ終了フラグレジスタSFが設けられている。CPU19aが、検出対象指定レジスタDDに検出対象の回路を指定するデータの書き込みを行うと、EGステージ検出回路17c1は、指定された回路の現在の制御信号のレベルと現在のステージの目標レベルとを比較して、その比較結果に応じてステージ終了フラグレジスタSFを「ステージ終了」又は「ステージ処理中」にセットする。すなわち、現在の制御信号のレベルが目標レベルに到達していれば、「ステージ終了」にセットし、現在の制御信号のレベルが目標レベルに到達していなければ、「ステージ処理中」にセットする。
なお、検出対象指定レジスタDDは、CPU19aのメモリアドレス空間における「検出対象回路」で表わされるアドレスに割り当てられていて、CPU19aは、「検出対象回路」を用いて、検出対象のエンベロープ回路を指定することができる。また、ステージ終了フラグレジスタSFは、CPU19aのメモリアドレス空間における「ステージ状態」で表わされるアドレスに割り当てられていて、CPU19aは、「ステージ状態」を用いて、ステージ終了フラグレジスタSFの値を読み込むことができる。
第1メモリ17c5は、各発音チャンネルに供給するパラメータを発音チャンネルの予約時からその発音開始時まで記憶しておくメモリである。第1メモリ17c5は、発音開始時に発音チャンネルの初期設定のために用いられる初期パラメータを記憶する初期パラメータ領域と、発音開始後に各発音チャンネルにて発生されるエレメント信号を変化させるために用いられる通常パラメータを記憶する通常パラメータ領域とに分割されている。例えば、カットオフ周波数変更回路FEGによって生成されるカットオフエンベロープの初期レベルが、初期パラメータである。さらに、第1メモリ17c5の初期パラメータ領域は、発音チャンネルごと、かつピッチエンベロープパラメータ、カットオフエンベロープパラメータ及び音量エンベロープパラメータの初期パラメータごとの領域に分割されている。すなわち、各初期パラメータの記憶領域は、CPU19aのメモリアドレス空間の所定のアドレスにそれぞれ割り当てられている。例えば、各発音チャンネルのカットオフ周波数変更回路FEGに供給される初期レベルの記憶領域は、CPU19aのメモリアドレス空間において、「初期レベルCH0」〜「初期レベルCH127」で表わされるアドレスにそれぞれ割り当てられていて、CPU19aは、「初期レベルCH0」〜「初期レベルCH127」を用いて、予約する発音チャンネルに供給するためのカットオフ周波数の初期レベルを第1メモリ17c5に記憶させることができる。
また、例えば、カットオフ周波数変更回路FEGによって生成されるカットオフエンベロープのうち、発音開始時又は発音開始後に各発音チャンネルに供給されるアタックレベル、アタックタイム、第1ディケイレベル、第1ディケイタイムなどが通常パラメータである。通常パラメータのうち、第1メモリ17c5に書き込まれるのは、第1ステージの値であるアタックレベル及びアタックタイムである。第1メモリ17c5の通常パラメータ領域も、初期パラメータ領域と同様に、発音チャンネルごと、かつピッチエンベロープパラメータ、カットオフエンベロープパラメータ及び音量エンベロープパラメータの通常パラメータごとに分割されている。すなわち、各通常パラメータの記憶領域は、それぞれ、CPU19aのメモリアドレス空間の所定のアドレスに割り当てられている。例えば、カットオフ周波数変更回路FEGに供給されるカットオフ周波数エンベロープの第1ステージの目標レベル及び持続時間であるアタックレベル及びアタックタイムの記憶領域は、CPU19aのメモリアドレス空間において、「アタックレベル・アタックタイムCH0」〜「アタックレベル・アタックタイムCH127」で表わされるアドレスにそれぞれ割り当てられていて、CPU19aは、「アタックレベル・アタックタイムCH0」〜「アタックレベル・アタックタイムCH127」を用いて、予約する発音チャンネルに供給するためのカットオフ周波数エンベロープのアタックレベル及びアタックタイムを第1メモリ17c5に記憶させることができる。
初期パラメータ出力回路17c2は、発音開始指示回路17b6による発音開始指示に応答して、第1メモリ17c5に記憶された各初期パラメータを読み出して、その発音チャンネルのピッチ変更回路PEG、カットオフ周波数変更回路FEG、音量変更回路AEGなどに出力する。
また、通常パラメータ転送回路17c3は、発音開始指示回路17b6による発音開始指示に応答して、第1メモリ17c5の通常パラメータ領域に書き込まれた通常パラメータを第2メモリ17c6に転送する。第2メモリ17c6は、発音チャンネルで生成中のエレメント信号に関するパラメータを記憶するメモリである。第2メモリ17c6は、通常パラメータを記憶する通常パラメータ領域のみからなる。第2メモリ17c6の通常パラメータ領域は、第1メモリ17c5の通常パラメータ領域と同様の構成である。すなわち、第2メモリ17c6の通常パラメータ領域も、第1メモリ17c5の通常パラメータ領域と同様に、各通常パラメータごとに分割されていて、各通常パラメータの記憶領域は、CPU19aのメモリアドレス空間の所定のアドレスにそれぞれ割り当てられている。
例えば、各発音チャンネルのカットオフ周波数変更回路FEGに供給されるカットオフ周波数エンベロープの各ステージの目標レベル及び持続時間の記憶領域は、CPU19aのメモリアドレス空間において「目標レベル・持続時間CH0」〜「目標レベル・持続時間CH127」で表わされるアドレスにそれぞれ割り当てられている。予約された発音チャンネルCHn(n=0,1・・・127)にて発音を開始する場合、パラメータ転送回路は、「アタックレベル・アタックタイムCHn」を用いて、アタックレベル及びアタックタイムを第1メモリ17c5から読み出し、「目標レベル・持続時間CHn」を用いて、前記読み出したアタックレベル及びアタックタイムを第2メモリ17c6の通常パラメータ領域に書き込む。これにより、アタックレベル及びアタックタイムが第1メモリ17c5から第2メモリ17c6に転送される。ピッチ変更回路PEG及び音量変更回路AEGによるエンベロープ生成のために第1メモリ17c5に書き込まれた通常パラメータも、上記カットオフ周波数変更回路FEGのパラメータと同様に第2メモリ17c6に転送される。
また、CPU19aは、第2メモリ17c6に通常パラメータを直接書き込むことができる。例えば、CPU19aは、詳しくは後述するように、パラメータ更新の周期処理プログラムを実行して、カットオフ周波数エンベロープの第2ステージ以降のステージの目標レベル及び持続時間を第2メモリ17c6に書き込む。この場合、CPU19aは、「目標レベル・持続時間CH0」〜「目標レベル・持続時間CH127」で表わされるアドレスのうち目的の発音チャンネルに対応するアドレスを用いて、第2メモリ17c6の適切な領域に、エンベロープの目標レベル及び持続時間を書き込むことができる。CPU19aは、ピッチ変更回路PEG及び音量変更回路AEGによる各エンベロープ生成のための第2ステージ以降の目標レベル及び持続時間も、上記カットオフ周波数変更回路FEGのパラメータと同様に第2メモリ17c6に書き込むことができる。
また、通常パラメータ出力回路17c4は、発音開始指示回路17b6による発音開始指示に応答して、第2メモリ17c6に書き込まれた通常パラメータを、各通常パラメータの対応する発音チャンネルの各部にそれぞれ出力する。この第2メモリ17c6に書き込まれた通常パラメータは、1サンプリング周期を128分割した時分割で出力される。すなわち、1サンプリング周期を128分割した各期間が、それぞれ発音チャンネルCH0〜CH127に対応していて、各発音チャンネルに対して順番に通常パラメータが出力される。
なお、第1メモリ17c5と第2メモリ17c6を1つのメモリで構成してもよい。すなわち、大きな記憶容量を有するメモリの記憶領域を分割して、第1メモリ17c5に相当する領域と第2メモリ17c6に相当する領域を確保すればよい。逆に、第1メモリ17c5の初期パラメータ領域と通常パラメータ領域に相当する記憶領域をそれぞれ別のメモリに構成してもよい。
c.コンピュータ部19の構成
次に、コンピュータ部19の構成について詳しく説明する。とくに、ROM19c及びRAM19dに記憶されるプログラム及び各種データについて詳しく説明する。ROM19cには、ボイスデータリストが記憶されている。ボイスデータリストは、図7に示すように、各音色ごとに規定されたボイスデータからなる。ボイスデータは、各音色の楽音波形を構成するエレメント波形ごとに設けられたエレメントデータ及び各エレメント信号の生成に共通に使用されるコモンデータからなる。
次に、コンピュータ部19の構成について詳しく説明する。とくに、ROM19c及びRAM19dに記憶されるプログラム及び各種データについて詳しく説明する。ROM19cには、ボイスデータリストが記憶されている。ボイスデータリストは、図7に示すように、各音色ごとに規定されたボイスデータからなる。ボイスデータは、各音色の楽音波形を構成するエレメント波形ごとに設けられたエレメントデータ及び各エレメント信号の生成に共通に使用されるコモンデータからなる。
各エレメントデータの構成は共通である。各エレメントデータは、フィルタ回路FLTを制御するためのフィルタ制御パラメータ、低周波信号発生回路LFOを制御するための低周波信号制御パラメータ、各種エンベロープ生成用のエンベロープパラメータ及び波形データの選択に関する波形データ選択情報から構成されている。波形データ選択情報は、ノートナンバ及びベロシティと選択する波形データに関する情報を表す波形データ情報との対応関係を記録したテーブルである。波形データ情報は、波形データの先頭アドレス、末尾アドレス及び元ピッチからなる。
また、コモンデータは、音色名を表す音色名情報及びチャンネル累算回路17aにおいて各発音チャンネルから出力される全てのエレメント信号に共通の効果を付与するためのエフェクトパラメータなどから構成される。
また、ROM19cには、発音予約プログラム(図11)、発音チャンネル確保プログラム(図12)、パラメータ更新の周期処理プログラム(図16)及び音量レベル取得の周期処理プログラム(図18)が記憶されている。発音予約プログラムは、ノートオンイベントが発生すると実行され、前記ノートオンイベントに対応した発音を行うために使用する発音チャンネルの予約及び発生させる楽音に関するパラメータの書き込みを行うためのプログラムである。発音チャンネル確保プログラムは、発音予約プログラムのサブルーチンであって、発音に必要な発音チャンネルを確保するためのプログラムである。発音予約プログラムの実行において、CPU19aは、確保した発音チャンネルが他の発音処理に使用されているか否かに関わらず、前記発生したノートオンイベントに対応した楽音に関する初期パラメータ及び通常パラメータを音源回路17の第1メモリ17c5に書き込む。これにより、発音チャンネルの予約が終了する。すなわち、CPU19aは、発音予約プログラムの実行により予約した発音チャンネルにて発音処理が開始されるのを待たずに発音予約プログラムを終了する。音源回路17は、予約された発音チャンネルが前記発生したノートオンイベントに対応した楽音の生成のために使用可能な状態になると、発音予約プログラムの実行により第1メモリ17c5に書き込まれたパラメータを用いて発音処理を開始する。
パラメータ更新の周期処理プログラム及び音量レベル取得の周期処理プログラムは、タイマ19bから供給される割り込み信号をトリガとして実行される。パラメータ更新の周期処理プログラムは、発音中の各発音チャンネルにて発生されるエレメント信号をリアルタイムに変化させるために音源回路17に供給する楽音パラメータのうちの通常パラメータを所定の周期で更新するプログラムであって、例えば、各エンベロープ生成のためのパラメータを第2メモリ17c6に書き込むプログラムである。また、音量レベル取得の周期処理プログラムは、音源回路17の各発音チャンネルのレジスタの値を定期的に読み出して、後述する各発音チャンネル情報を更新するプログラムである。
また、RAM19dには、各プログラムの実行により一時的に生成されるデータが記憶される。この一時的に生成されるデータには、メロディパート、伴奏パートなどの演奏パートごとに設けられたパート情報からなるパート情報リストPLが含まれる。本実施形態においては、16個の演奏パートを備えていて、パート情報リストPLは16個のパート情報からなる。各パート情報は、図8に示すように、ボイスデータへの参照情報及びノート情報リストNLへの参照情報からなる。
ボイスデータへの参照情報は、各パートに割り当てられた音色のボイスデータへの参照情報である。ノート情報リストNLは、演奏パートごとに設けられている。各演奏パートごとのノート情報リストNLは、1つの演奏パートに属するノートオンイベントごとに発音中又は予約された発音に関する情報を記憶したノート情報からなる。各ノート情報には、図9に示すように、音高を表すノートナンバ、押鍵タッチ強さを表すべロシティ及び使用する発音チャンネルに関する情報を表す発音チャンネル情報への参照情報(チャンネル番号など)が含まれる。各ノート情報は、1つの楽音波形を構成するエレメント波形の数と同数の発音チャンネルへの参照情報を有する。図7乃至図9に示す例では、パート1に割り当てられた音色は、楽音波形が2つのエレメント波形から構成されている。したがって、パート1の各ノート情報は、それぞれ発音チャンネルへの参照情報を2つずつ有する。ノート情報は、ノートオンイベントが発生するごとにノート情報リストNLに1つずつ追加される。また、ノートオフイベントの発生により発音が終了すると、ノート情報はノート情報リストNLから削除される。ただし、必ず最も古いノート情報から順番に削除されるとは限らない。そこで、各ノート情報は、1つ前のノート情報のアドレスを示す前方リンク及び1つ後のノート情報のアドレスを示す後方リンクを有している。なお、最も古いノート情報の前方リンク及び最も新しいノート情報の後方リンクには、リンク先のノート情報が無いことを示す値(例えば「0」)が記録される。ノート情報の追加及び削除がなされるごとに、前方リンク及び後方リンクを更新することにより、ノートオンイベントが発生した順にノート情報を辿ることができるようにしている。
発音チャンネル情報リストCLは、各発音チャンネルごとに設けられた発音チャンネル情報1乃至発音チャンネル情報127からなり、各発音チャンネル情報は、図10に示すように、発音中か否かを表す空きチャンネルフラグ、各種エンベロープに関するエンベロープ情報、エレメント信号の音量レベル及びその発音チャンネル情報への参照情報を記憶しているノート情報への参照情報からなる。なお、各種エンベロープ情報とは、各エンベロープ回路の現在のステージ、現在のステージの目標レベル及び持続時間である。いずれのノート情報からも参照されていない発音チャンネル情報に対応した発音チャンネル(例えば、図8における発音チャンネルCH4)は、空きチャンネルである。
次に、上記のように構成した楽音信号発生装置の動作について説明する。演奏者が鍵盤11のいずれかの鍵を押鍵操作してノートオンイベントが発生すると、CPU19aは、図11に示すように、ステップS10にて、発音予約プログラムを開始する。次に、CPU19aは、ステップS12にて、操作子インターフェース回路14から供給された演奏情報から、押鍵された鍵を表すノート番号NN、押鍵の強さを表すベロシティVELを取得するとともに、パート番号PNを特定する。すなわち、鍵盤には、予めいずれかのパートが割り当てられていて、押鍵により、そのパートの楽音を発音するようになっている。また、鍵域ごとに異なるパートを割り当てることもできる。そこで、CPU19aは、ノートイベントが鍵盤11の操作により発生したこと、前記取得したノート番号NNなどから押鍵された鍵が属するパートを表すパート番号PNを特定する。次に、CPU19aは、ステップS14にて、前記特定したパート番号PNに基づいて対応するボイスデータを特定し、特定したボイスデータを構成するエレメントデータの数を取得する。そして、CPU19aは、ステップS16にて、図12に示す発音チャンネル確保プログラムを実行して、前記ステップS14にて取得したエレメントデータの数と同じ数の発音チャンネルを確保する
CPU19aは、図12に示すように、ステップS16aにて、発音チャンネル確保プログラムの実行を開始し、ステップS16bにて、発音チャンネル情報リストの空きチャンネルフラグを参照して、空きチャンネルを検索する。ステップS16bの検索結果、空きチャンネルがある場合、後述のステップS16kに進む。一方、空きチャンネルが無い場合、CPU19aは、ステップS16cにて、発音チャンネルCH0,CH1・・・CH127のうち、トランケートする発音チャンネルCHn(n=0,1・・・127)を1つ決定する。どの発音チャンネルをトランケートするチャンネルとして決定するかは、予め定められた規則に従う。例えば、発音チャンネル情報リストCLを参照して、エレメント信号の音量レベルが最も小さい発音チャンネルをトランケートするチャンネルとして決定する。また、ノート情報の前方リンクを次々と辿って最も古いノート情報を特定し、最も古いノート情報が参照している発音チャンネル情報に記録されているエレメント信号の音量レベルが最も小さい発音チャンネルをトランケートするチャンネルとして決定してもよい。
次に、CPU19aは、ステップS16dにて、前記ステップS16cの処理により決定されたトランケートする発音チャンネルCHnに対応する発音チャンネル情報n内のノート情報への参照情報を用いて、発音チャンネル情報nを参照しているノート情報(参照元のノート情報)を特定し、この参照元のノート情報から発音チャンネル情報nへの参照情報を削除する。そして、CPU19aは、ステップS16eにて、参照元のノート情報内の発音チャンネル情報への参照情報が全て削除されたか否かの判定を行う。ステップS16eの判定の結果、参照元のノート情報内の発音チャンネル情報への参照情報が全て削除されている場合、CPU19aは、ステップS16fにて、ノート情報リストNLから参照元のノート情報を削除する。一方、ステップS16eの処理の結果、参照元のノート情報内に他の発音チャンネル情報への参照情報が残っている場合は、ノート情報リストNLから参照元のノート情報を削除することなく、ステップS16gに進む。
CPU19aは、ステップS16gにて、予約可否フラグAFnを参照して、ステップS16cの処理により決定されたトランケートする発音チャンネルCHnについての他の予約の有無の判定を行う。予約可否フラグが「予約可」であるということは、発音チャンネルCHnには未だ他の予約がされていないことになる。この場合、後述のステップS16jに進む。一方、予約可否フラグAFnが「予約不可」であるということは、すでに発音チャンネルCHnに他の予約がされていることになる。すなわち、前記他の予約時に発音中であったエレメント信号がトランケート処理により減衰中であって、前記他の予約に係る楽音の発音がまだ開始されていない。この場合、CPU19aは、ステップS16hにて、前記他の予約をキャンセルする。具体的には、発音チャンネルCHnに対応するチャンネル指定レジスタCSnを「キャンセル」にセットした後、予約キャンセル回路17b7に対してキャンセルトリガ信号を供給する。
前記他の予約をキャンセルした場合、予約キャンセル回路17b7は、発音チャンネルCHnに対応するキーオンマップレジスタKMnを「グループ割り当てなし」にセットするとともに、予約キャンセルフラグCFnを「キャンセル」にセットする。そして、CPU19aは、ステップS16iにて、予約キャンセルフラグCFnを参照して、前記他の予約がキャンセルされたか否かの判定を行う。予約キャンセルフラグCFnが、「発音」を示す場合、CPU19aは、ステップS16jにて、前記ステップS16hにおけるキャンセル処理が間に合わずに発音開始してしまった前記他の予約に係るエレメント信号のトランケート指示を行う。また、ステップS16gの判定において、「他の予約なし」と判定された場合(すなわち、予約可否フラグAFnが「予約不可」である場合)は、対象の発音チャンネルCHnは発音中であるため、CPU19aは、ステップS16jにて、発音チャンネルCHnのトランケート指示を行う。具体的には、第2メモリ17c6に音量変更回路AEGのパラメータとして、ダンプレベル以下の目標値及び短い持続時間を書き込む。
そして、CPU19aは、ステップS16kにて、前記ステップS16jにおいてトランケート指示を行った発音チャンネルCHnを新たな発音に使用する発音チャンネルとして確保する。また、上述のステップS16bによる空きチャンネルの検索の結果、空きチャンネルが有った場合、CPU19aは、ステップS16kにて、空きチャンネルを新たな発音に使用する発音チャンネルとして確保する。また、上述のステップS16iによる予約キャンセルの実行結果の判定において、予約がキャンセルされたと判定された場合も、CPU19aは、ステップS16kにて、予約のキャンセルを行った発音チャンネルを新たな発音に使用する発音チャンネルとして確保する。
次に、CPU19aは、ステップS16lにて、発音に必要な数の発音チャンネルを確保したかの判定を行う。図11のステップS14の処理により取得したエレメントデータの数と同じ数の発音チャンネルを確保した場合は、ステップS16mにて、発音チャンネル確保プログラムを終了して、発音予約プログラムに戻る。一方、確保した発音チャンネルの数が、ステップS14の処理により取得したエレメントデータ数未満の場合は、ステップS16b〜ステップS16kからなる処理を繰り返し実行して、エレメントデータ数分の発音チャンネルを確保する。
発音チャンネル確保プログラムの実行により、エレメントデータ数分の発音チャンネルを確保すると、CPU19aは、ステップS18にて、ノート情報リストNLに新たなノート情報を1つ追加する(図8、図9参照)。そして、追加したノート情報に、前記ステップS12にて取得したノートナンバ及びベロシティを書き込む。また、確保した発音チャンネルに対応する発音チャンネル情報への参照情報を書き込む。さらに、1つ前に発生したノートオンイベントに対応するノート情報への参照情報である前方リンクを書き込む。次に、CPU19aは、ステップS20にて、確保した発音チャンネルに対応する発音チャンネル情報を初期化する(図8、図10参照)。具体的には、空きチャンネルフラグを「使用中」にセットし、ノート情報への参照情報として、前記追加した新たなノート情報への参照情報をセットする。各種エンベロープ値として、初期レベル及び第1ステージの目標値がセットされる。
次に、CPU19aは、ステップS20にて、確保した発音チャンネルのそれぞれについての各種パラメータを第1メモリ17c5に書き込む。すなわち、ステップS14において特定したボイスデータから、エフェクトパラメータ、エンベロープパラメータ、波形データの先頭及び末尾アドレス、元ピッチなどを取得して、これらを第1メモリ17c5の対応する領域にそれぞれ書き込む。例えば、図13に示すように、カットオフ周波数変更回路FEGに供給するためのフィルタエンベロープパラメータの書き込みにおいては、CPU19aは、ステップS40にて、カットオフ周波数変更回路FEG用のパラメータ書き込み処理を開始し、ステップS42にて、ボイスデータに記録されているフィルタエンベロープパラメータのうち、初期レベル、アタックレベル及びアタックタイムを取得する。次に、CPU19aは、ステップS44にて、初期レベルを第1メモリ17c5の初期パラメータ領域に書き込む。次に、CPU19aは、ステップS46にて、アタックレベル及びアタックタイムを第1メモリ17c5の通常パラメータ領域に書き込む。そして、CPU19aは、ステップS48にて、カットオフ周波数変更回路FEG用のパラメータ書き込み処理を終了する。
ふたたび、図11の説明に戻る。CPU19aは、ステップS24にて、チャンネル指示レジスタCS0,CS1・・・CS127のうち、ステップS16にて確保した発音チャンネル(すなわち、予約する発音チャンネル)に対応するレジスタを「予約」にセットする。次に、CPU19aは、ステップS26にて、グループフルレジスタGFが「空きグループあり」になるまで待つ。なお、上述のように、本実施形態においては30個のグループを使用することができるので、ステップS26の開始時にグループフルレジスタGFが「空きグループ無し」の状態になっていることはほとんど無い。たとえ、ステップS26の開始時にグループフルレジスタGFが「空きグループ無し」の状態になっていても、音源回路17において、発音チャンネルに対するトランケート処理が行われ、予約中の楽音の生成が開始されることにより、短時間(例えば数ミリ秒)でグループフルレジスタGFが「空きグループあり」になる。したがって、ステップS26の待ち時間が長くなって、CPU19aが他の処理をタイミング良く実行できなくなるという問題は発生しない。
CPU19aは、ステップS26の処理にて、「空きグループあり」と判定すると、ステップS28にて、予約受付回路17b1に対し、予約トリガ信号を出力し、続くステップS30にて、発音予約プログラムを終了する。これにより、1つのノートオンイベントに対する発音チャンネルの予約が完了する。
ここで、発音チャンネルCHn(n=0,1・・・127)の発音中に、新たなノートオンイベントが発生し、CPU19aが、このノートオンイベントに対応する楽音生成のために発音チャンネルCHnの予約をした場合の音源回路17の動作について、図14を用いて説明する。この例においては、予約する発音チャンネルCHnは、ノートオフイベント発生後の楽音を発音中である。
予約トリガ信号を入力した予約受付回路17b1は、グループ使用可否フラグGU0,GU1・・・GU30から空きグループ番号mを取得するとともに、そのグループ使用可否フラグGUmを「使用中」にセットする。そして、取得した空きグループ番号mを、発音チャンネルCHnに対応するキーオンマップレジスタKMnに書き込む。その後、予約受付回路17b1は、チャンネル指定レジスタCSを「指定なし」にセットする。キーオンマップレジスタKMnにグループ番号mが書き込まれると、予約可否フラグセット回路17b8が、発音チャンネルCHnに対応する予約可否フラグAFnを「予約不可」にセットする。また、キーオンマップレジスタKMnにグループ番号mが書き込まれたサンプリング周期の次のサンプリング周期の開始時に、キーオンマップラッチ回路17b5が、キーオンマップKMの内容をキーオンマップラッチKMLにコピーする。すなわち、キーオンマップラッチレジスタKMLnにグループ番号mが書き込まれる。
図14の発音チャンネルCHnの予約時においては、発音チャンネルCHnの音量変更回路AEGのステージは第5ステージ(リリース中)となっていて、音源回路17は、発音チャンネルCHnにて生成されているエレメント信号の音量レベルをサンプリング周期ごとに徐々に小さくしている。そして、CPU19aは、発音チャンネル確保プログラムのステップS16jを実行して、生成中のエレメント信号のトランケート指示を行うと、音量変更回路AEGが、エレメント信号の音量レベルの減少率を大きくするエンベロープを生成して音量制御回路AMPに供給するので、急速に音量レベルが小さくなっていく。そして、サンプリング周期ごとに、ダンプレベル到達検出回路17b4により、音量レベルレジスタAL0〜AL127を介してレベル検出回路17b3からダンプレベル到達検出レジス他17b4に供給される、各発音チャンネルにて生成されているエレメント信号の音量レベル、及びキーオンマップラッチに基づいて、グループmに属する全ての発音チャンネルの音量レベルがダンプレベルに到達したか否かの判定がなされる。前記ダンプレベルに到達したか否かの判定結果は、ダンプレベル到達検出レジスタDL1〜DL30に書き込まれる。
一方、CPU19aによる発音予約プログラムのステップS22の処理によって、図15に示すように、第1メモリ17c5に初期パラメータ及び通常パラメータが書き込まれ、これらの初期パラメータ及び通常パラメータは、ダンプレベル到達検出レジスタDLmの値が「ダンプレベル到達」になるまで、第1メモリ17c5に保持されている。そして、ダンプレベル到達レジスタDLmの値が「ダンプレベル到達」になると、その次のサンプリング周期にて、通常パラメータ転送回路17c3が第1メモリ17c5の通常パラメータ領域に書き込まれているパラメータを第2メモリ17c6にコピーし、初期パラメータ出力回路17c2が、初期パラメータを音源回路17の各部(ピッチ変更回路PEG、カットオフ周波数変更回路FEG、音量変更回路AEGなど)に出力する。第1メモリ17c5に保持されていた初期パラメータが音源回路17の各部に出力され、第1メモリ17c5に保持されていた通常パラメータが第2メモリ17c6にコピーされた後、同じ発音チャンネルCHnの予約のために第1メモリ17c5に次の予約に係る初期パラメータ及び通常パラメータが書き込まれるまでは、これらの元の初期パラメータ及び通常パラメータは、それぞれ第1メモリ17c5の対応する記憶領域に残るが、これらの記憶領域は参照されず、未使用となる。
そして、発音開始指示回路17b6が、グループ番号「m」に属する全発音チャンネルに対し、発音開始を指示するとともに、これらの発音チャンネルに対応するキーオンマップレジスタ及びキーオンマップラッチレジスタを「グループ割り当てなし」にセットする。さらに、発音開始指示回路17b6は、グループ使用状況レジスタGUmを「使用可」にセットする。予約可否フラグセット回路17b8は、キーオンマップレジスタKMnが「グループ割り当てなし」にセットされても、所定時間(例えば、サンプリング周期の5周期分)だけ予約可否フラグを「予約不可」に保持し、その後「予約可」にセットする。
通常パラメータ転送回路17c3によって第2メモリ17c6に書き込まれた通常パラメータは、通常パラメータ出力回路17c4によって、サンプリング周期ごとに、各発音チャンネルの各回路に出力される。
また、第2メモリ17c6に書き込まれた通常パラメータは、CPU19aのパラメータ更新の周期処理プログラムの実行によって所定の時間間隔(例えば10ミリ秒)で更新される。CPU19aは、一定の時間間隔(例えば1ミリ秒)でタイマ19cから割り込み信号を供給され、この割り込み信号に基づいて前記所定の時間間隔(例えば10ミリ秒)ごとに、パラメータ更新の周期処理プログラム及び音量レベルチェックの周期処理プログラムを繰り返し実行する。
まず、パラメータ更新の周期処理プログラムについて説明する。パラメータ更新の周期処理プログラムは、発音中の楽音の音高、音色及び音量を変化させるエンベロープを生成するためのパラメータなどを書き込むプログラムである。CPU19aは、図16に示すステップS50にて、パラメータ更新の周期処理を開始すると、ステップS52にて、1つの発音チャンネルCHn(n=0,1・・・127)を選択し、発音チャンネルCHnに対応する予約可否フラグAFnを参照して、発音チャンネルCHnの楽音信号がトランケート処理中か否かの判定を行う。すなわち、予約可否フラグAFnが、「予約不可」であるということは、発音チャンネルCHnにて発生中の楽音信号がトランケート処理中であることになる。この場合、後述のステップS56に進む。一方、予約可否フラグAFnが「予約可」であるということは、発音チャンネルCHnにて発生中の楽音信号にはトランケート処理がなされていないことになる。この場合、CPU19aは、ステップS54にて、第2メモリ17c6の通常パラメータを更新する。
上記ステップS54のパラメータの書き込みの一例として、カットオフ周波数変更回路FEGにカットオフエンベロープを生成させるためのパラメータの更新について、図17を用いて説明する。CPU19aは、ステップS60にて、カットオフ周波数変更回路FEG用のパラメータ更新処理を開始すると、ステップS62にて、EGステージ検出回路17c1(図6参照)の検出対象レジスタDDに検出対象とする発音チャンネルの番号とエンベロープ回路の種別を表す値(この例では、カットオフ周波数変更回路FEGを表す値)を書き込む。次にステップS64において、ステージ終了フラグの値を読み出す。そして、ステージ終了フラグの値が「ステージ終了」であれば、CPU19aは、ステップS66にて、カットオフ周波数エンベロープの現在のステージが最終ステージであるか否かの判定を行う。ステップS66の判定の結果、現在のステージが最終ステージでなければ、ステップS68にて、次のステージのカットオフ周波数の目標レベル及び次のステージの持続時間を第2メモリ17c6に書き込む。また、対応する発音チャンネル情報のエンベロープ値を更新する。すなわち、前記次のステージの番号及び前記次のステージの目標値を書き込む。一方、ステップS64において読み出したステージ終了フラグの値が「ステージ処理中」である場合には、CPU19aは、ステップS70に進み、カットオフ周波数変更回路FEG用のパラメータ変更処理を終了する。また、ステップS66にて、エンベロープの現在のステージが最終ステージであると判定した場合も、ステップS70に進み、カットオフ周波数変更回路FEG用のパラメータ変更処理を終了する。
上記ステップS54のパラメータの書き込みの他の例としては、演奏者によるパネル操作子12、ペダル操作子13などの操作により発生する演奏情報及び外部インターフェース回路22を介したMIDI対応の外部機器から送信された演奏情報に応じて、音高、音色、音量などを変化させる場合が挙げられる。これらの場合、CPU19aは、前記演奏情報に応じて、対応する発音チャンネルの通常パラメータを第2メモリ17c6に書き込んで更新する。更新された通常パラメータは、更新されなかった他の通常パラメータとともに、通常パラメータ出力回路17c4によって各発音チャンネルの各回路に出力される。
ふたたび、図16のパラメータ更新の周期処理の説明に戻る。CPU19aは、上記のようにして第2メモリ17c6の通常パラメータを更新すると、ステップS56にて、全ての発音チャンネルの処理が終了したか否かの判定を行う。残りの発音チャンネルがあれば、ステップS52乃至S54を繰り返して、全ての発音チャンネルのためのパラメータの更新を行う。全ての発音チャンネルのためのパラメータの更新が終了すると、CPU19aは、ステップS58にて、パラメータ更新の周期処理プログラムを終了する。
次に、音量レベル取得の周期処理プログラムについて説明する。図18に示すように、CPU19aは、ステップS80にて、音量レベル取得の周期処理プログラムを開始すると、ステップS82にて、1つの発音チャンネルCHn(n=0,1・・・127)を選択して、発音チャンネルCHnで生成されているエレメント信号の音量レベルをレベル検出回路17b3から音量レベルレジスタAL0〜AL127を介して入力する。次に、ステップS84にて、入力したエレメント信号の音量レベルが、ダンプレベル以下であるか否かの判定を行う。ステップS84の判定の結果、エレメント信号の音量がダンプレベル以下でない場合、後述のステップS92に進む。
一方、ダンプレベル以下である場合は、発音チャンネルCHnに対応する発音チャンネル情報nの空きチャンネルフラグを「空き」にセットする。そして、CPU19aは、ステップS86にて、発音チャンネル情報nに記録されているノート情報への参照情報を用いて、発音チャンネル情報nへの参照情報を記憶している参照元のノート情報を特定する。そして、参照元のノート情報の発音チャンネル情報nへの参照情報を削除する。次に、CPU19aは、ステップS88にて、参照元のノート情報内のすべての発音チャンネル情報への参照情報が削除されているか否かの判定を行う。参照元のノート情報内に発音チャンネル情報への参照情報が残っている場合は、ステップS92に進む。
一方、すべての発音チャンネル情報への参照情報が削除されている場合は、CPU19aは、ステップS90にて、そのノート情報を削除する。そして、削除したノート情報の1つ前及び1つ後のノート情報内の前方リンク及び後方リンクを更新する。次に、CPU19aは、ステップS92にて、全ての発音チャンネルの処理が終了したか否かの判定を行う。残りの発音チャンネルがあれば、ステップS82乃至S90を繰り返して、全ての発音チャンネルの音量レベルの取得を行う。すべての発音チャンネルの音量レベルの取得が終了すると、CPU19aは、ステップS94にて、音量レベル取得の周期処理プログラムを終了する。
なお、上記の例においては、発音中(リリース中)の発音チャンネルに予約を行う場合の音源回路17の動作を示したが、予約する発音チャンネルCHnが空きチャンネルの場合であっても、動作は同様である。すなわち、この場合、予約したサンプリング周期の次のサンプリング周期において、ダンプレベル到達検出回路17b4によって発音チャンネルCHnの楽音信号の音量レベルがダンプレベル到達したことが検出されるというだけで、音源回路17の他の動作は、上記発音中の発音チャンネルに予約を行う場合の音源回路17の動作と同様である。また、上記の例においては、ノートオンイベント及びノートオフイベントは、鍵盤11の鍵操作によって発生しているが、自動演奏プログラム及び外部機器から送信される演奏情報によっても発生し、この場合のCPU19a及び音源回路17の動作も、ステップS12にて、演奏情報に応じたパート番号PNが割り当てられる点を除いて、上記の例と同様である。
上記のように構成した楽音信号発生装置においては、CPU19aは、予約した発音チャンネルにて発音処理が開始されるのを待つことなく発音処理プログラムを終了する。すなわち、CPU19aは、発音チャンネルの予約を行えば良く、発音開始タイミングを制御する必要が無い。すなわち、発音開始タイミングは、音源回路17によって制御される。そのため、CPU19aは、発音予約プログラムの終了後、すぐに、他のプログラムを実行可能となる。例えば、CPU19aは、発音予約プログラムの終了後、すぐに、別のノートオンイベントに対応した発音チャンネルの予約を行うために、再度発音予約プログラムを実行することができる。また、発音予約プログラムの終了後、すぐに、パラメータ更新の周期処理プログラム及び音量レベル取得の周期処理プログラムを実行することもできる。したがって、上記従来の楽音信号発生装置に比べて、処理速度を向上させることができる。
また、上記のように構成した楽音信号発生装置においては、キーオンイベントに応答してCPU19aが発音チャンネルCH0〜CH127を予約すると、予約受付回路17b1は,キーオンマップレジスタKM0〜KM127を更新する。また、レベル検出回路17b3が一連の発音チャンネルCH0〜CH127の音量レベルの検出を開始する前に、キーオンマップの内容がキーオンマップラッチにコピーされる。ダンプレベル到達検出回路17b4は、レベル検出回路17b3の検出結果及びキーオンマップラッチを用いて、同一グループに属する全ての発音チャンネルにて発生されている楽音信号の音量レベルがダンプレベル以下であることを検出することができる。上記のように、ダンプレベルの検出中にグループ構成が変化しないキーオンマップラッチを用いるようにしたので、演奏が不自然になるのを防止できる。
また、上記の楽音信号発生装置においては、チャンネル指定レジスタCS0,CS1・・・CS127で指定された発音チャンネルに共通のグループ番号を対応させて、キーオンマップKM0,KM1・・・KM127に記憶するようにした。そのため、複数の発音チャンネルにてエレメント信号を同時に発生開始させる場合、ダンプレベル到達検出回路17b4は、同じグループ番号で管理されている全ての発音チャンネルの音量レベルがダンプレベル以下かどうかを判断すればよい。したがって、多くのノートオンイベントが短時間のうちに集中して発生しても、CPU19aは、グループ番号に空きがある限り、発音チャンネルの予約をすることができ、予約後は他の処理を実行することができるので、楽音信号発生装置の処理速度を向上させることができる。
また、上記の楽音信号発生装置においては、予約しようとしている発音チャンネルに既に他の予約がされている場合に、前記他の予約をキャンセルできるようにした。したがって、空きチャンネルが無く、かつ全発音チャンネルについて予約済みであっても、他の予約をキャンセルして、新たな予約をすることができる。すなわち、予約をしようとする発音チャンネルが予約済みであっても、CPU19aは、その発音チャンネルの予約が実行されて空き状態になるのを待つことなく、後に発生したノートオンイベントに対応する楽音信号の発生のための発音チャンネルを予約することができる。そして、CPU19aは、前記予約をした発音チャンネルにおける楽音信号発生の開始タイミングを制御する必要が無いので、前記予約の後、すぐに他の処理の実行を開始できる。したがって、楽音信号発生装置の処理速度を向上させることができる。
また、上記の楽音信号発生装置においては、予約キャンセルフラグCF0〜CF127を設けて、前記他の予約がキャンセルされたか否かの判定を行うようにした。そして、キャンセル指示したにも拘わらず、前記他の予約がキャンセルされなかった場合(すなわち、前記他の予約が実行されて発音開始された場合)、発音処理を開始した直後の発音チャンネルについてトランケート指示を行った上で、この発音チャンネルを新たに予約できる。
また、上記の楽音信号発生装置においては、楽音パラメータ入出力回路17c内に、各種パラメータを記憶するための第1メモリ17c5及び第2メモリ17c6を設けた。これによれば、CPU19aは、発音チャンネルの予約時において楽音パラメータを第1メモリ17c5に書き込んでおけば、書き込まれた楽音パラメータは発音開始時まで第1メモリ17c5に保持されている。また、第1メモリ17c5に書き込まれた楽音パラメータのうち初期パラメータは、発音開始時に、初期パラメータ出力回路17c2によって、各発音チャンネルに直接供給される。一方、通常パラメータは、第2メモリ17c6に転送された後、発音中の所定のタイミングで(例えば10ミリ秒ごと)、通常パラメータ出力回路17c4によって、各発音チャンネルに供給される。すなわち、CPU19aは、発音チャンネルの予約後、発音開始までの間、発音チャンネルへのパラメータの供給に関与しなくてよいので、その間に他の処理を実行することができる。したがって、楽音信号発生装置の処理速度を向上させることができる。
また、上記のように、初期パラメータは、第2メモリ17c6に転送されないので、第2メモリ17c6の記憶容量を小さくできる。また、CPU19aは、エレメント信号の発生開始後に、第2メモリ17c6に記憶された通常パラメータ(例えば、各種エンベロープ用のパラメータ)を更新できるので、エレメント信号の音色、音量などを時間経過に従って変化させることができる。また、楽音信号を時間経過に従って変化させるためのパラメータを、発音チャンネルの予約時にまとめて供給しておく場合に比べて、第1メモリ17c5及び第2メモリ17c6の記憶容量を小さくできる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
g.変形例
上記実施形態においては、音源回路17は、波形メモリWMから波形データを読み出して楽音信号を発生させる波形メモリ音源とした。しかし、本発明は、上記波形メモリ音源を備えた楽音信号発生装置に限られず、楽音信号を発生させる発音チャンネルを有する音源であれば、どのような方式の音源を備えた楽音信号発生装置であっても適用でき、上記実施形態と同様の効果が得られる。
上記実施形態においては、音源回路17は、波形メモリWMから波形データを読み出して楽音信号を発生させる波形メモリ音源とした。しかし、本発明は、上記波形メモリ音源を備えた楽音信号発生装置に限られず、楽音信号を発生させる発音チャンネルを有する音源であれば、どのような方式の音源を備えた楽音信号発生装置であっても適用でき、上記実施形態と同様の効果が得られる。
また、上記実施形態においては、レベル検出回路17b3は、各発音チャンネルの音量制御回路AMPから出力されるエレメント信号の音量レベルを検出し、検出された音量レベルを用いて、ダンプレベル到達検出回路17b4による各グループに属する発音チャンネルのエレメント信号のダンプレベル到達を検出するようにした。また、前記検出された音量レベルを用いて、トランケートする発音チャンネルを決定するようにした(図12のステップS16c)。さらに、前記検出された音量レベルを用いて、空きチャンネルを検索するようにした(図18のステップS82)。しかし、上記ダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索の各処理に対応して、各発音チャンネルの音量制御回路AMPから出力されるエレメント信号の音量レベルを検出するレベル検出回路をそれぞれ設けてもよいし、2つの前記レベル検出回路を設けて、一方の前記レベル検出回路を前記各処理のうちいずれか1つの処理用とし、他方の前記レベル検出回路を残りの処理用としてもよい。上記ダンプレベル到達の検出専用のレベル検出手段を設けた場合は、このダンプレベル到達の検出専用のレベル検出手段は、上記実施形態のように、電子楽器が有する全ての発音チャンネルにて発生されている楽音信号の音量レベルを検出してもよいし、予約されている発音チャンネルにて発生されている楽音信号の音量レベルのみを検出するようにしてもよい。また、上記処理において、各発音チャンネルの音量制御回路AMPから出力されるエレメント信号の音量レベルではなく、音量変更回路AEGが音量制御回路AMPに供給する音量制御信号を用いてもよい。すなわち、レベル検出回路17b3は、制御回路AMPから出力されるエレメント信号の音量レベルを検出するのではなく、音量変更回路AEGが音量制御回路AMPに供給する音量制御信号を検出するようにしてもよい。そして、前記検出された音量制御信号を用いて、上記ダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索を行うようにしてもよい。
また、音量制御回路AMPから出力されるエレメント信号の音量レベルを検出するレベル検出回路17b3に加えて、音量変更回路AEGが音量制御回路AMPに供給する音量制御信号を検出する音量制御信号検出回路を設けておき、上記ダンプレベル到達の検出、トランケートする発音チャンネルの決定及び空きチャンネルの検索の各処理に応じて、レベル検出回路17b3及び音量制御信号検出回路によってそれぞれ検出される音量レベル及び音量制御信号を組み合わせて用いてもよいし、適宜使い分けるようにしてもよい。
17b…発音予約回路、17b2…グループフルフラグセット回路、17b3…レベル検出回路、17b4…ダンプレベル到達検出回路、17b6…発音開始指示回路、17b7…予約キャンセル回路、17c…楽音パラメータ入出力回路、17c2…初期パラメータ出力回路、17c3…通常パラメータ転送回路、17c4…通常パラメータ出力回路、17c5…第1メモリ、17c6…第2メモリ、19a…CPU、25…発音チャンネル予約回路、CL…発音チャンネル情報リスト、NL…ノート情報リスト
Claims (3)
- 楽音信号を発生する発音チャンネルを有する音源部と、
楽音信号発生の指示に応答して、前記楽音信号発生を前記発音チャンネルに指示する制御部とを備えた楽音信号発生装置において、
前記制御部は、
前記楽音信号発生の指示に応答して発生させる楽音信号を規定する楽音情報を前記音源部に供給して、前記楽音信号を発生させる発音チャンネルを予約する予約手段と、
前記予約手段によって予約しようとする発音チャンネルが既に他の楽音信号発生のために予約されている場合に、前記他の予約をキャンセルするキャンセル手段とを有し、
前記音源部は、
前記予約手段による予約及び前記キャンセル手段による予約のキャンセルに応答して発音チャンネルの予約の有無を表す予約情報を記憶する予約情報記憶手段と、
前記予約した発音チャンネルにて発生されている楽音信号の音量レベルが所定の音量レベル以下であるときに、前記記憶した予約情報によって予約が表わされている発音チャンネルにて、前記楽音情報により規定される楽音信号の発生を開始させる楽音信号発生開始手段とを有することを特徴とする楽音信号発生装置。 - 請求項1に記載の楽音信号発生装置において、
前記音源部は、
前記予約手段による予約及び前記キャンセル手段による予約のキャンセルに応答して、前記予約情報を更新する更新手段と、
前記更新手段が前記他の予約をキャンセルして前記予約情報を更新したときにセットされ、前記楽音信号発生開始手段が前記他の楽音信号発生の指示に応答して前記楽音信号を発生開始させたときにクリアされるキャンセルフラグを記憶するキャンセルフラグ記憶手段と、
前記制御部から供給された楽音情報に応じて、楽音信号の音量レベルを制御する音量レベル制御手段とをさらに有し、
前記制御部は、
前記キャンセルフラグがクリアされているときに前記他の楽音信号発生のために予約されていた発音チャンネルにて発生されている楽音信号の音量レベルを強制的に減衰させることを前記音量レベル制御手段に指示する減衰指示手段をさらに有することを特徴とする楽音信号発生装置。 - 請求項1又は2に記載の楽音信号発生装置において、
前記音源部は、楽音信号を発生する複数の発音チャンネルを有し、
前記制御部は、楽音信号発生の指示に応答して前記楽音信号発生を前記複数の発音チャンネルのうちの1つ又は複数の発音チャンネルに割り当てる楽音信号発生装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010052610A JP5504983B2 (ja) | 2010-03-10 | 2010-03-10 | 楽音信号発生装置 |
US13/044,470 US8383924B2 (en) | 2010-03-10 | 2011-03-09 | Musical tone signal generating apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010052610A JP5504983B2 (ja) | 2010-03-10 | 2010-03-10 | 楽音信号発生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011186262A JP2011186262A (ja) | 2011-09-22 |
JP5504983B2 true JP5504983B2 (ja) | 2014-05-28 |
Family
ID=44792592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010052610A Active JP5504983B2 (ja) | 2010-03-10 | 2010-03-10 | 楽音信号発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5504983B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04115295A (ja) * | 1990-09-06 | 1992-04-16 | Yamaha Corp | 楽音制御装置 |
JP2000221983A (ja) * | 1999-02-02 | 2000-08-11 | Yamaha Corp | 音源装置 |
JP4320932B2 (ja) * | 2000-07-12 | 2009-08-26 | ヤマハ株式会社 | 電子楽器 |
JP3835443B2 (ja) * | 2003-09-29 | 2006-10-18 | ヤマハ株式会社 | 楽音生成装置 |
-
2010
- 2010-03-10 JP JP2010052610A patent/JP5504983B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011186262A (ja) | 2011-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2866223B1 (en) | Automated music performance time stretch using audio waveform data | |
JP3838353B2 (ja) | 楽音生成装置および楽音生成用コンピュータプログラム | |
JP4998046B2 (ja) | 楽音発生装置 | |
JP2002297142A (ja) | 音色選択装置及び方法 | |
JP4867940B2 (ja) | 楽音生成装置及びプログラム | |
JP2009156914A (ja) | 自動伴奏装置及びプログラム | |
US8383924B2 (en) | Musical tone signal generating apparatus | |
JP3840851B2 (ja) | 記録媒体および楽音信号生成方法 | |
JP5839156B2 (ja) | 楽音信号発生装置 | |
JP5504983B2 (ja) | 楽音信号発生装置 | |
US20080163744A1 (en) | Musical sound generator | |
JP5569048B2 (ja) | 楽音信号発生装置 | |
JP3918817B2 (ja) | 楽音生成装置 | |
JP5648791B2 (ja) | 楽音信号発生装置 | |
JP4239706B2 (ja) | 自動演奏装置及びプログラム | |
JP5293085B2 (ja) | 音色設定装置及び方法 | |
JP2641851B2 (ja) | 自動演奏装置 | |
JP4134870B2 (ja) | エフェクト設定装置およびエフェクト設定プログラム | |
JP5167878B2 (ja) | 電子音楽装置及びプログラム | |
JP6020134B2 (ja) | 演奏データセット編集プログラム及び装置 | |
JP4803042B2 (ja) | 楽音生成装置及びプログラム | |
JP2756799B2 (ja) | 自動リズム演奏装置 | |
JP4803043B2 (ja) | 楽音生成装置及びプログラム | |
JP3758041B2 (ja) | 楽音制御データ発生装置 | |
JP4497100B2 (ja) | 楽音の発音制御装置および発音制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130121 |
|
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: 20140218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140303 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5504983 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |