JPH0738956Y2 - 楽音合成装置 - Google Patents

楽音合成装置

Info

Publication number
JPH0738956Y2
JPH0738956Y2 JP1987151603U JP15160387U JPH0738956Y2 JP H0738956 Y2 JPH0738956 Y2 JP H0738956Y2 JP 1987151603 U JP1987151603 U JP 1987151603U JP 15160387 U JP15160387 U JP 15160387U JP H0738956 Y2 JPH0738956 Y2 JP H0738956Y2
Authority
JP
Japan
Prior art keywords
envelope
data
register
output
signal
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 - Lifetime
Application number
JP1987151603U
Other languages
English (en)
Other versions
JPS6455991U (ja
Inventor
洋二 金子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP1987151603U priority Critical patent/JPH0738956Y2/ja
Publication of JPS6455991U publication Critical patent/JPS6455991U/ja
Application granted granted Critical
Publication of JPH0738956Y2 publication Critical patent/JPH0738956Y2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【考案の詳細な説明】 [考案の技術分野] この考案は楽音合成装置に関し、特に、アフタータッチ
やLFO、モジュレーションホイール等のモジュレーショ
ンを楽音に付加する際の制御技術に関する。
[考案の背景] 従来の代表的な楽音合成システムでは、汎用マイクロプ
ロセッサ等で構成されるCPUに、演奏入力装置の演奏状
態の検出、音源部への所要データの転送などの制御機能
をもたせ、音源部にはCPUからの転送されたデータを基
に楽音を合成する合成機能をもたせている。音源部で
は、楽音波形を生成するためのパラメータとして、エン
ベロープ等を生成するが、この種のパラメータを、演奏
入力装置の演奏状態等により時間的に変動させることに
より、音色の変化などのモジュレーション効果を生み出
すことができる。従来技術の場合、エンベロープへのモ
ジュレーションデータの付加は、CPUにより検出された
センサーからのモジュレーションデータを音源部におい
て、エンベロープに加減算することによって行われてい
る。このモジュレーションデータのサンプリング周期
は、代表的なCPUの場合、約10msecに1回の割合であ
り、その数値精度は、センサーの性質上、8ビット程度
になっている。したがって、モジュレーションデータが
更新される前後に着目してみると、更新直前のときに
は、 E(N)=E(N)±MD(前) (ここにE(N)は演算サイクルNにおけるエンベロー
プ、MD(前)は更新前のモジュレーションデータを表わ
す)、 でエンベロープにモジュレーションデータが付加される
のに対し、更新直後のときには、 E(N+1)=E(N+1)±MD(後) でエンベロープにモジュレーションデータが付加される
ことになる。つまり、モジュレーションの加わり方が、
更新の前後で(MD(後)−MD(前))だけ変化する。こ
の変化は、エンベロープにかなり大きなステップ変化を
もたらし、出力される楽音にノイズを発生させる原因と
なる。これは、電子楽器の応用上、無視できない問題で
ある。また、従来において、音源部は各種の演算を別個
の演算回路ハードウェアで実現しているため、回路規模
が大きくなる問題があった。
[考案の目的] したがって、この考案の目的は、回路規模を小さくしつ
つ、モジュレーションデータでエンベロープを変調した
ときにクリック音等の楽音ノイズが発生することなくな
めらかなモジュレーション効果を得ることができる楽音
合成装置を提供することである。
[手段] この考案によれば、演奏入力装置(1、2)の演奏状態
をモニターするCPU(3)によって制御され、演奏状態
に従って楽音を合成するため、メモリ(7)と、上記CP
Uから転送されるデータを上記メモリに書き込むインタ
ーフェース回路手段(11)と上記メモリのデータを利用
してエンベロープ等の楽音制御信号を生成する楽音制御
信号生成回路手段(12)と、上記楽音制御信号生成回路
手段によって生成された楽音制御信号に従って楽音波形
を生成する波形生成回路手段(15)とを備える楽音合成
装置において、上記楽音制御信号生成回路手段は、演算
回路手段(308)と、上記演算回路手段を制御するため
の制御回路手段(301−305、307)を有し、上記演算回
路手段は、演算サイクルを繰り返し実行する単一の演算
回路ハードウェアから成り、(A)上記演算サイクルの
第1の演算ステップにおいて、上記メモリのエンベロー
プ制御データに基づいて第1のエンベロープを演算し、
(B)上記演算サイクルの第2の演算ステップにおい
て、上記CPUから所定のサンプリング周期で転送され、
上記インタフェース回路手段によって、上記メモリに記
憶される現モジュレーションデータ(MLj)、及び現モ
ジュレーションデータと前モジュレーションデータとの
差分値データ(MRj)とに基づき現モジュレーションデ
ータを目標レベルとして、この差分値データを上記サン
プリング周期対上記演算サイクルの周期の比に相当する
圧縮率で圧縮した値で変化する、補間されたモジュレー
ションデータ(AMDj)を演算し、(C)上記演算サイク
ルの第3の演算ステップにおいて、上記第1のエンベロ
ープ(Eij)を上記補間されたモジュレーションデータ
で変調して演算出力としてのエンベロープを演算、出力
する、ことを特徴とする楽音合成装置が提供される。
[実施例] 第1図は本考案に係る電子楽器の機能図である。CPU3は
汎用マイコンで、制御プログラムに従って、鍵盤1、ス
イッチ2を走査して押鍵、音色選択等を検出し、バス上
に配置されたROM4、RAM5等を使って音色データ、発音制
御データを生成した音源LSIの発音を制御する。音源LSI
6は、後で詳述するが外付けRAM7を楽音生成のための演
算用バッファとして利用して楽音を生成し、DAC(デジ
タルアナログ変換器)8に転送する。楽音信号はDAC8で
アナログ信号に変換され、アンプ9で増幅されてスピー
カ10によって放音される。
第2図は、本考案を適用する音源LSI6の動作を説明する
ためのブロック図である。音源LSI6は、振幅エンベロー
プ及びピッチ変動を含んだキーコード等の生成のため
に、RAM7を音色データ用メモリ、又は演算経過データ用
メモリとして使う。尚、RAM7は第3図に示すように、40
0nsec毎にインタフェース/制御部11(インタフェース
占有時間)とエンベロープ/キーコード生成回路(演算
回路占有時間)に交代で占有され、CPUからのデータ書
込み及びエンベロープ等の演算のためのアクセスに対処
する。
まず、インタフェース/制御部11の動作を説明する。CP
U3からは音源LSI6に対して音色データ又は発音制御デー
タが転送されるが、音源LSI6ではデータバスDB0〜7に
あるデータを▲▼がLOWのとき▲▼の立上りエ
ッジで取込む。その際、/DがLOWならばデータバスDB0
〜DB7のデータをインストラクション、/DがHIGHなら
ばそのインストラクションに付属するデータとして取込
む(第4図参照)。尚、インストラクションは続いて転
送されるデータの種類を示している。インタフェース/
制御部11はCPU3からのインストラクション及びデータを
受けて、そのインストラクションに対応するRAM7のアド
レスAA0〜11と書込み信号▲▼を生成し、外部RAMイ
ンターフェース16を介して外部RAM7に転送されたデータ
を格納する。ただし、CPU3から転送されたデータが特殊
なものの場合は内部メモリに格納する。例えば転送され
たデータがオペレーションコード(波形生成のための制
御データ)の場合には、外部RAM7への書込みは禁止さ
れ、OCレジスタ14への書込み信号WOが発生することによ
り、OCレジスタに書込まれる。
エンベロープ/キーコード生成回路12は、外部RAM7に書
込まれたデータをアクセスするためにアドレスBA0〜11
及びエンベロープの演算経過データ等の書込み信号▲
▼を発生する。それによって外部RAM7の音色データ
(エンベロープレート/レベルなど)に基づき、発音制
御データ(キーコード、モジュレーションなど)に従っ
て、振幅エンベロープ又はピッチ変動を含んだキーコー
ド(以下では合成キーコードと呼ぶ)を生成し、バスL2
〜14を介して指数変換/位相角生成回路13に時分割に転
送する。
指数変換/位相角生成回路13はエンベロープ/キーコー
ド生成回路12からの振幅エンベロープ、合成キーコード
を1つの指数変換器を時分割的に共用することによって
指数変換する。指数変換された振幅エンベロープ(指数
エンベロープ)、及び指数変換された合成キーコード
(周波数情報)は夫々、エンベロープレジスタ、周波数
情報レジスタに一旦格納される。これらは、外部RAM7を
アクセスして振幅エンベロープ、合成キーコードを生成
し、指数変換するという演算処理が低速で行なわれ、そ
の後の演算処理が高速で行なわれるためのインタフェー
ス用バッファとして使われる。第5図に2つの演算処理
の時間関係を示すが、低速演算周期は高速演算周期の48
倍になっている。これは出力波形の変化レートが可聴周
波数の2倍以上でないといけないために波形演算は高速
で行なわれ(本実施例では約40KHz)、それ以外の演算
は外部RAM7のアクセスに合わせて低速で行っているから
である。
エンベロープレジスタに格納された指数エンベロープは
高速演算に対応して読出され、波形合成回路15にエンベ
ロープE0〜11として転送される。周波数情報レジスタに
格納された周波数情報は、高速演算に対応して読出さ
れ、累算されて位相角データP0〜11として波形生成回路
15に転送される。
波形生成回路15はOCレジスタ14から読出されたオペレー
ションコードOC0〜7に基づいて、指数変換/位相角生
成回路13から転送されるエンベロープE0〜11、位相角デ
ータP0〜11に従って楽音波形O0〜15を生成し、DAC8へ出
力する。
第6図はインタフェース/制御部11の回路図である。ま
ず、タイミング信号発生回路159について説明する。タ
イミング信号発生回路159は、第7図、第8図に示すよ
うに基本クロックφ(10MHz)を分周し必要なタイミ
ング信号を作り、外部からのリセット信号▲
▼から内部リセット信号を作るものである。第9図に
その一実施例を示す。10MHzの基本クロックはフリップ
フロップ233、インバータ235で分周されS0が生成され、
更にフリップフロップ234によってT0が生成される。更
にアンド237によってφが生成され、フリップフロッ
プ239、240によってV1、W1が生成される。また、フリッ
プフロップ243によってT1が生成される。これらの信号
からインバータ242、245、アンド244、246〜248によっ
てW、▲▲、▲▼、CK1、CK2が生成される(第
7図)。カウンタA:249はクロックCK2を分周するバイナ
リカウンタで、CK2の立上りで変化する。カウンタ出力
のうちQ1〜Q5は読出しのためのアドレス信号C1〜C5とし
てエンベロープ/キーコード生成回路12、及びOCレジス
タ14に出力される。また、カウンタ出力Q0、Q1から2相
フリップフロップ250、251、フリップフロップ252、イ
ンバータ253、アンド254−1〜254−4によってタイミ
ング信号T2、T3、CKP、CKQ、CKW、CKRが生成される(第
8図)。また、インバータ255−1〜3、オア256、アン
ド257から▲▼、CKLが生成される(第52図)。ま
た、カウンタA:249のCARRY OUT(カウンタ値127のとき
“1")からはアンド258でCKRTが生成され、この信号は
外部からのリセット信号をサンプリングするクロックと
して用いられる。クロックCKRTによりフリップフロップ
260、261でリセット信号をサンプリングし2度以上外部
リセット信号をアンド262で検出したら内部リセット信
号が生成される。したがって内部リセット信号は第8図
のようになる。その時第17図のカウンタB303は同期リ
セットカウンタなので第8図のようにリセット後の動作
を行なう。
次に、CPU3と音源LSI6のデータメモリである外部RAM7と
をインタフェースするインタフェース/制御部11の動作
を説明する。表1にCPU3から転送されるインストラクシ
ョン、データ及び、外部RAM7の対応するアドレスを示
す。
ここで、音源LSI6は8つの発音チャンネルを持ち各発音
チャンネル毎に8つの正弦波生成モジュールを持つの
で、エンベロープ/キーコード生成回路12では、各発音
チャンネル毎のピッチエンベロープを含めて72個の振幅
エンベロープ、64個の合成キーコードを生成しなければ
ならない。そのため、データは各チャンネル毎(jjj=
0〜7)に各モジュール(0iii=0〜7)のデータを転
送しなければならない。ただしエンベロープに関係する
データはピッチも含めて9個(jjjj=0〜8)転送す
る。尚、データを1個しか送らないものは各モジュール
共通のものである。
第6図で▲▼、/D、▲▼、DB0〜7にはCPU3
からの信号が入るわけだが、第4図のように信号が入っ
た時インバータ100〜103、ナンバ104、105によって▲
▼、▲▼が発生する。信号▲▼が発生
するとバスDB0〜7のデータがインバータ106〜113を介
してラッチ146〜153に▲▼の立上りで取込まれると
ともにカウンタ191、フリップフロップ186、192〜195を
リセットする。ラッチ149〜153の出力はインストララク
ションデコーダ154に入力され、それによって必要な制
御信号が発生する。インストラクションデコーダは第10
図のようにインバータ265〜267、ナンド269〜277、アン
ド278で構成されており、各信号は表2のようになる。
例えば、周波数比のインストラクションに対しては、WB
とWTが論理“1"となる(WB=“1"、▲▼=“0") まず、外部RAM7に書込まれるデータのうち、各チャンネ
ルの各モジュールあたり1バイトのデータ(ハイリリー
スレート、モジュレーション感度、エンベロープレート
変化、エンベロープレベル変化、エンベロープレート、
エンベロープレベル)の書込み動作を説明する(第11図
参照)、CPU3からのインストラクション書込みに応答し
て、信号▲▼が“0"になる。そのとき、バスDB0
〜7のインストラクションはインバータ106〜113で反転
されてラッチ146〜153に取込まれるとともに、カウンタ
191、フリップフロップ192〜195、186がリセットされ
る。そしてインストラクションデコーダ154の出力WBが
“0"となるのでナンド172の出力は常に“1"となり▲
▼が“1"なのでオア168、170、アンド169によってC
K12はCKQとなる。次にCPU3からのデータ書込みにより信
号▲▼が“0"→“1"になると、フリップフロップ
173は▲▼の立上りで“1"を出力し、フリップフ
ロップ174の出力は“1"となる。その後、フリップフ
ロップ173、175はCKRに同期してリセットされるので
はCKRの1区間だけ“1"となる。また、インストラクシ
ョンデコーダ154の出力▲▼、IDは“1"、“0"、
は“0"なのでオア178、179、インバータ180、181、ナン
ド182により信号▲▼はが“1"、かつT2が“0"の
とき“0"となる。その時、インストラクションデコーダ
154の出力▲▼、WBは“1"、“0"なので、ノア161の
出力は▲▼が“0"、▲▼が“0"のときだけ“1"
となり、バスD0〜7のクロックインバータ122〜129の出
力が出力される。カウンタ191は、インストラクション
デコーダ154の出力▲▼が“1"なので、が“1"の
ときのCKQがそのクロックCKCとなり、CKC毎に0、1、
2、……と進歩され、その値はフリップフロップ192〜1
95、インバータ196〜199で2度反転してモジュール番号
を表わすアドレスAA0〜AA3となる。アドレスAA4〜AA6は
インストラクションのラッチ146〜153の下位3ビットの
反転であるからチャンネル番号を表わす値“jjj"とな
る。また、アドレスAA7〜AA11はインストラクションデ
コーダ154の出力EF、WBが“0"だから、ノア204、オア20
5、207の右入力は“0"、アンド209、211の右入力は
“1"、オア203の左入力は“0"なので、インストラクシ
ョンのラッチ146〜153の上位5ビットの反転となり、イ
ンストラクションの上位5ビットそのものとなる。以上
のように各チャンネル各モジュールあたり1バイトのデ
ータの書込みの場合、インストラクションと一致するア
ドレスに対して第11図のような書込み用の信号が生成さ
れる。ここで各チャンネルの識別はインストラクション
下位3ビットでなされるが、モジュールの識別はインス
トラクション転送後から何番目のデータかということを
カウンタ191で計数することによって行われている。し
たがって、1つのインストラクションに複数のデータが
後続する連続転送フォーマットにおいて、どのデータが
どのモジュールに対するデータであるかはインタフェー
ス/制御部11で自動的に識別されるので、CPU3はモジュ
ール別にインストラクションを送る必要はなく転送効率
が上る。
次に外部RAM7に書込まれるデータのうち各チャンネル各
モジュールあたり2バイトのデータ(周波数比、キーコ
ード、モジュレーションレベル/レート、ピッチモジュ
レーション)の書込み動作を説明する(第12図参照)。
CPU3からのインストラクション書込みに応答し、▲
▼が0になり、それによって、インストラクションが
ラッチ146〜153に取込まれるとともに、カウンタ191、
フリップフロップ186、192〜195がリセットされる。フ
リップフロップ176の出力は“0"となっているのでナン
ド172の上入力は“1"、インストラクションデコーダ154
の出力WBは“1"なのでナンド172の出力は“0"となっ
ており、また、ノア167の入力は共に“0"なのでオア16
8、170、アンド169により、CK12はCKQとなる。CPU3から
のデータの書込みにより、▲▲が“0"→“1"にな
ると、フリップフロップ114〜121がデータを取込むと共
にフリップフロップ175は“1"を出力し、フリップフロ
ップ176は“1"、インバータ171は“0"、ナンド172の出
力は“1"となる。そのとき、ノア167の上入力は“1"
なのでCK12はCKWとなる。再び▲▼が“0"→“1"
になると、フリップフロップ130〜137は前段のデータ
を、フリップフロップ114〜121はバスのデータを取込む
と共に、フリップフロップ173の出力は“1"となり、フ
リップフロップ174の出力も“1"となる。が“1"と
なるとフリップフロップ173、175はリセットされるの
で、はCKRの2区間だけ“1"となる(∵CK12=CKW)。
インストラクションデコーダ154の出力▲▼は
“1"、IDは“0"であるからナンド182の出力▲▼
は、が“1"の時にT2が“0"の時、すなわち2回“0"と
なる。また、WBが“1"となるので、▲▼が“0"でT3
が“0"のとき▲▼が“0"の幅でクロックインバータ
122〜129がデータを出力し、▲▼が“0"でT3が“1"
のとき▲▼が“0"の幅でクロックインバータ138〜1
45がデータを出力する。ここでデータは下位(レベ
ル)、上位(レート)の順でCPUから書込まれるので、
バスD0〜7には上位(レート)、下位(レベル)の順で
データが出力され外部RAM7に入力される。カウンタ191
は、インストラクションデコーダ154の出力▲▼が
“0"なので、が“1"のときのCKWがそのクロックCKCと
なり、0、1、2……と進歩されてモジュール番号を表
わすアドレスAA0〜AA3となる。アドレスAA4〜AA6はイン
ストラクションのラッチ146〜153の下位3ビットの反転
であるからチャンネル番号を示す値“jjj"となる。ま
た、アドレスAA7〜AA11は、インストラクションデコー
ダ154のEFが“0"、WBが“1"だから、T3が“0"のときAA7
を“0"にするインストラクション上位5ビットとなり、
T3が“1"のときAA8〜11がインストラクション上位4ビ
ットでAA7が“1"となる。つまり、2バイトデータの第
1バイトアドレスと第2バイトアドレスの区別はAA7を
切り換えることにより行なわれる。尚、チャンネルの識
別とモジュールの識別に関してはチャンネル、モジュー
ル当り1バイトのデータ書込みの場合と同様である。こ
こまでの説明から明らかなように、本実施例によれば、
インタフェース/制御部11に転送データのバイト構成を
インストラクションに基づいて識別する手段が組み込ま
れているため、CPU3から音源LSI6に対し、インストラク
ションに可変のバイト構成のデータが後続する可変フォ
ーマットでデータ転送を行なうことができ、ダミーデー
タなしの最適の転送効率を達成できる。
次にインストラクション“フラグセット”について述べ
る(第13図参照)。“フラグセット”は外部RAM7にエン
ベロープフラグをセットする命令である。信号の生成
までは1バイトデータの場合と全く同じである。インス
トラクションデコーダ154の出力EFが“1"なので、が
“0"→“1"になったとき、アンド183の出力が“1"とな
り、▲▼が“0"になった時にリセットされていた
フリップフロップ186の出力は“1"となる。また、イ
ンストラクションデコーダ154の出力▲▼は“1"な
のでカウンタ191のクロックCKCはが“1"の間CKQと一
致し、カウンタ191は進歩される。カウンタ191の値が9
になるとCKRに同期してオア184、ナンド185により、フ
リップフロップ186がリセットされるので、は▲
▼〜▲▼が0〜8の間(CKRの9区間)“1"と
なり、ナンド182の出力▲▼は各クンタ値毎T2が
“0"のときに“0"となる。その時、インストラクション
デコーダ154の出力▲▼、WBは“1"、“0"なので、
ノア161の出力は▲▼が“0"、▲▼が“0"のと
きだけ“1"となり、バスD0〜7にはクロックドインバー
タ122〜129の出力が出力される。アドレスAA0〜AA3はカ
ウンタ191の値、アドレスAA4〜AA6はインストラクショ
ンの“jjj".AA7〜AA11はEFが“1"、WBが“0"だから“00
110"となる。したがって、インストラクション“フラグ
セット”ではモジュール0〜8に同じデータが自動的に
書込まれることになる。
次にインストラクション“キーオフ”について述べる
(第14図参照)、信号▲▼が“0"になるとインス
トラクションがラッチ146〜153に取込まれるとともに、
カウンタ191、フリップフロップ186、192〜195がリセッ
トされる。インストラクションデコーダ154の出力WBが
“0"なのでは“1"、ノア167の出力は“0"、▲▼
が“0"なのでオア168の出力は“0"となり、従ってCK12
はCKWと一致する。▲▼が“0"→“1"になると、
フリップフロップ114〜121にデータが取込まれるととも
に、フリップフロップ173は“1"を出力し、は“1"と
なる。が“1"となるとフリップフロップ173、175はリ
セットされるので、はCKRの2区間だけ“1"となる。
また、インストラクションデコーダ154の出力EFが“1"
なのでアンド183の出力はが“1"のときに“1"となる
から、フリップフロップ186の出力は“1"となる。▲
▼が“0"なのでカウンタ191のクロックCKCはが
“1"の間CKWと一致し、カウンタ191は歩進される。カウ
ンタ191の値が9になるとCKRに同期してフリップフロッ
プ186がリセットされるので、は▲▼〜▲
▼が0〜8の間(CKRの18区間)“1"となり、=
“1"のもとで、ナンド182の出力▲▼は▲▼が
“0"のため各カウント毎にT2が“0"、T3が“1"のときに
“0"となる。そのとき、EFは“1"なのでアドレスAA0〜A
A11は“00110jjjiiii"となるが、が“1"でT3が“0"、
T2が“0"のときは、RAM7からのデータが読出されてきて
いる。フリップフロップ213〜216はそのデータのうち下
位4ビットをCKPで取込み、その値が“*000"ならば“0
0000111"に、“0***”ならば“00000111"に“1abc"
ならば“00000abc"をT3が“1"、T2が“0"のとき▲
▼が“0"の幅でバスD0〜7に出力する(ただし、a、
b、cは任意2進数)。尚、後述するがインストラクシ
ョン“フラグセット”、“キーオフ”は、RAM7の中のデ
ータ“エンベロープフラグ”を書き替えるものである。
ここでデータ“エンベロープフラグ”はエンベロープの
ステップ等の現在の状態を示すもので、下位3ビットが
ステップ(0〜7)、4ビット目がサスティン中か否か
のビットである。すなわち、インストラクション“フラ
グセット”はエンベロープフラグをCPU3から直接書込む
命令で、データの下位3ビットにより、どのステップか
らでもエンベロープをスタートさせられるものである。
また、4ビット目をサスティンの値“1"にしてエンベロ
ープフラグを再設定することにより、所望の時点からエ
ンベロープをホールドすることができる。インストラク
ション“キーオフ”は現在のエンベロープフラグのデー
タに応じてデータを再セットする命令で、ステップ0
(0000)のとき、又はエンベロープ終了(1000)でなく
サスティンレベルに到達していないのなら最後のステッ
プ7(0111)へ進め、サスティンレベルにいるのなら
(1abc)、サスティンを解除(0abc)するようになって
いる。
次にOCレジスタへの書込みを説明する(第15図)。書込
み動作は1バイトデータとほぼ同じだが、インストラク
ションデコーダ154の出力IDが“1"となるためRAM7への
最終的書込信号▲▼を発生せず(第43図参照)。
▲▼が“0"なのでと同じタイミングでOCレジスタ
への書込み信号WOが発生され、T2=“0"で▲▼=
“0"のときにフリップフロップ114〜121に取り込まれて
いるオペレションコードがゲート122〜129を通ってOCレ
ジスタに入力される。最後にラッチ156〜158への書込み
(モード)は、上と同様にが発生するが、インストラ
クションデコーダ154の出力IDが“1"となるためRAM7へ
の書込みは発生せず、▲▼が“0"となるのでと同
じタイミングでラッチ信号MLTが発生し、その立下りで
ラッチ156〜158にフリップフロップ114〜116のデータが
取込まれる(第16図参照)。
第17図はエンベロープ/キーコード生成回路12のブロッ
ク図である。エンベロープ/キーコード生成回路12は、
振幅エンベロープ及び合成キーコードを生成するために
RAM7にアクセスしながら以下の演算を行っている。
エンベロープレート(エンベロープの傾きデータ)
を鍵域又は鍵タッチに対応するデータ“エンベロープレ
ート変化”で変更する。
エンベロープレベル(エンベロープの各ステップの
目標データ)を鍵域又は鍵タッチに対応するデータ“エ
ンベロープレベル変化”で変更する。
変更されたエンベロープレート、エンベロープレベ
ルに従ってエンベロープを生成する。
アフタータッチ、LFO等に対応する振幅モジュレー
ションデータを補間し、振幅エンベロープと演算して最
終的な振幅エンベロープを生成する。
ベンダー、LFO等に対応するピッチモジュレーショ
ンデータをピッチエンベロープと演算する。
キーコードとモジュレーション付きのピッチエンベ
ロープを演算し、それと各モジュール毎の周波数比率を
表わす周波数比とを演算し、最終的な合成キーコードを
生成する。
これらを実現するために、エンベロープ/キーコード生
成回路12では、第30図に示すように、共通化された演算
回路308を使用し、そのA、B、M、Sレジスタへのデ
ータのロードや加減算の制御等を行っている。ただし、
M、Sレジスタ、Bレジスタ上位の出力はいずれか一つ
が選択される。第17図においてカウンタB303は演算の基
本周期を作っているもので、第18図にその回路図を示
す。
カウンタ1〜3:309〜311は同期リセットカウンタでそれ
ぞれ演算サイクル、チャンネル、モジュールに相当して
いる。カウンタ1:309はBC11が0のときは0〜19の20進
カウンタ、BC11が1のときは0〜31の32進カウンタ、カ
ウンタ2:310はカウンタ1:309が1巡する毎に歩進される
8進カウンタ、カウンタ3:311はカウンタ1、2が1巡
する毎に歩進される9進カウンタである。尚、カウンタ
3:311の値は0〜7はモジュール0〜7に相当し、8は
ピッチに相当している。第19図にエンベロープ/キーコ
ード生成回路12の演算周期を示す。
第20A図にエンベロープ/キーコード生成回路12の動作
の概要を説明するためのフローを示す。ここで、A;Aレ
ジスタ、AM;Aレジスタ上位、AL;Aレジスタ下位、B;Bレ
ジスタ、BM;Bレジスタ上位、BL;Bレジスタ下位、M;Mレ
ジスタ、S;Sレジスタ、F1;CKF1で取込むフリップフロッ
プ、F2;CKF2で取込むフリップフロップである。また、 EFij;エンベロープフラグ i=0〜8(モジュール、ピッチ)、j=0〜7(チャ
ンネル) ERij(S);エンベロープレート i=0〜8(〃)、j=0〜7(〃)、s=0〜7(エ
ンベロープステップ) ERCj;エンベロープレート変化 j=0〜7(〃) ▲EM ij▼;エンベロープ上位 i〜8(〃)、j=0
〜7(〃) ▲EiL ij▼;エンベロープ下位 i=0〜8(〃)、j=0〜7(〃) ELij(S);エンベロープレベル i=0〜8(〃)、j=0〜7(〃)、s=0〜7
(〃) ELCij;エンベロープレベル変化 i=0〜8(〃)、j=0〜7(〃) ▲AMDM j▼;振幅モジュレーション上位 j=0〜7
(〃) ▲AMDL j▼;〃下位 j=0〜7(〃) ▲PMDM j▼;ピッチモジュレーション上位 j=0〜7
(〃) ▲PMDL j▼; 〃 下位 j=0〜7
(〃) MSij;モジュレーション感度 i=0〜7(モジュール)、j=0〜7(〃) ▲KCM j;キーコード上位 j=0〜7(〃) ▲KCL j; 〃 下位 j=0〜7(〃) ▲PEM j;ピッチエンベロープ上位 j=0〜7(〃) ▲PEL j; 〃 下位 j=0〜7(〃) ▲FRM ij▼;周波数比上位 i=0〜7(〃)、j=0〜
7(〃) ▲FRL ij▼; 〃 下位 i=0〜7(〃)、j=
0〜7(〃) MRj;モジュレーションレート j=0〜7(〃) MLj;モジュレーションレベル j=0〜7(〃) のように対応している。第20A図のフローで、左側にあ
る数字はタイミングを意味しており、0〜11はカウンタ
1の値そのもの、1P〜19はカウンタ3の値が8
(ピッチの演算)以外のときのカウンタ1の値12〜19、
12P〜19Pはカウンタ3の値が8(ピッチの演算)のとき
のカウンタ1の値12〜19に相当する。
第20A図のフローを説明する。まずタイミング0でエン
ベロープフラグ;EFijをRAM7からSレジスタにロードす
る。ここで、エンベロープフラグのデータ構成は下のよ
うになっている。
1)Sレジスタ下位3ビット(エンベロープステップ)
に対応するエンベロープレート;ERij(S)をAレジスタ
上位に、2)エンベロープレート変化;ERCjをBレジス
タ上位にロードし(A、Bとも下位には0でロード)、
3)それらを加算してエンベロープレートを変更し、B
レジスタに格納する。そのとき同時にエンベロープ現在
値の上位をAレジスタ上位(下位は0)にロードし4)
次に下位をAレジスタ下位にロードして、5)エンベロ
ープの現在値をEF4に応じて、変更されたエンベロープ
レートで加減算することによってエンベロープを更新
し、Bレジスタに格納する。更にエンベロープレベル;
ELij(S)をAレジスタ上位に(下位には0)、6)Mレ
ジスタにエンベロープレベル変化;ELCijをロードし、
7)それらを加減算してエンベロープレベルを変更し、
Aレジスタに格納する。尚、F1にセットされるエンベロ
ープレベルの8ビット目;ELij(S)7はサスティンポイン
トのフラグである。そのとき、Mレジスタには振幅モジ
ュレーション;AMDj(モジュール0〜7の演算時)、又
はピッチモジュレーション;PMDj(ピッチの演算時)の
ロードしておく。8)次に変更されたエンベロープレベ
ルから更新されたエンベロープを減算し、エンベロープ
が目標値に到達したか否かを判定する(その時Aレジス
タ下位にはAMDj又はPMDjの下位をロードしておく)。エ
ンベロープが目標値に到達していない場合には、F′=
“0"となり、9▲▼)エンベロープフラグ(Sレジ
スタ)は更新されず、Aレジスタの上位に格納されてい
る更新されたエンベロープの上位をRAM7のエンベロープ
上位;▲EM ij▼に対応するアドレスに書込む。エンベ
ロープが目標値に到達している場合には、F′=“1"と
なり、9F′)エンベロープフラグ7(Sレジスタ)のス
テップを表す下位3ビットを更新するとともに(1+
S)、“ノード”のビットを“0"とし、サスティンフラ
グ;ELij(S)7が“1"ならば“ホールド”のビットを“1"
としてAレジスタ上位に格納する。その時、変更された
エンベロープレベルの値をエンベロープ値としてBレジ
スタにロードするとともに、RAM7のエンベロープ上位;
▲EM ij▼に対応するアドレスに書込む。10)次に到
達、未到達のいずれの場合にも、Bレジスタ下位には格
納すべきエンベロープ下位データが入っているので、そ
れをRAM7のエンベロープ下位;▲EL ij▼のアドレスに
書込む。ただし、ノードのビットが節点を表わす“0"の
場合には、上記のような演算を行なわず、エンベロープ
の現在値と目標値を比較することによってエンベロープ
の進むべき方向を判定して符号のビットをセットしてい
る。以上説明したようにエンベロープの基本演算は、ス
テップの節点毎にエンベロープの進行方向を判定してお
き、 a)エンベロープレートレベルの変更 b)エンベロープの更新 c)目標レベルへの到達か否かの判定 d)エンベロープ現在値格納 によって行なわれている。
次に、11)Aレジスタ上位にMレジスタのデータが転送
されるとともにAレジスタ上位のデータがRAM7のエンベ
ロープフラグ;EFijのアドレスに書込まれる。このと
き、Aレジスタ下位には振幅モジュレーション;AMDj
はピッチモジュレーション;PMDjの下位データ、Mレジ
スタにはその上位データが入っている。
まず、モジュール0〜7の演算(カウンタ3=0〜7)
について考える。12)BレジスタにあるRAM7に書込ん
だエンベロープのデータをAレジスタにロードするとと
もに、Aレジスタ下位にある振幅モジュレーション下
位;▲AMDL j▼のデータをBレジスタ下位にロードす
る。13)振幅感度;MSijをSレジスタにロードする。
次に14)Aレジスタのエンベロープのデータから、
M、Bレジスタ下位のAMDjのデータをMSijに応じて減算
し、最終エンベロープデータとして、指数変換/位相角
生成回路13に転送する。その時Aレジスタ上位にはキー
コード上位;▲KCM j▼をロードしておく。15)Aレジ
スタ下位にキーコード下位;▲KCL j▼をロードする。16
)Bレジスタ上位にピッチのエンベロープ上位;▲PE
M j▼、17)下位に▲PEM j▼をロードする。18)キー
コードとピッチのエンベロープを加算しAレジスタに格
納するとともに、周波数比上位;▲FRM ij▼をBレジス
タ上位にロード。19)周波数比下位;▲FRL ij▼をB
レジスタ下位にロードする。0)次の演算サイクルの0
のタイミングでピッチのエンベロープ付きのキーコード
に周波数比を加減算(F2に応じて)した最終的なキーコ
ードとして指数変換/を位相角生成回路13に転送する。
次にピッチの演算(カウンタ3=8)について考える。
12P)BレジスタのRAM7に書込んだエンベロープのデー
タにAレジスタにあるピッチモジュレーション;PMDj
加減算(F2に応じて)し、最終的なピッチのエンベロー
プ;PEjとしてBレジスタに格納する。そのとき、Aレ
ジスタ上位に振幅モジュレーション上位;▲AMDM j▼を
ロードしておく。13P)振幅モジュレーション下位;▲A
MDL j▼をAレジスタ下位にロードする。14P)モジュレ
ーションレート;MRjをMレジスタにロードする。15P)
AMDjをMRjをF2に応じて加減算するとともにモジュレー
ションレベル;MLjをMレジスタにロードする。16P)振
幅モジュレーション;AMDjを更新した値とモジュレーシ
ョンレベルを比較する(その時ピッチのエンベロープ上
位をRAM7の▲PEM j▼に書込む)。振幅モジュレーション
が目標値;MLjに到達していないなら、17P▲▼)ピ
ッチのエンベロープ下位▲PEL j▼をRAM7に書込み、到達
しているのなら、17PF′)目標値;MLjをAレジスタに
ロードするとともに、▲PEL j▼をRAM7に書込む。Aレジ
スタの目標値を越えない振幅モジュレーションのデータ
を18P)上位、19P)下位とRAM7に書込む。尚、20P〜31P
は演算タイミングの調整のためのNOPである。ここで、
振幅モジュレーションはCPUから与えられるアフタータ
ッチ等の検出量の前回検出量との差の絶対値;MRj、符
号;▲MR7 j▼、及び今回検出量;MLjのデータ(第21図
参照)を基にして、補間することによって生成されてい
る。
MR(1)=ML(0)−ML(1)、MR(1)7=0 MR(2)=ML(1)−ML(2)、MR(2)7=0 MR(3)=ML(2)−ML(3)、MR(3)7=0 MR(4)=ML(4)−ML(3)、MR(4)7=1 : : : : : : : : 第22図は第17図のエンベロープ/キーコード生成回路12
が上述の動作を行なうための基本的信号を発生するため
の演算用タイミング信号発生回路305の詳細図である。
図示のように、演算用タイミング信号発生回路305はROM
化(ファームウェア)化された構造をもっており、その
動作についてエンベロープ/キーコード生成回路12の主
な動作をまとめた第20B図を参照して説明する。入力BC0
〜4はカウンタB303の中のカウンタ1の出力で基本タイ
ミングである。又、PはカウンタB303の中のカウンタ3
のMSBすなわちピッチの演算中“1"の信号であり、F′
は動作フローの分枝フラグF′に対応している。図中
0、1、……、9F′、12Pはタイミングに相当し、夫
々、タイミング0、タイミング1、……、F′=1のと
きのタイミング9、P=1のときのタイミング12を意味
している。第22図の中で「BW0」はエンベロープ/キー
コード生成回路12からRAM7のデータが書込まれるための
原信号で、第20B図の“データバスD0〜7"にレジスタ出
力が出る時のみ“1"となっている。LSIにはアドレスのL
SBを強制的に“1"とするもので後述するようにタイミン
グ12、12P、13P、17、17▲▼、17PF′、18
P、19Pで“1"となる。▲▼はアドレス下位4ビット
(モジュール)をオール0にするもので第20B図のデー
タにiのINDEXがついていないタイミングで“1"とな
る。OA0〜4は原アドレス信号で、第20B図の“アドレ
ス”に対応している。ただし、タイミング1、5の“SS
S"は原アドレスOA0〜2のかわりのエンベロープフラグ
(Sレジスタ)の下位3ビット(ステップ)がアドレス
として採用されることを意味している。a〜kは第23図
に示すようにクロック発生回路304の出力である各種ク
ロック、CKAM、CKAL、……、CKE等を生成するための信
号で、第20B図“クロック”のタイミングで“1"とな
る。RA、RBは夫々Aレジスタ、BレジスタにRAM7からの
データをロードする時“1"となる信号で、第20B図“A
レジスタ入力”、“Bレジスタ入力”に対応している。
AM、AL、BM、BLはデータバスD0〜7に夫々のレジスタ出
力を出力する時に“1"となる信号で、第20B図の“デー
タバスD0〜7"に対応している。B0はBレジスタの出力を
常にマスクするためのもので第20B図の“加減算器B入
力”が上位側“M"、下位側“0"のときに“1"となる。A0
はAレジスタの出力を常にマスクするためのもので、第
20A図のフローで9▲▼;AM←0+S、9F′;AM
1+S、11;AM←0+M、12;A←0+B、17PF′;A←
0+M、(0)に対応し“1"となる。Mは加減算器440
のB入力がMレジスタ出力となる場合に“1"となるもの
で、第20B図の“加減算器B入力”の上位側が“M"とな
っているタイミングに“1"となる。SUは加減算器440の
演算を減算形式、すなわち“A−B"又は“A−M"とする
信号で、第20A図のフローの8;A−B、14;A−M
(BL)、16P;A−M(0)で“1"となる。SF2は加減算器
440のB入力側符号をF2の値とするもので、後述するよ
うにタイミング0、15P、16Pで“1"となる。
次に、第24図演算用アドレス生成回路301について説明
する。大抵の場合アドレス信号BA0〜11は、以下のよう
に構成されている。
さらに、BA0〜3はカウンタB303の出力BC8〜11、BA4〜
5はBC5〜7、BA7〜11は演算用タイミング信号発生回路
305のアドレス出力OA0〜4に対応している。次に特殊な
場合について考える。タイミング1のとき信号は0で
ある。またOA4も第20B図から“1"である。そのとき
が“1"すなわちハイリリースでないなら、インバータ37
1、インバータ365〜367、バッファ368〜370によりアド
レスは、 OA4 OA3 S2 S1 S0 BC7 BC6 BC5 BC11 BC10 BC9 BC8 となる。したがってエンベロープフラグにより示される
ステップのエンベロープレート;ERij(S)のアドレスと
なる。タイミング5も同様である。もし、が“0"す
なわちハイリリースなら、オア363、アンド364によりア
ドレスは、 OA3 S2 S1 S0 BC7 BC6 BC5 BC11 BC10 BC9 BC8 となる。ここでハイリリースの設定はCPUからインスト
ラクション“フラグセット”、データ“10000111"で行
なえば、上のアドレス上位5ビットは“00111"となり、
ハイリリースレート;HRijを示す固有アドレスとなる。
したがってハイリリース時には通常のエンベロープレー
トではなくハイリリースレートが読出され使われること
になる。次に、タイミング2、14、14P、15、15P、
16、16Pのとき、▲▼は“1"、LSIは“0"であるか
ら、インバータ385、386、ノア383、384、クロックノア
382により、アドレスは、 OA4 OA3 OA2 OA1 OA0 BC7 BC6 BC5 0 0 0 0 となる。次にタイミング7、8のとき、7、8は“1"、
▲▼は“1"、LSIは“0"であるから、モード信号/
Iがチャンネル独立を示す“1"のとき、インバータ385、
386、クロックインバータ381、アンド378〜380により、
アドレスは、 OA4 OA3 OA2 OA1 OA0 BC7 BC6 BC5 0 0 0 ▲▼ となる。したがって、インストラクション“ピッチモジ
ュレーション”で書込まれたチャンネル別のピッチモジ
ュレーションデータがピッチ演算中のタイミング7、8
で読出され、エンベロープ/キーコード生成回路12内部
で生成されたチャンネル独立の振幅モジュレーションデ
ータがモジュール0〜7演算中のタイミング7、8で読
出されることになる。もし、タイミング7、8でモード
信号/Iがチャンネル共通を表わす“0"ならば、アンド
372〜374、オア375〜377によりアドレスは、 OA4 OA3 OA2 OA1 OA0 0 0 0 0 0 0 ▲▼ となる。従って、全チャンネル共通の振幅、ピッチモジ
ュレーションデータを読出すことになる。次にタイミン
グ12、12P、13P、17、17P′、17PF′、18P、19P
のときは、▲▼、LSIは“1"なので、インバータ38
5、386、ノア383、384、クロックノア382、アンド378〜
380により、アドレスは、 OA4 OA3 OA2 OA1 OA0 BC7 BC6 BC5 0 0 0 1 となる。これは第20B図の“*”を付けたアドレスに対
応するものでこれらのデータは、データ識別を上位5ビ
ットとLSBを使っているものである。尚、“**”を付
けたアドレスは、LSBを“1"とすることでデータMLjのア
ドレスと区別し、そこをダミーアドレスとしている(こ
のタイミング12ではレジスタALからレジスタBLにデー
タバスD0〜7を介して転送するのでRAM7の書込み信号が
出てしまうため)。以上のように演算用アドレス生成回
路301は動作フロー第20A図に対応するアドレス信号B0〜
11を発生する。
第25図に演算用制御信号発生回路307の詳細図を示す。
aは、クロックCKAMの条件信号、RAはRAM7からAレジス
タへのロード制御信号である。ここでRAM7からAレジス
タ上位にデータをロードするときには、Aレジスタ下位
にはオール0を入力するためにナンド387によって▲
▼を“0"にする(例えばタイミング1)。同様に、
Bレジスタ上位にRAM7からデータをロードするときに
は、Bレジスタ下位にオール0を入力するために▲
▼が“0"となる。AM、AL、BM、BLは、夫々のレジスタ
のデータをデータバスD0〜7に出力するための条件信号
で、エンベロープ/キーコード生成回路12のRAM7の占有
時間は、T2が“1"のときでそのデータ出力時間の巾は第
7図の▲▼が“0"の巾だから第26図のようにAM′、
AL′、BM′、BL′が生成される。また、レジスタ上位は
A、Bとも7ビットでデータバスのMSBD7に出力するビ
ットがないので、A又はBレジスタ上位をデータバスD0
〜7に出力する場合にはオア394、アンド393によりMSB
として、SレジスタMSBを出力する。B0′はBレジスタ
出力をマスクする信号で、演算用タイミング信号発生回
路305からのB0、及びタイミング5、すなわちエンベロ
ープレートの加減算時の加減算イネーブル信号▲▼
(後述)、タイミング14の振幅モジュレーション減算
時のモジュレーション感度が0の信号MO0(後述)に従
ってアンド395、オア396により“1"となる。A0′は、A
レジスタの出力をマスクする信号で、演算用タイミング
信号発生回路305からのA0、及びタイミング5、すなわ
ちエンベロープレート加減算時のエンベロープ現在値を
マスクする信号E0に従って、アンド397、オア398により
“1"となる。“▲▼”は、Aレジスタの出力を1000
00000000000とするもので、ピッチのエンベロープ演算
中にエンベロープ現在値をマスクする信号E0に従ってナ
ンド400により“0"となる。
第27図は、エンベロープ/キーコード生成回路12で、エ
ンベロープフラグをロードし(タイミング0)、再び書
込む(タイミング11)までの間にCPUから転送されたイ
ンストラクションによって同一チャンネル同一モジュー
ル又はピッチのエンベロープフラグが書き替えられた場
合に、エンベロープ/キーコード生成回路12からRAM7に
エンベロープフラグを書き込むのを禁止する、書込み禁
止回路302の詳細図である。エクスクルーシブ・オア408
〜414、ノア407は比較回路を形成し、インタフェース/
制御部11からのアドレスでチャンネル、モジュール又は
ピッチに担当するビットAA0〜6と、エンベロープ/キ
ーコード生成回路12での演算チャンネル、モジュール又
はピッチに相当するカウンタ3の出力BC5〜11とを比較
し、一致したら“1"を出力する。第28図は書込み禁止回
路302のタイムチャートである。第27図のナンド406の出
力はインタフェース/制御部11がエンベロープ/キー
コード生成回路12で演算しているチャンネル、モジュー
ル又はピッチと同じチャンネル、同じモジュール又はピ
ッチのエンベロープフラグを書込んだ時に“0"となる。
第28図(1)はエンベロープ/キーコード生成回路12で
エンベロープフラグを読出した直後にインタフェース/
制御部11が同一チャンネル、同一モジュール又はピッチ
のエンベロープフラグを書込んだ場合であり、はタイ
ミング1の後半から0となって書込みを禁止する。尚タ
イミング0以前にが“0"となっていてもオア404によ
ってタイミング0でフリップフロップ403は“1"にセッ
トされるので書込みは禁止されない。(2)はエンベロ
ープ/キーコード生成回路12がエンベロープフラグを書
込む直前にインタフェース/制御部11が同一チャンネ
ル、モジュール又はピッチのエンベロープフラグを書込
んだ場合であり、はタイミング11の後半で0となって
書込みを禁止する。したがって、タイミング1〜11の間
に同一チャンネル、同一モジュール又はピッチのエンベ
ロープフラグが、インタフェース/制御部11で書込まれ
たらエンベロープ/キーコード生成回路12からのエンベ
ロープフラグの書込みを禁止する。
第29図は指数データ用アドレス生成回路306の詳細図で
ある。フリップフロップ415〜420、反転出力フリップフ
ロップ421は演算回路308で生成された最終エンベロープ
及び最終キーコードを指数変換/位相角生成回路13で指
数変換してメモリに書込む際の書込みアドレスを記憶す
る。クロックインバータ425〜434は書込みP1アドレスと
読出しアドレスC1〜5をタイミング信号T2によって切換
えることにより、アドレス信号DA1〜5を生成する(ア
ドレスDA0は書込みアドレスと同じ)。指数変換された
エンベロープ、及び周波数情報は、アンド422、423によ
って生成されたWEE、WEF、アドレスDA0〜5によって夫
々メモリに書込まれる(詳細は後述)。
次に演算回路308を第30図を用いて説明する。上述した
ような第17図の制御信号によって演算回路308は第20A図
の動作フローのように動作を行っている。
第31図はAレジスタの詳細図である。Aレジスタは、下
位側FF485〜492、上位側FF493〜499およびFFへの入力選
択用クロックナンド454〜461、クロックインバータ462
〜483、及びFF出力のバスD0〜7への出力用クロックイ
ンバータ500〜514、及び加減算器440のA入力への出力
変更用ゲート群515〜531によって構成されている。信号
RAはデータバスD0〜7と演算出力L0〜14からのFFへの入
力選択、▲▼はD0〜7を上位側FF493〜499にロー
ドする際に下位側FF485〜492にオール1を入力する信号
である。尚、下位側FF485〜492にオール1がロードされ
るのは▲▼が“0"でクロックCKALが出た時であ
る。また、信号AL′、AM′は、Aレジスタ下位又は上位
のデータをデータバスD0〜7に出力するか否かを制御す
るものである。データ群515〜531は加減算器440のA入
力へのデータを変更するもので、A0′が“1"ならばオー
ル0、▲▼が0ならば00000010……0(第20A図
動作フローにおけるエンベロープステップの更新処理9
F′;AM←1+sに対応)、▲▼が“0"ならば
第25図よりA0′は1なので10……0(ピッチのエンベロ
ープのスタートデータに相当)。
第32図は、Bレジスタの詳細図である。Bレジスタは下
位側FF564〜571、上位側FF572〜578、及びFFへの入力選
択用クロックナンド532〜539、クロックインバータ540
〜562、及びデータバスD0〜7への出力用クロックナン
ド579〜593、及びシフト回路438への出力を変更するゲ
ート594〜616によって構成されている。信号RBは、デー
タバスD0〜7と演算出力L0〜14からのFFへの入力選択、
▲▼はD0〜7を上位側FF572〜578にロードする際
に下位側FF564〜571にオール1を入力する信号である。
尚、下位側FF564〜571にオール1がロードされるのは、
▲▼が“0"でクロックCKBLがでた時である。ま
た、信号BL′、BM′は、Bレジスタの下位又は上位のデ
ータをデータバスD0〜7に出力するか否かを制御するも
のである。ゲート群594〜616はシフト回路438への出力
データを変更するもので、Bが“1"ならBレジスタ上位
を出力、“0"ならばM又はアSレジスタをBレジスタ上
位のかわりにシフト回路438へ出力する。B0′が“1"、
Bが“1"ならば出力BI0〜14はオール0となり、B0′が
“1"、Bが“0"ならば、上位7ビットはM又はSレジス
タの出力、下位8ビットはオール0となる。又信号5が
“1"のときはBは“1"なのでB0が“0"ならば出力は1、
BO10、BO9、BO8、0……0となる。これはエンベロープ
レートデータのレンジを広げるためのデータ変換で、BO
11〜BO14によって変換されたデータのシフト又はデータ
加減算の間引き等を行なうことによって、所望範囲のエ
ンベロープの上昇下降速度を得ている。表3にBレジス
タ上位に入っているエンベロープレート;ER6、ER5……
ER0の変換を示す。
第33図はMレジスタの詳細図で、反転出力FF617〜623は
クロックCKMによりデータバスD0〜6のデータを取込
む。クロックノア624〜630は信号Mが“1"のときNレジ
スタのデータを出力するものでMが“1"、MO0が“1"の
ときオール0を出力する。
第34図にシフト制御回路447を示す。クロックインバー
タ643〜645、クロックノア634、637、640の制御入力に
より信号14が“1"のときすなわち第20A図動作フロー
における最終エンベロープの演算処理“E←A−M(E
←Eij−AMDj)”のときだけSレジスタ下位3ビット
(モジュレーション感度)に応じたシフト制御信号SH
1、2、4、8を出力する。尚、シフト回路438は、SH
1、2、4、8の信号が“1"のときそれぞれ1左シフト
(×1/2)、2左シフト(×1/4)、4左シフト(×1/1
6)、8左シフト(×1/256)を行うもので、例えばSH
1、2、4、8がそれぞれ1、0、1、0ならばトータ
ルで5左シフト(×1/32)のシフトを行なうものである
(図示せず)。したがって“A←A−M(A←Eij−AMD
j)”の時はモジュレーション感度MSijに応じて各モジ
ュール毎に重み付けされ、振幅モジュレーションがかけ
られる。尚、MSijが0のきはアンド649の出力MO0が“1"
となるため、演算は“A←A−0"となりモジュレーショ
ンはかからない。次に12Pが“1"のとき、すなわち第20A
図動作フローにおける最終ピッチエンベロープの計算
“B←±A+B(←±PMDj+Epj)”のときは、SH1、
2、4、8がそれぞれ、0、1、0、0となり2左シフ
ト(×1/4)される(演算説明は後述)。また、15Pが
“1"のときすなわち動作フローにおける振幅モジュレー
ションの補間演算“A←A±M(A←AMDj±MRj)”の
ときは、MTが“0"なら、SH1、2、4、8は0、0、
1、0で4左シフト(×1/16)、MTが“1"ならSH1、
2、4、8は1、0、1、0となり5左シフト(×1/3
2)となる。ここで、前述したようにMRjはアフタータッ
チ等の検出量の前回検出量との差の絶対値であるから、
MT=“0"なら今回検出量である目標値MLjに到達するた
めには、MRjの加減算が16回必要となる。すなわち、第1
9図のタイムチャートから16×1.2288=19.6608(msec)
で到達することになる。これはmin19.6608msec毎にアフ
タータッチ等の検出データから算出したMLj、MRjをCPU
が転送すれば、音源LSI内部でデータを補間し、なめら
かなデータを生成することを意味している。また、MT=
“1"ならばMRjの加減算が32回必要となり、補間演算の
周期は、39.3216msecとなる。次にタイミング5につい
て考える。信号5が“1"であるからAND631〜633、635、
636、639、641が有効になるため、SH1、2、4、8の値
が▲▼〜▲▼によって決まり(表
4)、表3に示すようなデータのシフトが行なわれる。
尚、上記以外のタイミングでは、SH1、2、4、8は常
に0、0、0、0となるため、シフトは行なわれない。
第35図はエンベロープ制御回路448の詳細図である。エ
ンベロープ制御回路448は、タイミング5の演算でエン
ベロープを上昇、下降させるか、または停止させておく
かを制御するイネーブル信号▲▼を作るものであ
る。信号▲▼は、ナンド665により、▲▼が
“0"すなわち、ホールド中、またはが“1"すなわち、
エンベロープがステップの切替わり点におり、進むべき
方向を判定中のときは“1"となり、エンベロープを固定
させる。また、インバータ651〜654、カウンタ655、フ
リップフロップ656〜659、アンド660〜663、オア664は
エンベロープの傾きを変えるために、エンベロープ演算
の間引き信号を発生する回路を形成しており、オア664
の出力が0のとき、演算が間引きされるように▲▼
が“1"となる。表5にエンベロープレートの上位4ビッ
トのデータであるBレジスタ出力▲▼〜▲
▼の値と演算のイネーブル信号▲▼が“0"とな
るカウンタ値の関係を示す。
したがって表3の下部のような演算の間引きが行なわれ
る。
第36図はデータ変更回路439の詳細図である。タイミン
グ12Pのとき、信号12Pは“1"となるから、ゲート回路66
6〜677により、出力BI″12〜14は BI″12=▲▼、BI″13=▲▼、B
I″14=BI′12 となる。タイミング12Pの演算は第20A図の動作フローで
は、“B←±A+B(B←±PMDj+Epj)”であり、B
I′0〜14は、Bレジスタ427の出力を左2シフトしたも
のであるから、Bレジスタの出力BI0〜14をデータに対
応させて▲E0 pj▼〜▲E14 pj▼とおくと、加減算器440
のB入力BI′0〜11、BI″12〜14は、 ▲E14 pj▼ ▲14 pj▼ ▲14 pj▼ ▲E13 pj▼ ▲
12 pj▼……▲E2 pj▼ となる。これはピッチのエンベロープのレンジを中心レ
ベル10……0のまわりに1/4に圧縮したことを意味す
る。次に、タイミング18のとき信号18は“1"となる
から、ゲート回路666〜677により出力BI12〜14は BI″12=BI′12、BI″13=BI′13、 BI″14=▲▼ となる。タイミング18の演算は第20A図の動作フロー
では“A←A+B(A←KCj+PEpj)”であるから、B
レジスタの出力BI0〜14をデータに対応させて▲PE0 j
〜▲PE14 j▼とおくと加減算器440のB入力BI′0〜11、
BI″12〜14は、 ▲14 j▼ ▲PE13 j▼ ▲PE12 j▼……▲PE0 j▼ となる。これは、最終的なピッチのエンベロープを中心
レベルより上なら正、下なら負の2の補数表示にしたこ
とになる。すなわちこれをキーコード;KCjに加算する
際に、最終的なピッチのエンベロープを10……0を中心
にしてそれより大きければその差を加算、小さければそ
の差を減算することに相当しており、キーコードに反映
されるピッチエンベロープを中心レベルに対して対称化
している。
第37図は符号生成回路449の詳細図である。信号ASは加
減算器440のA入力側の符号で、12P、▲▼が“1"の
とき、ナンド678、681により“1"となる。すなわち、第
20A図動作フローの“B←±A+B(B←±PMDj
Epj)”のA側の符号は、F2(データPMDjのMSB)が“1"
なら正、“0"なら負ということになる。また、7.Pが
“1"、F2が“1"ならばインバータ679、ナンド680、681
によりASが“1"となる。すなわち動作フローに示すピッ
チエンベロープの目標値演算“A←A±M(0)(A←
ELpj(S)±ELCpj)”において、F2が“1"ならばピッチの
エンベロープレベルデータが中心レベルに対して反転
し、第38図(b)のようなエンベロープとなる((a)
は反転しない場合)。ここに、F2はタイミング2で取り
込まれた▲ERC7 j▼であり、これはキーコードの変化の
方向、すなわち、前回の押鍵と今回の押鍵の位置関係を
表わしている。尚、この時加減算器のLSBの誤差が出る
場合があるが十分小さいので問題ない。したがって信号
▲▼は、加減算器440で演算“*←−A±*”が
行なわれる時“0"となる。信号BSは加減算器440のB入
力側の符号で、▲▼=“0"(タイミング8、14、
16P)のとき常に“1"である。また、タイミング5又は
8のとき信号5.8が“1"のとき、P又は▲▼が
“1"、が“0"ならば、オフ687、ノア686、ナンド689
により▲▼=▲▼となる(それ以外では
“1")。すなわち、 5.8;エンベロープ更新又はエンベロープと目標値との比
較 PV▲▼;ピッチの演算又はステップ0以外の時 =“0";ステップの切換わり点での方向判定でない時
(後述) にはナンド689の出力▲▼は▲▼となり、符
号BSは5のときS4、8のとき“1"(▲▼=0だか
ら)となる。また、SF2が“1"、つまり、タイミング
0、15P、16Pのときはナンド685の出力F2′はF2となる
(それ以外では“1")。すなわち、“0";周波数レート
の加減算”、“15P;モジュレーションレートの加減
算”、“16P;振幅モジュレーションと目標値の比較”の
ときにはF2′はF2、符号BSは▲▼となる。また、タ
イミング7でP=0のとき、ナンド684の出力は0、BS
は“1"となる。すなわち、動作フロー“A←A±M
(0)(A←ELij(S)±ELCij”でピッチの演算でないと
きには符号BSは“1"となる。P=1のときは符号BSはFA
14となる。したがって、第38図の矢印で示すように、ピ
ッチのエンベロープレベルは反転後のデータが中心レベ
ルよりも上;FA14=“1"のとき(第39図参照)は減算、
下;FA14=“0"のとき(第39図参照)は加算となる。以
上のように第37図の符号生成回路449は加減算器440にお
ける各入力の符号AS、BSを生成し、動作フロー(第20A
図)が実現される。
第39図は加減算器440、出力クリップ回路441を示すもの
である。加減算器440は、オア691、エクスクルーシブ・
オア692〜699等、加算器700によって構成され、符号A
S、BSによってA±B又は±A+Bが実行される。FA1
4、FB14、CO、S14は夫々、加算器のA入力MSB、B入力M
SB、CARRYOUT、出力MSBである。
第40図は動作フローにおける分岐フラグF′の基になる
信号Fを発生するフラグ発生回路450の詳細図である。
クロックCKFはタイミング5、8、15P、16Pのときのみ
発生するのでその場合のみ考える。まず、が“0"なら
ばタイミング5のとき信号5、8が“1"なのでナンド71
4が有効になり、ナンド714の出力はS4′、ナンド715の
出力は▲▼となる。▲▼は“1"なのでナンド
719の下入力は“1"だから▲▼が“1"、COが“1"
又は▲▼が“0"、COが“0"ならばFF720は“1"が
セットされる。これは、エンベロープ更新時にオーバー
フロー又はアンダーフローをしたらフラグFをセットす
ることに相当する。が“0"でタイミング8のとき、同
様にしてナンド714の出力は▲▼、ナンド715の出
力はS4′となる。このとき▲▼は“0"なので、タイ
ミング5でフラグFがセットされているならば再度セッ
トされる。フラグFがセットされていない時は、S4′が
“0"、COが“0"又はS4′が“1"、COが“1"ならばFF720
は“1"にセットされる。これは、更新されたエンベロー
プが目標値を上昇中に越えるか、下降中に到達するか越
えたらフラグFをセットすることに相当する。したがっ
てが“0"のときフラグFは、エンベロープが目標値に
到達した時にセットされる。次にが“1"ならば、第37
図より▲▼=“1"、BS=“0"となる。また、第35
図より▲▼=“1"となる。従ってタイミング5で
は、“B←A+0"が行なわれる。その時、第40図でナン
ド715の出力は“1"であり、COは“0"は、▲▼は
“1"であるからフラグはセットされない。タイミング8
では、ナンド715の出力は、“1"なので目標値からエン
ベロープの現在値を引いて目標値が大きいか等しければ
(CO=“1")フラグFを“1"にセットする。すなわち、
+方向のときF=1、−方向のときF=0とフラグをセ
ットする。次にタイミング5、8以外、つまり、タイミ
ング15P、16Pのときは、ナンド715の出力は▲▼
となる。タイミング15Pのとき、▲▼=“0"でCO
=“1"、又は▲▼=“1"でCO=“0"、すなわち振
幅モジュレーションデータを更新中、オーバーフロー又
はアンダーフローしたらフラグFをセットする。タイミ
ング16Pのときは、▲▼=“0"でCO=“1"、又は
▲▼=“1"でCO=“0"、すなわち更新された振幅
モジュレーションが目標値に上昇中に到達するか越える
か、下降中に越えたらフラグFをセットする。以上のよ
うにフラグFはセットされ、動作フロー(第20A図)の
分岐条件となる。
第41図は加減算器440におけるオーバーフローやアンダ
ーフローの発生をモニターし、発生時に演算出力を所定
値に制御する出力クリップ制御回路451の詳細図であ
る。出力信号CT、MX、▲▼はそれぞれ“1"、“1"、
“0"のときに第39図加算器700の出力を10……0、1…
…1、0……0とするものである。まず、タイミング18
すなわち動作フローの“A←A+B(A←KCj+P
Ej)”のとき、前述したように第30図のシフト回路43
8、データ変更回路439によって加減算器440へのB入力
は、 ▲14 j▼ ▲PE13 j▼ ▲PE12 j▼……▲PE0 j▼ となっているため、この時の演算は中心レベル10……0
を境として上が正、下が負の2の補数形式のデータを加
算することに相当する。従って加減算器440の符号AS、B
Sではなく、加算器B入力MSB:FB14が“0"又は“1"のと
きにオーバーフロー、アンダーフローを見なければなら
ない。18が“1"のとき、アンド728、731が有効とな
り、18=“1"、FB14=“1"▲▼=“0"ならばノア
732の出力が“0"、アンド738の出力▲▼が“0"とな
る(MX=“0"、CT=“0")。これは、負のデータを加算
した時、アンダーフローしたらオール“0"にすることに
相当する。18=“1"、FB14=“0"、CO=“1"ならばOR
729の出力MXが“1"となる(▲▼=“1"、CT=
“0")。これは、正のデータを加算した時、オーバーフ
ローしたらオール“1"にすることに相当する。次に、18
=“0"、かつ7∧P=“0"のとき、ノア722の出力
は、BS=“1"又はAS0=“1"のとき“0"となる(“A−
B"又は“−A+B")。そのとき、アンド730が有効とな
り、CO=“0"のときノア732の出力は“0"、アンド738の
出力は“0"となり、▲▼=“0"となる(MX=“0"、
CT=“0")。これはアンダーフローのときオール“0"に
することを意味する。BS=“0"、AS0=“0"のとき(A
+B)、アンド727が有効となり、CO=“1"ならオア729
の出力MXは“1"となる(▲▼=“1"、CT=“0")。
これはオーバーフローのときオール“1"にすることを意
味する。最後にタイミング7かつP=“1"のときを説明
する。S14≠FA14又はCO≠BSのときEXOR733の出力は
“1"、したがってCT=“1"、▲▼=“0(MX=
“0")となる。これはピッチのエンベロープレベルを変
更した際、変更によりデータが中心レベルを越えた時、
第39図の加算器700の出力を中心レベル10……0にする
ことを意味する。以上のようにして第39図加算器700の
出力は制御される。
第42図はSレジスタ及びエンベロープフラグ制御回路44
6の詳細図である。フリップフロップ739〜746はSレジ
スタで、データバスD0〜7をクロックCKSで取込む。S
レジスタの内容はP=1又はP=0のタイミング1〜13
のときエンベロープフラグであり、そのタイミングの
みでエンベロープフラグ制御回路446の出力は意味をも
っている。▲▼はエンベロープフラグがナンド74
7より、“*0**0000"すなわちノーマルモードのステ
ップ0のとき0となる信号である。は、ステップの切
換わり点で方向判定する時に“1"となる信号でナンド74
7、749、オア748、インバータ753によりP=“1"又は▲
▼=“1"で▲▼=“1"のとき、すなわち、振
幅エンベロープのステップ0以外でノードフラグが0だ
ったら=“1"となる。E0はタイミング5の演算“B←
A±B[B←Eij±(ERij(s)+ERCj)]”でA入力を0
とする信号で、ナンド747、ノア752、インバータ759、
アンド760、オア761により、▲▼=▲▼=0の
とき、すなわちモードがマスクのとき、又は▲▼
=0かつ▲▼=1、すなわち、ステップ0の最初に
“1"となる。尚、ノーマルモードではステップ0の最初
にA入力が0となるため、エンベロープは必ず0からス
タートすることになる。F′は動作フロー(第20A図)
の分岐のためのフラグで、オア762、763、インバータ76
4、アンド765により、タイミング9以外ではF′=F、
タイミング9では=“0"、かつS3=“0"のときにF′
=F、それ以外でF′=“0"となる。すなわち、タイミ
ング9では方向判定中、又はホールド中F′=0、それ
以外ではF′=Fとなる、次に出力BI8〜BI14について
説明する。これらはタイミング9のときだけ、エンベロ
ープフラグ制御回路446の出力となる。BI8〜10はS0〜S2
となる。BI11は、=“0"、かつエンベロープフラグが
“*0***111"でなく、かつF=“1"、F1=“1"のと
き“1"となりそれ以外は、もとの値▲EF3 ij▼となる。
すなわち、方向判定中でなく、ノーマルモードのステッ
プ7でなく、F1(エンベロープレベルの8ビット目=サ
スティンフラグ)が“1"のとき到達したら、ホールドの
フラグ▲EF3 ij▼は“1"となる。BI12は、=“1"のと
きF=“0"なら“1"となる。すなわち、=“1"のとき
判定結果が−方向ならば符号ビット▲EF4 ij▼を“1"に
する。また、=“1"、かつF=“0"以外の時は、ナン
ド754の出力が“0"すなわちサスティンレベル到達時に
はBI12を“0"とする。また、▲▼=1すなわちステ
ップの切換わり点にいる時はBI12を0とする。それ以外
ではBI12は元の値▲EF4 ij▼となる。BI13は=“0"、
かつ▲▼=1、かつF=1のとき、すなわち、方向
判定中でなく、サスティン中でない時到達したら“0"と
なり、それ以外は“1"となって、ステップの切換りを示
すフラグとなる。レジスタA、Bの上位をRAM7に書込む
時8ビット目には、Sレジスタの8ビット目をSMSBによ
って書込む。以上説明したように第42図エンベロープフ
ラグ制御回路はエンベロープフラグに応じた信号▲
▼、、F′、E0を出力するとともにエンベロープフ
ラグの設定を行なう。エンベロープフラグはキーオン
後、通常、ステップ0からスタートし(ピッチエンベロ
ープは方向判定後スタート)、到達したらステップに1
が加算され、ノードフラグ▲EF5 ij▼を表わす0にして
方向判定を行い、符号フラグ▲EF4 ij▼をセットして次
ステップをスタートする。もし、到達した時サスティン
フラグ(エンベロープレベル ELij(S)のMSB)が“1"な
らホールド状態となりエンベロープは固定される。その
後コーオフがCPU3から来たらホールドが解除されて次ス
テップをスタートする。尚、ループモードでサスティン
フラグが最終のステップ7にあったら、エンベロープフ
ラグは011*0111→01101111+1=01010000となりステ
ップ0に戻るためエンベロープが最初からくり返され
る。
以上第30図の演算回路を説明したが、このような動作を
行なうことによって、演算回路は第20A図の動作フロー
のような演算を実行し、最終エンベロープ及び合成キー
コードを生成し、指数変換/位相角生成回路13に転送す
る。
第43図は、外部RAMインタフェース16の詳細図である。
第44図(a)はインターフェース/制御部11から、
(b)はエンベロープ/キーコード生成回路12からのRA
Mへの書込みタイミングである。アドレス信号RA0〜11
は、インタフェース/制御部11からのアドレスAA0〜1
1、エンベロープ/キーコード生成回路12からのアドレ
スBA0〜11を、夫々のRAM占有時間(第3図)に基づいて
クロックインバータ777〜801に切換えることにより得ら
れる。書込みイネーブル信号▲▼は、インタフェ
ース/制御部11からの書込み信号▲▼が“0"となっ
た時(ただし、内部メモリの使用を示す信号IDが“1"で
ない時)、または、エンベロープ/キーコード生成回路
12からの書込み信号▲▼が“0"となった時、タイミ
ング信号▼▼が“0"の巾で“0"となる。また、出力
イネーブル信号▲▼は▲▼、▲▼が共に
“1"のとき信号CK2が“0"の巾で“0"となる。データRD0
〜7は▲▼又は▲▼が“0"のとき、信号▲
▼が“0"の巾で、音源LSI6からの出力となる。
第45図は、第2図の指数変換/位相角生成回路13のブロ
ック図である。エンベロープ/キーコード生成回路12で
生成されたエンベロープ及びキーコードは、クロックCK
Eでフリップフロップ(FF)1000に取込まれる。FF1000
の出力は指数ROM1001で変換されてエンベロープレジス
タ1002、周波数情報レジスタ1004に入力される。第46図
はエンベロープレジスタ1002の詳細図である。エンベロ
ープレジスタ1002は、2つのRAM(ENVERAM、ENVORA
M)、FF1014〜1019など、インバータ1027、クロックイ
ンバータ1020〜1026、1028〜1033など、及びインバータ
1008、1010、ナンド1009、1011によって構成され、第48
図(a)のタイムチャートのように動作する。カウンタ
1(第18図)はエンベロープ/キーコード生成回路12の
基本タイミングを示しており、FF415〜421(第29図)の
データ出力をタイミング0から切替わる。FF415〜420の
データはエンベロープレジスタ1002、周波数情報レジス
タ1004への書込みチャンネル(DA0〜2)、モジュール
(DA3〜5)を示すアドレスに対応し、T2が0のときの
みDA1〜DA5のデータとなる(DA0は常にFF415の値と対
応)。また、FF1000の出力は第48図のように切替わり、
WEEがタイミング0で“1"となるので、DA0が“0"のとき
(偶数チャンネル)にはナンド1009が“0"となるのでT2
=“0"のときにタイミング信号Wが“1"の巾でENVERAM1
012の所定アドレス(FF416〜420の反転)にデータが書
込まれる。またDA0が“1"のとき(奇数チャンネル)に
はナンド1011が“0"となり。ENVORAM1013にデータが書
込まれる。T2が“1"のときは、アドレスDA1〜5は、タ
イミング信号発生回路159(第6図)の出力C1〜5の反
転であるから、C1〜5の値に対応したチャンネル、モジ
ュールのデータを読出す、バッファ1020〜1026、1028〜
1033、インバータ1027により、T2=“1"のときにはENVE
RAM1012、T2=“0"のときにはENVORAM1013からT2=“1"
で読出されたデータをFF1014〜1019で遅らせたデータで
出力E0〜11となる。したがって、エンベロープレジスタ
102はエンベロープ/キーコード生成回路12のタイミン
グでデータが書込まれ、インタフェース/制御部11のタ
イミングで読出され、FF1003を介して波形生成回路15に
送られる。
第47図は周波数情報レジスタ1004の詳細図で、エンベロ
ープレジスタ1002と全く同様の動作をする。読出された
周波数情報FI0〜20はFF1005を介し、位相角生成用の累
算器(加算器1006、シフトレジスタ1007)へ送られ、位
相角が生成される。
第49図は、OCレジスタ14の詳細図である。OCレジスタ14
はエンベロープレジスタ1002や周波数情報レジスタ1004
と同様に偶数チャンネル用RAM(OCERAM)、奇数チャン
ネル用RAM(OCORAM)からなり、それを交互にREADする
ことによって常に読出しながら書込めるレジスタであ
る。インタフェース/制御部11からのアドレスAA0〜
2、4〜6が書込み用アドレス、C1〜C5が読出し用アド
レスでT2が“1"の時が読出し、“0"のときが書込み可能
となっている。フリップフロップ1076B〜1083B、1101〜
1103、シフトレジスタ1104は制御信号C0〜3をタイミン
グ遅延させるもの、ゲート1105〜1116は、制御信号C5〜
9を生成するためのものである。
第50図は、波形生成回路15のブロック図である。波形生
成回路15は本件出願人に係る特願昭61−55008号に示す
回路とほぼ同様な動作を行なう。まず、位相角P0〜11が
セレクタ1118で選択され、FF1119、位相角変換回路112
0、シフトレジスタ1121を介して正弦波ROM1122に入力さ
れ、波形信号sinX′となる。尚、位相変換回路1120は、
制御信号の値に従って正弦波に位相歪みを導入するもの
で、対応する波形は第51図のようになる。波形信号sin
X′は、シフトレジスタ1136、加算器1137、FF1138を介
した(ゲート回路1135の出力は0とする)エンベロープ
E″と乗算器1124で乗算され、FF1125を介して出力され
る。この出力は、楽音として出力される場合は楽音出力
を累算するためのレジスタ(セレクタ1127、FF1128、ゲ
ート回路1129)からの出力がセレクタ1130、ゲート回路
1131を通ったデータと加減算器1126で加減算される。第
52図に波形生成回路15のタイムチャートを示す。C0〜5
は第6図タイミング信号発生回路159のカウンタ出力
で、C1〜5は第45図エンベロープレジスタ1002、周波数
情報レジスタ1004、第2図OCレジスタ14の読出しアドレ
スになっている。また、その1ビット遅れは、波形形成
回路(第50図)の基本タイミングになっており、6ビッ
ト中下位3ビットがチャンネル、上位3ビットがモジュ
ールの演算に相当している。信号P、X′、E′、
E″、E″sinX′、R′Rは夫々、モジュール0、チャ
ンネル0の演算からモジュール7、チャンネル7の演算
までの1サイクルのタイミングを示している。波形の生
成は制御信号C0〜9によってセレクタ1118、1127、113
0、1132、ゲート回路1129、1131、1135、位相角変更回
路1120、加減算器1126を制御することによって行なわれ
る。表6にCPUから入力されるOCデータ上位4ビットに
対応する演算で示す(第49図参照)。
これらの演算制御によって、波形が生成される。
以下に波形生成例を示す。ただし、iはモジュールNo、
jはチャンネルNoとする。
1)Ei1jsin(EijsinPij) オペレーションコードは ij **000000(上位4ビットは0010でもよい) i+1j 101*0000 i+2j 000***** となる。これにより、表6のように、モジュールi、チ
ャンネルjの波形は、位相角としてPが選択され、その
出力E″sinX′はモジュールi+1、チャンネルjの位
相となる。モジュールi+1、チャンネルjの波形出力
E″sinX′は楽音出力と累算される。尚、制御信号C6〜
9は位相Xから8ビット遅れで出力される波形に対する
ものだから、例えば、i+1、jの制御信号はモジュー
ルi、チャンネルjの波形出力に対するものとなってい
る。
2)Ei2jsin(EijsinPij−Ei1jsinPi+1j) オペレーションコードは、 ij **000000(上位4ビットは0010でもよい) i+1j 10000000 i+2j 111*0000 i+3j 000***** となる。これにより、表6のようにモジュールi、チャ
ンネルjの波形は位相角としてPが選択され、その出力
E″sinX′はシフトレジスタ1133に入力される。モジュ
ールi+1、チャンネルjの波形は位相角としてPが選択
され、その波形はシフトレジスタ1134の出力Rから減算
されてモジュールi+2、チャンネルjの位相角となる。
そして、モジュールi+2、チャンネルjの波形出力E″s
inX′は楽音出力として累算される。以上のようにオペ
レーションコードによって、波形生成が様々に行なわれ
ることによって、多くの音色の楽音を発生できる。出力
波形は生成された波形を順次累算していくが、第52図で
C0〜C5の値が“9"のときに新たな演算サイクルの波形が
FF1128に取込まれるが(出力されない波形=位相となる
もの)、その時のFF1128の出力が前サイクルの波形の累
算値であるので、それをラッチ1139で取込む(CKL)こ
とによってラッチ1139は各演算サイクル毎の波形最終累
算値を出力することになる。尚、ゲート回路1140は信号
OMが“0"のとき出力をオール0(中心レベル)にするも
ので、リセット後モードデータがセットされるまでそれ
を維持する。すなわち、パワーオン等により外部リセッ
ト信号が発生すると、タイミング信号発生回路159によ
り内部リセット信号が発生し、これが第6図のモードの
ラッチ156をリセットし、その出力OMを“0"にするた
め、ゲート回路1140の出力、すなわちDAC8に送られる信
号出力に無音レベルのオールゼロに置かれる。一方、CP
U3はインタフェース/制御部11を通じて、外部RAM7に音
色等の所要データを設定し、最後にインストラクション
“モード”を送ってモードラッチ156〜158をセットす
る。これによりOMは“1"となり、ゲート回路1140はイネ
ーブルされ、波形生成回路15で演算した波形信号がDAC8
に送られるようになる。つまり、電源投入後、外部RAM7
における所要データの設定が完了し、音源LSI6が正規の
楽音信号を合成可能になるまでの間、DAC8への入力は無
音状態のレベルに維持されるようになっている。
[考案の効果] 以上説明したように、この考案では同一の演算回路ハー
ドウェアでモジュレーションのかかっていないエンベロ
ープの演算、モジュレーションデータの線形補間演算及
び補間モジュレーションデータによる出力エンベロープ
の変調演算を行っているので回路規模を縮少化できると
ともに、クリック音等の楽音ノイズのないなめらかなモ
ジュレーション効果を得ることができる。
【図面の簡単な説明】
第1図は本考案の一実施例に係る電子楽器の全体構成
図、第2図は音源LSIのブロック図、第3図は音源LSIの
インタフェース部とエンベロープ/キーコード生成回路
による外部RAM占有の割振を示すタイムチャート、第4
図はCPUから音源LSIのインタフェース/制御部に送られ
るデータと書込制御信号のタイムチャート、第5図は楽
音制御信号生成のための低速演算周期と波形生成のため
の高速演算周期とを示すタイムチャート、第6図はイン
タフェース/制御部の詳細図、第7図はタイミング信号
発生回路が発生する信号の一部のタイムチャート、第8
図はタイミング信号発生回路が発生するその他の信号の
タイムチャート、第9図はタイミング信号発生回路の詳
細図、第10図はインストラクションデコーダの詳細図、
第11図は1バイト長のデータの転送インストラクション
に対するインタフェース/制御部の動作を示すタイムチ
ャート、第12図は2バイト長のデータの転送インストラ
クションに対するインタフェース/制御部の動作を示す
タイムチャート、第13図はフラグセットのインストラク
ションに対するインタフェース/制御部の動作を示すタ
イムチャート、第14図はキーオフのインストラクション
に対するインタフェース/制御部の動作を示すタイムチ
ャート、第15図はOCレジスタへの書込みインストラクシ
ョンに対するインタフェース/制御部の動作を示すタイ
ムチャート、第16図はモードの設定インストラクション
に対するインタフェース/制御部の動作を示すタイムチ
ャート、第17図はエンベロープ/キーコード生成回路の
ブロック図、第18図はエンベロープ/キーコード生成回
路の動作サイクルを与えるカウンタBの詳細図、第19図
はカウンタBのタイムチャート、第20A図はエンベロー
プ/キーコード生成回路による演算のフローチャート、
第20B図はエンベロープ/キーコード生成回路の動作を
まとめた図、第21図はCPUから与えられる振幅モジュレ
ーション生成用データを示すグラフ、第22図は演算用タ
イミング信号発生回路の詳細図、第23図はクロック発生
回路の詳細図、第24図は演算用アドレス生成回路の詳細
図、第25図は演算用制御信号発生回路の詳細図、第26図
は演算用制御信号発生回路におけるタイムチャート、第
27図は書込み禁止回路の詳細図、第28図は書込み禁止回
路の動作を示すタイムチャート、第29図は指数データ用
アドレス生成回路の詳細図、第30図は演算回路の詳細な
ブロック図、第31図はAレジスタの詳細図、第32図はB
レジスタの詳細図、第33図はMレジスタの詳細図、第34
図はシフト制御回路の詳細図、第35図はエンベロープ制
御回路の詳細図、第36図はデータ変更回路の詳細図、第
37図は符号生成回路の詳細図、第38図はフラグによるピ
ッチエンベロープの反転を示すグラフ、第39図は加減算
器と出力クリップ回路の詳細図、第40図はフラグ発生回
路の詳細図、第41図は出力クリップ制御回路の詳細図、
第42図はSレジスタとエンベロープフラグ制御回路の詳
細図、第43図は外部RAMインタフェースの詳細図、第44
図は外部RAMインタフェースの動作を示すタイムチャー
ト、第45図は指数変換/位相角生成回路のブロック図、
第46図はエンベロープレジスタの詳細図、第47図は周波
数情報レジスタの詳細図、第48図は指数変換/位相角生
成回路のタイムチャート、第49図はOCレジスタの詳細
図、第50図は波形生成回路の詳細図、第51図は波形生成
回路において制御信号により歪みの生じる正弦波のセッ
トを示す波形図、第52図は波形生成回路のタイムチャー
トである。 1……鍵盤、2……スイッチ、3……CPU、11……イン
タフェース/制御部、12……エンベロープ/キーコード
生成回路、308……演算回路、301……演算用アドレス生
成回路、302……書込み禁止回路、303……カウンタB、
304……クロック発生回路、305……演算用タイミング信
号発生回路、307……演算用制御信号発生回路、MLj……
CPUからの現モジュレーションデータ、MRj……現モジュ
レーションデータと前モジュレーションデータとの差分
値データ、AMDj……補間モジュレーションデータ。

Claims (1)

    【実用新案登録請求の範囲】
  1. 【請求項1】演奏入力装置(1、2)の演奏状態をモニ
    ターするCPU(3)によって制御され、演奏状態に従っ
    て楽音を合成するため、メモリ(7)と、上記CPUから
    転送されるデータを上記メモリに書き込むインターフェ
    ース回路手段(11)と上記メモリのデータを利用してエ
    ンベロープ等の楽音制御信号を生成する楽音制御信号生
    成回路手段(12)と、上記楽音制御信号生成回路手段に
    よって生成された楽音制御信号に従って楽音波形を生成
    する波形生成回路手段(15)とを備える楽音合成装置に
    おいて、 上記楽音制御信号生成回路手段は、 演算回路手段(308)と、 上記演算回路手段を制御するための制御回路手段(301
    −305、307)を有し、 上記演算回路手段は、演算サイクルを繰り返し実行する
    単一の演算回路ハードウェアから成り、 (A)上記演算サイクルの第1の演算ステップにおい
    て、上記メモリのエンベロープ制御データに基づいて第
    1のエンベロープを演算し、 (B)上記演算サイクルの第2の演算ステップにおい
    て、上記CPUから所定のサンプリング周期で転送され、
    上記インタフェース回路手段によって、上記メモリに記
    憶される現モジュレーションデータ(MLj)、及び現モ
    ジュレーションデータと前モジュレーションデータとの
    差分値データ(MRj)とに基づき現モジュレーションデ
    ータを目標レベルとして、この差分値データを上記サン
    プリング周期対上記演算サイクルの周期の比に相当する
    圧縮率で圧縮した値で変化する、補間されたモジュレー
    ションデータ(AMDj)を演算し、 (C)上記演算サイクルの第3の演算ステップにおい
    て、上記第1のエンベロープ(Eij)を上記補間された
    モジュレーションデータで変調して演算出力としてのエ
    ンベロープを演算、出力する、 ことを特徴とする楽音合成装置。
JP1987151603U 1987-10-02 1987-10-02 楽音合成装置 Expired - Lifetime JPH0738956Y2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1987151603U JPH0738956Y2 (ja) 1987-10-02 1987-10-02 楽音合成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1987151603U JPH0738956Y2 (ja) 1987-10-02 1987-10-02 楽音合成装置

Publications (2)

Publication Number Publication Date
JPS6455991U JPS6455991U (ja) 1989-04-06
JPH0738956Y2 true JPH0738956Y2 (ja) 1995-09-06

Family

ID=31425791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1987151603U Expired - Lifetime JPH0738956Y2 (ja) 1987-10-02 1987-10-02 楽音合成装置

Country Status (1)

Country Link
JP (1) JPH0738956Y2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2769690B2 (ja) * 1996-08-27 1998-06-25 ローランド株式会社 遅延装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5810496B2 (ja) * 1979-04-06 1983-02-25 愛知紡績株式会社 コ−マ機における吸引気流調節方法
JPS6045296A (ja) * 1983-08-22 1985-03-11 カシオ計算機株式会社 電子楽器
JPS60260997A (ja) * 1984-06-08 1985-12-24 カシオ計算機株式会社 電子楽器
JPS6132897A (ja) * 1984-07-25 1986-02-15 カシオ計算機株式会社 電子楽器
JPS61132998A (ja) * 1984-11-30 1986-06-20 カシオ計算機株式会社 電子楽器
JPS6217798A (ja) * 1985-07-17 1987-01-26 カシオ計算機株式会社 波形読み出し装置
JPS62205398A (ja) * 1986-03-05 1987-09-09 日本電気株式会社 音声合成装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5810496U (ja) * 1981-07-09 1983-01-22 ヤマハ株式会社 電子楽器の楽音制御装置
JPS60112295U (ja) * 1984-01-05 1985-07-30 ロ−ランド株式会社 電子楽器のプリセツト装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5810496B2 (ja) * 1979-04-06 1983-02-25 愛知紡績株式会社 コ−マ機における吸引気流調節方法
JPS6045296A (ja) * 1983-08-22 1985-03-11 カシオ計算機株式会社 電子楽器
JPS60260997A (ja) * 1984-06-08 1985-12-24 カシオ計算機株式会社 電子楽器
JPS6132897A (ja) * 1984-07-25 1986-02-15 カシオ計算機株式会社 電子楽器
JPS61132998A (ja) * 1984-11-30 1986-06-20 カシオ計算機株式会社 電子楽器
JPS6217798A (ja) * 1985-07-17 1987-01-26 カシオ計算機株式会社 波形読み出し装置
JPS62205398A (ja) * 1986-03-05 1987-09-09 日本電気株式会社 音声合成装置

Also Published As

Publication number Publication date
JPS6455991U (ja) 1989-04-06

Similar Documents

Publication Publication Date Title
JPS5865493A (ja) 波形発生装置
JPH0738956Y2 (ja) 楽音合成装置
JPH0738955Y2 (ja) 楽音合成装置
JP2527652Y2 (ja) 楽音合成装置
JP2718039B2 (ja) 楽音合成装置
JP2753511B2 (ja) 楽音合成装置
JP2722460B2 (ja) 楽音合成装置
JPH0750799Y2 (ja) 楽音位相同期装置
JPH0746960Y2 (ja) 楽音合成装置
JPS6229794B2 (ja)
US4936179A (en) Electronic musical instrument
JPS6374100A (ja) 波形読出装置
JPS5839B2 (ja) 電子楽器
JP2968320B2 (ja) ディストーション装置
JP3223560B2 (ja) 波形データ読出し装置
JP3523369B2 (ja) ダイレクトデジタルシンセサイザ
JP2797138B2 (ja) 電子楽器用処理装置
JP2707885B2 (ja) ビット数変換装置
JPH02179697A (ja) 処理装置
JPH02125296A (ja) 電子楽器
JP2510090Y2 (ja) 楽音信号発生装置
JP2727451B2 (ja) 楽音発生装置
JPH0460595A (ja) 電子楽器用処理装置
JPH0460725A (ja) デジタルマイクロコンピュータ
JPH0460723A (ja) デジタルマイクロコンピュータ