JPS6310836B2 - - Google Patents
Info
- Publication number
- JPS6310836B2 JPS6310836B2 JP56065710A JP6571081A JPS6310836B2 JP S6310836 B2 JPS6310836 B2 JP S6310836B2 JP 56065710 A JP56065710 A JP 56065710A JP 6571081 A JP6571081 A JP 6571081A JP S6310836 B2 JPS6310836 B2 JP S6310836B2
- Authority
- JP
- Japan
- Prior art keywords
- envelope
- data
- exponent
- mantissa
- calculation
- 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.)
- Expired
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
本発明は電子楽器におけるエンベロープ発生
器、とくに各種の振幅変調効果のためのエンベロ
ープ波形の形成およびその音量レベル制御を簡単
な構成で行なうようにした電子楽器のエンベロー
プ発生器に関するものである。
従来、電子楽器において振幅変調効果は多く採
り入れられており、たとえばマリンバ、バンジヨ
ウ、マンドリンのような減衰音を繰返えし発生さ
せるようなリピート効果や、弦楽器のアンサンブ
ルにおけるクレツシエンド(だんだん強く)する
クレツシエンド効果や、音の立上り部分をとくに
強調するアタツク効果等がある。通常このような
効果はアナログ形乗算器によつて作られていた
が、一般にダイナミツクレンジが小さいこと、信
号対雑音比が悪いこと、応答速度が遅いこと、さ
らに素子による特性のバラツキがあり調整を要す
る等の欠点があつた。またこのような効果をデジ
タル形乗算器で構成することも考えられるが回路
が複雑となり、とくに各振幅変調信号を各々独立
した回路によつて発生させなければならず高価に
なる点が問題であつた。
本発明の目的は各種の振幅変調効果のためのエ
ンベロープ波形の形成および音量レベル制御を簡
単な構成で実現できる電子楽器のエンベロープ発
生器を提供することである。
前記目的を達成するため、本発明の電子楽器の
エンベロープ発生器は押鍵に応じて発生すべきエ
ンベロープ波形を速度パラメータを用いて表わ
し、該速度パラメータに対応する演算値を繰返し
所定タイミングで演算する演算手段を具えエンベ
ロープデータを形成する電子楽器のエンベロープ
発生器において、所定のエンベロープ波形に付加
すべき振幅変調効果用エンベロープデータを前記
所定のエンベロープ波形の演算タイミングと異な
る予め設定されたタイミングで前記演算手段によ
つて演算し該演算結果を一時記憶する記憶手段
と、押鍵に応じて記演算手段により演算された所
定のエンベロープデータと前記記憶手段から選択
された振幅変調効果用エンベロープデータと押鍵
に対応する音高情報および各音色に応じた音色情
報によつて設定される音量データとをそれぞれデ
ータ選択して時分割的に乗算する乗算手段と、該
乗算手段の演算結果を楽音波形データに変換する
変換手段とを具えたことを特徴とするものであ
る。
以下本発明を実施例につき詳述する。
第1図は本発明に使用されるエンベロープ発生
器の原理説明図である。
同図に示すように、本発明ではエンベロープを
複数の位相たとえば12の位相(以下これをフエー
ズという)に分ける。
エンベロープのアタツク部はフエーズ1からフ
エーズ4までに分割される。
デイケイ部はフエーズ5からフエーズ8まで、
鍵の押されている状態はフエーズ8で停止され、
離鍵後リリース部のフエーズ9からフエーズ12ま
での12のフエーズによつて表わされる。
次に、エンベロープデータは浮動小数点数とし
て表わされ、第1表に示す指数と仮数に分けられ
る。
The present invention relates to an envelope generator for an electronic musical instrument, and more particularly to an envelope generator for an electronic musical instrument that can form an envelope waveform for various amplitude modulation effects and control its volume level with a simple configuration. Traditionally, amplitude modulation effects have been widely used in electronic musical instruments, such as the repeat effect that repeatedly generates a decaying sound in marimba, banjo, and mandolin, and the cresciendo (gradually becoming stronger) in string instrument ensembles. There are various effects, such as attack effects that particularly emphasize the rising part of a sound. Usually, such effects are created using analog multipliers, but they generally have small dynamic ranges, poor signal-to-noise ratios, slow response speeds, and variations in characteristics between elements, making adjustments difficult. There were drawbacks such as the need for It is also possible to create such an effect using a digital multiplier, but the problem is that the circuit would be complicated and, in particular, each amplitude modulation signal would have to be generated by an independent circuit, making it expensive. Ta. SUMMARY OF THE INVENTION An object of the present invention is to provide an envelope generator for an electronic musical instrument that can form envelope waveforms for various amplitude modulation effects and control volume levels with a simple configuration. In order to achieve the above object, the envelope generator of the electronic musical instrument of the present invention uses a speed parameter to represent an envelope waveform to be generated in response to a key press, and repeatedly calculates a calculation value corresponding to the speed parameter at a predetermined timing. In an envelope generator of an electronic musical instrument that includes a calculation means and generates envelope data, the envelope data for amplitude modulation effect to be added to a predetermined envelope waveform is calculated at a preset timing different from the calculation timing of the predetermined envelope waveform. storage means for temporarily storing the calculation results, predetermined envelope data calculated by the calculation means in response to key presses, amplitude modulation effect envelope data selected from the storage means, and key presses; a multiplication means for time-sharingly multiplying pitch information corresponding to each tone and volume data set by tone color information corresponding to each tone; and a multiplication means for converting the calculation result of the multiplication means into musical waveform data. The present invention is characterized in that it includes a converting means for converting. The present invention will be described in detail below with reference to examples. FIG. 1 is a diagram explaining the principle of an envelope generator used in the present invention. As shown in the figure, in the present invention, the envelope is divided into a plurality of phases, for example, 12 phases (hereinafter referred to as phases). The attack portion of the envelope is divided into phases 1 to 4. The day-care section is from phase 5 to phase 8,
The pressed state of the key is stopped at phase 8,
It is represented by 12 phases from phase 9 to phase 12 in the release section after key release. The envelope data is then represented as a floating point number and divided into an exponent and a mantissa as shown in Table 1.
【表】【table】
【表】
たとえば最大値を1以下とすると、エンベロー
プの最大レベルは指数「000」、仮数「000」で表
わされ、1.000×20を0dbとすると、最小レベルは
指数「111」、仮数「000」で1.000×2-7(−42db)
と表わされる。
そして、エンベロープの指数関数特性はこの浮
動小数点の特徴を利用して形成される。すなわ
ち、デイケイ、リリース部は仮数部をダウンカウ
ントさせ、指数部をアツプカウントすれば容易に
形成することができる。また、アタツク部につい
ては後述の2進シフト回路によつてデータをフエ
ーズに対応してシフトすることにより得られる。
前述の2進浮動小数点数によつてADSRを表現
して形成する方法はたとえば本出願人の提案によ
る特開昭54−1609「電子オルガン用振幅発生器」
に開示されているので詳細は省略する。
本発明において、アタツク、デイケイ、リリー
スの長さはデジタルパラメータとして表わされ、
このパラメータをエンベロープの演算手段に有効
に適用される。
いま、リリース部を考えると、リリースの長さ
1ミリ秒〜128ミリ秒に変化できるようにするた
め、これを離散的にたとえば32段階に分割し、各
位置を2進数の5ビツトで表わし、これをエンベ
ロープのスピードパラメータとしてスピードパラ
メータデコーダに送り、
SL×SC/RT
SL;相対サステインレベル
ここでSL=(サステインレベル−最小レベル)
SC;システムクロツク計算時間)
RT;リリース時間
ここでRT/SCはリリース時間中の計算回数を
示す。
に相当する値を発生する。この値はリリース時間
RTに含まれる各計算サイクル当りの変位量を意
味する。従つてリリース中の各フエーズ毎に異な
るスピードパラメータが与えられると、そのフエ
ーズに含まれる計算時間はその変位でリリースが
進行する。デイケイの場合も同様である。
ここでたとえば、サステインレベルを0dBとし
リリースが終了するレベルつまり最小レベルを−
42dBとすると、相対サステインレベルSLはSL=
0−(−42)=42dBとなる。
エンベロープ計算時間を1ms毎に行なうと
し、SC=1×10-3(S)リリース時間を14msと
すると
RT=14×10-3(S)
SL×SC/RT=42×1×10-3/(14×10-3)=
3dB
となる。
リリース(減衰)の場合、システムクロツク1
つあたり3dBの減衰あたえれば14msのリリース
が形成できるわけである。
従つて−3dB変化させるため必要な値を選択し
変位値として与えればよい。この場合変位値は、
指数000仮数100で表わされる。この値は第1表に
対応しない。
ここで本発明のエンベロープ形成のための演算
について説明すると、前述のようにデイケイ、リ
リースに関しては仮数部をダウンカウントし指数
部をアツプカウントする。
たとえば、現在値を0dBとすると指数部000仮
数部000である。前述のようにリリース部におい
て、3dBの減衰を与えるとすると、変位値を指数
部000仮数部100とし第2表のように演算する。[Table] For example, if the maximum value is 1 or less, the maximum level of the envelope is represented by the exponent "000" and the mantissa "000". If 1.000 x 2 0 is 0db, the minimum level is the exponent "111" and the mantissa "000". 000” is 1.000×2 -7 (−42db)
It is expressed as Then, the exponential characteristic of the envelope is formed using this floating point characteristic. That is, the decay and release parts can be easily formed by down-counting the mantissa part and up-counting the exponent part. The attack portion is obtained by shifting data in accordance with the phase using a binary shift circuit, which will be described later. A method of expressing and forming ADSR using binary floating point numbers as described above is described, for example, in Japanese Patent Application Laid-Open No. 54-1609 "Amplitude Generator for Electronic Organs" proposed by the present applicant.
Since it is disclosed in , the details are omitted. In the present invention, the attack, decay, and release lengths are represented as digital parameters,
This parameter is effectively applied to the envelope calculation means. Now, considering the release part, in order to be able to change the length of the release from 1 millisecond to 128 milliseconds, this is divided discretely into, for example, 32 steps, and each position is represented by a 5-bit binary number. This is sent to the speed parameter decoder as an envelope speed parameter, SL×SC/RT SL: Relative sustain level where SL = (sustain level - minimum level) SC: System clock calculation time) RT: Release time where RT/ SC indicates the number of calculations during the release time. generates a value corresponding to . This value is the release time
It means the amount of displacement per each calculation cycle included in RT. Therefore, if a different speed parameter is given for each phase during release, the calculation time included in that phase allows the release to proceed according to the displacement. The same is true for DK. For example, if the sustain level is 0dB, the level at which the release ends, that is, the minimum level, is −
Assuming 42dB, the relative sustain level SL is SL=
0-(-42)=42dB. Assuming that the envelope calculation time is performed every 1 ms, SC = 1 × 10 -3 (S), and the release time is 14 ms, RT = 14 × 10 -3 (S) SL × SC / RT = 42 × 1 × 10 -3 / (14×10 -3 )=
It becomes 3dB. For release (attenuation), system clock 1
By applying 3dB of attenuation to each point, a 14ms release can be created. Therefore, it is sufficient to select a value necessary for changing by -3 dB and give it as a displacement value. In this case, the displacement value is
It is expressed as an exponent of 000 and a mantissa of 100. This value does not correspond to Table 1. Here, the calculation for forming the envelope of the present invention will be explained. As mentioned above, for decay and release, the mantissa part is down-counted and the exponent part is up-counted. For example, if the current value is 0 dB, the exponent part is 000 and the mantissa part is 000. Assuming that 3 dB of attenuation is given in the release section as described above, the displacement value is calculated as shown in Table 2, with the exponent part being 000 and the mantissa part being 100.
【表】
第2表において、変位値仮数部で2の補数化さ
れた仮数100は現在値の仮数部000と加算される。
このとき仮数部からの桁上げが生じないため減算
時のボローと判断し指数部に1を加算する。現在
値および変位値の指数部加算結果とボローで001
となる。従つて演算結果は指数部001仮数部100で
あり第1表から1.5×2-1であり約−3dBとなるこ
とがわかる。
次にアタツクの場合は、現在値を−39dBとす
ると指数部111仮数部100であり、これに9dB増加
させる場合、変位値を指数部001仮数部100とし第
3表のように演算する。[Table] In Table 2, the mantissa 100, which is converted into a two's complement in the quantile mantissa part, is added to the mantissa part 000 of the current value.
At this time, since no carry occurs from the mantissa part, it is determined that this is a borrow during subtraction, and 1 is added to the exponent part. 001 with the result of addition of the exponent part of the current value and displacement value and the borrow
becomes. Therefore, the calculation result has an exponent part of 001 and a mantissa part of 100, which is 1.5 x 2 -1 from Table 1, which is about -3 dB. Next, in the case of attack, if the current value is -39 dB, the exponent part is 111 and the mantissa part is 100. When increasing this by 9 dB, the displacement value is set to exponent part 001 and mantissa part 100, and calculations are performed as shown in Table 3.
【表】
第3表において、現在値指数部111から変位値
指数部001を2の補数化した111を加算すると110
となる。(この結果のキヤリーは切り捨てる。)次
に仮数部は現在値100、変位値100を加算すると、
000となり桁上げを生じる。このアタツクの仮数
部は加算による桁上げはキヤリーとして指数部を
1減算する。従つて110マイナス1で101なる。こ
の指数部101仮数部000は第1表より1.0×2-5で−
30dBとなる。
以上のようにして、アタツクおよびデイケイ・
リリースのエンベロープ形成のための演算が行な
われる。
第2図は本発明の実施例の構成を示す説明図で
あり、前述の浮動小数点数の演算回路に上述のス
ピードパラメータを適用したエンベロープ発生回
路のブロツク図である。
同図において、キーデータの入力によりフエー
ズ初期値発生回路11により、第1図に説明した
エンベロープのADSRのフエーズの初期値(キー
オンの場合フエーズ1、キーオフの場合フエーズ
9)が発生しエンベロープ演算制御に利用され
る。ここでエンベロープフエーズが1〜8の場合
キーオフデータが入力されるとフエーズ初期値発
生回路11は現在のフエーズが何であれ強制的に
フエーズ9にセツトされリリースを開始する。
このフエーズの値は、フエーズデコーダADSR
制御回路12でデコードされて系内の所要回路の
フエーズの移行制御に用いられる。その1つはフ
エーズ終値予測回路19でありサステインレベル
データが入力されて、各フエーズ終値の予測値が
比較器18に送られ、後述する演算部からの値と
比較され、一致すると一致信号がフエーズデコー
ダADSR制御回路12に送られ、フエーズ加算器
13に1が加算されてフエーズメモリ10に記憶
され、フエーズ初期値発生回路11を介してフエ
ーズデコーダADSR制御回路12に送られて次の
フエーズに移行する。ここでフエーズ終値予測回
路19に入力されるサステインレベルデータは、
外部より入力される可変のデータでありこの値に
よつてデイケイ、リリースにおける各フエーズ終
値が変化する。
一方、前述のリリース部またはデイケイ部にお
ける下降時間の変化部分を離散的にたとえば32分
割し各位置を5ビツトのスピードパラメータで表
わし、所要位置のスピードパラメータをスピード
パラメータデコーダ23に入れてデコードし前述
の変位の値を発生する。このデコーダ23と次の
2進シフト回路20はフエーズデコーダ制御回路
12により制御され、リリースとデイケイの場合
はデコーダ出力は2進シフト回路20をシフトす
ることなく通過し、加減算制御回路21に送ら
れ、フエーズデコーダADSR制御回路12の制御
により演算部への加算減算の制御を行なうもので
リリースとデイケイの場合は前述説明のように指
数を加算し仮数を減算させるように動作する。演
算部の加算器16と加算器17は加減算制御回路
21からのデータにより第1表に基づく指数と仮
数を格納した指数メモリ14と仮数メモリ15か
ら読出されるデータを加減算し、比較器18とデ
ータ選択回路24に送出される。比較器18では
加算器16からの加算された指数と加算器17か
らの減算された仮数とをフエーズ終値予測回路1
9に格納されたそれぞれの終値データと比較し一
致あるいは終値を超えるまで演算が繰返えされ
る。
すなわち、加算器16からの指数と加算器17
からの仮数とをデータ選択回路24に入力し、フ
エーズデコーダADSR制御回路12の制御信号に
よつて、このデータを指数メモリ14と仮数メモ
リ15に再び格納する。ここでフエーズメモリ1
0、指数メモリ14、仮数メモリ15は発音数と
振幅変調効果用エンベロープの数の和と同じワー
ド数を有する。このようにフエーズ毎に計算が繰
返えされ前述の5ビツトで表わされたパラメータ
に対応する長さのリリースまたはデイケイが形成
される。なお、データ選択回路24の機能とし
て、たとえば加算器16がオーバフローした場合
には、オーバフロー検出回路28によつてオーバ
フローが検出され、前記データを指数メモリ14
と仮数メモリ15に送る代りに、前記メモリ出力
を選択するかまたはフエーズ初期振幅値発生回路
22から次のフエーズにおける初期振幅値を選択
して送るように制御される。このオーバフローは
二つのケースがある。その1つはアタツク計算に
おいて最大値より大きくなる場合ともう1つはデ
イケイ、リリース計算において最小値より小さく
なる場合である。
アタツクの場合、現在値を−3dB指数部001仮
数部100とし、12dBに相当する変位値指数部010
仮数部000とすると、現在値+変位値は−3+12
=9dBで最大値0dBをオーバーする。
変位値指数部010の2の補数110と現在値指数部
001を加算すると111となり、指数部111仮数部100
で第1表より約−39dBの値になる。従つてアタ
ツク時指数部から桁上げが生じないものをオーバ
ーフローとして処理する。
また、現在値を同様に−3dBとし、6dBに相当
する変位値指数部001仮数部000とすると、変位値
指数部の2の補数111と現在値001とを加算する
と、000となり桁上げを生ずるが、演算結果が指
数部000仮数部100となり、最大値0dB指数部000
仮数部000の定義をこえるためこれもオーバーフ
ローとして検出し処理する。
次にデイケイ、リリースの場合、現在値約−
39dB指数部111仮数部100とし、6dBに相当する
変位値指数部001仮数部000の場合を考えると、現
在値−変位値は−39−6=−45dBで最小値より
小さくなる。
現在値指数部111変位値指数部001を加算する
と、000となり桁上げが生ずる。その演算結果指
数部000仮数部100で約+3dBとなる。従つて、デ
イケイ、リリースにおける指数部桁上げをオーバ
ーフローとして処理する。
次にアタツクの場合は、スピードパラメータデ
コーダ23からのデコードされたデータを2進シ
フト回路20に送る。2進シフト回路20はフエ
ーズに対応してデータを増大するようにシフトす
ると良好なアタツク形状が得られる。たとえば、
フエーズ1の時前記スピードパラメータデコーダ
23からのデータを2ビツト左シフト、すなわち
4倍にするようにシフトする。次にフエーズ2に
なると、前記データを1ビツト左シフト、すなわ
ち2倍にするようにシフトする。フエーズ3にな
るとシフトせずに送出し、フエーズ4は1ビツト
右シフト、すなわち1/2になるようにセツトする。
たとえば、6dBに相当する変位値指数部001仮数
部000とすると、フエーズ1の時指数部100仮数部
000で24dB、フエーズ2の場合指数部010仮数部
000で12dB、フエーズ3は6dB、フエーズ4は指
数部000仮数部100で3dBの変位値となる。他の変
位値の場合も同様である。
ここでフエーズ終値予測回路19からの比較値
をフエーズ1−12dB指数部010仮数部000、フエ
ーズ2−6dB指数部001仮数部000、フエーズ3−
3dB指数部001仮数部100、フエーズ4指数部000
仮数部000とした場合、第1図におけるような形
状のアタツクが形成される。
このようにして形成されたエンベロープの
ADSRの各フエーズの振幅が指数メモリ14と仮数
メモリ15に一時記憶される。
以上のようにして所定の通常のエンベロープが
形成され、また同様に振幅変調効果のためのエン
ベロープも同一のエンベロープ発生器によつて形
成される。形成された振幅変調効果用エンベロー
プは一旦バツフアメモリ25に記憶される。ここ
でたとえばマリンバのようなリピート効果は所定
の繰り返し信号をスタート信号としてキーデータ
のラインに入力し、減衰音波形の形状のADSRパ
ラメータを設定すれば容易にリピート効果用エン
ベロープを得ることができる。
またクレツシエンド効果はすべての押鍵信号の
論理和の信号をスタート信号として入力させ立上
がりのおそいADSRパラメータを設定すれば同様
に得られる。
次にすべて計算された通常のエンベロープが指
数メモリ14仮数メモリ15から読出されデータ
選択回路39へ送られると同時に、バツフアメモ
リ25から実行制御回路40の制御のもとで振幅
変調効果用エンベロープが読出されデータ選択回
路39へ送られる。
ここで通常のエンベロープと振幅変調効果用エ
ンベロープが乗算されるが、本発明に使用された
浮動小数点数演算によるADSR発生器の特徴であ
る乗算方式について以下に述べる。
A=(1+a1×2-1+a2×2-2+a3×2-3)×2-c (1)
B=(1+b1×2-1+b2×2-2+b3×2-3)×2-d (2)
A、Bの2つの数を2進数を使つた浮動小数点
数であらわすと(1)(2)式のようにあらわせる。これ
は第1表に対応している数である。
いまAとBを乗算すると(3)式で表わされる。
A×B={1+(a1+b1)×2-1+(a2+b2)×2-2+(
a3+b3)×2-3
+a1b1×2-2+(a1b2+a2b1)×2-3+(a1b3+a2b2+
a3b1)×2-4
+(a2b3+a3b2)×2-5+a3b3×2-6}×2-(c+d) (3)
(3)式をa1b1×2-2以下の項を切り捨てると
A×B≒{1+(a1+b1)×2-1+(a2+b2)×2-2+(
a3+b3)×2-3}×2-(c+b)(4)
(4)式で表わされるような近似式となる。
この近似式からわかるように、AとBとの乗算
は各々の仮数部の小数以下の加算と指数部の加算
によつて表わすことができる。この切り捨て誤差
は実測値によると最大誤差は±2dB程度であり、
単調増加または単調減少関数で表わされるエンベ
ロープ波形に適応できることが推測でき、また聴
感的な試験においても十分満足できる結果が得ら
れている。
乗算の第1のステツプは通常のADSRデータと
後述の発音される音色間あるいは音域によつて異
なる音量を出力させるためのラウドネスデータが
乗算される。まず、データ選択回路39によつて
通常のADSRデータが実行制御回路40の制御の
もとで選択され、指数部は指数加算器27へ仮数
部は仮数加算器29へ送られる。
一方、データ選択回路30は実行制御回路40
の制御のもとでラウドネスデータを選択し同様に
指数加算器27および仮数加算器29のもう一つ
の入力へ送出する。指数加算器27は通常の
ADSRデータとラウドネスデータの指数部を加算
し指数減算器33へ送出する。同様に仮数加算器
29は仮数部を加算しラツチ34へ送る。たとえ
ばADSRデータが−3dB指数部001仮数部100と
し、ラウドネスデータを−6bB指数部001仮数部
000とすると、演算結果は指数部010仮数部100と
なり第1表より約−9dBとなる。もしここで指数
部を加算した結果、桁上げがおこると指数部の演
算結果に対して数値1を減算するように指数減算
器33へ信号を送る。指数減算器33は桁上げ信
号がある場合指数に対し数値1を減算し、ない場
合にはそのままのデータをラツチ34へ送出す
る。ラツチ34はそれらの演算結果をラツチし第
1のステツプを終了する。
次に第2のステツプとして前述の結果に対して
振幅変調効果用エンベロープを乗算する。第1の
ステツプと同様にデータ選択回路39は今度はバ
ツフアメモリ25のデータを選択し指数加算器2
7および仮数加算器29へ送る。データ選択回路
30はラツチ34のデータを選択し指数加算器2
7および仮数加算器29へ送る。指数加算器2
7、指数加算器29、指数減算器33はステツプ
1と同様に動作し、その結果のデータはラツチ3
4にラツチされ指数部はデコーダ31へ仮数部は
2進シフト回路32へ送られる。ここで前述の
ADSRデータとラウドネスデータ演算結果−9dB
に対し振幅変調用エンベロープがたとえば−3dB
指数部001仮数部100とすると前述と同様に演算さ
れ、仮数部の桁上げが生じ指数部加算結果の011
よりマイナス1され010となり仮数部000で−
12dBとなる。デコーダ31は指数部のデータを
デコードし2進シフト回路32を制御する。もし
ステツプ1およびステツプ2の演算中に指数部桁
上げが発生した場合、指数加算器27から桁上げ
信号がオーバフロー検出回路26に送られる。
オーバフロー検出回路26はこの信号を保持し
デコーダ31へ送る。この信号はたとえば指数部
が111+111=110となり桁上げが生じる場合表現
できるダイナミツクレンジ以外の数値を意味す
る。従つてデコーダ31はこの信号がある場合数
値を最小レベルに丸めるように動作する。2進シ
フト回路はデコーダ31の信号に基づいて仮数部
データをシフトさせデータを浮動小数点数から固
定小数点数に直しバツフアメモリ35へ送出す
る。バツフアメモリ35は実行制御回路40の制
御のもとでこのデータを一時記憶する。バツフア
メモリ35は実行制御回路40によつてADSR発
生器の演算レートと異なるレートで繰り返し読み
出される。DA変換器36はこのデータをアナロ
グ電圧に変換しエンベロープ波形を形成する。
第3図はラウドネスデータの入力部を示す具体
回路例である。
ラウドネスデータはラウドネスメモリ37に記
憶されているものと外部からコントロールされる
ラウドネスデータバスによつて与えられる。ラウ
ドネスメモリ37は操作される鍵盤の周波数情報
と形成しようとする音色の情報によつて読み出さ
れデータ選択回路38に送られる。データ選択回
路38はこのデータとラウドネスデータバスから
のデータをデータ選択信号によつて選択する。選
択されたラウドネスデータは前述のように使用さ
れる。ラウドネスレベルメモリ37のデータは発
音される音の周波数によつてレベルをコントロー
ルする。ラウドネスデータバスは音色間のバラン
スを調整するためのデータである。このラウドネ
スレベルメモリ37は発音できる音色数より少な
い数のパターンを記憶させておきラウドネスデー
タバスからの音色間バランスのためのデータと前
述の浮動小数点乗算を行なえば少ない容量のメモ
リですみ経済的にシステムが作られる。
以上説明したように、本発明によれば、エンベ
ロープ波形を速度パラメータを用いて表わし、こ
の速度パラメータに基づきエンベロープ波形を所
定タイミングで演算する演算手段を具えた電子楽
器において、演算手段で演算された振幅変調効果
用エンベロープデータを一時バツフアメモリに記
憶しておき、演算手段で演算された押鍵に応じた
所定のエンベロープデータと前記振幅変調効果用
エンベロープデータとラウドネスデータのような
音量データの3者を時分割的に乗算を行なうよう
にしたものである。とくに演算手段で演算される
エンベロープデータが浮動小数点の指数部と仮数
部で表わされ、前記乗算手段がこれらに対応する
演算部で構成され、前述の3者の乗算が簡単な加
算で行なわれ、かつ1系の乗算手段でデータ選択
により時分割的に演算することができるから、所
望の振幅変調効果が自由に付加すること可能とな
り、各音色の音量レベル調整も任意に行なうこと
が可能となる。これにより各種のエンベロープ波
形が多数乗算回路を必要とせず簡単安価に形成す
ることができる。[Table] In Table 3, if you add 111, which is the two's complement of the quantile index part 001, from the current value index part 111, it becomes 110.
becomes. (The carry of this result is rounded down.) Next, the mantissa part is obtained by adding the current value 100 and the displacement value 100.
000, resulting in a carry. The mantissa part of this attack is treated as a carry by addition, and the exponent part is subtracted by 1. Therefore, 110 minus 1 becomes 101. The exponent part 101 and the mantissa part 000 are 1.0×2 -5 from Table 1.
It becomes 30dB. As described above, attack and
Calculations are performed to form a release envelope. FIG. 2 is an explanatory diagram showing the configuration of an embodiment of the present invention, and is a block diagram of an envelope generation circuit in which the above-mentioned speed parameter is applied to the above-mentioned floating point arithmetic circuit. In the figure, in response to input of key data, the phase initial value generation circuit 11 generates the initial value of the ADSR phase of the envelope explained in Figure 1 (phase 1 in the case of key-on, phase 9 in the case of key-off), and envelope calculation control is performed. used for. Here, when the envelope phase is 1 to 8, when key-off data is input, the phase initial value generating circuit 11 is forcibly set to phase 9 and starts releasing whatever the current phase is. The value of this phase is determined by the phase decoder ADSR.
It is decoded by the control circuit 12 and used for phase transition control of required circuits within the system. One of them is a phase end value prediction circuit 19, into which sustain level data is input, and the predicted value of each phase end value is sent to a comparator 18, where it is compared with a value from an arithmetic unit (described later), and when they match, a match signal is output. It is sent to the phase decoder ADSR control circuit 12, 1 is added to the phase adder 13, and stored in the phase memory 10. It is sent to the phase decoder ADSR control circuit 12 via the phase initial value generation circuit 11, and is used for the next phase. Transition. Here, the sustain level data input to the phase closing price prediction circuit 19 is as follows:
This is variable data input from the outside, and the closing price of each phase in decay and release changes depending on this value. On the other hand, the part where the fall time changes in the release part or decay part is discretely divided into, for example, 32 parts, each position is represented by a 5-bit speed parameter, and the speed parameter at the desired position is input into the speed parameter decoder 23 and decoded. generates a displacement value of . This decoder 23 and the next binary shift circuit 20 are controlled by the phase decoder control circuit 12, and in the case of release and decay, the decoder output passes through the binary shift circuit 20 without being shifted and is sent to the addition/subtraction control circuit 21. The phase decoder ADSR control circuit 12 controls addition and subtraction to the arithmetic unit, and in the case of release and decay, it operates to add exponents and subtract mantissas as described above. An adder 16 and an adder 17 in the arithmetic section add and subtract data read from the exponent memory 14 and the mantissa memory 15, which store exponents and mantissas based on Table 1, using data from the addition/subtraction control circuit 21, and add and subtract data read from the mantissa memory 15 and the comparator 18. The data is sent to the data selection circuit 24. The comparator 18 uses the added exponent from the adder 16 and the subtracted mantissa from the adder 17 to the phase closing price prediction circuit 1.
9 and the computation is repeated until they match or exceed the final value. That is, the exponent from adder 16 and adder 17
The mantissa from . Here phase memory 1
0, the exponent memory 14, and the mantissa memory 15 have the same number of words as the sum of the number of tones and the number of envelopes for amplitude modulation effect. In this way, calculations are repeated for each phase to form a release or decay of length corresponding to the parameter expressed by the 5 bits described above. Note that as a function of the data selection circuit 24, for example, when the adder 16 overflows, the overflow is detected by the overflow detection circuit 28, and the data is transferred to the exponent memory 14.
Instead of sending this to the mantissa memory 15, control is performed to select the memory output or to select and send the initial amplitude value in the next phase from the phase initial amplitude value generating circuit 22. There are two cases of this overflow. One is when it becomes larger than the maximum value in attack calculation, and the other is when it becomes smaller than the minimum value in decay and release calculation. In the case of attack, the current value is -3dB exponent part 001 and mantissa part 100, and the displacement value exponent part 010 corresponds to 12dB.
If the mantissa part is 000, the current value + displacement value is -3 + 12
=9dB exceeds the maximum value of 0dB. Two's complement 110 of quantile exponent part 010 and current value exponent part
Adding 001 gives 111, where the exponent part is 111 and the mantissa part is 100.
According to Table 1, the value is approximately -39dB. Therefore, if no carry occurs from the exponent part at the time of attack, it is treated as an overflow. Similarly, if the current value is -3 dB and the quantile exponent part is 001 and the mantissa part is 000, which corresponds to 6 dB, then adding the two's complement of the quantile exponent part 111 and the current value 001 becomes 000, which causes a carry. However, the calculation result is exponent part 000 and mantissa part 100, and the maximum value is 0dB exponent part 000.
Since the definition of the mantissa part 000 is exceeded, this is also detected as an overflow and processed. Next, in the case of Decay and Release, the current value is approximately -
Considering the case where the exponent part 111 and the mantissa part 100 are 39 dB, and the displacement value exponent part 001 and the mantissa part 000 correspond to 6 dB, the current value minus the displacement value is -39-6=-45 dB, which is smaller than the minimum value. When the current value exponent part 111 and the displacement value exponent part 001 are added, it becomes 000 and a carry occurs. The result of this calculation is approximately +3 dB with an exponent part of 000 and a mantissa part of 100. Therefore, the exponent carry in Decay and Release is treated as an overflow. Next, in the case of an attack, the decoded data from the speed parameter decoder 23 is sent to the binary shift circuit 20. If the binary shift circuit 20 shifts the data to increase in accordance with the phase, a good attack shape can be obtained. for example,
During phase 1, the data from the speed parameter decoder 23 is shifted to the left by 2 bits, that is, shifted to quadruple. Next, in phase 2, the data is shifted to the left by 1 bit, that is, shifted to double the data. When phase 3 is reached, the data is sent without being shifted, and in phase 4, the data is set to be shifted to the right by 1 bit, that is, set to 1/2.
For example, if the quantile exponent part is 001 and the mantissa part is 000, which corresponds to 6 dB, when the phase is 1, the exponent part is 100 and the mantissa part is 000.
24dB at 000, exponent part 010 mantissa part in case of phase 2
000 has a displacement value of 12 dB, phase 3 has a displacement value of 6 dB, and phase 4 has a displacement value of 3 dB with an exponent part of 000 and a mantissa part of 100. The same applies to other displacement values. Here, the comparison values from the phase closing price prediction circuit 19 are as follows: phase 1-12 dB exponent part 010 mantissa part 000, phase 2-6 dB exponent part 001 mantissa part 000, phase 3-
3dB exponent part 001 mantissa part 100, phase 4 exponent part 000
When the mantissa part is 000, an attack having the shape shown in FIG. 1 is formed. The envelope thus formed
The amplitude of each phase of ADSR is temporarily stored in exponent memory 14 and mantissa memory 15. A predetermined normal envelope is generated in this way, and an envelope for the amplitude modulation effect is also generated by the same envelope generator. The formed amplitude modulation effect envelope is temporarily stored in the buffer memory 25. Here, for example, for a repeat effect such as a marimba, an envelope for the repeat effect can be easily obtained by inputting a predetermined repeat signal as a start signal to the key data line and setting the ADSR parameter of the shape of the attenuated sound waveform. The crescendo effect can also be obtained in the same way by inputting the logical sum of all key press signals as the start signal and setting the slow rise ADSR parameter. Next, all the calculated normal envelopes are read out from the exponent memory 14 and the mantissa memory 15 and sent to the data selection circuit 39, and at the same time, the amplitude modulation effect envelope is read out from the buffer memory 25 under the control of the execution control circuit 40. The data is sent to the data selection circuit 39. Here, the normal envelope and the amplitude modulation effect envelope are multiplied, and the multiplication method that is characteristic of the ADSR generator using floating point arithmetic used in the present invention will be described below. A=(1+a 1 ×2 -1 +a 2 ×2 -2 +a 3 ×2 -3 )×2 -c (1) B=(1+b 1 ×2 -1 +b 2 ×2 -2 +b 3 ×2 -3 ) × 2 -d (2) When the two numbers A and B are expressed as floating point numbers using binary numbers, they can be expressed as in equations (1) and (2). This is the number corresponding to Table 1. Now, when A and B are multiplied, it is expressed by equation (3). A×B={1+(a 1 +b 1 )×2 -1 +(a 2 +b 2 )×2 -2 +(
a 3 + b 3 ) × 2 -3 + a 1 b 1 × 2 -2 + (a 1 b 2 + a 2 b 1 ) × 2 -3 + (a 1 b 3 + a 2 b 2 +
a 3 b 1 ) × 2 -4 + (a 2 b 3 + a 3 b 2 ) × 2 -5 + a 3 b 3 × 2 -6 } × 2 -(c+d) (3) Expression (3) is replaced by a 1 b 1 ×2 -2 If we cut down the following terms, we get A × B ≒ {1 + (a 1 + b 1 ) × 2 -1 + (a 2 + b 2 ) × 2 -2 + (
a 3 + b 3 )×2 -3 }×2 -(c+b) (4) An approximate expression as shown in equation (4) is obtained. As can be seen from this approximate expression, the multiplication of A and B can be expressed by addition of the decimal parts of the respective mantissa parts and addition of the exponent parts. According to actual measurements, the maximum error in this truncation error is about ±2 dB.
It can be assumed that this method can be applied to envelope waveforms expressed by monotonically increasing or decreasing functions, and sufficiently satisfactory results have been obtained in auditory tests. In the first step of multiplication, normal ADSR data is multiplied by loudness data, which will be described later, for outputting different volumes depending on the tones or range of sounds to be produced. First, normal ADSR data is selected by the data selection circuit 39 under the control of the execution control circuit 40, and the exponent part is sent to the exponent adder 27 and the mantissa part to the mantissa adder 29. On the other hand, the data selection circuit 30 is connected to the execution control circuit 40.
selects loudness data under the control of and similarly sends it to the other inputs of exponent adder 27 and mantissa adder 29. The exponent adder 27 is a normal
The exponent parts of the ADSR data and loudness data are added and sent to the exponent subtracter 33. Similarly, mantissa adder 29 adds the mantissa and sends it to latch 34. For example, if ADSR data is -3dB exponent part 001 and mantissa part 100, loudness data is -6bB exponent part 001 mantissa part.
If it is 000, the calculation result will be an exponent part of 010 and a mantissa part of 100, which is about -9 dB from Table 1. If a carry occurs as a result of adding the exponent part, a signal is sent to the exponent subtractor 33 to subtract a numerical value 1 from the calculation result of the exponent part. The exponent subtracter 33 subtracts 1 from the exponent when there is a carry signal, and sends the data as is to the latch 34 when there is no carry signal. Latch 34 latches the results of these operations and completes the first step. Next, as a second step, the above result is multiplied by an envelope for amplitude modulation effect. Similar to the first step, the data selection circuit 39 now selects the data in the buffer memory 25 and inputs the data to the exponent adder 2.
7 and mantissa adder 29. The data selection circuit 30 selects the data in the latch 34 and inputs the data to the exponent adder 2.
7 and mantissa adder 29. Exponent adder 2
7. The exponent adder 29 and the exponent subtracter 33 operate in the same manner as in step 1, and the resulting data is sent to the latch 3.
4 and the exponent part is sent to a decoder 31 and the mantissa part to a binary shift circuit 32. Here the aforementioned
ADSR data and loudness data calculation result -9dB
For example, if the amplitude modulation envelope is -3dB
If the exponent part is 001 and the mantissa part is 100, the calculation will be performed in the same way as above, and the mantissa will be carried and the exponent part addition result will be 011.
Then minus 1 becomes 010 and the mantissa part is 000 -
It becomes 12dB. The decoder 31 decodes the data of the exponent part and controls the binary shift circuit 32. If an exponent carry occurs during the operations in step 1 and step 2, a carry signal is sent from the exponent adder 27 to the overflow detection circuit 26. Overflow detection circuit 26 holds this signal and sends it to decoder 31. This signal means a numerical value other than the dynamic range that can be expressed when, for example, the exponent part is 111+111=110 and a carry occurs. The decoder 31 therefore operates to round the numerical value to the minimum level in the presence of this signal. The binary shift circuit shifts the mantissa data based on the signal from the decoder 31, converts the data from a floating point number to a fixed point number, and sends the data to the buffer memory 35. Buffer memory 35 temporarily stores this data under the control of execution control circuit 40. The buffer memory 35 is repeatedly read out by the execution control circuit 40 at a rate different from the calculation rate of the ADSR generator. The DA converter 36 converts this data into an analog voltage to form an envelope waveform. FIG. 3 is a specific circuit example showing a loudness data input section. Loudness data is provided by what is stored in the loudness memory 37 and by a loudness data bus controlled externally. The loudness memory 37 is read out based on the frequency information of the operated keyboard and the information of the timbre to be formed, and sent to the data selection circuit 38. The data selection circuit 38 selects this data and data from the loudness data bus using a data selection signal. The selected loudness data is used as described above. The data in the loudness level memory 37 controls the level depending on the frequency of the sound being generated. The loudness data bus is data for adjusting the balance between tones. If this loudness level memory 37 stores a number of patterns smaller than the number of tones that can be produced, and performs the aforementioned floating point multiplication with the data for the balance between tones from the loudness data bus, a small memory capacity will be required, making it economical. A system is created. As explained above, according to the present invention, an electronic musical instrument is provided with a calculation means for representing an envelope waveform using a speed parameter and calculating the envelope waveform at a predetermined timing based on the speed parameter. Envelope data for the amplitude modulation effect is temporarily stored in a buffer memory, and predetermined envelope data corresponding to key presses calculated by the calculation means, the envelope data for the amplitude modulation effect, and volume data such as loudness data are stored. Multiplication is performed in a time-division manner. In particular, the envelope data calculated by the calculation means is represented by a floating-point exponent part and a mantissa part, and the multiplication means is composed of calculation parts corresponding to these parts, and the multiplication of the three components described above is performed by simple addition. , and since it is possible to perform time-divisional calculations by selecting data using a single multiplication means, it is possible to freely add a desired amplitude modulation effect, and it is also possible to arbitrarily adjust the volume level of each tone. Become. As a result, various envelope waveforms can be formed easily and inexpensively without requiring multiple multiplier circuits.
第1図は本発明で用いるエンベロープ発生器の
原理説明図、第2図は本発明の実施例の構成を示
す説明図、第3図は第2図の実施例の要部の具体
回路例であり、図中、10はフエーズメモリ、1
2はフエーズデコーダADSR制御回路、14は指
数メモリ、15は仮数メモリ、16,17は加算
器、18は比較器、19はフエーズ終値予測回
路、20,32は2進シフト回路、21は加減算
制御回路、23はスピードパラメータデコーダ、
24,30,38,39はデータ選択回路、2
5,35はバツフア回路、26はオーバフロー回
路、27は指数加算器、29は仮数加算器、31
はデコーダ、33は指数減算器、34はラツチ回
路、36はDA変換器、37はラウドネスレベル
メモリ、40は実行制御回路を示す。
Fig. 1 is an explanatory diagram of the principle of the envelope generator used in the present invention, Fig. 2 is an explanatory diagram showing the configuration of an embodiment of the present invention, and Fig. 3 is a specific circuit example of the main part of the embodiment of Fig. 2. Yes, in the figure, 10 is phase memory, 1
2 is a phase decoder ADSR control circuit, 14 is an exponent memory, 15 is a mantissa memory, 16 and 17 are adders, 18 is a comparator, 19 is a phase closing price prediction circuit, 20 and 32 are binary shift circuits, and 21 is an addition/subtraction a control circuit, 23 a speed parameter decoder;
24, 30, 38, 39 are data selection circuits, 2
5, 35 are buffer circuits, 26 are overflow circuits, 27 are exponent adders, 29 are mantissa adders, 31
33 is an exponent subtracter, 34 is a latch circuit, 36 is a DA converter, 37 is a loudness level memory, and 40 is an execution control circuit.
Claims (1)
速度パラメータを用いて表わし、該速度パラメー
タに対応する演算値を繰返し所定タイミングで演
算する演算手段を具え、エンベロープデータを形
成する電子楽器のエンベロープ発生器において、
所定のエンベロープ波形に付加すべき振幅変調効
果用エンベロープデータを前記所定のエンベロー
プ波形の演算タイミングと異なる予め設定された
タイミングで前記演算手段によつて演算し該演算
結果を一時記憶する記憶手段と、押鍵に応じて前
記演算手段により演算された所定のエンベロープ
データと前記記憶手段から選択された振幅変調効
果用エンベロープデータと押鍵に対応する音高情
報および各音色に応じた音色情報によつて設定さ
れる音量データとをそれぞれデータ選択して時分
割的に乗算する乗算手段と、該乗算手段の演算結
果を楽音波形データに変換する変換手段とを具え
たことを特徴とする電子楽器のエンベロープ発生
器。 2 前記演算手段で演算されるエンベロープデー
タが浮動小数点数の指数部と仮数部で表わされ、
前記乗算手段が該指数部と仮数部に対応する演算
器より成ることを特徴とする特許請求の範囲第1
項記載の電子楽器のエンベロープ発生器。 3 前記変換手段がエンベロープデータを表わす
浮動小数点数を固定小数点数に変換する回路より
成ることを特徴とする特許請求の範囲第1項記載
の電子楽器のエンベロープ発生器。[Scope of Claims] 1. An envelope waveform to be generated in response to a key press is represented using a velocity parameter, and includes a computing means for repeatedly computing a computed value corresponding to the velocity parameter at a predetermined timing to form envelope data. In envelope generators for electronic musical instruments,
Storage means for calculating amplitude modulation effect envelope data to be added to a predetermined envelope waveform by the calculation means at a preset timing different from the calculation timing of the predetermined envelope waveform and temporarily storing the calculation results; Predetermined envelope data calculated by the calculation means in response to the key press, envelope data for amplitude modulation effect selected from the storage means, pitch information corresponding to the key press, and tone color information corresponding to each tone color. An envelope for an electronic musical instrument, characterized in that it comprises a multiplication means for selecting and time-divisionally multiplying each volume data to be set, and a conversion means for converting the calculation result of the multiplication means into musical sound waveform data. generator. 2. The envelope data calculated by the calculation means is represented by an exponent part and a mantissa part of a floating point number,
Claim 1, wherein the multiplication means comprises an arithmetic unit corresponding to the exponent part and the mantissa part.
Envelope generator for electronic musical instruments as described in Section 1. 3. An envelope generator for an electronic musical instrument according to claim 1, wherein said converting means comprises a circuit for converting a floating point number representing envelope data into a fixed point number.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP56065710A JPS57181593A (en) | 1981-04-30 | 1981-04-30 | Envelope generator for electronic music instrument |
| US06/324,848 US4421003A (en) | 1980-11-25 | 1981-11-25 | Envelope generator for electronic musical instruments |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP56065710A JPS57181593A (en) | 1981-04-30 | 1981-04-30 | Envelope generator for electronic music instrument |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS57181593A JPS57181593A (en) | 1982-11-09 |
| JPS6310836B2 true JPS6310836B2 (en) | 1988-03-09 |
Family
ID=13294839
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP56065710A Granted JPS57181593A (en) | 1980-11-25 | 1981-04-30 | Envelope generator for electronic music instrument |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS57181593A (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3067145B2 (en) * | 1990-02-15 | 2000-07-17 | 株式会社河合楽器製作所 | Envelope generation control device, sound emission form control device, envelope generation control method, and sound emission form control method |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6042955B2 (en) * | 1976-12-29 | 1985-09-25 | ヤマハ株式会社 | Wave generator for electronic musical instruments |
-
1981
- 1981-04-30 JP JP56065710A patent/JPS57181593A/en active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS57181593A (en) | 1982-11-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0719145B2 (en) | Arithmetic unit for the envelope part | |
| JP2722907B2 (en) | Waveform generator | |
| EP0312062A2 (en) | Electronic musical instrument | |
| US5248842A (en) | Device for generating a waveform of a musical tone | |
| JPS6242515B2 (en) | ||
| JPH0445838B2 (en) | ||
| JPS6310836B2 (en) | ||
| US5113740A (en) | Method and apparatus for representing musical tone information | |
| JPH0114076Y2 (en) | ||
| US4421003A (en) | Envelope generator for electronic musical instruments | |
| JP2606791B2 (en) | Digital signal processor for musical tone generation. | |
| JPS6227718B2 (en) | ||
| JPH0310959B2 (en) | ||
| JPS6211357B2 (en) | ||
| JPH0235316B2 (en) | ||
| US5245126A (en) | Waveform generation system with reduced memory requirement, for use in an electronic musical instrument | |
| JPH052998B2 (en) | ||
| US5557227A (en) | Economical generation of exponential and pseudo-exponential decay functions in digital hardware | |
| JPH067327B2 (en) | Parameter setting device for musical tone generator | |
| JPS6380298A (en) | electronic musical instruments | |
| JP2802565B2 (en) | Envelope generator for electronic musical instruments | |
| JP2727802B2 (en) | Digital signal processor | |
| JPH0740191B2 (en) | Envelope generator | |
| JP2665326B2 (en) | Electronic musical instrument | |
| JP2830326B2 (en) | Envelope control device |