JP2007286503A - エンベロープ発生装置 - Google Patents
エンベロープ発生装置 Download PDFInfo
- Publication number
- JP2007286503A JP2007286503A JP2006115844A JP2006115844A JP2007286503A JP 2007286503 A JP2007286503 A JP 2007286503A JP 2006115844 A JP2006115844 A JP 2006115844A JP 2006115844 A JP2006115844 A JP 2006115844A JP 2007286503 A JP2007286503 A JP 2007286503A
- Authority
- JP
- Japan
- Prior art keywords
- envelope
- waveform
- output
- generator
- envelope waveform
- 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.)
- Pending
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるエンベロープ発生装置を実現する。
【解決手段】CPU10がD/A変換器17のダイナミックレンジに応じた閾値THをROM11から読み出してエンベロープ発生装置16aに設定する。エンベロープ発生装置16aは、指数的に減衰するエンベロープ波形のレベルが、閾値TH以下になったときに、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える。これにより、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消する為、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができる。
【選択図】図1
【解決手段】CPU10がD/A変換器17のダイナミックレンジに応じた閾値THをROM11から読み出してエンベロープ発生装置16aに設定する。エンベロープ発生装置16aは、指数的に減衰するエンベロープ波形のレベルが、閾値TH以下になったときに、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える。これにより、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消する為、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができる。
【選択図】図1
Description
本発明は、電子楽器に用いて好適なエンベロープ発生装置に関する。
周知のように、電子楽器の多くは、発音すべき音高に対応して生成される波形データにエンベロープ波形を乗算して発生楽音の音量や音色を制御するエンベロープ発生装置を具備する。所謂、ADSR型のエンベロープ波形を形成するエンベロープ発生装置では、ディケイ領域やリリース領域において指数的に減衰するエンベロープ波形を発生させる。なお、指数的に減衰するエンベロープ波形を発生するエンベロープ発生装置については、例えば特許文献1等に開示されている。
ところで、指数的に減衰するエンベロープ波形は、実際にはある時間で目標値に到達するように、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替えることが多い。このエンベロープ切り替えでは、エンベロープ波形の不連続が生じ易く、それがノイズ発生要因となって聴感上好ましくない。この為、エンベロープ切り替えは、音量レベルが十分に低減している状態で行われるのが望ましい。
エンベロープ切り替え時の音量レベルは、楽器システムが備える出力段のダイナミックレンジ、つまり具体的にはエンベロープ発生装置の後段に設けられるDAC(D/A変換器)のビット長に依存する。例えば、24ビット長のDACを備える楽器システムであれば、指数的に減衰エンベロープ波形から線形に減衰するエンベロープ波形に切替える時の音量レベル(以下、切替えレベルと称す)は、20ビット(−120dB相当)以下であることが望ましい。
一方、この24ビット長のDACのダイナミックレンジを前提にした切替えレベルを、例えば16ビット長のDACに適用すると、実際には聴取できない切替えレベル(ビット数)で指数エンベロープ波形から線形エンベロープ波形に切替えることになり、しかもこうした無効な切替えのタイミングに達するまで無駄な待機時間を要することになる。
一般にポリフォニック発音する音源では、音量レベルがゼロになるまで発音チャンネルを解放することができない。したがって、24ビット長のDACのダイナミックレンジを前提とした楽器システムのエンベロープ発生装置を、16ビット長のDACのダイナミックレンジを前提とした楽器システムに適用した場合には、上述した無効な切替えのタイミングに達するまでの間、発音チャンネルを占有してしまう結果、チャンネルリソースを浪費するという弊害が生じる。
これとは逆に、16ビット長のDACのダイナミックレンジを前提とした楽器システムのエンベロープ発生装置を、24ビット長のDACのダイナミックレンジを前提とした楽器システムに適用した場合には、音量レベルが十分に低減していない状態で指数エンベロープ波形から線形エンベロープ波形に切替わる為、今度は聴感上好ましくない影響が生じる。
このように、従来のエンベロープ発生装置では、楽器システムのダイナミックレンジに応じた最適なタイミングで指数エンベロープ波形から線形エンベロープ波形に切り替えることができず、換言すれば、汎用性に欠け、様々なダイナミックレンジを有する楽器システムに対応することができない、という問題がある。
本発明は、このような事情に鑑みてなされたもので、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるエンベロープ発生装置を提供することを目的としている。
上記目的を達成するため、請求項1に記載の発明では、出力ダイナミックレンジに応じた閾値を設定する閾値設定手段と、指数的に減衰する第1のエンベロープ波形を発生する第1のエンベロープ発生手段と、線形に減衰する第2のエンベロープ波形を発生する第2のエンベロープ発生手段と、波形レベルが前記閾値設定手段により設定される閾値に到達するまでは前記第1のエンベロープ発生手段が発生する第1のエンベロープ波形を出力し、この第1のエンベロープ波形のレベルが、前記閾値設定手段により設定される閾値まで減衰した場合に、当該第1のエンベロープ波形から前記第2のエンベロープ発生手段が発生する第2のエンベロープ波形に切り替えて出力する出力手段とを具備することを特徴とする。
上記請求項1に従属する請求項2に記載の発明では、前記閾値設定手段は、エンベロープ発生装置の後段に設けられるD/A変換手段のダイナミックレンジに応じた閾値を設定することを特徴とする。
本発明では、出力ダイナミックレンジに応じた閾値を設定しておき、波形レベルがその閾値に到達するまでは指数的に減衰する第1のエンベロープ波形を出力し、この第1のエンベロープ波形のレベルが閾値まで減衰すると、当該第1のエンベロープ波形から線形に減衰する第2のエンベロープ波形に切り替えて出力するので、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消し、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができるようになる。
以下、図面を参照して本発明の実施の形態について説明する。
A.構成
(1)全体構成
図1は本発明の実施の一形態によるエンベロープ発生装置を備えた楽音発生装置の全体構成を示すブロック図である。この図において、CPU10は、ノートオン/ノートオフ等のイベントを含む演奏データ(MIDIデータ)に応じた楽音パラメータを発生して装置各部に供給して楽音を発生させる。ROM11は、プログラムエリアおよびデータエリアを備える。ROM11のプログラムエリアには、CPU10が実行する各種処理プログラムが格納される。ここで言う各種処理プログラムとは、後述するリセット処理、ノートオンイベント処理、タイマ1処理、ノートオフイベント処理およびタイマ2処理を含む。
A.構成
(1)全体構成
図1は本発明の実施の一形態によるエンベロープ発生装置を備えた楽音発生装置の全体構成を示すブロック図である。この図において、CPU10は、ノートオン/ノートオフ等のイベントを含む演奏データ(MIDIデータ)に応じた楽音パラメータを発生して装置各部に供給して楽音を発生させる。ROM11は、プログラムエリアおよびデータエリアを備える。ROM11のプログラムエリアには、CPU10が実行する各種処理プログラムが格納される。ここで言う各種処理プログラムとは、後述するリセット処理、ノートオンイベント処理、タイマ1処理、ノートオフイベント処理およびタイマ2処理を含む。
ROM11のデータエリアには、例えば発生する楽音の音色を指定する音色データが格納される。音色データは、後述する波形メモリ13に記憶される各種音色の波形データの読み出しアドレスを指定する。また、ROM11のデータエリアには、後述するエンベロープ発生装置16aに設定する閾値THが格納される。なお、閾値THは、後述するD/A変換器17のダイナミックレンジに応じて決定される値である。
RAM12は、CPU10のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶する。波形メモリ13は、各種音色の波形データを記憶する。波形発生装置14は、CPU10から供給される楽音パラメータに応じた楽音波形を発生する。具体的には、CPU10から供給される音色データで指定される音色の波形データを、ノートナンバに応じた読み出し速度で波形メモリ13から読み出して楽音波形を発生する。なお、ノートナンバとは、演奏データ(ノートオンイベント)に含まれ、発生すべき楽音の音高を表す情報である。
DCF(デジタル制御フィルタ)15は、CPU10から供給されるカットオフ周波数FCに応じて、波形発生装置14が発生する楽音波形にローパスフィタリングを施して出力する。エンベロープ制御部16は、エンベロープ発生装置16aおよびVCA(電圧制御増幅器)16bから構成され、CPU10から供給される楽音パラメータに応じて楽音波形の音量を制御する。
すなわち、CPU10が演奏データに含まれるタッチデータに基づき発生すべきエンベロープ波形の目標値Tおよびレート値Rと、ROM11から読み出す閾値THとをエンベロープ発生装置16aに与えると、エンベロープ発生装置16aは、目標値T、閾値THおよびレート値Rに従って時々刻々変化するエンベロープ波形(現在値C)を発生してVCA16bに供給する。
VCA16bは、エンベロープ発生装置16aから供給されるエンベロープ波形に応じて、前段のDCF15から出力される楽音波形の出力レベルを制御する。D/A変換器17では、こうしてエンベロープ制御部16がレベル制御する楽音波形をD/A変換して得たアナログ信号形式の楽音出力を発生する。
(2)エンベロープ発生装置16aの構成
図2は、エンベロープ発生装置16aの構成を示すブロック図である。この図において、目標値レジスタ100は、CPU10から供給される目標値Tを一時記憶する。現在値レジスタ101は、後述するセレクタSEL1から出力される現在値C(現在生成されるエンベロープ波形値)を一時記憶する。なお、現在値レジスタ101に格納される現在値Cは、乗算係数としてVCA16bに与えられる。レート値レジスタ102は、CPU10から供給されるレート値Rを一時記憶する。レート値Rとは、発生すべきエンベロープ波形の傾きを表す。閾値レジスタ103は、CPU10から供給される閾値THを一時記憶する。
図2は、エンベロープ発生装置16aの構成を示すブロック図である。この図において、目標値レジスタ100は、CPU10から供給される目標値Tを一時記憶する。現在値レジスタ101は、後述するセレクタSEL1から出力される現在値C(現在生成されるエンベロープ波形値)を一時記憶する。なお、現在値レジスタ101に格納される現在値Cは、乗算係数としてVCA16bに与えられる。レート値レジスタ102は、CPU10から供給されるレート値Rを一時記憶する。レート値Rとは、発生すべきエンベロープ波形の傾きを表す。閾値レジスタ103は、CPU10から供給される閾値THを一時記憶する。
符号判定器SUB1は、目標値レジスタ100の目標値Tから現在値レジスタ101の現在値Cを減算して得た値の符号により現在生成しているエンベロープ波形が上昇(増加)又は下降(減衰)のいずれであるかを判定し、この符号判定結果をセレクタSEL1、SEL2およびレート加減算器ADD/SUBに供給する。到達判定器SUB2は、目標値レジスタ100の目標値Tからレート加減算器ADD/SUBの出力を減算して得た値から現在生成しているエンベロープ波形が目標到達しているか否かを判定し、この到達判定結果をセレクタSEL1に供給する。
セレクタSEL1は、符号判定器SUB1から供給される符号判定結果と、到達判定器SUB2から供給される到達判定結果とに応じて、目標値レジスタ100の目標値Tまたはレート加減算器ADD/SUBの出力のいずれかを選択し、選択した値を現在値Cとして現在値レジスタ101にストアする。乗算器MXは、現在値レジスタ101の現在値Cに、レートレジスタ102のレート値Rを乗算してセレクタSEL2に供給する。セレクタSEL2は、符号判定器SUB1から供給される符号判定結果に応じて、乗算器MXの出力またはレートレジスタ102のレート値Rのいずれかを選択して論理回路104に供給する。
論理回路104は、セレクタ104aおよび到達判定器104bを備える。セレクタ104aは、到達判定器104bから供給される到達判定結果に応じて、セレクタSEL2の出力またはレートレジスタ102のレート値Rのいずれかを選択してレート加減算器ADD/SUBに供給する。到達判定器104bは、セレクタSEL2の出力から閾値レジスタ103の閾値THを減算して得た値から現在生成しているエンベロープ波形が閾値THを超えているか否かを判定し、この到達判定結果をセレクタ104aに供給する。
レート加減算器ADD/SUBは、符号判定器SUB1から供給される符号判定結果に従い、現在値レジスタ101の現在値Cに対して論理回路104の出力を加算もしくは減算し、これにより得られる加減算出力をセレクタSEL1に供給する。
次に、図3を参照して上記構成によるエンベロープ発生装置16aの動作を説明する。図3は、符号判定器SUB1の符号判定結果と、到達判定器SUB2の到達判定結果とに応じた各部(セレクタSEL1,SEL2およびレート加減算器ADD/SUB)の動作をまとめた一覧表である。先ず、ノートオンに応じてアタックレベルが目標値Tとして与えられたとする。この場合、図3に図示するように、現在値Cが目標値T以下(T≧C)であって、レート加減算器ADD/SUBの出力が目標値Tに未達(T≧ADD/SUB)なので、セレクタSEL1はレート加減算器ADD/SUBの出力を選択し、セレクタSEL2はレート値Rを選択し、レート加減算器ADD/SUBは加算する。したがって、アタックレベル(目標値T)に達するまでは、レート値Rを加算して現在値Cを更新することで線形増加するエンベロープ波形が形成される。
そして、レート加減算器ADD/SUBの出力が目標値Tに到達(T<ADD/SUB)すると、セレクタSEL1は目標値レジスタ101の目標値Tを選択し、セレクタSEL2はレート値Rを選択し、レート加減算器ADD/SUBは加算する。これにより、現在値Cがサステインレベル(目標値T)に設定される。
サステインレベルが目標値Tとして与えられると、図3に図示するように、現在値Cが目標値Tより大きく(T<C)、かつレート加減算器ADD/SUBの出力が目標値Tより大きい(T<ADD/SUB)ので、セレクタSEL1はレート加減算器ADD/SUBの出力を選択し、セレクタSEL2は乗算器MXの出力を選択し、レート加減算器ADD/SUBは減算する。したがって、サステインレベル(目標値T)に達するまでは、現在値Cにレート値R(ディケイレート)を乗算して当該現在値Cを更新することで指数的に減衰するエンベロープ波形が形成される。
この後、サステイン領域からリリ−ス領域に遷移し、指数的に減衰するエンベロープ波形(現在値C)が閾値TH以下になったとする。そうすると、論理回路104では、到達判定器104bの到達判定結果に基づき、セレクタ104aがレートレジスタ102のレート値Rを選択して次段のレート加減算器ADD/SUBに出力する。これにより、指数的に減衰するエンベロープ波形(現在値C)が閾値TH以下になると、レート値Rを減算して現在値Cを更新する。つまり、閾値THを境にして、指数的に減衰するエンベロープ波形から線形減衰するエンベロープ波形に切り替わる。
前述したように、閾値THは、D/A変換器17のダイナミックレンジに応じて設定される。したがって、例えば図4に図示するように、D/A変換器17のダイナミックレンジが小さい場合には、閾値TH1で指数的に減衰するエンベロープ波形ENVから線形減衰するエンベロープ波形Aに切り替え、一方、D/A変換器17のダイナミックレンジが大きい場合には、閾値TH2で指数的に減衰するエンベロープ波形ENVから線形減衰するエンベロープ波形Bに切り替えるようにする。これにより、楽器システムのダイナミックレンジに応じた最適なタイミングで指数エンベロープ波形から線形エンベロープ波形に切り替えることができる結果、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応し得るようになっている。
(3)論理回路104の構成
次に、図5を参照して論理回路104の具体的な構成について説明する。上述したように、論理回路104は、指数的に減衰するエンベロープ波形(現在値C)が閾値TH以下になると、線形減衰するエンベロープ波形に切り替える機能を具備する。図5に図示する一例の論理回路104には、指数的に減衰するエンベロープ波形がDI30〜DI0の31ビット長のデータとして入力される。この31ビット長のデータDI30〜DI0の内、DI30〜DI15は整数部を、DI14〜DI0は小数部を形成する。
次に、図5を参照して論理回路104の具体的な構成について説明する。上述したように、論理回路104は、指数的に減衰するエンベロープ波形(現在値C)が閾値TH以下になると、線形減衰するエンベロープ波形に切り替える機能を具備する。図5に図示する一例の論理回路104には、指数的に減衰するエンベロープ波形がDI30〜DI0の31ビット長のデータとして入力される。この31ビット長のデータDI30〜DI0の内、DI30〜DI15は整数部を、DI14〜DI0は小数部を形成する。
論理回路104では、入力される31ビット長のデータDI30〜DI0の内、その上位16ビット(DI30〜DI15)からなる出力データDOH15〜DOH0とキャリーイン(桁上がり)用の出力データDOLとを出力する。すなわち、入力される31ビット長のデータDI30〜DI0の内、上位13ビットのデータDI30〜DI18は、そのまま出力データDOH15〜DOH3としてスルー出力される。
入力される31ビット長のデータDI30〜DI0の内、データDI17〜DI12は、それぞれセレクタSEL5〜SEL0に入力される。セレクタSEL5〜SEL0は、一方の入力端に「1」が共通入力され、他方の各入力端に上記のデータDI17〜DI12が各々入力され、設定される閾値THに応じて入力選択する。
ここで、図6を参照して、閾値THに応じて入力選択するセレクタSEL5〜SEL0の動作を説明する。図6に図示する一例の場合、セレクタSEL5では、閾値THが「−121dB」以下の場合にデータDI17を選択し、これを出力データDOH2として出力する。閾値THが「−85dB」〜「−115dB」の範囲では、「1」を出力データDOH2として出力する。
同様に、セレクタSEL4では、閾値THが「−115dB」以下の場合にデータDI16を出力データDOH1として出力し、それ以外では「1」を出力データDOH1として出力する。セレクタSEL3では、閾値THが「−109dB」以下の場合にデータDI15を出力データDOH0として出力し、それ以外では「1」を出力データDOH0として出力する。
セレクタSEL2では、閾値THが「−103dB」以下の場合にデータDI14を論理回路AND4に供給し、それ以外では「1」を論理回路AND4に供給する。セレクタSEL1では、閾値THが「−97dB」以下の場合にデータDI13を論理回路AND3に供給し、それ以外では「1」を論理回路AND3に供給する。セレクタSEL0では、閾値THが「−91dB」以下の場合にデータDI12を論理回路AND2に供給し、それ以外では「1」を論理回路AND2に供給する。
入力される31ビット長のデータDI30〜DI0の内、データDI11〜DI0は後段のレート加減算器ADD/SUBの演算精度に影響を与えない。この為、データDI11〜DI0は、論理回路OR1にて一括して論理和をとることで切り上げを行う。論理回路OR1の出力は、論理回路AND1に供給される。論理回路AND1は、論理回路OR1の出力とデコーダDECの出力DEC0との論理積を出力する。論理回路AND2は、セレクタSEL0の出力とデコーダDECの出力DEC1との論理積を出力する。論理回路AND3は、セレクタSEL1の出力とデコーダDECの出力DEC2との論理積を出力する。論理回路AND4は、セレクタSEL2の出力とデコーダDECの出力DEC3との論理積を出力する。デコーダDECは、サンプリングクロックCLKに同期したタイミングで出力DEC0〜DEC3を発生する。
図7は、デコーダDECの出力タイミングを示すタイムチャートである。この図に示す通り、デコーダDECでは、16サンプリング周期毎に出力DEC0を、8サンプリング周期毎に出力DEC1を、4サンプリング周期毎に出力DEC2を、2サンプリング周期毎に出力DEC3をそれぞれ発生する。論理回路OR2は、論理回路AND1〜AND4の各出力の論理和を、キャリーイン(桁上がり)用の出力データDOLとして発生する。
このように、論理回路OR1〜OR2、デコーダDECおよび論理回路AND1〜AND4では、出力DEC3が小数点以下第1位、出力DEC2が小数点以下第2位、出力DEC2が小数点以下第3位、出力DEC0が小数点以下第4位となり、これら小数点以下各桁の加減算結果と等価なキャリーイン用の出力データDOLを生成するようになっている。
また、図6に図示したタイムチャートから明らかなように、1サンプリング周期で「H(ハイ)」レベルになる信号は常に1つなので、次段のレート加減算器ADD/SUBは、図8に図示するように、出力データDOLをキャリーインとして、現在値Cに対して出力データDOH15〜DOH0を加減算できるようになる。こうすることにより、余計な加算器を必要としない利点が得られる。
B.動作
次に、図9〜図13を参照して実施形態の動作について説明する。以下では、CPU10が実行する「リセット処理」、「ノートオンイベント処理」、「タイマ1処理」、「ノートオフイベント処理」および「タイマ2処理」の各動作について述べる。
次に、図9〜図13を参照して実施形態の動作について説明する。以下では、CPU10が実行する「リセット処理」、「ノートオンイベント処理」、「タイマ1処理」、「ノートオフイベント処理」および「タイマ2処理」の各動作について述べる。
(1)リセット処理の動作
電源投入などのシステムリセットのイベントが発生すると、CPU10は図9に図示するリセット処理を実行してステップSA1に処理を進め、装置各部を初期化するイニシャライズを行う。続いて、ステップSA2では、ROM11のデータエリアに格納される閾値THを読み出す。次いで、ステップSA3では、その読み出した閾値THを、エンベロープ発生装置16aの閾値レジスタ103(図2参照)にストアして本処理を終える。
電源投入などのシステムリセットのイベントが発生すると、CPU10は図9に図示するリセット処理を実行してステップSA1に処理を進め、装置各部を初期化するイニシャライズを行う。続いて、ステップSA2では、ROM11のデータエリアに格納される閾値THを読み出す。次いで、ステップSA3では、その読み出した閾値THを、エンベロープ発生装置16aの閾値レジスタ103(図2参照)にストアして本処理を終える。
(2)ノートオンイベント処理の動作
入力される演奏データにノートオンイベントが含まれていると、CPU10は図10に図示するノートオンイベント処理を実行してステップSB1に処理を進める。ステップSB1では、複数備える発音チャンネルの内、発音割当てされていない空きチャンネルを探し出し、その空きチャンネルに発音を割当てる。次いで、ステップSB2では、ノートオンイベントに含まれるノートナンバをピッチデータ(読み出し位相情報)に変換して波形発生装置14に供給する。続いて、ステップSB3では、音色に対応する波形読み出しアドレスを波形発生装置14に供給する。
入力される演奏データにノートオンイベントが含まれていると、CPU10は図10に図示するノートオンイベント処理を実行してステップSB1に処理を進める。ステップSB1では、複数備える発音チャンネルの内、発音割当てされていない空きチャンネルを探し出し、その空きチャンネルに発音を割当てる。次いで、ステップSB2では、ノートオンイベントに含まれるノートナンバをピッチデータ(読み出し位相情報)に変換して波形発生装置14に供給する。続いて、ステップSB3では、音色に対応する波形読み出しアドレスを波形発生装置14に供給する。
そして、ステップSB4では、波形発生指示を波形発生装置14に与える。これにより、波形発生装置14は、CPU10が指定した音色の波形データを、ノートナンバに応じた読み出し速度で波形メモリ13から読み出して楽音波形を発生する。次に、ステップSB5では、ノートオンイベントに含まれるタッチデータに応じたカットオフ周波数FCを発生してDCF(デジタル制御フィルタ)15に設定する。次いで、ステップSB6では、エンベロープ発生装置16aの現在値レジスタ101(図2参照)をゼロリセットする。
ステップSB7では、ノートオンイベントに含まれるタッチデータからエンベロープ波形の目標値T(アタックレベル)を算出してエンベロープ発生装置16aの目標値レジスタ100(図2参照)にストアする。そして、ステップSB8では、音色データからレート値Rを算出してエンベロープ発生装置16aのレート値レジスタ102(図2参照)にストアして本処理を終える。
エンベロープ発生装置16aでは、アタックレベルが目標値Tとして与えられると、セレクタSEL1がレート加減算器ADD/SUBの出力を選択し、セレクタSEL2がレート値Rを選択し、レート加減算器ADD/SUBは加算するので、アタックレベル(目標値T)に達するまでは、レート値Rを加算して現在値Cを更新することによって線形増加するエンベロープ波形を形成する。
(3)タイマ1処理の動作
CPU10では、ノートオン時点から所定時間経過毎にタイマ1処理を割込み実行する。タイマ1処理の実行タイミングになると、CPU10は図11に図示するタイマ1処理を実行してステップSC1に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップSC2では、検出したレベルが目標値T、すなわちアタックレベルに到達したか否かを判断する。アタックレベルに到達していなければ、判断結果は「NO」になり、一旦本処理を完了させる。
CPU10では、ノートオン時点から所定時間経過毎にタイマ1処理を割込み実行する。タイマ1処理の実行タイミングになると、CPU10は図11に図示するタイマ1処理を実行してステップSC1に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップSC2では、検出したレベルが目標値T、すなわちアタックレベルに到達したか否かを判断する。アタックレベルに到達していなければ、判断結果は「NO」になり、一旦本処理を完了させる。
一方、検出したレベルがアタックレベルに到達した場合には、上記ステップSC2の判断結果は「YES」になり、ステップSC3に進む。ステップSC3では、該当チャンネル(アタックレベルに達した発音チャンネル)にアサインされる音色データに基づきサステインレベルを算出してエンベロープ発生装置16aの目標値レジスタ100にストアする。続いて、ステップSC4では、該当チャンネルにアサインされる音色データに基づきディケイレートを算出してエンベロープ発生装置16aのレート値レジスタ102にストアして本処理を終える。
エンベロープ発生装置16aでは、サステインレベルが目標値Tとして与えられると、セレクタSEL1がレート加減算器ADD/SUBの出力を選択し、セレクタSEL2が乗算器MXの出力を選択し、レート加減算器ADD/SUBは減算するので、サステインレベル(目標値T)に達するまでは、現在値Cにレート値R(ディケイレート)を乗算して当該現在値Cを更新することによって指数的に減衰するエンベロープ波形を形成する。
(4)ノートオフイベント処理の動作
入力される演奏データにノートオフイベントが含まれていると、CPU10は図12に図示するノートオフイベント処理を実行してステップSD1に処理を進める。ステップSD1では、ノートオフイベントに含まれるノートナンバから消音すべき発音チャンネルを決定する。次いで、ステップSD2では、エンベロープ発生装置16aの現在値レジスタ101に「0」をストアし、続くステップSDでは、消音するチャンネルにアサインされる音色データに基づきリリースレートを算出してエンベロープ発生装置16aのレート値レジスタ102にストアして本処理を終える。
入力される演奏データにノートオフイベントが含まれていると、CPU10は図12に図示するノートオフイベント処理を実行してステップSD1に処理を進める。ステップSD1では、ノートオフイベントに含まれるノートナンバから消音すべき発音チャンネルを決定する。次いで、ステップSD2では、エンベロープ発生装置16aの現在値レジスタ101に「0」をストアし、続くステップSDでは、消音するチャンネルにアサインされる音色データに基づきリリースレートを算出してエンベロープ発生装置16aのレート値レジスタ102にストアして本処理を終える。
エンベロープ発生装置16aでは、指数的に減衰するエンベロープ波形(現在値C)が、前述のステップSA3(図8参照)にて設定された閾値TH以下になると、図2に図示する論理回路104のセレクタ104aがレートレジスタ102のレート値R(リリースレート)を選択して次段のレート加減算器ADD/SUBに出力する。これにより、指数的に減衰するエンベロープ波形(現在値C)が閾値TH以下になると、レート値Rを減算して現在値Cを更新する。つまり、指数的に減衰するエンベロープ波形から線形減衰するエンベロープ波形に切り替える。
(5)タイマ2処理の動作
CPU10では、ノートオフ時点から所定時間経過毎にタイマ2処理を割込み実行する。タイマ2処理の実行タイミングになると、CPU10は図13に図示するタイマ2処理を実行してステップSE1に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップSE2では、検出したレベルが「0」、すなわちリリース完了の有無を判断する。リリースが完了していなければ、判断結果は「NO」になり、一旦本処理を完了させる。一方、リリースが完了すると、上記ステップSE2の判断結果は「YES」になり、ステップSE3に進む。ステップSE3では、該当チャンネル(リリース完了した発音チャンネル)の波形発生停止を波形発生装置14に指示し、続くステップSE4では、該当チャンネルを空きチャンネルに設定して本処理を終える。
CPU10では、ノートオフ時点から所定時間経過毎にタイマ2処理を割込み実行する。タイマ2処理の実行タイミングになると、CPU10は図13に図示するタイマ2処理を実行してステップSE1に処理を進め、エンベロープ波形レベルを検出する。続いて、ステップSE2では、検出したレベルが「0」、すなわちリリース完了の有無を判断する。リリースが完了していなければ、判断結果は「NO」になり、一旦本処理を完了させる。一方、リリースが完了すると、上記ステップSE2の判断結果は「YES」になり、ステップSE3に進む。ステップSE3では、該当チャンネル(リリース完了した発音チャンネル)の波形発生停止を波形発生装置14に指示し、続くステップSE4では、該当チャンネルを空きチャンネルに設定して本処理を終える。
以上のように、本実施の形態では、CPU10がD/A変換器17のダイナミックレンジに応じた閾値THをエンベロープ発生装置16aに設定すると、エンベロープ発生装置16aは、指数的に減衰するエンベロープ波形のレベルが、この閾値TH以下になったときに、指数的に減衰するエンベロープ波形から線形に減衰するエンベロープ波形に切り替える。こうすることで、チャンネルリソースを浪費したり、聴感上好ましくない影響が生じるという従来の弊害を解消し、汎用性に富み、様々なダイナミックレンジを有する楽器システムに対応することができる。
10 CPU
11 ROM
12 RAM
13 波形メモリ
14 波形発生装置
15 DCF(デジタル制御フィルタ)
16 エンベロープ制御部
16a エンベロープ発生装置
16b VCA(電圧制御増幅器)
17 D/A変換器
11 ROM
12 RAM
13 波形メモリ
14 波形発生装置
15 DCF(デジタル制御フィルタ)
16 エンベロープ制御部
16a エンベロープ発生装置
16b VCA(電圧制御増幅器)
17 D/A変換器
Claims (2)
- 出力ダイナミックレンジに応じた閾値を設定する閾値設定手段と、
指数的に減衰する第1のエンベロープ波形を発生する第1のエンベロープ発生手段と、
線形に減衰する第2のエンベロープ波形を発生する第2のエンベロープ発生手段と、
波形レベルが前記閾値設定手段により設定される閾値に到達するまでは前記第1のエンベロープ発生手段が発生する第1のエンベロープ波形を出力し、この第1のエンベロープ波形のレベルが、前記閾値設定手段により設定される閾値まで減衰した場合に、当該第1のエンベロープ波形から前記第2のエンベロープ発生手段が発生する第2のエンベロープ波形に切り替えて出力する出力手段と
を具備することを特徴とするエンベロープ発生装置。 - 前記閾値設定手段は、エンベロープ発生装置の後段に設けられるD/A変換手段のダイナミックレンジに応じた閾値を設定することを特徴とする請求項1記載のエンベロープ発生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006115844A JP2007286503A (ja) | 2006-04-19 | 2006-04-19 | エンベロープ発生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006115844A JP2007286503A (ja) | 2006-04-19 | 2006-04-19 | エンベロープ発生装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007286503A true JP2007286503A (ja) | 2007-11-01 |
Family
ID=38758299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006115844A Pending JP2007286503A (ja) | 2006-04-19 | 2006-04-19 | エンベロープ発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007286503A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7501034B2 (ja) | 2020-03-25 | 2024-06-18 | カシオ計算機株式会社 | エンベロープ発生装置、電子楽器、方法、及びプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62179797U (ja) * | 1987-05-07 | 1987-11-14 | ||
JPS63125990A (ja) * | 1986-11-15 | 1988-05-30 | ヤマハ株式会社 | エンベロ−プ制御装置 |
JPH04301896A (ja) * | 1991-03-29 | 1992-10-26 | Roland Corp | ミューティング装置 |
JPH05249968A (ja) * | 1992-03-05 | 1993-09-28 | Yamaha Corp | 発音割当手段を有する楽音合成装置 |
-
2006
- 2006-04-19 JP JP2006115844A patent/JP2007286503A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63125990A (ja) * | 1986-11-15 | 1988-05-30 | ヤマハ株式会社 | エンベロ−プ制御装置 |
JPS62179797U (ja) * | 1987-05-07 | 1987-11-14 | ||
JPH04301896A (ja) * | 1991-03-29 | 1992-10-26 | Roland Corp | ミューティング装置 |
JPH05249968A (ja) * | 1992-03-05 | 1993-09-28 | Yamaha Corp | 発音割当手段を有する楽音合成装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7501034B2 (ja) | 2020-03-25 | 2024-06-18 | カシオ計算機株式会社 | エンベロープ発生装置、電子楽器、方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3243821B2 (ja) | 電子楽器 | |
US7612281B2 (en) | Reverberation effect adding device | |
JPS6147435B2 (ja) | ||
JP2009175677A (ja) | 共鳴音付加装置および電子楽器 | |
JP2007286503A (ja) | エンベロープ発生装置 | |
JP4935556B2 (ja) | 電子楽器の共鳴音付加装置および電子楽器 | |
EP3373289A1 (en) | Electronic musical instrument, musical sound generating method, and storage medium | |
JP2002091447A (ja) | 電子楽器の変換装置、変換方法及び記録媒体 | |
JPH07325581A (ja) | 楽音発生装置 | |
JPH0155469B2 (ja) | ||
JP3018620B2 (ja) | 電子楽器 | |
JP4983858B2 (ja) | フィルタ装置およびフィルタ処理プログラム | |
JPH0125079B2 (ja) | ||
JPS6352399B2 (ja) | ||
JP2669073B2 (ja) | Pcm音源装置 | |
CN113678194A (zh) | 滤波器效果赋予装置、电子乐器以及电子乐器的控制方法 | |
JPH031198A (ja) | ディジタル信号処理装置 | |
JP4144090B2 (ja) | 楽音発生装置 | |
JP2005012728A (ja) | フィルタ装置およびフィルタ処理プログラム | |
JP2939098B2 (ja) | 電子楽器 | |
JPH0375697A (ja) | エンベロープ波形発生装置 | |
JP2008089642A (ja) | 楽音形成装置 | |
JPS6342269B2 (ja) | ||
JPH0777982A (ja) | 効果付加装置 | |
JP2006133342A (ja) | 楽音制御装置および楽音制御処理のプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081111 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091118 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100324 |