JP2753511B2 - 楽音合成装置 - Google Patents
楽音合成装置Info
- Publication number
- JP2753511B2 JP2753511B2 JP62249467A JP24946787A JP2753511B2 JP 2753511 B2 JP2753511 B2 JP 2753511B2 JP 62249467 A JP62249467 A JP 62249467A JP 24946787 A JP24946787 A JP 24946787A JP 2753511 B2 JP2753511 B2 JP 2753511B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- circuit
- tone
- envelope
- memory
- 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 - Fee Related
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
- Polyurethanes Or Polyureas (AREA)
Description
【発明の詳細な説明】
[発明の技術分野]
この発明は電子楽器等の楽音合成装置のアーキテクチ
ャーに関する。 [発明の背景] 一般に、電子楽器はその基本機能として、楽音の制
御、合成、変換の機能を備えている。代表的な電子楽器
では、汎用マイクロプロセッサ等で構成されるCPUに演
奏入力装置(鍵盤、シーケンサ等)の演奏状態を検出
し、必要な制御を行う制御機能が当てられ、楽音の合成
は音源回路チップと呼ばれる専用構造のチップ上で行わ
れる。音源回路チップ上には、複数の専用メモリと専用
演算回路が実装されており、専用メモリにはCPUから転
送されるデータや、演算回路の中間結果などが記憶さ
れ、演算回路は各専用メモリのデータを演算することに
よって楽音を合成する。 一般に、これらの専用回路は並列あるいはパイプライ
ン形式で動作し、これによって所要の速度を達成してい
る。しかしながら、多数の専用メモリ(専用シフトレジ
スタ等)と専用回路とを必要とする従来アーキテクチャ
ーは、必然的に回路規模の犠牲の上に成り立っている。
そして、楽音合成機能を高めることが楽音合成装置の一
般課題である以上、今後、さらに大規模化して行くこと
が避けられない。 [発明の目的] したがって、この発明の目的はCPUからのデータを記
憶するメモリを楽音合成装置の演算結果(演算経過デー
タ)を記憶するメモリを共通化させてハードウェアの回
路規模を節約するとともに、共通化に伴って生じる問
題、即ち共通化メモリに対するアクセスの競合問題(CP
Uと楽音合成装置との間で生じるメモリアクセスの競
合)を有効に解消した、新規なアーキテクチャーの楽音
合成装置を提供することである。 [発明の要点] この発明によれば、演奏状態をモニターするCPU
(3)によって制御されて、複数の楽音チャンネルの各
々の楽音を合成する楽音合成装置において、 (a) メモリ(7)と、 (b) CPUから転送される複数の楽音チャンネルの各
々に関連するデータを受け、上記メモリ(7)に書き込
むインタフェース回路(11)と、 (c) 上記メモリを演算バッファとして利用して、CP
Uから転送されるデータを読み出して、当該データに基
づき、一連の動作シーケンスに基づく演算処理を実行し
て、上記複数の楽音チャンネルの各々に関連する楽音制
御信号を生成するとともに、生成したデータにより上記
メモリの内容を更新する楽音制御信号発生回路(12)
と、 (d) 生成された楽音制御信号に基づいて各楽音チャ
ンネルの楽音波形を発生する波形生成回路(15)と、 (e) 交互にハイレベルとロウレベルに遷移するパル
ス列である占有タイミング制御信号(T2)を発生するタ
イミング信号発生回路(159)とを備え、 (f) 上記占有タイミング制御信号によって、上記イ
ンタフェース回路による上記メモリの占有と上記楽音制
御信号発生回路による上記メモリの占有とを交互に切り
換え、かつ、 (g) 上記楽音制御信号発生回路が上記メモリからあ
る楽音チャンネルに関連するデータを読み出して、これ
に基づく演算処理を実行している際に、上記CPUから当
該楽音チャンネルに関連する対応するデータが書き込ま
れた場合に、上記楽音音制御信号発生回路によるメモリ
の内容の更新を制限する書き込み制限回路(302)を備
えたことを特徴とする楽音合成装置が提供される(特許
請求の範囲第1項)。 一構成例において、上記インタフェース回路は、上記
CPUからのデータ転送命令(表1)に含まれるインスト
ラクションコードから、上記メモリをアクセスするため
のインタフェース用アドレス(AA0〜AA11)を生成する
インタフェース用アドレス生成回路を含む(第2項)。 一構成例において、上記楽音制御信号回路は一連の動
作シーケンス(第20A図)を通じて上記楽音制御信号を
生成するものであり、この一連の動作シーケンスにおけ
る各メモリアクセスステップにおいて、上記メモリをア
クセスするための演算用アドレス(BA0〜BA11)を生成
する演算用アドレス生成回路(301)を含み、上記書き
込み制限回路が、必要な場合に上記演算用アドレスに対
応するデータの書き込みを制限するように構成されてい
る(第3項)。 一構成例において、上記メモリにはメモリインタフェ
ース回路(16)が接続され、このメモリインタフェース
回路は、上記インタフェース用アドレスと上記演算用ア
ドレスとが入力されるメモリアドレス選択回路(776、7
77-778、789-800)を有し、このメモリアドレス選択回
路は、上記占有タイミング制御信号が第1のレベルのと
きに、上記メモリをアクセスするためのアドレスとし
て、上記インタフェース用アドレスを選択出力し、第2
のレベルのときに、上記演算用アドレスを選択出力する
(第4項)。 一構成例において、上記インタフェース回路は、上記
占有タイミング制御信号が第1のレベルにあって上記メ
モリのインタフェース回路による占有状態を示している
ことを必要条件として、上記メモリをライトアクセスす
るための書込制御信号を発生するインタフェース用書込
制御信号発生回路(181、178、179、182)を有し、上記
楽音制御信号回路は、上記占有タイミング制御信号が第
2のレベルにあって上記メモリ楽音制御信号回路による
占有状態を示していることを必要条件として、上記メモ
リをライトアクセスするための書込制御信号を発生する
演算用書込制御信号発生回路(302)を有する(第5
項)。 一構成例において、上記メモリ、上記インタフェース
回路及び上記楽音制御信号回路はデータバス(D0〜D7)
を介して接続される(第6項)。 一構成例において、(h)上記インタフェース回路
は、上記CPUから転送されたデータを一時記憶するレジ
スタ(130-137)とこのレジスタの記憶データを、上記
データバス上へ出力する出力回路(138-145)を有し、
この出力回路は、上記占有タイミング制御信号が第1の
レベルにあることを必要条件として出力動作し(181、1
12、163)、(i)上記楽音制御信号発生回路は演算結
果を一時的に記憶するレジスタ(485-499、564-578)と
このレジスタの記憶データを上記データバス上へ出力す
る出力回路(500-514、579-593)を有し、この出力回路
は上記占有タイミング制御信号が第2のレベルにあるこ
とを必要条件として出力動作する(304)(第7項)。 [発明の作用、展開] 特許請求の範囲第1項に記載の発明によれば、メモリ
(7)は、CPUからの転送データの記憶手段であると同
時に楽音制御信号発生回路手段が演算処理のために使用
する演算バッファ(作業用記憶手段)として機能する。
したがって、従来の楽音生成装置のように多数の専用メ
モリを分散配置する必要はなく回路規模を縮少できると
ともに回路設計を容易とする。 更に、第1項の構成は、インタフェース回路手段と楽
音制御信号生成回路手段とによるメモリ(7)へのアク
セス競合を解消する有効な手段を提供している。 この競合解消手段はメモリ占有の時間割り振り(分
割)方式である。 一般に、楽音合成能力を高めるためには大量のデータ
が必要となる。このことはCPUからメモリ(7)への転
送データ量が増大することを示唆している。かつ、楽音
合成装置側での演算のために行われる同メモリへのリー
ドライトアクセスも極めて高い頻度で発生する。このよ
うな状況下では、CPUによるメモリ(7)へのアクセス
と楽音合成のためのメモリアクセスとの同時発生が多発
する。かかる事態を考慮すると、何らかの手段によりこ
の衝突を防止する必要がある。その場合、いずれかのア
クセスを待機させるアプローチを採用したとすると、遅
れのために楽音の実時間応答特性等が悪化する。この遅
れは、使用するデータの量が多くなるほど顕著になる。 第1項の構成によれば、CPUからのデータをメモリに
設定するためのインタフェース回路手段と、メモリを楽
音制御信号生成のために演算バッファとして利用する楽
音制御信号生成回路手段とによるメモリの占有が占有タ
イミング制御信号により交互に発生するようにしている
ので、CPUからの転送データの書き込みが即座に行われ
るとともに、楽音制御信号生成回路手段によるメモリの
リード/ライトも遅れなしで実行できる。この解決手段
の構成は極めて簡素であり、CPUによる楽音合成部の制
御を容易にする。 第2項はインタフェース回路によるアドレス生成につ
いて記載したものであり、第3項は楽音制御信号生成回
路によるアドレス生成について記載したものである。第
4項は両生成アドレスのいずれをメモリのアドレスとし
て選択するかを占有の時間割り振り方式で行うことを記
載したものである。 第5項は、インタフェース回路によるメモリ書込制御
信号の発生方式と楽音制御信号回路によるメモリ書込制
御信号の発生方式とについて記載したものである。この
構成により、インタフェース回路によるメモリ書込制
御、楽音制御信号回路によるメモリ書込制御は、それぞ
れの占有時間帯でのみ発生することになる。 第6項はメモリ、インタフェース回路、楽音制御信号
発生回路相互間のデータバス接続について記載したもの
であり、第7項はこのデータバスへのデータ出力をイン
タフェース回路では当該回路のメモリ占有時間帯でのみ
行い、楽音制御信号発生回路では当該回路のメモリ占有
時間帯でのみ行うようにしたものである。 [実施例] 第1図は本発明に係る電子楽器の機能図である。CPU3
は汎用マイコンで、制御プログラムに従って、鍵盤1、
スイッチ2を走査して押鍵、音色選択等を検出し、バス
上に配置されたROM4、RAM5等を使って音色データ、発音
制御データを生成して音源LSIの発音を制御する。音源L
SI6は、後で詳述するが外付けRAM7を楽音生成のための
演算用バッファとして利用して楽音を生成し、DAC(デ
ジタルアナログ変換器)8に転送する。楽音信号はDAC8
でアナログ信号に変換され、アンプ9で増幅されてスピ
ーカ10によって放音される。 第2図は、本発明を適用する音源LSI6の動作を説明す
るためのブロック図である。音源LSI6は、振幅エンベロ
ープ及びピッチ変動を含んだキーコード等の生成のため
に、RAM7を音色データ用メモリ、又は演算経過データ用
メモリとして使う。尚、RAM7は第3図に示すように、40
0nsec毎にインタフェース/制御部11(インタフェース
占有時間)とエンベロープ/キーコード生成回路(演算
回路占有時間)に交代で占有され、CPUからのデータ書
込み及びエンベロープ等の演算のためのアクセスに対処
する。 まず、インタフェース/制御部11の動作を説明する。
CPU3からは音源LSI6に対して音色データ又は発音制御デ
ータが転送されるが、音源LSI6ではデータバスDB0〜7
にあるデータを▲▼がLOWのとき▲▼の立上り
エッジで取込む。その際、/DがLOWならばデータバスD
B0〜DB7のデータをインストラクション、/DがHIGHな
らばそのインストラクションに付属するデータとして取
込む(第4図参照)。尚、インストラクションは続いて
転送されるデータの種類を示している。インタフェース
/制御部11はCPU3からのインストラクション及びデータ
を受けて、そのインストラクションに対応するRAM7のア
ドレスAA0〜11と書込み信号▲▼を生成し、外部RAM
インターフェース16を介して外部RAM7に転送されたデー
タを格納する。ただし、CPU3から転送されたデータが特
殊なものの場合は内部メモリに格納する。例えば転送さ
れたデータがオペレーションコード(波形生成のための
制御データ)の場合には、外部RAM7への書込みは禁止さ
れ、OCレジスタ14への書込み信号WOが発生することによ
り、OCレジスタに書込まれる。 エンベロープ/キーコード生成回路12は、外部RAM7に
書込まれたデータをアクセスするためにアドレスBA0〜1
1及びエンベロープの演算経過データ等の書込み信号▲
▼を発生する。これによって外部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図に示す
ように基本クロックφM(10MHz)を分周し必要なタイミ
ング信号を作り、外部からのリセット信号▲
▼から内部リセット信号を作るものである。第9図に
その一実施例を示す。10MHzの基本クロックはフリップ
フロップ233、インバータ235で分周されS0が生成され、
更にフリップフロップ234によってT0が生成される。更
にアンド237によってφ1が生成され、フリップフロップ
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、フリップフロップ25
2、インバータ253、アンド254−1〜254−4によってタ
イミング信号T2、T3、CKP、CKQ、CKW、CKRが生成される
(第8図)。また、インバータ255−1〜3、オア256、
アンド257から▲▼、CKLが生成される(第52
図)。また、カウンタA:249のCARRY OUT(カウント値12
7のとき“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にはCPU
3からの信号が入るわけだが、第4図のように信号が入
ったときインバータ100〜103、ナンド104、105によって
▲▼、▲▼が発生する。信号▲▼が
発生するとバスDB0〜7のデータがインバータ106〜113
を介してラッチ146〜153に▲▼の立上りで取込まれ
るとともにカウンタ191、フリップフロップ186、192〜1
95をリセットする。ラッチ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に
よってCK12はCKQとなる。次にCPU3からのデータ書込に
より信号▲▼が“0"→“1"になると、フリップフ
ロップ173は▲▼の立上りで“1"を出力し、フリ
ップフロップ174の出力は“1"となる。その後、フリ
ップフロップ173、175はCKRに同期してリセットされる
のではCKRの1区間だけ“1"となる。また、インスト
ラクションデコーダ154の出力▲▼、IDは“1"、
“0"、は“0"なのでオア178、179、インバータ180、1
81、ナンド182により信号▲▼はが“1"、かつT2
が“0"のとき“0"となる。その時、インストラクション
デコーダ154の出力▲▼、WBは“1"、“0"なので、
ノア161の出力は▲▼が“0"、▲▼が“0"のと
きだけ“1"となり、バスD0〜7のクロックインバータ12
2〜129の出力が出力される。カウンタ191は、インスト
ラクションデコーダ154の出力▲▼が“1"なので、
が“1"のときのCKQがそのクロックCKCとなり、CKC毎
に0、1、2、……と歩進され、その値はフリップフロ
ップ192〜195、インバータ196〜199で2度反転してモジ
ュール番号を表わすアドレスAA0〜AA3となる。アドレス
AA4〜AA6はインストラクションのラッチ146〜153の下位
3ビットの反転であるからチャンネル番号を表わす値
“jjj"となる。また、アドレスAA7〜AA11はインストラ
クションデコーダ154の出力EF、WBが“0"だから、ノア2
04、オア205、207の右入力は“0"、アンド209、211の右
入力は“1"、オア203の左入力は“0"なので、インスト
ラクションのラッチ146〜153の上位5ビットの反転とな
り、インストラクションの上位5ビットそのものとな
る。以上のように各チャンネル各モジュールあたり1バ
イトのデータの書込みの場合、インストラクションと一
致するアドレスに対して第11図のような書込み用の信号
が生成される。ここで各チャンネルの識別はインストラ
クション下位3ビットでなされるが、モジュールの識別
はインストラクション転送後から何番目のデータかとい
うことをカウンタ191で計数することによって行なわれ
ている。したがって、1つのインストラクションに複数
のデータが後続する連続転送フォーマットにおいて、ど
のデータがどのモジュールに対するデータであるかはイ
ンタフェース/制御部11で自動的に識別されるので、CP
U3はモジュール別にインストラクションを送る必要はな
く転送効率が上る。 次に、外部RAM7に書込まれるデータのうち各チャンネ
ル各モジュールあたり2バイトのデータ(周波数比、キ
ーコード、モジュレーションレベル/レート、ピッチモ
ジュレーション)の書込み動作を説明する(第12図参
照)。CPU3からのインストラクション書込みに応答し、
▲▼が0になり、それによって、インストラクシ
ョンがラッチ146〜153に取込まれるとともに、カウンタ
191、フリップフロップ186、192〜195がリセットされ
る。フリップフロップ176の出力は“0"となっているの
でナンド172の上入力は“1"、インストラクションデコ
ーダ154の出力WBは“1"なのでナンド172の出力は“0"
となっており、また、ノア167の入力は共に“0"なので
オア168、170、アンド169により、CK12はCKQとなる。CP
U3からのデータの書込みにより、▲▼が“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=CK
W)。インストラクションデコーダ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"だか
ら“00110"となる。したがって、インストラクション
“フラグセット”ではモジュール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に同期してフリップフロッ
プ18がリセットされるので、は▲▼〜▲
▼が“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(00
00)のとき、又はエンベロープ終了(1000)でなくサス
ティンレベルに到達していないのなら最後のステップ7
(0111)へ進め、サスティンレベルにいるのなら(1ab
c)、サスティンを解除(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"となるためR
AM7への書込みは発生せず、▲▼が“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で取込むフリップフロップである。
また、 のように対応している。第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レジスタにあるピッチモジュレーション;PMD
jを加減算(F2に応じて)し、最終的なピッチのエンベ
ロープ;PEjとしてBレジスタに格納する。そのとき、A
レジスタ上位に振幅モジュレーション上位;▲AMDM j▼
をロードしておく。13P)振幅モジュレーション下位;
▲AMDL j▼をAレジスタ下位にロードする。14P)モジュ
レーションレート;MRjをMレジスタにロードする。15
P)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図参
照)を基にして、補間することによって生成されてい
る。 第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にはア
ドレスのLSBを強制的に“1"とするもので後述するよう
にタイミング12、12P、13P、17、17P▲▼、17P
F′、18P、19Pで“1"となる。▲▼はアドレス下位
4ビット(モジュール)をオール0にするもので第20B
図のデータにiのINDEXがついていないタイミングで
“1"となる。OA0〜4は原アドレス信号で、第20B図の
“アドレス”に対応している。ただし、タイミング1、
5の“SSS"は原アドレスOA0〜2のかわりのエンベロー
プフラグ(Sレジスタ)の下位3ビット(ステップ)が
アドレスとして採用されることを意味している。a〜k
は第23図に示すようにクロック発生回路304の出力であ
る各種クロック、CKAM、CKAL、……、CKE等を生成する
ための信号で、第20B図“クロック”のタイミングで
“1"となる。RA、RBは夫々Aレジスタ、BレジスタにRA
M7からのデータをロードする時“1"となる信号で、第20
B図“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、9
F′;AM←1+S、11;AM←0+M、12;A←0+B、17P
F′;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"である。そのとき
7が“1"すなわちハイリリースでないなら、インバータ3
71、インバータ365〜367、バッファ368〜370によりアド
レスは、 OA4 OA3 S2 S1 S0 BC7 BC6 BC5 BC11 BC10 BC9 BC8 となる。したがってエンベロープフラグにより示される
ステップのエンベロープレート;ERij(s)のアドレス
となる。タイミング5も同様である。もし、7が“0"
すなわちハイリリースなら、オア363、アンド364により
アドレスは、 0 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図のようにA
M′、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レジスタの出力
を100000000000000とするもので、ピッチのエンベロー
プ演算中にエンベロープ現在値をマスクする信号E0に従
ってナンド400により“0"となる。 第27図は、エンベロープ/キーコード生成回路12で、
エンベロープフラグをロードし(タイミング0)、再び
書込む(タイミング11)までの間にCPUから転送された
インストラクションによって同一チャンネル同一モジュ
ール又はピッチのエンベロープフラグが書き替えられた
場合に、エンベロープ/キーコード生成回路12からRAM7
にエンベロープフラグを書き込むのを禁止する、書込み
禁止回路302の詳細図である。エクスクルーシブ・オア4
08〜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、クロックインバータ46
2〜482、及び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、クロックインバータ54
0〜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……E
R0の変換を示す。 第33図はMレジスタの詳細図で、反転出力FF167〜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−M(A←Eij−AM
Dj)”の時はモジュレーション感度MSijに応じて各モジ
ュール毎に重み付けされ、振幅モジュレーションがかけ
られる。尚、MSijが0のときはアンド649の出力MO0が
“1"となるため、演算は“A←A−0"となりモジュレー
ションはかからない。次に、12Pが“1"のとき、すなわ
ち第20A図動作フローにおける最終ピッチエンベロープ
の計算“B←±A+B(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/32)となる。ここで、前述したようにMRjはアフ
タータッチ等の検出量の前回検出量との差の絶対値であ
るから、MT=“0"なら今回検出量である目標値MLjに到
達するためには、MRjの加減算が16回必要となる。すな
わち、第19図のタイムチャートから16×1.2288=19.660
8(msec)で到達することになる。これはmin19.6608mse
c毎にアフタータッチ等の検出データから算出した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"となるから、ゲート回路
666〜677により、出力BI″12〜14は BI″12=▲▼、BI″13=▲▼、 BI″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は、 となる。これはピッチのエンベロープのレンジを中心レ
ベル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は、 となる。これは、最終的なピッチのエンベロープを中心
レベルより上なら正、下なら負の2の補数表示にしたこ
とになる。すなわちこれをキーコード;KCjに加算する際
に、最終的なピッチのエンベロープを10……0を中心に
してそれより大きければその差を加算、小さければその
差を減算することに相当しており、キーコードに反映さ
れるピッチエンベロープを中心レベルに対して対称化し
ている。 第37図は符号生成回路449の詳細図である。信号ASは
加減算器440のA入力側の符号で、12P、▲▼が“1"
のとき、ナンド678、681により“1"となる。すなわち、
第20A図動作フローの“B←±A+B(B←±PMDj+E
pj)”の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は加減算器44
0の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はFA14と
なる。したがって、第38図の矢印で示すように、ピッチ
のエンベロープレベルは反転後のデータが中心レベルよ
りも上;FA14=“1"のとき(第39図参照)は減算、下;FA
14=“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"なのでナン
ド714が有効になり、ナンド714の出力はS4′、ナンド71
5の出力は▲▼となる。▲▼は“1"なのでナ
ンド719の下入力は“1"だから▲▼が“1"、COが
“1"又は▲▼が“0"、COが“0"ならばFF720は
“1"がセットされる。これは、エンベロープ更新時にオ
ーバーフロー又はアンダーフローをしたらフラグFをセ
ットすることに相当する。が“0"でタイミング8のと
き、同様にしてナンド714の出力は▲▼、ナンド7
15の出力は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入力
は、 となっているため、この時の演算は中心レベル10……0
を境として加算することに相当する。従って加減算器44
0の符号AS、BSではなく、加算器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"ならばOR729の出力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のときE
XOR733の出力は“1"、したがってCT=“1"、▲▼=
“0"(MX=“0")となる。これはピッチのエンベロープ
レベルを変更した際、変更によりデータが中心レベルを
越えた時、第39図の加算器700の出力を中心レベル10…
…0にすることを意味する。以上のようにして第39図加
算器700の出力は制御される。 第42図はSレジスタ及びエンベロープフラグ制御回路
446の詳細図である。フリップフロップ739〜746はSレ
ジスタで、データバスD0〜7をクロックCKSで取込む。
Sレジスタの内容はP=1又はP=0のタイミング1〜
13のときエンベロープフラグであり、そのタイミング
のみでエンベロープフラグ制御回路446の出力は意味を
もっている。▲▼はエンベロープフラグがナンド
747より“*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、インバータ75
9、アンド760、オア761により、▲▼=▲▼=
0のとき、すなわちモードがマスクのとき、又は▲
▼=“0"かつ▲▼=1、すなわち、ステップ0の
最初に“1"となる。尚、ノーマルモードではステップ0
の最初にA入力が0となるため、エンベロープは必ず0
からスタートすることになる。F′は動作フロー(第20
A図)の分岐のためのフラグで、オア762、763、インバ
ータ764、アンド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▼をセットして次ステップをスタートする。もし、到
達した時サスティンフラグ(エンベロープレベルEL
ij(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
で生成されたエンベロープ及びキーコードは、クロック
CKEでフリップフロップ(FF)1000に取込まれる。FF100
0の出力は指数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となる。したがって、エンベロープレジスタ
1002はエンベロープ/キーコード生成回路12のタイミン
グでデータが書込まれ、インタフェース/制御部11のタ
イミングで読出され、FF1003を介して波形生成回路15に
送られる。 第47図は周波数情報レジスタ1004の詳細図で、エンベ
ロープレジスタ1002と全く同様の動作をする。読出され
た周波数情報FI0〜20はFF1005を介し、位相角生成用の
累算器(加算器1006、シフトレジスタ1007)へ送られ、
位相角が生成される。 第49図は、OCレジスタ14の詳細図である。OCレジスタ
14はエンベロープレジスタ1002や周波数情報レジスタ10
04と同様に偶数チャンネル用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、11
30、1132、ゲート回路1129、1131、1135、位相角変更回
路1120、加減算器1126を制御することによって行なわれ
る。表6にCPUから入力されたOCデータ上位4ビットに
対応する演算で示す(第49図参照)。 これらの演算制御によって、波形が生成される。 以下に波形生成例を示す。ただし、iはモジュールN
o、jはチャンネルNoとする。 1) Ei+1jsin(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) Ei+2jsin(EijsinPij-Ei+1jsinPi+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″
sinX′は楽音出力として累算される。以上のようにオペ
レーションコードによって、波形生成が様々に行なわれ
ることによって、多くの音色の楽音を発生できる。出力
波形は生成された波形を順次累算していくが、第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への入力は無
音状態のレベルに維持されるようになっている。 [発明の効果] 以上詳細に説明したように、本発明の楽音合成装置
は、同じメモリCPUからの転送データの記憶手段として
使用すると同時に楽音制御信号(例えばキーコード、エ
ンベロープ)を生成するための演算バッファとして使用
する、というアーキテクチャーであるので専用メモリの
分散配置という従来アーキテクチャーと好対照をなして
おり、ハードウェアの回路規模を縮少できるとともに分
散回路配置の複雑さを回避できる。更に、メモリの共通
化に伴う問題であるメモリアクセスの競合問題を占有の
時間割当方式で解消していので、CPUからの転送データ
の書き込みを即座に実行できるとともに、楽音制御信号
生成回路手段によるメモリのリード/ライト動作、内部
演算動作も遅れなしに実行でき、問題のない楽音実時間
処理を保証するものである。
ャーに関する。 [発明の背景] 一般に、電子楽器はその基本機能として、楽音の制
御、合成、変換の機能を備えている。代表的な電子楽器
では、汎用マイクロプロセッサ等で構成されるCPUに演
奏入力装置(鍵盤、シーケンサ等)の演奏状態を検出
し、必要な制御を行う制御機能が当てられ、楽音の合成
は音源回路チップと呼ばれる専用構造のチップ上で行わ
れる。音源回路チップ上には、複数の専用メモリと専用
演算回路が実装されており、専用メモリにはCPUから転
送されるデータや、演算回路の中間結果などが記憶さ
れ、演算回路は各専用メモリのデータを演算することに
よって楽音を合成する。 一般に、これらの専用回路は並列あるいはパイプライ
ン形式で動作し、これによって所要の速度を達成してい
る。しかしながら、多数の専用メモリ(専用シフトレジ
スタ等)と専用回路とを必要とする従来アーキテクチャ
ーは、必然的に回路規模の犠牲の上に成り立っている。
そして、楽音合成機能を高めることが楽音合成装置の一
般課題である以上、今後、さらに大規模化して行くこと
が避けられない。 [発明の目的] したがって、この発明の目的はCPUからのデータを記
憶するメモリを楽音合成装置の演算結果(演算経過デー
タ)を記憶するメモリを共通化させてハードウェアの回
路規模を節約するとともに、共通化に伴って生じる問
題、即ち共通化メモリに対するアクセスの競合問題(CP
Uと楽音合成装置との間で生じるメモリアクセスの競
合)を有効に解消した、新規なアーキテクチャーの楽音
合成装置を提供することである。 [発明の要点] この発明によれば、演奏状態をモニターするCPU
(3)によって制御されて、複数の楽音チャンネルの各
々の楽音を合成する楽音合成装置において、 (a) メモリ(7)と、 (b) CPUから転送される複数の楽音チャンネルの各
々に関連するデータを受け、上記メモリ(7)に書き込
むインタフェース回路(11)と、 (c) 上記メモリを演算バッファとして利用して、CP
Uから転送されるデータを読み出して、当該データに基
づき、一連の動作シーケンスに基づく演算処理を実行し
て、上記複数の楽音チャンネルの各々に関連する楽音制
御信号を生成するとともに、生成したデータにより上記
メモリの内容を更新する楽音制御信号発生回路(12)
と、 (d) 生成された楽音制御信号に基づいて各楽音チャ
ンネルの楽音波形を発生する波形生成回路(15)と、 (e) 交互にハイレベルとロウレベルに遷移するパル
ス列である占有タイミング制御信号(T2)を発生するタ
イミング信号発生回路(159)とを備え、 (f) 上記占有タイミング制御信号によって、上記イ
ンタフェース回路による上記メモリの占有と上記楽音制
御信号発生回路による上記メモリの占有とを交互に切り
換え、かつ、 (g) 上記楽音制御信号発生回路が上記メモリからあ
る楽音チャンネルに関連するデータを読み出して、これ
に基づく演算処理を実行している際に、上記CPUから当
該楽音チャンネルに関連する対応するデータが書き込ま
れた場合に、上記楽音音制御信号発生回路によるメモリ
の内容の更新を制限する書き込み制限回路(302)を備
えたことを特徴とする楽音合成装置が提供される(特許
請求の範囲第1項)。 一構成例において、上記インタフェース回路は、上記
CPUからのデータ転送命令(表1)に含まれるインスト
ラクションコードから、上記メモリをアクセスするため
のインタフェース用アドレス(AA0〜AA11)を生成する
インタフェース用アドレス生成回路を含む(第2項)。 一構成例において、上記楽音制御信号回路は一連の動
作シーケンス(第20A図)を通じて上記楽音制御信号を
生成するものであり、この一連の動作シーケンスにおけ
る各メモリアクセスステップにおいて、上記メモリをア
クセスするための演算用アドレス(BA0〜BA11)を生成
する演算用アドレス生成回路(301)を含み、上記書き
込み制限回路が、必要な場合に上記演算用アドレスに対
応するデータの書き込みを制限するように構成されてい
る(第3項)。 一構成例において、上記メモリにはメモリインタフェ
ース回路(16)が接続され、このメモリインタフェース
回路は、上記インタフェース用アドレスと上記演算用ア
ドレスとが入力されるメモリアドレス選択回路(776、7
77-778、789-800)を有し、このメモリアドレス選択回
路は、上記占有タイミング制御信号が第1のレベルのと
きに、上記メモリをアクセスするためのアドレスとし
て、上記インタフェース用アドレスを選択出力し、第2
のレベルのときに、上記演算用アドレスを選択出力する
(第4項)。 一構成例において、上記インタフェース回路は、上記
占有タイミング制御信号が第1のレベルにあって上記メ
モリのインタフェース回路による占有状態を示している
ことを必要条件として、上記メモリをライトアクセスす
るための書込制御信号を発生するインタフェース用書込
制御信号発生回路(181、178、179、182)を有し、上記
楽音制御信号回路は、上記占有タイミング制御信号が第
2のレベルにあって上記メモリ楽音制御信号回路による
占有状態を示していることを必要条件として、上記メモ
リをライトアクセスするための書込制御信号を発生する
演算用書込制御信号発生回路(302)を有する(第5
項)。 一構成例において、上記メモリ、上記インタフェース
回路及び上記楽音制御信号回路はデータバス(D0〜D7)
を介して接続される(第6項)。 一構成例において、(h)上記インタフェース回路
は、上記CPUから転送されたデータを一時記憶するレジ
スタ(130-137)とこのレジスタの記憶データを、上記
データバス上へ出力する出力回路(138-145)を有し、
この出力回路は、上記占有タイミング制御信号が第1の
レベルにあることを必要条件として出力動作し(181、1
12、163)、(i)上記楽音制御信号発生回路は演算結
果を一時的に記憶するレジスタ(485-499、564-578)と
このレジスタの記憶データを上記データバス上へ出力す
る出力回路(500-514、579-593)を有し、この出力回路
は上記占有タイミング制御信号が第2のレベルにあるこ
とを必要条件として出力動作する(304)(第7項)。 [発明の作用、展開] 特許請求の範囲第1項に記載の発明によれば、メモリ
(7)は、CPUからの転送データの記憶手段であると同
時に楽音制御信号発生回路手段が演算処理のために使用
する演算バッファ(作業用記憶手段)として機能する。
したがって、従来の楽音生成装置のように多数の専用メ
モリを分散配置する必要はなく回路規模を縮少できると
ともに回路設計を容易とする。 更に、第1項の構成は、インタフェース回路手段と楽
音制御信号生成回路手段とによるメモリ(7)へのアク
セス競合を解消する有効な手段を提供している。 この競合解消手段はメモリ占有の時間割り振り(分
割)方式である。 一般に、楽音合成能力を高めるためには大量のデータ
が必要となる。このことはCPUからメモリ(7)への転
送データ量が増大することを示唆している。かつ、楽音
合成装置側での演算のために行われる同メモリへのリー
ドライトアクセスも極めて高い頻度で発生する。このよ
うな状況下では、CPUによるメモリ(7)へのアクセス
と楽音合成のためのメモリアクセスとの同時発生が多発
する。かかる事態を考慮すると、何らかの手段によりこ
の衝突を防止する必要がある。その場合、いずれかのア
クセスを待機させるアプローチを採用したとすると、遅
れのために楽音の実時間応答特性等が悪化する。この遅
れは、使用するデータの量が多くなるほど顕著になる。 第1項の構成によれば、CPUからのデータをメモリに
設定するためのインタフェース回路手段と、メモリを楽
音制御信号生成のために演算バッファとして利用する楽
音制御信号生成回路手段とによるメモリの占有が占有タ
イミング制御信号により交互に発生するようにしている
ので、CPUからの転送データの書き込みが即座に行われ
るとともに、楽音制御信号生成回路手段によるメモリの
リード/ライトも遅れなしで実行できる。この解決手段
の構成は極めて簡素であり、CPUによる楽音合成部の制
御を容易にする。 第2項はインタフェース回路によるアドレス生成につ
いて記載したものであり、第3項は楽音制御信号生成回
路によるアドレス生成について記載したものである。第
4項は両生成アドレスのいずれをメモリのアドレスとし
て選択するかを占有の時間割り振り方式で行うことを記
載したものである。 第5項は、インタフェース回路によるメモリ書込制御
信号の発生方式と楽音制御信号回路によるメモリ書込制
御信号の発生方式とについて記載したものである。この
構成により、インタフェース回路によるメモリ書込制
御、楽音制御信号回路によるメモリ書込制御は、それぞ
れの占有時間帯でのみ発生することになる。 第6項はメモリ、インタフェース回路、楽音制御信号
発生回路相互間のデータバス接続について記載したもの
であり、第7項はこのデータバスへのデータ出力をイン
タフェース回路では当該回路のメモリ占有時間帯でのみ
行い、楽音制御信号発生回路では当該回路のメモリ占有
時間帯でのみ行うようにしたものである。 [実施例] 第1図は本発明に係る電子楽器の機能図である。CPU3
は汎用マイコンで、制御プログラムに従って、鍵盤1、
スイッチ2を走査して押鍵、音色選択等を検出し、バス
上に配置されたROM4、RAM5等を使って音色データ、発音
制御データを生成して音源LSIの発音を制御する。音源L
SI6は、後で詳述するが外付けRAM7を楽音生成のための
演算用バッファとして利用して楽音を生成し、DAC(デ
ジタルアナログ変換器)8に転送する。楽音信号はDAC8
でアナログ信号に変換され、アンプ9で増幅されてスピ
ーカ10によって放音される。 第2図は、本発明を適用する音源LSI6の動作を説明す
るためのブロック図である。音源LSI6は、振幅エンベロ
ープ及びピッチ変動を含んだキーコード等の生成のため
に、RAM7を音色データ用メモリ、又は演算経過データ用
メモリとして使う。尚、RAM7は第3図に示すように、40
0nsec毎にインタフェース/制御部11(インタフェース
占有時間)とエンベロープ/キーコード生成回路(演算
回路占有時間)に交代で占有され、CPUからのデータ書
込み及びエンベロープ等の演算のためのアクセスに対処
する。 まず、インタフェース/制御部11の動作を説明する。
CPU3からは音源LSI6に対して音色データ又は発音制御デ
ータが転送されるが、音源LSI6ではデータバスDB0〜7
にあるデータを▲▼がLOWのとき▲▼の立上り
エッジで取込む。その際、/DがLOWならばデータバスD
B0〜DB7のデータをインストラクション、/DがHIGHな
らばそのインストラクションに付属するデータとして取
込む(第4図参照)。尚、インストラクションは続いて
転送されるデータの種類を示している。インタフェース
/制御部11はCPU3からのインストラクション及びデータ
を受けて、そのインストラクションに対応するRAM7のア
ドレスAA0〜11と書込み信号▲▼を生成し、外部RAM
インターフェース16を介して外部RAM7に転送されたデー
タを格納する。ただし、CPU3から転送されたデータが特
殊なものの場合は内部メモリに格納する。例えば転送さ
れたデータがオペレーションコード(波形生成のための
制御データ)の場合には、外部RAM7への書込みは禁止さ
れ、OCレジスタ14への書込み信号WOが発生することによ
り、OCレジスタに書込まれる。 エンベロープ/キーコード生成回路12は、外部RAM7に
書込まれたデータをアクセスするためにアドレスBA0〜1
1及びエンベロープの演算経過データ等の書込み信号▲
▼を発生する。これによって外部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図に示す
ように基本クロックφM(10MHz)を分周し必要なタイミ
ング信号を作り、外部からのリセット信号▲
▼から内部リセット信号を作るものである。第9図に
その一実施例を示す。10MHzの基本クロックはフリップ
フロップ233、インバータ235で分周されS0が生成され、
更にフリップフロップ234によってT0が生成される。更
にアンド237によってφ1が生成され、フリップフロップ
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、フリップフロップ25
2、インバータ253、アンド254−1〜254−4によってタ
イミング信号T2、T3、CKP、CKQ、CKW、CKRが生成される
(第8図)。また、インバータ255−1〜3、オア256、
アンド257から▲▼、CKLが生成される(第52
図)。また、カウンタA:249のCARRY OUT(カウント値12
7のとき“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にはCPU
3からの信号が入るわけだが、第4図のように信号が入
ったときインバータ100〜103、ナンド104、105によって
▲▼、▲▼が発生する。信号▲▼が
発生するとバスDB0〜7のデータがインバータ106〜113
を介してラッチ146〜153に▲▼の立上りで取込まれ
るとともにカウンタ191、フリップフロップ186、192〜1
95をリセットする。ラッチ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に
よってCK12はCKQとなる。次にCPU3からのデータ書込に
より信号▲▼が“0"→“1"になると、フリップフ
ロップ173は▲▼の立上りで“1"を出力し、フリ
ップフロップ174の出力は“1"となる。その後、フリ
ップフロップ173、175はCKRに同期してリセットされる
のではCKRの1区間だけ“1"となる。また、インスト
ラクションデコーダ154の出力▲▼、IDは“1"、
“0"、は“0"なのでオア178、179、インバータ180、1
81、ナンド182により信号▲▼はが“1"、かつT2
が“0"のとき“0"となる。その時、インストラクション
デコーダ154の出力▲▼、WBは“1"、“0"なので、
ノア161の出力は▲▼が“0"、▲▼が“0"のと
きだけ“1"となり、バスD0〜7のクロックインバータ12
2〜129の出力が出力される。カウンタ191は、インスト
ラクションデコーダ154の出力▲▼が“1"なので、
が“1"のときのCKQがそのクロックCKCとなり、CKC毎
に0、1、2、……と歩進され、その値はフリップフロ
ップ192〜195、インバータ196〜199で2度反転してモジ
ュール番号を表わすアドレスAA0〜AA3となる。アドレス
AA4〜AA6はインストラクションのラッチ146〜153の下位
3ビットの反転であるからチャンネル番号を表わす値
“jjj"となる。また、アドレスAA7〜AA11はインストラ
クションデコーダ154の出力EF、WBが“0"だから、ノア2
04、オア205、207の右入力は“0"、アンド209、211の右
入力は“1"、オア203の左入力は“0"なので、インスト
ラクションのラッチ146〜153の上位5ビットの反転とな
り、インストラクションの上位5ビットそのものとな
る。以上のように各チャンネル各モジュールあたり1バ
イトのデータの書込みの場合、インストラクションと一
致するアドレスに対して第11図のような書込み用の信号
が生成される。ここで各チャンネルの識別はインストラ
クション下位3ビットでなされるが、モジュールの識別
はインストラクション転送後から何番目のデータかとい
うことをカウンタ191で計数することによって行なわれ
ている。したがって、1つのインストラクションに複数
のデータが後続する連続転送フォーマットにおいて、ど
のデータがどのモジュールに対するデータであるかはイ
ンタフェース/制御部11で自動的に識別されるので、CP
U3はモジュール別にインストラクションを送る必要はな
く転送効率が上る。 次に、外部RAM7に書込まれるデータのうち各チャンネ
ル各モジュールあたり2バイトのデータ(周波数比、キ
ーコード、モジュレーションレベル/レート、ピッチモ
ジュレーション)の書込み動作を説明する(第12図参
照)。CPU3からのインストラクション書込みに応答し、
▲▼が0になり、それによって、インストラクシ
ョンがラッチ146〜153に取込まれるとともに、カウンタ
191、フリップフロップ186、192〜195がリセットされ
る。フリップフロップ176の出力は“0"となっているの
でナンド172の上入力は“1"、インストラクションデコ
ーダ154の出力WBは“1"なのでナンド172の出力は“0"
となっており、また、ノア167の入力は共に“0"なので
オア168、170、アンド169により、CK12はCKQとなる。CP
U3からのデータの書込みにより、▲▼が“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=CK
W)。インストラクションデコーダ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"だか
ら“00110"となる。したがって、インストラクション
“フラグセット”ではモジュール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に同期してフリップフロッ
プ18がリセットされるので、は▲▼〜▲
▼が“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(00
00)のとき、又はエンベロープ終了(1000)でなくサス
ティンレベルに到達していないのなら最後のステップ7
(0111)へ進め、サスティンレベルにいるのなら(1ab
c)、サスティンを解除(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"となるためR
AM7への書込みは発生せず、▲▼が“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で取込むフリップフロップである。
また、 のように対応している。第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レジスタにあるピッチモジュレーション;PMD
jを加減算(F2に応じて)し、最終的なピッチのエンベ
ロープ;PEjとしてBレジスタに格納する。そのとき、A
レジスタ上位に振幅モジュレーション上位;▲AMDM j▼
をロードしておく。13P)振幅モジュレーション下位;
▲AMDL j▼をAレジスタ下位にロードする。14P)モジュ
レーションレート;MRjをMレジスタにロードする。15
P)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図参
照)を基にして、補間することによって生成されてい
る。 第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にはア
ドレスのLSBを強制的に“1"とするもので後述するよう
にタイミング12、12P、13P、17、17P▲▼、17P
F′、18P、19Pで“1"となる。▲▼はアドレス下位
4ビット(モジュール)をオール0にするもので第20B
図のデータにiのINDEXがついていないタイミングで
“1"となる。OA0〜4は原アドレス信号で、第20B図の
“アドレス”に対応している。ただし、タイミング1、
5の“SSS"は原アドレスOA0〜2のかわりのエンベロー
プフラグ(Sレジスタ)の下位3ビット(ステップ)が
アドレスとして採用されることを意味している。a〜k
は第23図に示すようにクロック発生回路304の出力であ
る各種クロック、CKAM、CKAL、……、CKE等を生成する
ための信号で、第20B図“クロック”のタイミングで
“1"となる。RA、RBは夫々Aレジスタ、BレジスタにRA
M7からのデータをロードする時“1"となる信号で、第20
B図“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、9
F′;AM←1+S、11;AM←0+M、12;A←0+B、17P
F′;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"である。そのとき
7が“1"すなわちハイリリースでないなら、インバータ3
71、インバータ365〜367、バッファ368〜370によりアド
レスは、 OA4 OA3 S2 S1 S0 BC7 BC6 BC5 BC11 BC10 BC9 BC8 となる。したがってエンベロープフラグにより示される
ステップのエンベロープレート;ERij(s)のアドレス
となる。タイミング5も同様である。もし、7が“0"
すなわちハイリリースなら、オア363、アンド364により
アドレスは、 0 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図のようにA
M′、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レジスタの出力
を100000000000000とするもので、ピッチのエンベロー
プ演算中にエンベロープ現在値をマスクする信号E0に従
ってナンド400により“0"となる。 第27図は、エンベロープ/キーコード生成回路12で、
エンベロープフラグをロードし(タイミング0)、再び
書込む(タイミング11)までの間にCPUから転送された
インストラクションによって同一チャンネル同一モジュ
ール又はピッチのエンベロープフラグが書き替えられた
場合に、エンベロープ/キーコード生成回路12からRAM7
にエンベロープフラグを書き込むのを禁止する、書込み
禁止回路302の詳細図である。エクスクルーシブ・オア4
08〜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、クロックインバータ46
2〜482、及び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、クロックインバータ54
0〜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……E
R0の変換を示す。 第33図はMレジスタの詳細図で、反転出力FF167〜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−M(A←Eij−AM
Dj)”の時はモジュレーション感度MSijに応じて各モジ
ュール毎に重み付けされ、振幅モジュレーションがかけ
られる。尚、MSijが0のときはアンド649の出力MO0が
“1"となるため、演算は“A←A−0"となりモジュレー
ションはかからない。次に、12Pが“1"のとき、すなわ
ち第20A図動作フローにおける最終ピッチエンベロープ
の計算“B←±A+B(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/32)となる。ここで、前述したようにMRjはアフ
タータッチ等の検出量の前回検出量との差の絶対値であ
るから、MT=“0"なら今回検出量である目標値MLjに到
達するためには、MRjの加減算が16回必要となる。すな
わち、第19図のタイムチャートから16×1.2288=19.660
8(msec)で到達することになる。これはmin19.6608mse
c毎にアフタータッチ等の検出データから算出した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"となるから、ゲート回路
666〜677により、出力BI″12〜14は BI″12=▲▼、BI″13=▲▼、 BI″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は、 となる。これはピッチのエンベロープのレンジを中心レ
ベル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は、 となる。これは、最終的なピッチのエンベロープを中心
レベルより上なら正、下なら負の2の補数表示にしたこ
とになる。すなわちこれをキーコード;KCjに加算する際
に、最終的なピッチのエンベロープを10……0を中心に
してそれより大きければその差を加算、小さければその
差を減算することに相当しており、キーコードに反映さ
れるピッチエンベロープを中心レベルに対して対称化し
ている。 第37図は符号生成回路449の詳細図である。信号ASは
加減算器440のA入力側の符号で、12P、▲▼が“1"
のとき、ナンド678、681により“1"となる。すなわち、
第20A図動作フローの“B←±A+B(B←±PMDj+E
pj)”の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は加減算器44
0の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はFA14と
なる。したがって、第38図の矢印で示すように、ピッチ
のエンベロープレベルは反転後のデータが中心レベルよ
りも上;FA14=“1"のとき(第39図参照)は減算、下;FA
14=“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"なのでナン
ド714が有効になり、ナンド714の出力はS4′、ナンド71
5の出力は▲▼となる。▲▼は“1"なのでナ
ンド719の下入力は“1"だから▲▼が“1"、COが
“1"又は▲▼が“0"、COが“0"ならばFF720は
“1"がセットされる。これは、エンベロープ更新時にオ
ーバーフロー又はアンダーフローをしたらフラグFをセ
ットすることに相当する。が“0"でタイミング8のと
き、同様にしてナンド714の出力は▲▼、ナンド7
15の出力は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入力
は、 となっているため、この時の演算は中心レベル10……0
を境として加算することに相当する。従って加減算器44
0の符号AS、BSではなく、加算器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"ならばOR729の出力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のときE
XOR733の出力は“1"、したがってCT=“1"、▲▼=
“0"(MX=“0")となる。これはピッチのエンベロープ
レベルを変更した際、変更によりデータが中心レベルを
越えた時、第39図の加算器700の出力を中心レベル10…
…0にすることを意味する。以上のようにして第39図加
算器700の出力は制御される。 第42図はSレジスタ及びエンベロープフラグ制御回路
446の詳細図である。フリップフロップ739〜746はSレ
ジスタで、データバスD0〜7をクロックCKSで取込む。
Sレジスタの内容はP=1又はP=0のタイミング1〜
13のときエンベロープフラグであり、そのタイミング
のみでエンベロープフラグ制御回路446の出力は意味を
もっている。▲▼はエンベロープフラグがナンド
747より“*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、インバータ75
9、アンド760、オア761により、▲▼=▲▼=
0のとき、すなわちモードがマスクのとき、又は▲
▼=“0"かつ▲▼=1、すなわち、ステップ0の
最初に“1"となる。尚、ノーマルモードではステップ0
の最初にA入力が0となるため、エンベロープは必ず0
からスタートすることになる。F′は動作フロー(第20
A図)の分岐のためのフラグで、オア762、763、インバ
ータ764、アンド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▼をセットして次ステップをスタートする。もし、到
達した時サスティンフラグ(エンベロープレベルEL
ij(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
で生成されたエンベロープ及びキーコードは、クロック
CKEでフリップフロップ(FF)1000に取込まれる。FF100
0の出力は指数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となる。したがって、エンベロープレジスタ
1002はエンベロープ/キーコード生成回路12のタイミン
グでデータが書込まれ、インタフェース/制御部11のタ
イミングで読出され、FF1003を介して波形生成回路15に
送られる。 第47図は周波数情報レジスタ1004の詳細図で、エンベ
ロープレジスタ1002と全く同様の動作をする。読出され
た周波数情報FI0〜20はFF1005を介し、位相角生成用の
累算器(加算器1006、シフトレジスタ1007)へ送られ、
位相角が生成される。 第49図は、OCレジスタ14の詳細図である。OCレジスタ
14はエンベロープレジスタ1002や周波数情報レジスタ10
04と同様に偶数チャンネル用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、11
30、1132、ゲート回路1129、1131、1135、位相角変更回
路1120、加減算器1126を制御することによって行なわれ
る。表6にCPUから入力されたOCデータ上位4ビットに
対応する演算で示す(第49図参照)。 これらの演算制御によって、波形が生成される。 以下に波形生成例を示す。ただし、iはモジュールN
o、jはチャンネルNoとする。 1) Ei+1jsin(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) Ei+2jsin(EijsinPij-Ei+1jsinPi+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″
sinX′は楽音出力として累算される。以上のようにオペ
レーションコードによって、波形生成が様々に行なわれ
ることによって、多くの音色の楽音を発生できる。出力
波形は生成された波形を順次累算していくが、第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への入力は無
音状態のレベルに維持されるようになっている。 [発明の効果] 以上詳細に説明したように、本発明の楽音合成装置
は、同じメモリCPUからの転送データの記憶手段として
使用すると同時に楽音制御信号(例えばキーコード、エ
ンベロープ)を生成するための演算バッファとして使用
する、というアーキテクチャーであるので専用メモリの
分散配置という従来アーキテクチャーと好対照をなして
おり、ハードウェアの回路規模を縮少できるとともに分
散回路配置の複雑さを回避できる。更に、メモリの共通
化に伴う問題であるメモリアクセスの競合問題を占有の
時間割当方式で解消していので、CPUからの転送データ
の書き込みを即座に実行できるとともに、楽音制御信号
生成回路手段によるメモリのリード/ライト動作、内部
演算動作も遅れなしに実行でき、問題のない楽音実時間
処理を保証するものである。
【図面の簡単な説明】
第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、6……音源L
SI、7……外部RAM、8……デジタルアナログ変換器、
9……アンプ、10……スピーカ、11……インタフェース
/制御部、12……エンベロープ/キーコード生成回路、
15……波形生成回路、159……タイミング信号発生回
路。
図、第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、6……音源L
SI、7……外部RAM、8……デジタルアナログ変換器、
9……アンプ、10……スピーカ、11……インタフェース
/制御部、12……エンベロープ/キーコード生成回路、
15……波形生成回路、159……タイミング信号発生回
路。
Claims (1)
- (57)【特許請求の範囲】 1.演奏状態をモニターするCPU(3)によって制御さ
れて、複数の楽音チャンネルの各々の楽音を合成する楽
音合成装置において、 (a) メモリ(7)と、 (b) CPUから転送される複数の楽音チャンネルの各
々に関連するデータを受け、上記メモリ(7)に書き込
むインタフェース回路(11)と、 (c) 上記メモリを演算バッファとして利用して、CP
Uから転送されるデータを読み出して、当該データに基
づき、一連の動作シーケンスに基づく演算処理を実行し
て、上記複数の楽音チャンネルの各々に関連する楽音制
御信号を生成するとともに、生成したデータにより上記
メモリの内容を更新する楽音制御信号発生回路(12)
と、 (d) 生成された楽音制御信号に基づいて各楽音チャ
ンネルの楽音波形を発生する波形生成回路(15)と、 (e) 交互にハイレベルとロウレベルに遷移するパル
ス列である占有タイミング制御信号(T2)を発生するタ
イミング信号発生回路(159)とを備え、 (f) 上記占有タイミング制御信号によって、上記イ
ンタフェース回路による上記メモリの占有と上記楽音制
御信号発生回路による上記メモリの占有とを交互に切り
換え、かつ、 (g) 上記楽音制御信号発生回路が上記メモリからあ
る楽音チャンネルに関連するデータを読み出して、これ
に基づく演算処理を実行している際に、上記CPUから当
該楽音チャンネルに関連する対応するデータが書き込ま
れた場合に、上記楽音制御信号発生回路によるメモリの
内容の更新を制限する書き込み制限回路(302)を備え
たことを特徴とする楽音合成装置。 2.特許請求の範囲第1項に記載の楽音合成装置におい
て、上記インタフェース回路は、上記CPUからのデータ
転送命令(表1)に含まれるインストラクションコード
から、上記メモリをアクセスするためのインタフェース
用アドレス(AA0〜AA11)を生成するインタフェース用
アドレス生成回路を含むことを特徴とする楽音合成装
置。 3.特許請求の範囲第2項に記載の楽音合成装置におい
て、上記楽音制御信号回路は一連の動作シーケンス(第
20A図)を通じて上記楽音制御信号を生成するものであ
り、この一連の動作シーケンスにおける各メモリアクセ
スステップにおいて、上記メモリをアクセスするための
演算用アドレス(BA0〜BA11)を生成する演算用アドレ
ス生成回路(301)を含み、上記書き込み制限回路が、
必要な場合に上記演算用アドレスに対応するデータの書
き込みを制限するように構成されたことを特徴とする楽
音合成装置。 4.特許請求の範囲第3項に記載の楽音合成装置におい
て、上記メモリにはメモリインタフェース回路(16)が
接続され、このメモリインタフェース回路は、上記イン
タフェース用アドレスと上記演算用アドレスとが入力さ
れるメモリアドレス選択回路(776、777-778、789-80
0)を有し、このメモリアドレス選択回路は、上記占有
タイミング制御信号が第1のレベルのときに、上記メモ
リをアクセスするためのアドレスとして、上記インタフ
ェース用アドレスを選択出力し、第2のレベルのとき
に、上記演算用アドレスを選択出力することを特徴とす
る楽音合成装置。 5.特許請求の範囲第1項または第4項に記載の楽音合
成装置において、上記インタフェース回路は、上記占有
タイミング制御信号が第1のレベルにあって上記メモリ
のインタフェース回路による占有状態を示していること
を必要条件として、上記メモリをライトアクセスするた
めの書込制御信号(▲▼)を発生するインタフェー
ス用書込制御信号発生回路(181、178、179、182)を有
し、上記楽音制御信号回路は、上記占有タイミング制御
信号が第2のレベルにあって上記メモリの楽音制御信号
回路による占有状態を示していることを必要条件とし
て、上記メモリをライトアクセスするための書込制御信
号(▲▼)を発生する演算用書込制御信号発生回路
(302)を有することを特徴とする楽音合成装置。 6.特許請求の範囲第1項、第4項または第5項に記載
の楽音合成装置において、上記メモリ、上記インタフェ
ース回路及び上記楽音制御信号回路はデータバス(D0〜
D7)を介して接続されることを特徴とする楽音合成装
置。 7.特許請求の範囲第6項記載の楽音合成装置におい
て、 (h) 上記インタフェース回路は、上記CPUから転送
されたデータを一時記憶するレジスタ(130-137)とこ
のレジスタの記憶データを、上記データバス上へ出力す
る出力回路(138-145)を有し、この出力回路は、上記
占有タイミング制御信号が第1のレベルにあることを必
要条件として出力動作し(181、112、163)、 (i) 上記楽音制御信号発生回路は演算結果を一時的
に記憶するレジスタ(485-499、564-578)とこのレジス
タの記憶データを上記データバス上へ出力する出力回路
(500-514、579-593)を有し、この出力回路は上記占有
タイミング制御信号が第2のレベルにあることを必要条
件として出力動作する(304)ことを特徴とする楽音合
成装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62249467A JP2753511B2 (ja) | 1987-10-02 | 1987-10-02 | 楽音合成装置 |
CA000560776A CA1297609C (en) | 1987-10-02 | 1988-03-08 | Resin compositions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62249467A JP2753511B2 (ja) | 1987-10-02 | 1987-10-02 | 楽音合成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS6491194A JPS6491194A (en) | 1989-04-10 |
JP2753511B2 true JP2753511B2 (ja) | 1998-05-20 |
Family
ID=17193390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62249467A Expired - Fee Related JP2753511B2 (ja) | 1987-10-02 | 1987-10-02 | 楽音合成装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2753511B2 (ja) |
CA (1) | CA1297609C (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2917668B2 (ja) * | 1992-05-22 | 1999-07-12 | ヤマハ株式会社 | 電子楽器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6145290A (ja) * | 1984-08-09 | 1986-03-05 | カシオ計算機株式会社 | 電子楽器 |
JPS61282954A (ja) * | 1985-06-07 | 1986-12-13 | Hitachi Electronics Eng Co Ltd | アクセス制御方式 |
JPH0799478B2 (ja) * | 1985-11-22 | 1995-10-25 | カシオ計算機株式会社 | 電子楽器 |
-
1987
- 1987-10-02 JP JP62249467A patent/JP2753511B2/ja not_active Expired - Fee Related
-
1988
- 1988-03-08 CA CA000560776A patent/CA1297609C/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPS6491194A (en) | 1989-04-10 |
CA1297609C (en) | 1992-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US3844379A (en) | Electronic musical instrument with key coding in a key address memory | |
US4508002A (en) | Method and apparatus for improved automatic harmonization | |
JPS6143792A (ja) | 電子楽器 | |
JP2753511B2 (ja) | 楽音合成装置 | |
JP2722460B2 (ja) | 楽音合成装置 | |
JP2527652Y2 (ja) | 楽音合成装置 | |
JP2718039B2 (ja) | 楽音合成装置 | |
JPH0738956Y2 (ja) | 楽音合成装置 | |
JPH02254496A (ja) | 楽音発生装置 | |
JP2766133B2 (ja) | パラレル・シリアル・データ変換回路 | |
JPH0738955Y2 (ja) | 楽音合成装置 | |
JP2997470B2 (ja) | 楽音情報処理装置 | |
JPS6330638B2 (ja) | ||
US4936179A (en) | Electronic musical instrument | |
JPH0750799Y2 (ja) | 楽音位相同期装置 | |
JPS6042955B2 (ja) | 電子楽器用ウエイブジエネレ−タ | |
JP3223560B2 (ja) | 波形データ読出し装置 | |
JP2575856B2 (ja) | 演算回路 | |
JPH0460595A (ja) | 電子楽器用処理装置 | |
JP3116447B2 (ja) | デジタル信号処理プロセッサ | |
JP2798913B2 (ja) | 楽音波形生成装置及び楽音波形生成方法 | |
JPH0460725A (ja) | デジタルマイクロコンピュータ | |
JPS583237B2 (ja) | デンシガツキ | |
JP2705042B2 (ja) | エンベロープ波形生成方式 | |
JPS6034757B2 (ja) | 電子楽器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |