(57)【要約】【課題】汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるエンベロープ発生装置を実現する。【解決手段】ＣＰＵ１０がＤ／Ａ変換器１７のダイナミックレンジに応じた閾値ＴＨをＲＯＭ１１から読み出してエンベロープ発生装置１６ａに設定する。エンベロープ発生装置１６ａは、指数的に減衰するエンベロープ波形のレベルが、閾値ＴＨ以下になったときに、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える。これにより、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消する為、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができる。【選択図】図１
2007286503.tif 000002
【特許請求の範囲】
【請求項１】
出力ダイナミックレンジに応じた閾値を設定する閾値設定手段と、
指数的に減衰する第１のエンベロープ波形を発生する第１のエンベロープ発生手段と、
線形に減衰する第２のエンベロープ波形を発生する第２のエンベロープ発生手段と、
波形レベルが前記閾値設定手段により設定される閾値に到達するまでは前記第１のエンベロープ発生手段が発生する第１のエンベロープ波形を出力し、この第１のエンベロープ波形のレベルが、前記閾値設定手段により設定される閾値まで減衰した場合に、当該第１のエンベロープ波形から前記第２のエンベロープ発生手段が発生する第２のエンベロープ波形に切り替えて出力する出力手段と
を具備することを特徴とするエンベロープ発生装置。
【請求項２】
前記閾値設定手段は、エンベロープ発生装置の後段に設けられるＤ／Ａ変換手段のダイナミックレンジに応じた閾値を設定することを特徴とする請求項１記載のエンベロープ発生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器に用いて好適なエンベロープ発生装置に関する。
【背景技術】
【０００２】
周知のように、電子楽器の多くは、発音すべき音高に対応して生成される波形データにエンベロープ波形を乗算して発生楽音の音量や音色を制御するエンベロープ発生装置を具備する。所謂、ＡＤＳＲ型のエンベロープ波形を形成するエンベロープ発生装置では、ディケイ領域やリリース領域において指数的に減衰するエンベロープ波形を発生させる。なお、指数的に減衰するエンベロープ波形を発生するエンベロープ発生装置については、例えば特許文献１等に開示されている。
【０００３】
【特許文献１】特開平８−３２８５６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、指数的に減衰するエンベロープ波形は、実際にはある時間で目標値に到達するように、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替えることが多い。このエンベロープ切り替えでは、エンベロープ波形の不連続が生じ易く、それがノイズ発生要因となって聴感上好ましくない。この為、エンベロープ切り替えは、音量レベルが十分に低減している状態で行われるのが望ましい。
【０００５】
エンベロープ切り替え時の音量レベルは、楽器システムが備える出力段のダイナミックレンジ、つまり具体的にはエンベロープ発生装置の後段に設けられるＤＡＣ（Ｄ／Ａ変換器）のビット長に依存する。例えば、２４ビット長のＤＡＣを備える楽器システムであれば、指数的に減衰エンベロープ波形から線形に減衰するエンベロープ波形に切替える時の音量レベル（以下、切替えレベルと称す）は、２０ビット（−１２０ｄＢ相当）以下であることが望ましい。
【０００６】
一方、この２４ビット長のＤＡＣのダイナミックレンジを前提にした切替えレベルを、例えば１６ビット長のＤＡＣに適用すると、実際には聴取できない切替えレベル（ビット数）で指数エンベロープ波形から線形エンベロープ波形に切替えることになり、しかもこうした無効な切替えのタイミングに達するまで無駄な待機時間を要することになる。
【０００７】
一般にポリフォニック発音する音源では、音量レベルがゼロになるまで発音チャンネルを解放することができない。したがって、２４ビット長のＤＡＣのダイナミックレンジを前提とした楽器システムのエンベロープ発生装置を、１６ビット長のＤＡＣのダイナミックレンジを前提とした楽器システムに適用した場合には、上述した無効な切替えのタイミングに達するまでの間、発音チャンネルを占有してしまう結果、チャンネルリソースを浪費するという弊害が生じる。
【０００８】
これとは逆に、１６ビット長のＤＡＣのダイナミックレンジを前提とした楽器システムのエンベロープ発生装置を、２４ビット長のＤＡＣのダイナミックレンジを前提とした楽器システムに適用した場合には、音量レベルが十分に低減していない状態で指数エンベロープ波形から線形エンベロープ波形に切替わる為、今度は聴感上好ましくない影響が生じる。
【０００９】
このように、従来のエンベロープ発生装置では、楽器システムのダイナミックレンジに応じた最適なタイミングで指数エンベロープ波形から線形エンベロープ波形に切り替えることができず、換言すれば、汎用性に欠け、様々なダイナミックレンジを有する楽器システムに対応することができない、という問題がある。
【００１０】
本発明は、このような事情に鑑みてなされたもので、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるエンベロープ発生装置を提供することを目的としている。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１に記載の発明では、出力ダイナミックレンジに応じた閾値を設定する閾値設定手段と、指数的に減衰する第１のエンベロープ波形を発生する第１のエンベロープ発生手段と、線形に減衰する第２のエンベロープ波形を発生する第２のエンベロープ発生手段と、波形レベルが前記閾値設定手段により設定される閾値に到達するまでは前記第１のエンベロープ発生手段が発生する第１のエンベロープ波形を出力し、この第１のエンベロープ波形のレベルが、前記閾値設定手段により設定される閾値まで減衰した場合に、当該第１のエンベロープ波形から前記第２のエンベロープ発生手段が発生する第２のエンベロープ波形に切り替えて出力する出力手段とを具備することを特徴とする。
【００１２】
上記請求項１に従属する請求項２に記載の発明では、前記閾値設定手段は、エンベロープ発生装置の後段に設けられるＤ／Ａ変換手段のダイナミックレンジに応じた閾値を設定することを特徴とする。
【発明の効果】
【００１３】
本発明では、出力ダイナミックレンジに応じた閾値を設定しておき、波形レベルがその閾値に到達するまでは指数的に減衰する第１のエンベロープ波形を出力し、この第１のエンベロープ波形のレベルが閾値まで減衰すると、当該第１のエンベロープ波形から線形に減衰する第２のエンベロープ波形に切り替えて出力するので、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消し、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるようになる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。
Ａ．構成  
（１）全体構成  
図１は本発明の実施の一形態によるエンベロープ発生装置を備えた楽音発生装置の全体構成を示すブロック図である。この図において、ＣＰＵ１０は、ノートオン／ノートオフ等のイベントを含む演奏データ（ＭＩＤＩデータ）に応じた楽音パラメータを発生して装置各部に供給して楽音を発生させる。ＲＯＭ１１は、プログラムエリアおよびデータエリアを備える。ＲＯＭ１１のプログラムエリアには、ＣＰＵ１０が実行する各種処理プログラムが格納される。ここで言う各種処理プログラムとは、後述するリセット処理、ノートオンイベント処理、タイマ１処理、ノートオフイベント処理およびタイマ２処理を含む。
【００１５】
ＲＯＭ１１のデータエリアには、例えば発生する楽音の音色を指定する音色データが格納される。音色データは、後述する波形メモリ１３に記憶される各種音色の波形データの読み出しアドレスを指定する。また、ＲＯＭ１１のデータエリアには、後述するエンベロープ発生装置１６ａに設定する閾値ＴＨが格納される。なお、閾値ＴＨは、後述するＤ／Ａ変換器１７のダイナミックレンジに応じて決定される値である。
【００１６】
ＲＡＭ１２は、ＣＰＵ１０のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶する。波形メモリ１３は、各種音色の波形データを記憶する。波形発生装置１４は、ＣＰＵ１０から供給される楽音パラメータに応じた楽音波形を発生する。具体的には、ＣＰＵ１０から供給される音色データで指定される音色の波形データを、ノートナンバに応じた読み出し速度で波形メモリ１３から読み出して楽音波形を発生する。なお、ノートナンバとは、演奏データ（ノートオンイベント）に含まれ、発生すべき楽音の音高を表す情報である。
【００１７】
ＤＣＦ（デジタル制御フィルタ）１５は、ＣＰＵ１０から供給されるカットオフ周波数ＦＣに応じて、波形発生装置１４が発生する楽音波形にローパスフィタリングを施して出力する。エンベロープ制御部１６は、エンベロープ発生装置１６ａおよびＶＣＡ（電圧制御増幅器）１６ｂから構成され、ＣＰＵ１０から供給される楽音パラメータに応じて楽音波形の音量を制御する。
【００１８】
すなわち、ＣＰＵ１０が演奏データに含まれるタッチデータに基づき発生すべきエンベロープ波形の目標値Ｔおよびレート値Ｒと、ＲＯＭ１１から読み出す閾値ＴＨとをエンベロープ発生装置１６ａに与えると、エンベロープ発生装置１６ａは、目標値Ｔ、閾値ＴＨおよびレート値Ｒに従って時々刻々変化するエンベロープ波形（現在値Ｃ）を発生してＶＣＡ１６ｂに供給する。
【００１９】
ＶＣＡ１６ｂは、エンベロープ発生装置１６ａから供給されるエンベロープ波形に応じて、前段のＤＣＦ１５から出力される楽音波形の出力レベルを制御する。Ｄ／Ａ変換器１７では、こうしてエンベロープ制御部１６がレベル制御する楽音波形をＤ／Ａ変換して得たアナログ信号形式の楽音出力を発生する。
【００２０】
（２）エンベロープ発生装置１６ａの構成  
図２は、エンベロープ発生装置１６ａの構成を示すブロック図である。この図において、目標値レジスタ１００は、ＣＰＵ１０から供給される目標値Ｔを一時記憶する。現在値レジスタ１０１は、後述するセレクタＳＥＬ１から出力される現在値Ｃ（現在生成されるエンベロープ波形値）を一時記憶する。なお、現在値レジスタ１０１に格納される現在値Ｃは、乗算係数としてＶＣＡ１６ｂに与えられる。レート値レジスタ１０２は、ＣＰＵ１０から供給されるレート値Ｒを一時記憶する。レート値Ｒとは、発生すべきエンベロープ波形の傾きを表す。閾値レジスタ１０３は、ＣＰＵ１０から供給される閾値ＴＨを一時記憶する。
【００２１】
符号判定器ＳＵＢ１は、目標値レジスタ１００の目標値Ｔから現在値レジスタ１０１の現在値Ｃを減算して得た値の符号により現在生成しているエンベロープ波形が上昇（増加）又は下降（減衰）のいずれであるかを判定し、この符号判定結果をセレクタＳＥＬ１、ＳＥＬ２およびレート加減算器ＡＤＤ／ＳＵＢに供給する。到達判定器ＳＵＢ２は、目標値レジスタ１００の目標値Ｔからレート加減算器ＡＤＤ／ＳＵＢの出力を減算して得た値から現在生成しているエンベロープ波形が目標到達しているか否かを判定し、この到達判定結果をセレクタＳＥＬ１に供給する。
【００２２】
セレクタＳＥＬ１は、符号判定器ＳＵＢ１から供給される符号判定結果と、到達判定器ＳＵＢ２から供給される到達判定結果とに応じて、目標値レジスタ１００の目標値Ｔまたはレート加減算器ＡＤＤ／ＳＵＢの出力のいずれかを選択し、選択した値を現在値Ｃとして現在値レジスタ１０１にストアする。乗算器ＭＸは、現在値レジスタ１０１の現在値Ｃに、レートレジスタ１０２のレート値Ｒを乗算してセレクタＳＥＬ２に供給する。セレクタＳＥＬ２は、符号判定器ＳＵＢ１から供給される符号判定結果に応じて、乗算器ＭＸの出力またはレートレジスタ１０２のレート値Ｒのいずれかを選択して論理回路１０４に供給する。
【００２３】
論理回路１０４は、セレクタ１０４ａおよび到達判定器１０４ｂを備える。セレクタ１０４ａは、到達判定器１０４ｂから供給される到達判定結果に応じて、セレクタＳＥＬ２の出力またはレートレジスタ１０２のレート値Ｒのいずれかを選択してレート加減算器ＡＤＤ／ＳＵＢに供給する。到達判定器１０４ｂは、セレクタＳＥＬ２の出力から閾値レジスタ１０３の閾値ＴＨを減算して得た値から現在生成しているエンベロープ波形が閾値ＴＨを超えているか否かを判定し、この到達判定結果をセレクタ１０４ａに供給する。
【００２４】
レート加減算器ＡＤＤ／ＳＵＢは、符号判定器ＳＵＢ１から供給される符号判定結果に従い、現在値レジスタ１０１の現在値Ｃに対して論理回路１０４の出力を加算もしくは減算し、これにより得られる加減算出力をセレクタＳＥＬ１に供給する。
【００２５】
次に、図３を参照して上記構成によるエンベロープ発生装置１６ａの動作を説明する。図３は、符号判定器ＳＵＢ１の符号判定結果と、到達判定器ＳＵＢ２の到達判定結果とに応じた各部（セレクタＳＥＬ１，ＳＥＬ２およびレート加減算器ＡＤＤ／ＳＵＢ）の動作をまとめた一覧表である。先ず、ノートオンに応じてアタックレベルが目標値Ｔとして与えられたとする。この場合、図３に図示するように、現在値Ｃが目標値Ｔ以下（Ｔ≧Ｃ）であって、レート加減算器ＡＤＤ／ＳＵＢの出力が目標値Ｔに未達（Ｔ≧ＡＤＤ／ＳＵＢ）なので、セレクタＳＥＬ１はレート加減算器ＡＤＤ／ＳＵＢの出力を選択し、セレクタＳＥＬ２はレート値Ｒを選択し、レート加減算器ＡＤＤ／ＳＵＢは加算する。したがって、アタックレベル（目標値Ｔ）に達するまでは、レート値Ｒを加算して現在値Ｃを更新することで線形増加するエンベロープ波形が形成される。
【００２６】
そして、レート加減算器ＡＤＤ／ＳＵＢの出力が目標値Ｔに到達（Ｔ＜ＡＤＤ／ＳＵＢ）すると、セレクタＳＥＬ１は目標値レジスタ１０１の目標値Ｔを選択し、セレクタＳＥＬ２はレート値Ｒを選択し、レート加減算器ＡＤＤ／ＳＵＢは加算する。これにより、現在値Ｃがサステインレベル（目標値Ｔ）に設定される。
【００２７】
サステインレベルが目標値Ｔとして与えられると、図３に図示するように、現在値Ｃが目標値Ｔより大きく（Ｔ＜Ｃ）、かつレート加減算器ＡＤＤ／ＳＵＢの出力が目標値Ｔより大きい（Ｔ＜ＡＤＤ／ＳＵＢ）ので、セレクタＳＥＬ１はレート加減算器ＡＤＤ／ＳＵＢの出力を選択し、セレクタＳＥＬ２は乗算器ＭＸの出力を選択し、レート加減算器ＡＤＤ／ＳＵＢは減算する。したがって、サステインレベル（目標値Ｔ）に達するまでは、現在値Ｃにレート値Ｒ（ディケイレート）を乗算して当該現在値Ｃを更新することで指数的に減衰するエンベロープ波形が形成される。
【００２８】
この後、サステイン領域からリリ−ス領域に遷移し、指数的に減衰するエンベロープ波形（現在値Ｃ）が閾値ＴＨ以下になったとする。そうすると、論理回路１０４では、到達判定器１０４ｂの到達判定結果に基づき、セレクタ１０４ａがレートレジスタ１０２のレート値Ｒを選択して次段のレート加減算器ＡＤＤ／ＳＵＢに出力する。これにより、指数的に減衰するエンベロープ波形（現在値Ｃ）が閾値ＴＨ以下になると、レート値Ｒを減算して現在値Ｃを更新する。つまり、閾値ＴＨを境にして、指数的に減衰するエンベロープ波形から線形減衰するエンベロープ波形に切り替わる。
【００２９】
前述したように、閾値ＴＨは、Ｄ／Ａ変換器１７のダイナミックレンジに応じて設定される。したがって、例えば図４に図示するように、Ｄ／Ａ変換器１７のダイナミックレンジが小さい場合には、閾値ＴＨ１で指数的に減衰するエンベロープ波形ＥＮＶから線形減衰するエンベロープ波形Ａに切り替え、一方、Ｄ／Ａ変換器１７のダイナミックレンジが大きい場合には、閾値ＴＨ２で指数的に減衰するエンベロープ波形ＥＮＶから線形減衰するエンベロープ波形Ｂに切り替えるようにする。これにより、楽器システムのダイナミックレンジに応じた最適なタイミングで指数エンベロープ波形から線形エンベロープ波形に切り替えることができる結果、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応し得るようになっている。
【００３０】
（３）論理回路１０４の構成  
次に、図５を参照して論理回路１０４の具体的な構成について説明する。上述したように、論理回路１０４は、指数的に減衰するエンベロープ波形（現在値Ｃ）が閾値ＴＨ以下になると、線形減衰するエンベロープ波形に切り替える機能を具備する。図５に図示する一例の論理回路１０４には、指数的に減衰するエンベロープ波形がＤＩ３０〜ＤＩ０の３１ビット長のデータとして入力される。この３１ビット長のデータＤＩ３０〜ＤＩ０の内、ＤＩ３０〜ＤＩ１５は整数部を、ＤＩ１４〜ＤＩ０は小数部を形成する。
【００３１】
論理回路１０４では、入力される３１ビット長のデータＤＩ３０〜ＤＩ０の内、その上位１６ビット（ＤＩ３０〜ＤＩ１５）からなる出力データＤＯＨ１５〜ＤＯＨ０とキャリーイン（桁上がり）用の出力データＤＯＬとを出力する。すなわち、入力される３１ビット長のデータＤＩ３０〜ＤＩ０の内、上位１３ビットのデータＤＩ３０〜ＤＩ１８は、そのまま出力データＤＯＨ１５〜ＤＯＨ３としてスルー出力される。
【００３２】
入力される３１ビット長のデータＤＩ３０〜ＤＩ０の内、データＤＩ１７〜ＤＩ１２は、それぞれセレクタＳＥＬ５〜ＳＥＬ０に入力される。セレクタＳＥＬ５〜ＳＥＬ０は、一方の入力端に「１」が共通入力され、他方の各入力端に上記のデータＤＩ１７〜ＤＩ１２が各々入力され、設定される閾値ＴＨに応じて入力選択する。
【００３３】
ここで、図６を参照して、閾値ＴＨに応じて入力選択するセレクタＳＥＬ５〜ＳＥＬ０の動作を説明する。図６に図示する一例の場合、セレクタＳＥＬ５では、閾値ＴＨが「−１２１ｄＢ」以下の場合にデータＤＩ１７を選択し、これを出力データＤＯＨ２として出力する。閾値ＴＨが「−８５ｄＢ」〜「−１１５ｄＢ」の範囲では、「１」を出力データＤＯＨ２として出力する。
【００３４】
同様に、セレクタＳＥＬ４では、閾値ＴＨが「−１１５ｄＢ」以下の場合にデータＤＩ１６を出力データＤＯＨ１として出力し、それ以外では「１」を出力データＤＯＨ１として出力する。セレクタＳＥＬ３では、閾値ＴＨが「−１０９ｄＢ」以下の場合にデータＤＩ１５を出力データＤＯＨ０として出力し、それ以外では「１」を出力データＤＯＨ０として出力する。
【００３５】
セレクタＳＥＬ２では、閾値ＴＨが「−１０３ｄＢ」以下の場合にデータＤＩ１４を論理回路ＡＮＤ４に供給し、それ以外では「１」を論理回路ＡＮＤ４に供給する。セレクタＳＥＬ１では、閾値ＴＨが「−９７ｄＢ」以下の場合にデータＤＩ１３を論理回路ＡＮＤ３に供給し、それ以外では「１」を論理回路ＡＮＤ３に供給する。セレクタＳＥＬ０では、閾値ＴＨが「−９１ｄＢ」以下の場合にデータＤＩ１２を論理回路ＡＮＤ２に供給し、それ以外では「１」を論理回路ＡＮＤ２に供給する。
【００３６】
入力される３１ビット長のデータＤＩ３０〜ＤＩ０の内、データＤＩ１１〜ＤＩ０は後段のレート加減算器ＡＤＤ／ＳＵＢの演算精度に影響を与えない。この為、データＤＩ１１〜ＤＩ０は、論理回路ＯＲ１にて一括して論理和をとることで切り上げを行う。論理回路ＯＲ１の出力は、論理回路ＡＮＤ１に供給される。論理回路ＡＮＤ１は、論理回路ＯＲ１の出力とデコーダＤＥＣの出力ＤＥＣ０との論理積を出力する。論理回路ＡＮＤ２は、セレクタＳＥＬ０の出力とデコーダＤＥＣの出力ＤＥＣ１との論理積を出力する。論理回路ＡＮＤ３は、セレクタＳＥＬ１の出力とデコーダＤＥＣの出力ＤＥＣ２との論理積を出力する。論理回路ＡＮＤ４は、セレクタＳＥＬ２の出力とデコーダＤＥＣの出力ＤＥＣ３との論理積を出力する。デコーダＤＥＣは、サンプリングクロックＣＬＫに同期したタイミングで出力ＤＥＣ０〜ＤＥＣ３を発生する。
【００３７】
図７は、デコーダＤＥＣの出力タイミングを示すタイムチャートである。この図に示す通り、デコーダＤＥＣでは、１６サンプリング周期毎に出力ＤＥＣ０を、８サンプリング周期毎に出力ＤＥＣ１を、４サンプリング周期毎に出力ＤＥＣ２を、２サンプリング周期毎に出力ＤＥＣ３をそれぞれ発生する。論理回路ＯＲ２は、論理回路ＡＮＤ１〜ＡＮＤ４の各出力の論理和を、キャリーイン（桁上がり）用の出力データＤＯＬとして発生する。
【００３８】
このように、論理回路ＯＲ１〜ＯＲ２、デコーダＤＥＣおよび論理回路ＡＮＤ１〜ＡＮＤ４では、出力ＤＥＣ３が小数点以下第１位、出力ＤＥＣ２が小数点以下第２位、出力ＤＥＣ２が小数点以下第３位、出力ＤＥＣ０が小数点以下第４位となり、これら小数点以下各桁の加減算結果と等価なキャリーイン用の出力データＤＯＬを生成するようになっている。
【００３９】
また、図６に図示したタイムチャートから明らかなように、１サンプリング周期で「Ｈ（ハイ）」レベルになる信号は常に１つなので、次段のレート加減算器ＡＤＤ／ＳＵＢは、図８に図示するように、出力データＤＯＬをキャリーインとして、現在値Ｃに対して出力データＤＯＨ１５〜ＤＯＨ０を加減算できるようになる。こうすることにより、余計な加算器を必要としない利点が得られる。
【００４０】
Ｂ．動作  
次に、図９〜図１３を参照して実施形態の動作について説明する。以下では、ＣＰＵ１０が実行する「リセット処理」、「ノートオンイベント処理」、「タイマ１処理」、「ノートオフイベント処理」および「タイマ２処理」の各動作について述べる。
【００４１】
（１）リセット処理の動作  
電源投入などのシステムリセットのイベントが発生すると、ＣＰＵ１０は図９に図示するリセット処理を実行してステップＳＡ１に処理を進め、装置各部を初期化するイニシャライズを行う。続いて、ステップＳＡ２では、ＲＯＭ１１のデータエリアに格納される閾値ＴＨを読み出す。次いで、ステップＳＡ３では、その読み出した閾値ＴＨを、エンベロープ発生装置１６ａの閾値レジスタ１０３（図２参照）にストアして本処理を終える。
【００４２】
（２）ノートオンイベント処理の動作
入力される演奏データにノートオンイベントが含まれていると、ＣＰＵ１０は図１０に図示するノートオンイベント処理を実行してステップＳＢ１に処理を進める。ステップＳＢ１では、複数備える発音チャンネルの内、発音割当てされていない空きチャンネルを探し出し、その空きチャンネルに発音を割当てる。次いで、ステップＳＢ２では、ノートオンイベントに含まれるノートナンバをピッチデータ（読み出し位相情報）に変換して波形発生装置１４に供給する。続いて、ステップＳＢ３では、音色に対応する波形読み出しアドレスを波形発生装置１４に供給する。
【００４３】
そして、ステップＳＢ４では、波形発生指示を波形発生装置１４に与える。これにより、波形発生装置１４は、ＣＰＵ１０が指定した音色の波形データを、ノートナンバに応じた読み出し速度で波形メモリ１３から読み出して楽音波形を発生する。次に、ステップＳＢ５では、ノートオンイベントに含まれるタッチデータに応じたカットオフ周波数ＦＣを発生してＤＣＦ（デジタル制御フィルタ）１５に設定する。次いで、ステップＳＢ６では、エンベロープ発生装置１６ａの現在値レジスタ１０１（図２参照）をゼロリセットする。
【００４４】
ステップＳＢ７では、ノートオンイベントに含まれるタッチデータからエンベロープ波形の目標値Ｔ（アタックレベル）を算出してエンベロープ発生装置１６ａの目標値レジスタ１００（図２参照）にストアする。そして、ステップＳＢ８では、音色データからレート値Ｒを算出してエンベロープ発生装置１６ａのレート値レジスタ１０２（図２参照）にストアして本処理を終える。
【００４５】
エンベロープ発生装置１６ａでは、アタックレベルが目標値Ｔとして与えられると、セレクタＳＥＬ１がレート加減算器ＡＤＤ／ＳＵＢの出力を選択し、セレクタＳＥＬ２がレート値Ｒを選択し、レート加減算器ＡＤＤ／ＳＵＢは加算するので、アタックレベル（目標値Ｔ）に達するまでは、レート値Ｒを加算して現在値Ｃを更新することによって線形増加するエンベロープ波形を形成する。
【００４６】
（３）タイマ１処理の動作
ＣＰＵ１０では、ノートオン時点から所定時間経過毎にタイマ１処理を割込み実行する。タイマ１処理の実行タイミングになると、ＣＰＵ１０は図１１に図示するタイマ１処理を実行してステップＳＣ１に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップＳＣ２では、検出したレベルが目標値Ｔ、すなわちアタックレベルに到達したか否かを判断する。アタックレベルに到達していなければ、判断結果は「ＮＯ」になり、一旦本処理を完了させる。
【００４７】
一方、検出したレベルがアタックレベルに到達した場合には、上記ステップＳＣ２の判断結果は「ＹＥＳ」になり、ステップＳＣ３に進む。ステップＳＣ３では、該当チャンネル（アタックレベルに達した発音チャンネル）にアサインされる音色データに基づきサステインレベルを算出してエンベロープ発生装置１６ａの目標値レジスタ１００にストアする。続いて、ステップＳＣ４では、該当チャンネルにアサインされる音色データに基づきディケイレートを算出してエンベロープ発生装置１６ａのレート値レジスタ１０２にストアして本処理を終える。
【００４８】
エンベロープ発生装置１６ａでは、サステインレベルが目標値Ｔとして与えられると、セレクタＳＥＬ１がレート加減算器ＡＤＤ／ＳＵＢの出力を選択し、セレクタＳＥＬ２が乗算器ＭＸの出力を選択し、レート加減算器ＡＤＤ／ＳＵＢは減算するので、サステインレベル（目標値Ｔ）に達するまでは、現在値Ｃにレート値Ｒ（ディケイレート）を乗算して当該現在値Ｃを更新することによって指数的に減衰するエンベロープ波形を形成する。
【００４９】
（４）ノートオフイベント処理の動作
入力される演奏データにノートオフイベントが含まれていると、ＣＰＵ１０は図１２に図示するノートオフイベント処理を実行してステップＳＤ１に処理を進める。ステップＳＤ１では、ノートオフイベントに含まれるノートナンバから消音すべき発音チャンネルを決定する。次いで、ステップＳＤ２では、エンベロープ発生装置１６ａの現在値レジスタ１０１に「０」をストアし、続くステップＳＤでは、消音するチャンネルにアサインされる音色データに基づきリリースレートを算出してエンベロープ発生装置１６ａのレート値レジスタ１０２にストアして本処理を終える。
【００５０】
エンベロープ発生装置１６ａでは、指数的に減衰するエンベロープ波形（現在値Ｃ）が、前述のステップＳＡ３（図８参照）にて設定された閾値ＴＨ以下になると、図２に図示する論理回路１０４のセレクタ１０４ａがレートレジスタ１０２のレート値Ｒ（リリースレート）を選択して次段のレート加減算器ＡＤＤ／ＳＵＢに出力する。これにより、指数的に減衰するエンベロープ波形（現在値Ｃ）が閾値ＴＨ以下になると、レート値Ｒを減算して現在値Ｃを更新する。つまり、指数的に減衰するエンベロープ波形から線形減衰するエンベロープ波形に切り替える。
【００５１】
（５）タイマ２処理の動作
ＣＰＵ１０では、ノートオフ時点から所定時間経過毎にタイマ２処理を割込み実行する。タイマ２処理の実行タイミングになると、ＣＰＵ１０は図１３に図示するタイマ２処理を実行してステップＳＥ１に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップＳＥ２では、検出したレベルが「０」、すなわちリリース完了の有無を判断する。リリースが完了していなければ、判断結果は「ＮＯ」になり、一旦本処理を完了させる。一方、リリースが完了すると、上記ステップＳＥ２の判断結果は「ＹＥＳ」になり、ステップＳＥ３に進む。ステップＳＥ３では、該当チャンネル（リリース完了した発音チャンネル）の波形発生停止を波形発生装置１４に指示し、続くステップＳＥ４では、該当チャンネルを空きチャンネルに設定して本処理を終える。
【００５２】
以上のように、本実施の形態では、ＣＰＵ１０がＤ／Ａ変換器１７のダイナミックレンジに応じた閾値ＴＨをエンベロープ発生装置１６ａに設定すると、エンベロープ発生装置１６ａは、指数的に減衰するエンベロープ波形のレベルが、この閾値ＴＨ以下になったときに、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える。こうすることで、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消し、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができる。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の一形態によるエンベロープ発生装置を備えた楽音発生装置の全体構成を示すブロック図である。
【図２】エンベロープ発生装置１６ａの構成を示すブロック図である。
【図３】エンベロープ発生装置１６ａの動作を説明するための図である。
【図４】指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える一例を示す図である。
【図５】論理回路１０４の具体的な構成を示すブロック図である。
【図６】閾値ＴＨに応じて入力選択するセレクタＳＥＬ５〜ＳＥＬ０の動作を説明するための図である。
【図７】デコーダＤＥＣの出力タイミングを示すタイムチャートである。
【図８】レート加減算器ＡＤＤ／ＳＵＢの一例を示す図である。
【図９】ＣＰＵ１０が実行するリセット処理の動作を示すフローチャートである。
【図１０】ＣＰＵ１０が実行するノートオンイベント処理の動作を示すフローチャートである。
【図１１】ＣＰＵ１０が実行するタイマ１処理の動作を示すフローチャートである。
【図１２】ＣＰＵ１０が実行するノートオフイベント処理の動作を示すフローチャートである。
【図１３】ＣＰＵ１０が実行するタイマ２処理の動作を示すフローチャートである。
【符号の説明】
【００５４】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  波形メモリ
１４  波形発生装置
１５  ＤＣＦ（デジタル制御フィルタ）
１６  エンベロープ制御部
１６ａ  エンベロープ発生装置
１６ｂ  ＶＣＡ（電圧制御増幅器）
１７  Ｄ／Ａ変換器
【図１】
2007286503.tif 000003
【図２】
2007286503.tif 000004
【図３】
2007286503.tif 000005
【図４】
2007286503.tif 000006
【図５】
2007286503.tif 000007
【図６】
2007286503.tif 000008
【図７】
2007286503.tif 000009
【図８】
2007286503.tif 000010
【図９】
2007286503.tif 000011
【図１０】
2007286503.tif 000012
【図１１】
2007286503.tif 000013
【図１２】
2007286503.tif 000014
【図１３】
2007286503.tif 000015