(57)【特許請求の範囲】
【請求項１】
複数のマイクロプログラムを時分割で実行することにより、入力されたディジタル信号に種々の演算処理を施す信号処理装置において、
処理されるディジタル信号が入力される第１所定数の入力チャンネルと、
処理されたディジタル信号が出力される第２所定数の出力チャンネルと、
前記入力されたディジタル信号と前記第２所定数の出力チャンネルから出力されたディジタル信号とを混合して複数チャンネルの信号を生成し、該複数チャンネルの信号のうち前記第１所定数の信号を前記入力チャンネルに入力する混合回路と、
複数の効果に対応した前記複数のマイクロプログラムを時分割で実行する信号処理回路と、
前記複数のマイクロプログラムの各マイクロプログラム毎に、前記第１所定数の入力チャンネルのうちの当該マイクロプログラムによって使用される入力チャンネルと、前記第２所定数の出力チャンネルのうちの当該マイクロプログラムによって使用される出力チャンネルとを、それぞれ設定する設定手段と
を有し、
前記信号処理回路は、前記複数のマイクロプログラムの各マイクロプログラム毎に、前記設定された入力チャンネルから入力されたディジタル信号に対して、当該マイクロプログラムを実行することによる効果を付与し、該効果が付与されたデジタル信号を前記設定された出力チャンネルから出力する
ことを特徴とする信号処理装置。
【請求項２】
前記信号処理回路は、
複数のマイクロプログラムを記憶する第１記憶手段と、
該第１記憶手段における各マイクロプログラムの記憶領域を示す制御情報を記憶する第２記憶手段と、
サンプリング周期毎に、時分割で前記第１記憶手段に記憶された複数のマイクロプログラムを読み出す読出手段と、
前記第２記憶手段に記憶された制御情報に基づいて、前記読出手段の読み出しているマイクロプログラムを判別する判別手段と、
変更指示が発生したとき、前記判別手段の判別結果に応じて前記複数のマイクロプログラムの中の変更すべきマイクロプログラムの実行のみを選択的に停止するとともに、該停止されたマイクロプログラムの実行期間において、前記変更すべきマイクロプログラムの記憶領域に新たなマイクロプログラムを書き込む変更手段と
を備えることを特徴とする請求項１記載の信号処理装置。
【請求項３】
前記ディジタル信号を遅延させるための遅延用記憶手段と、
前記ディジタル信号の圧縮処理を行って前記遅延用記憶手段に書き込むとともに、読み出し時に書き込み時と逆の伸張処理を行って出力するデータ変換手段とをさらに備え、
前記データ変換手段は、前記圧縮処理及び伸張処理の態様を変更可能に構成されていることを特徴とする請求項１記載の信号処理装置。
【請求項４】
前記圧縮処理の態様は、浮動小数点変換によりビット数を減少させる処理及び複数のビットから成る処理単位を分割する処理を含むことを特徴とする請求項３記載の信号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のマイクロプログラムを時分割で実行し、ディジタル信号に種々の演算処理を施す信号処理装置に関する。
【０００２】
【従来の技術】
例えば電子楽器において楽音にディストーションやリバーブといった音響効果を付与する場合に、ＤＳＰ（ディジタルシグナルプロセッサ）を用いるものが知られている。このような電子楽器では、複数の音響効果のそれぞれに対応したマイクロプログラムを時分割で（同時に）実行することにより、楽音に複数（例えば５個）の音響効果が付与される。そして、使用者の指示に応じて、実行するマイクロプログラムを変更することにより、例えば５個の音響効果の内の１つを、演奏中に他の音響効果に変更することができるようにした信号処理装置が既に提案されている（特開平６−２５９２４９号公報）。
【０００３】
この公報には、３種類のステップ数（２４、５６及び９６ステップ）のマイクロプログラムを選択して全体で５個のマイクロプログラムを時分割で実行可能することができる装置が示されている。
【０００４】
【発明が解決しようとする課題】
しかしながら上記提案の装置では、時分割で実行可能なマイクロプログラムは５個に固定されており、またプログラムサイズ（ステップ数）は上記３種類以外のものに変更することはできないという問題がある。
【０００５】
また、上記提案の装置では時分割で実行されるマイクロプログラムのそれぞれに対応した入力チャンネル及び出力チャンネルは固定されているため、例えばモノラルの入力で十分であるにも拘わらず２つの入力チャンネルを使用せざるを得ない場合や、より多くの信号を並列に出力したいにもかかわらず出力できない場合があった。
【０００６】
また上記提案の装置では、音響効果を付与するために信号遅延用メモリを使用しているが、信号遅延用メモリにデータを書き込むときは、例えば３２ビットのデータを１６ビットの浮動小数点化したデータに変換するなどして、データの圧縮を行って書き込むことが一般に行われている。遅延用メモリの容量が過大とならないようにするためである。このため、遅延させたデータの精度が低下して無視できないノイズを発生させ、出力される楽音の質を悪化させる場合があった。
【０００７】
本発明は上述した点に鑑みなされたものであり、マイクロプログラムの変更をより柔軟に行うことができ、使い勝手を向上させた信号処理装置を提供することを第１の目的とする。
【０００８】
また本発明は、各マイクロプログラムが使用する入力チャンネル及び／又は出力チャンネルの割り当てを、より適切に行うことができる信号処理装置を提供することを第２の目的とする。
【０００９】
さらに本発明は、信号遅延用メモリを使用する場合に、データの圧縮処理をより適切に行い、遅延用メモリの容量の増加を抑制しつつ必要なデータの精度を確保することができる信号処理装置を提供することを第３の目的とする。
【００１０】
【課題を解決するための手段】
【００１２】
上記第２の目的を達成するため請求項１に記載の発明は、複数のマイクロプログラムを時分割で実行することにより、入力されたディジタル信号に種々の演算処理を施す信号処理装置において、処理されるディジタル信号が入力される第１所定数の入力チャンネルと、処理されたディジタル信号が出力される第２所定数の出力チャンネルと、前記入力されたディジタル信号と前記第２所定数の出力チャンネルから出力されたディジタル信号とを混合して複数チャンネルの信号を生成し、該複数チャンネルの信号のうち前記第１所定数の信号を前記入力チャンネルに入力する混合回路と、複数の効果に対応した前記複数のマイクロプログラムを時分割で実行する信号処理回路と、前記複数のマイクロプログラムの各マイクロプログラム毎に、前記第１所定数の入力チャンネルのうちの当該マイクロプログラムによって使用される入力チャンネルと、前記第２所定数の出力チャンネルのうちの当該マイクロプログラムによって使用される出力チャンネルとを、それぞれ設定する設定手段とを有し、前記信号処理回路は、前記複数のマイクロプログラムの各マイクロプログラム毎に、前記設定された入力チャンネルから入力されたディジタル信号に対して、当該マイクロプログラムを実行することによる効果を付与し、該効果が付与されたデジタル信号を前記設定された出力チャンネルから出力することを特徴とする。
【００１３】
請求項２に記載の発明は、請求項１に記載の信号処理装置において、前記信号処理回路は、複数のマイクロプログラムを記憶する第１記憶手段と、該第１記憶手段における各マイクロプログラムの記憶領域を示す制御情報を記憶する第２記憶手段と、サンプリング周期毎に、時分割で前記第１記憶手段に記憶された複数のマイクロプログラムを読み出す読出手段と、前記第２記憶手段に記憶された制御情報に基づいて、前記読出手段の読み出しているマイクロプログラムを判別する判別手段と、変更指示が発生したとき、前記判別手段の判別結果に応じて前記複数のマイクロプログラムの中の変更すべきマイクロプログラムの実行のみを選択的に停止するとともに、該停止されたマイクロプログラムの実行期間において、前記変更すべきマイクロプログラムの記憶領域に新たなマイクロプログラムを書き込む変更手段とを備えることを特徴とする。
【００１４】
請求項３に記載の発明は、請求項１に記載の信号処理装置において、前記ディジタル信号を遅延させるための遅延用記憶手段と、前記ディジタル信号の圧縮処理を行って前記遅延用記憶手段に書き込むとともに、読み出し時に書き込み時と逆の伸張処理を行って出力するデータ変換手段とをさらに備え、前記データ変換手段は、前記圧縮処理及び伸張処理の態様を変更可能に構成されていることを特徴とする。
【００１５】
請求項６に記載の発明は、請求項５に記載の信号処理装置において、前記圧縮処理の態様は、浮動小数点変換によりビット数を減少させる処理及び複数のビットから成る処理単位を分割する処理を含むことを特徴とする。
【００１７】
請求項２に記載の発明によれば、時分割処理により、任意ステップ数の複数のマイクロプログラムが並列的に実行され、さらに変更指示に応じて前記複数のマイクロプログラムのうちの変更すべきマイクロプログラムの実行のみが選択的に停止されるとともに、該停止されたマイクロプログラムの実行期間において、変更すべきマイクロプログラムの記憶領域に新たなマイクロプログラムが書き込まれる。
【００１９】
請求項５に記載の発明によれば、ディジタル信号が圧縮処理を施されて遅延用記憶手段に書き込まれ、読み出し時に書き込み時と逆の伸張処理を施されて出力され、前記圧縮処理及び伸張処理の態様が必要に応じて変更される。
【００２０】
【発明の実施の形態】
以下本発明の実施の形態を図面を参照して説明する。
【００２１】
図１は本発明の実施の一形態にかかる電子楽器の構成を示すブロック図である。この電子楽器は、選択した音響効果の名称など各種の情報を表示するための表示部１と、使用者が音色、音響効果の選択など各種の設定を行うためのスイッチパネル２と、当該電子楽器全体の制御を行うＣＰＵ３と、ＣＰＵ３で実行されるプログラムやプログラムの実行に必要なテーブル等が記憶されるＲＯＭ４と、ＣＰＵ５のワーキングエリアとして使用され、演算途中のデータ等を記憶するＲＡＭ５と、使用者が演奏操作を行う鍵盤６と、演奏データなどを記憶する外部記憶装置７と、鍵盤６の押鍵操作に応じて楽音信号を生成する音源８と、これらの各構成要素１から８を相互に接続するシステムバス１１と、音源８から出力されるディジタル信号をアナログ信号に変換するＤＡ変換器９と、ＤＡ変換器９から出力される楽音信号を増幅してスピーカから出力するサウンドシステム１０とを主たる構成要素とする。音源８には、楽音信号生成のための波形メモリ１２と、例えば外部エフェクタ等の外部回路１３と、音響効果付与のために使用される遅延メモリ１４とが接続されている。
【００２２】
ＣＰＵ３は、スイッチパネル２のスイッチの操作を検出し、それに応じて音色や音響効果の選択の処理を行い、また、鍵盤６の鍵操作を検出し、それに応じて音源８の制御を行う。例えば、鍵盤６でいずれかの鍵の押鍵が検出された場合、ＣＰＵ３は、音源８の３２の発音チャンネルのうちの１つをその発音に割り当て、選択されている音色の該押鍵に対応した制御信号を生成して、音源８の制御レジスタに割り当てた発音チャンネルの制御信号として書き込み、該押鍵に対応する楽音の生成を開始させる。音源８では、さらに、生成される楽音にそのとき選択されている音響効果が付与され、効果の付与されたディジタル信号がＤＡ変換器９でアナログ信号に変換され、サウンドシステム１０に供給される。
【００２３】
図２は、音源８の構成を詳細に示すブロック図である。音源８は、システムバス１１に接続され、ＣＰＵ３からの制御信号が書き込まれる各種レジスタ等を有する制御レジスタ２１と、制御レジスタ２１からの制御信号に応じて波形メモリ１２から波形データを読み出し、所望のピッチに変換するための補間処理などを行う読み書き回路２２と、制御レジスタ２１からの制御信号に応じて読み書き回路２２の出力信号にエンベロープを付加する音量変化制御回路２３と、入力信号のレベルを調整してミキシングを行うミキサ２４と、ミキサ２４と外部回路１３の間に介装されたインターフェース回路２５と、ＤＳＰで構成され、各種音響効果付与のための処理を行う信号処理回路２６と、遅延メモリ１４に書き込み、また遅延メモリ１４から読み出すデータを切り換えるためのセレクタ２７と、ＣＰＵ３が直接遅延メモリ１４にアクセスするときの読み書き制御を行う読み書き回路２８とを備えている。
【００２４】
制御レジスタ２１に記憶された各発音チャンネルの制御信号に応じて、読み書き回路２２と音量変化制御回路２３では、時分割で３２の発音チャンネル動作を行い、３２個の楽音波形を生成する。読み書き回路２３は、サンプリング周期（例えば１／４８ｋＨｚ）毎に波形メモリ１２から時分割で３２チャンネル分の波形データを読み出し、補間処理を行って各チャンネルで指示された音高に応じた３２個の補間サンプルを時分割で出力する。音量変化制御回路２３は、前記３２個の補間サンプルに対し、制御レジスタ２１の制御信号に応じて時分割で各発音チャンネル毎に独立の音量エンベロープを付与し、ミキサ２４に出力する。
【００２５】
ミキサ２４では、制御レジスタ２１の制御信号にしたがって、外部回路１３からインターフェース回路２５を介して入力される８個の楽音波形と、音量変化制御回路２３から出力される前記３２個の楽音波形と、信号処理回路２６から出力される８個の楽音波形とを１６個の出力別にミキシングし、得られた１６個の混合波形のうちの８個をインターフェース回路２５を介して外部回路１３に出力するとともに、残りの８個の混合波形を信号処理回路２６に出力する。
【００２６】
外部回路１３は、例えば外部エフェクタであり、インターフェース回路２５から入力される１ないし複数の楽音波形に対してエフェクトを付与して、エフェクトの付与された１ないし複数の楽音波形をインターフェース回路２５に出力する。
【００２７】
信号処理回路２６は、ミキサ２４から入力される８個の混合波形に対して信号処理を施して、８個の楽音波形をミキサ２４に対して出力するとともに、４個の楽音波形をＤＡ変換器９に出力する。信号処理回路２６は、時分割で複数のマイクロプログラムに基づく信号処理を実行可能であるが、ミキサ２４から入力される混合波形の８チャンネル、ミキサ２４に対して楽音波形を出力する８チャンネル、及びＤＡ変換器９に対して楽音波形を出力する４チャンネルは、前記複数のマイクロプログラムのうちの何れが使用してもよく、どのマイクロプログラムがどのチャンネルを使用するかを任意に設定できるように構成されている。
【００２８】
セレクタ２７は、信号処理回路２６で実行されるマイクロプログラムの一部の実行を停止したときは、ＣＰＵ３が読み書き回路２８を介して遅延メモリ１４にアクセス可能とするために設けられており、特定のマイクロプログラムの停止を示すＨＢ信号（各マイクロプログラムは、付加される音響効果に対応しているので、エフェクタブロックとも呼び、ＨＢ信号は停止するエフェクタブロックを示すホールトブロック信号の意味である）が入力されたとき、ＣＰＵ３のアクセスを可能とする。
【００２９】
以上のように音源８は、制御レジスタ２１に書き込まれる制御信号に応じて、楽音信号を生成し、音響効果を付加してＤＡ変換器９に出力する。
【００３０】
図３は、ＤＳＰで構成される信号処理回路２６及びその信号処理回路２６に制御信号を供給する制御レジスタ２１の構成要素を示すブロック図である。
【００３１】
この図の基づいて制御レジスタ２１及び信号処理回路２６の構成を説明する前に、制御レジスタ２１のマイクロプログラム（ＭＰ）制御部４２で実行されるマイクロプログラムと、各マイクロプログラムに対応して設定される遅延メモリ１４のバンクとの関係について、図８を参照して説明する。図８は、時分割で実行される６個のマイクロプログラムがＭＰ制御部４２のマイクロプログラムＲＡＭ（以下「ＭＰＲＡＭ」という）７３（図４参照）に格納され、それに対応して遅延メモリ１４にバンク１からバンク６までの６個のバンク（メモリ領域）を設定した例を示している。本実施形態では、ＭＰＲＡＭ７３は、ステップ０から３８３までの合計３８４ステップのマイクロプログラムが格納可能であり、図示例では３８４ステップが６個のマイクロプログラムＭＰ１〜ＭＰ６に割り当てられている。そして、各マイクロプログラムＭＰ１〜ＭＰ６は、それぞれ遅延メモリ１４の対応するバンク１〜６を使用して信号の遅延処理を行う。
【００３２】
ＭＰＲＡＭ７３に記憶された全３８４ステップのマイクロプログラムは、ＤＡ変換器９の１サンプリング周期（１／４８ｋＨｚ、以下「１ＤＡＣサイクル」という）の３８４倍のステップクロック（４８ｋＨｚ×３８４＝１８．４３２ＭＨｚ、以下「Ｓクロック」という）毎に１ステップずつ読み出され、信号処理回路２６を制御する制御信号に変換される。つまり、本実施形態では１ＤＡＣサイクルの間に全３８４ステップが１回通り読み出される。上述した例では、この３８４ステップの中にＭＰ１〜ＭＰ６の６個のマイクロプログラムが入っており、したがって各ＤＡＣサイクルに６個のマイクロプログラムが時分割で実行される。本実施形態では、遅延メモリ１４は１６ビット単位のデータを２５６Ｋ（２５６×１０００）個格納する容量（約４Ｍビット）の容量を有している。また遅延メモリ１４のバンク０は、各マイクロプログラムがアクセス可能な領域であり、例えば共通に使用するテーブルデータなどが格納される。
【００３３】
図３に戻り、制御レジスタ２１は、低周波発振器４６に制御パラメータを供給するＬＦＯレジスタ４１と、複数のマイクロプログラムを格納するマイクロプログラムＲＡＭを備え、各マイクロプログラムを時分割で実行することにより、後述する乗算器、加算器、各種レジスタ、セレクタなどに制御信号を供給するＭＰ制御部４２と、乗算器に乗算データを供給する係数レジスタ４３と、実行するマイクロプログラムの先頭ステップ番号、各エフェクタブロックに対応する遅延メモリ１４のバンクサイズ及び遅延メモリ１４の各バンクの先頭アドレスを供給するブロックレジスタ４４と、遅延メモリ用アドレス発生部６２にアドレスデータＡＤを供給するアドレスレジスタ４５とを備えている。
【００３４】
低周波発振器４６は、時分割１６チャンネル動作を行い、１６個の異なる低周波波形（変調データ）を発生する。ＬＦＯレジスタ４１には、変調データの周波数、振幅、波形形状等を制御する制御パラメータがそれぞれ１６個ずつ記憶され、生成する１６個の変調データを独立に制御するように構成されている。係数レジスタ４３は、マイクロプログラムの各ステップに対応する３８４の記憶エリアを有しており、各ステップの信号処理で乗算に使用する係数を記憶する。アドレスレジスタ４５は、マイクロプログラムの各ステップに対応する３８４の記憶エリアを有しており、各ステップの信号処理で遅延用メモリ１４にアクセスする場合に使用するアドレスデータＡＤを記憶する。
【００３５】
信号処理回路２６は、ビブラートやトレモロ等の効果を付加するために楽音データを変調する変調データを発生する低周波発振器（ＬＦＯ）４６と、係数レジスタ４３から供給されるデータの補間演算を行う補間器５４と、レジスタ４７、４８、５５と、データバス４９、５１、５９と、データを選択するための各種セレクタ５２、５３、５６と、乗算器５７と、加算器５８と、遅延メモリ１４に書き込むデータの圧縮処理を行う３２−１６変換器６１と、遅延メモリ１４から読み出すデータの伸張処理を行う１６−３２変換器６０と、遅延メモリ１４の書き込みアドレス及び読み出しアドレスの制御を行う遅延メモリ用アドレス発生部６２と、ＭＰ制御部４２から出力される制御信号を乗算器５７、加算器５８、各レジスタ、各セレクタ等に供給するためのプログラムバス（図示省略）とを主たる構成要素とする。
【００３６】
Ｉレジスタ４７は、ミキサ２４が出力した８個の混合波形を記憶する入力領域と、ＬＦＯ４６が出力した１６個の変調データを記憶するＬＦＯ領域と、遅延メモリ１４から読み出されたデータ又はＤバス５９上に出力された演算結果のデータを複数記憶する汎用領域と、ミキサ２４に入力する８個の楽音波形を記憶する出力領域と、ＤＡＣ出力部５０に供給する楽音波形を記憶するＤＡＣ領域とを備えている。マイクロプログラムの各ステップの命令では、Ｉレジスタ４７上の任意の領域を指定して読み出し及び書き込みが可能である。複数のマイクロプログラムを時分割で実行する場合、何れのマイクロプログラムでもＩレジスタ４７に記憶されている８個の混合波形、１６個の変調データ及びその他データにアクセス可能である。
【００３７】
時分割で実行される複数のマイクロプログラムは、各マイクロプログラム毎に異なる処理アルゴリズム（エフェクトアルゴリズム）を有しており、それぞれ異なる入力数及び出力数を備えている。各マイクロプログラムの各入力は、それぞれ独立にミキシングした混合波形を入力することが望ましい。本実施形態では、限られた数、即ち８個の混合波形を各マイクロプログラムに割り当てて使用する。例えば図１０（ｂ）は、同時に実行される複数のマイクロプログラムのうち、１つ（ＭＰ１）は２個の混合波形が入力とされ、他のもの（ＭＰ２〜ＭＰ４）はそれぞれ１個の混合波形が入力とされるように設定された例を示している。混合波形を各マイクロプログラムに割り当てて入力するようにしており、固定的に決められた混合波形を入力するのに比べて無駄が少ない。
【００３８】
複数のマイクロプログラムの入力数の和が、算出される混合波形の数以下である限り、各マイクロプログラムの入力数を自由に変更することができる。各マイクロプログラムが８個の混合波形のうちのどの混合波形を入力として使用するかは、ＣＰＵ３が各マイクロプログラムの中に含まれているＩレジスタ４７のアクセス命令を書き替えることにより制御する。
【００３９】
なお、本実施形態では、Ｉレジスタ４７に入力する混合波形の数は８であるが、この数はミキサ２４の設計変更により増やしたり減らしたりしてもよい。
【００４０】
また出力に関しても同様に８個の出力を各マイクロプログラムに割り当て、各マイクロプログラムは割り当てられたＩレジスタ４７の出力領域に対して処理済みの楽音波形を書き込むように構成されている。
【００４１】
ＤＡＣ領域には、制御信号に応じて、８個の混合波形、各マイクロプログラムの出力又はその処理途中の波形等のうちの任意の波形が選択的に書き込まれ、該書き込まれた波形は、マイクロプログラムの３８４ステップが終了する毎（サンプリング周期毎）にＤＡＣ出力部５０に供給される。
【００４２】
また、Ｔレジスタ４８は、Ｄバス５９上に出力される加算器出力を一時的に保存するテンポラリレジスタであり、複数のデータを保存する複数の記憶エリアを有している。Ｔレジスタ４８も、Ｉレジスタ４７の場合と同様に、マイクロプログラムの各ステップの命令により、Ｔレジスタ４８上の任意の記憶エリアを指定して読み出し及び書き込みが可能である。Ｔレジスタ４８から読み出されたデータは、Ｔバス５１を介してセレクタ５２及び５３に出力される。
【００４３】
セレクタ５２は、制御信号に応じてＩバス４９又はＴバス５１からのデータのいずれかを選択して乗算器５７に入力する。セレクタ５３には、Ｄバス５９からも直接データが入力され、セレクタ５３は、制御信号に応じてＩバス４９、Ｔバス５１又はＤバス５９からのデータのいずれかを選択して、加算器５８に入力する。セレクタ５３、加算器５８及びＤバス５９で構成されるループにより、累算が行われる。
【００４４】
Ｙレジスタ５５には、補間器５４の出力データ及びＤバス５９のデータが入力され、セレクタ５６にデータが出力される。セレクタ５６は、制御信号に応じて補間器５４の出力データ又はＹレジスタの出力データのいずれかを選択し、乗算器５７に入力する。乗算器５７は、制御信号に応じて入力データの乗算を行って演算結果を加算器５８に入力し、加算器５８は、制御信号に応じて入力データの加算を行って演算結果をＤバス５９に出力する。Ｄバス５９は、３２−１６変換器６１及び遅延メモリ用アドレス発生部６２にも接続されており、加算器５８の出力が供給される。
【００４５】
３２−１６変換器６１は、入力される３２ビットの波形データを１６ビットデータに変換し、セレクタ２７（図２参照）を介して遅延メモリ１４のデータバスに出力する。一方１６−３２変換器６０は、遅延メモリ１４から読み出した１６ビットデータを３２ビットの波形データに変換して、Ｉレジスタ４７に入力する。
【００４６】
遅延メモリ用アドレス発生部６２には、Ｄバス５９を介してアドレスデータを変調する変調データが入力されるとともに、ブロックレジスタ４４から各バンクのサイズＢＳ及び各バンクの先頭アドレスＴＡＤが入力され、アドレスレジスタ４５からアドレスデータＡＤが入力される。アドレス発生部６２は、入力データに基づいて修正アドレスデータＭＡＤを演算し、セレクタ２７を介して遅延メモリ１４のアドレスバスに出力する。
【００４７】
以上のように構成される信号処理回路の動作を説明する。各レジスタ、セレクタ等には、ＭＰ制御部４２で実行されているマイクロプログラムに応じた制御信号が供給され、例えばＩレジスタ４７のデータとＹレジスタ５５のデータの乗算を行い、さらにＴレジスタ４８のデータと加算してＤバス５９に出力するといった演算が実行される。また、Ｉレジスタ４７のデータをそのままＩバス４９、セレクタ５３、加算器５８、Ｄバス５９を介して３２−１６変換器６１に供給し、遅延メモリ１４に格納するといった処理も行われる。その場合には、加算器５８には、演算を行わずに単にデータを通過させるような制御信号が供給される。したがって、図３の構成により、データの遅延処理を含めた、種々の積和演算処理、累算処理等を行うことができ、楽音信号に種々の音響効果を付加して出力することができる。
【００４８】
例えば一定時間遅延させたデータと遅延させないデータとを適当なレベル比で加算することにより、リバーブの効果を付加することができる。また、遅延メモリ１４にデータを書き込むとともに、格納されているデータを異なる位相（例えば０度、１２０度、２４０度の三相）で読み出し、読み出したデータを加算して出力することにより、コーラスの効果を付加することができる。
【００４９】
図４は、ＭＰ制御部４２の構成を示すブロック図であり、ＭＰ制御部４２は、前述したＭＰＲＡＭ７３と、ＭＰＲＡＭ７３へのマイクロプログラムの書き込みを制御する書込回路７１と、各サンプリング周期毎に、０から３８３まで順次カウントし、そのカウント値ＳＣをステップ番号として出力するステップカウンタ７２と、エフェクタブロック（マイクロプログラム）の番号であるブロック番号ＢＮを発生するブロック番号（ＢＮ）発生器７４とを備えている。ＢＮ発生器７４には、ブロックレジスタ４４が接続されており、ブロックレジスタ４４は、図７に示すように、各エフェクタブロックに対応したマイクロプログラムの先頭ステップ番号ＳＳを格納したＳＳレジスタと、遅延メモリの各バンクの先頭アドレスＴＡＤを格納したＴＡＤレジスタと、各バンクのサイズＢＳを格納するＢＳレジスタとを有する。図７に示す例は、図８の例に対応しており、ＳＳレジスタには、先頭ステップ番号ＳＳ２からＳＳ６までと、「０」が格納され、ＴＡＤレジスタには、先頭アドレスＴＡＤ１〜ＴＡＤ６が格納され、ＢＳレジスタには、バンクサイズＢＳ１〜ＢＳ６が格納されている。ここで、ＳＳレジスタに格納される「０」は、マイクロプログラムＭＰ６が最後のマイクロプログラムであり、その後はないことを示している。別の例として例えば、５個のマイクロプログラムをＭＰＲＡＭ７３に記憶した場合には、ＳＳレジスタにＳＳ２からＳＳ５までと「０」とが格納される。全３８４ステップを有効に使用するため、ＭＰ１の先頭ステップ番号は「０」に固定されている。すなわち、ＳＳ１は常に「０」であるため、ＳＳレジスタに格納されていない。
【００５０】
ＭＰＲＡＭ７３は、図８に示すように、本実施形態では合計３８４ステップのマイクロプログラムを格納する容量を有する読み書き可能なメモリで構成される。ＭＰＲＡＭ７３が記憶するマイクロプログラムは、ステップカウンタ７２から入力されるステップ番号ＳＣによって、各サンプリング周期の間にステップ０からステップ３８３まで１ステップずつ順次読み出され、読み出された各ステップの命令に対応した制御信号を信号処理回路２６の各部に出力する。
【００５１】
図８の例で例えば、スイッチパネル２から入力されるエフェクトの切換指示に応じて、動作中のマイクロプログラムＭＰ１，ＭＰ３〜ＭＰ６を止めずに、マイクロプログラムＭＰ２のみを他のマイクロプログラムに変更することが可能である。その場合の内部動作について詳細に説明する。
【００５２】
ＣＰＵ３は、前記エフェクトの切換指示に応じて以下の処理を実行し、音源８の制御レジスタ２１を介して上記変更の制御を行う。先ず、ミキサ２４を制御してマイクロプログラムＭＰ２の出力する楽音波形の入力レベル及び出力レベルをフェードアウトさせる。その後、ＣＰＵ３は、マイクロプログラムＭＰ２の実行の停止を指示する。制御レジスタ２１は、該停止の指示に応じて各サンプリング周期内のマイクロプログラムＭＰ２の実行期間（後述するブロック番号ＢＮ＝２の期間）において、先述した停止ブロック信号（ＨＢ信号）を発生する。一般的に、停止を指示されたマイクロプログラムに対応したブロック番号ＢＮがＭＰ制御部４２から出力されている期間中、制御レジスタ２１からＨＢ信号が出力される。同様に、複数のマイクロプログラムの停止が指示された場合には、対応する複数のブロック番号ＢＮの発生期間中、ＨＢ信号が出力される。
【００５３】
各サンプリング周期の中でＨＢ信号が出力されている間は、読み書き回路２８からの制御信号に応じてセレクタ２７が制御され、ＣＰＵ３は該読み書き回路２８を介して遅延メモリ１４の読み書きを行うことができる。あるいは、同期間において制御レジスタ２１からクリア信号ＣＬＲを供給することにより、後述するアドレス発生部６２を使用して、遅延メモリ１４の停止したマイクロプログラムＭＰ２に対応するバンク２の初期クリアを行うことができる。一方ＭＰ制御部４２では、ＨＢ信号の発生期間中、ステップカウンタ７２によるＭＰＲＡＭ７３の読み出し動作が停止され、代わりに書込回路７１を通じてＣＰＵ３からＭＰＲＡＭ７３へのマイクロプログラムの書き込みが可能となっている。
【００５４】
上記ＨＢ信号発生期間を使用して、ＣＰＵ３は、ＲＯＭ４に記憶されている複数のマイクロプログラムのうちスイッチパネル２の操作に応じて新たに選択されたマイクロプログラムを読み出し、ＭＰＲＡＭ７３のＭＰ２記憶領域に書き込むとともに、遅延メモリ１４のバンク２を初期クリア（全サンプルを０に）する。さらにＣＰＵ３は、新たにＭＰＲＡＭ７３に書き込んだマイクロプログラム中で使用する係数の係数レジスタ４３への設定、そのマイクロプログラムに含まれる遅延メモリ１４を使用した処理のためのアドレスレジスタ４５の設定、及びそのマイクロプログラムでＬＦＯ４６が使用されている場合にはＬＦＯレジスタ４１の設定を行う。その後、ＣＰＵ３は、制御レジスタ２１にマイクロプログラムＭＰ２の実行開始を指示するとともに、ミキサ２４を制御して新たなマイクロプログラムＭＰ２の入力レベル及び出力レベルをフェードインする。
【００５５】
また、マイクロプログラムの変更はこれに限らず、種々の態様で行うことができる。例えば、マイクロプログラムＭＰ１からＭＰ３の実行を停止し、よりプログラムサイズの小さい４個マイクロプログラムを、マイクロプログラムＭＰ１からＭＰ３が格納されている領域に書き込むこともできる。その場合、上記例と同様に、マイクロプログラムＭＰ１からＭＰ３の記憶領域に新たな４つのマイクロプログラムを書き込み、対応する遅延メモリ１４のバンク１から３をクリアするとともに、図７に示されるＳＳ，ＴＡＤ，ＢＳの各レジスタをマイクロプログラムＭＰ４からＭＰ６がＭＰ５からＭＰ７に変更されるよう順送りし、上記４つのマイクロプログラムをＭＰ１からＭＰ４として登録する。また、新たなバンク１からバンク４の設定も行う。そして、全設定が終わった後、ミキサ２４を制御してマイクロプログラムＭＰ１からＭＰ４のレベルをフェードインする。ここで、順送りの前のマイクロプログラムＭＰ４からＭＰ６が使用してＩレジスタ４７の前記入力領域及び出力領域は、順送りの後のマイクロプログラムＭ５からＭＰ７が使用しており、新たなマイクロプログラムＭＰ１からＭＰ４はそれとは異なる入力領域及び出力領域を使用している。
【００５６】
このように本実施形態では、複数のマイクロプログラムのうちの一部のマイクロプログラムを動作させたままで、他の一部のマイクロプログラムを異なるサイズの、あるいは異なる数のマイクロプログラムに変更することができる。また、ブロックレジスタの大きさが図７に示すように８なので、実行するマイクロプログラムの最大数は８個である。
【００５７】
ＲＯＭ４には、例えば、１１種類の音響効果に対応した１１個のマイクロプログラムが格納されており、使用者が上記条件（最大８個で、全ステップ数が３８４以下、全入力数が８個以下、全出力数が８個以下という条件）の範囲内で、実行するマイクロプログラムの種類や数を任意の組み合わせで選択し、ＭＰＲＡＭ７３に書き込むことができる。同一のマイクロプログラムを複数回書き込んでもよい。
【００５８】
ＢＮ発生器７４は、ステップカウンタ７２から入力されるステップ番号ＳＣと、ブロックレジスタ４４から入力される先頭ステップ番号ＳＳとに基づき、現在読み出し中のマイクロプログラムの属するブロック番号ＢＮを出力する。前記入力される先頭ステップ番号ＳＳは、現在のブロック番号ＢＮで示されるマイクロプログラムの次のマイクロプログラムの先頭ステップ番号ＳＳであり、ステップ番号ＳＣがその値に達したときブロック番号ＢＮを「１」だけ増加させるように構成されている。図７に示す例では、エフェクタブロックが全部で６個なので、初期値ＳＣ＝０のときのＢＮ＝１から始まって、ステップ番号ＳＣの進行にしたがってＢＮ＝６まで順次カウントアップし、その後、ステップ番号ＳＣが最終値３８３から最初の値０に戻るときに再びＢＮ＝１に戻される。
【００５９】
図５は、遅延メモリ用アドレス発生部６２の構成を示すブロック図であり、遅延メモリ用アドレス発生部６２は、Ｄバス５９を介して遅延メモリのアドレスデータを変調するための変調用データＩＤが書き込まれるインディクスレジスタ８１と、エフェクタブロック毎に対応するバンクのスタートアドレスＴＡＤからベース位置までの相対アドレスをカウントし生成するベースカウンタ８２と、インディクスレジスタ８１、アドレスレジスタ４５及びベースカウンタ８２の出力値を加算する加算器８３と、加算器８３の出力値が対応するエフェクタブロックのバンクサイズＢＳを越えたときは、そのバンクサイズＢＳの範囲内にアドレス値を変更するバンク範囲制限回路８４と、バンク範囲制限回路８４の出力値とブロックレジスタ４４から入力される各バンクの先頭アドレスＴＡＤとを加算して、修正アドレスＭＡＤを出力する加算器８５とを備えている。ベースカウンタ８２には、ブロック番号ＢＮがＢＮ発生器７４から供給され、後述する制御信号ＣＯＦＦがＭＰＲＡＭ７３から供給される。またバンク範囲制限回路８４及び加算器８５には、それぞれ実行中のマイクロプログラムに対応するバンクのバンクサイズＢＳ及び先頭アドレスＴＡＤが、ブロックレジスタ４４から供給される。例えば図８の例でマイクロプログラムＭＰ３の実行中は、バンク範囲制限回路８４にバンクサイズＢＳ３が供給され、加算器８５には先頭アドレスＴＡＤ３が供給される。
【００６０】
ベースカウンタ８２は、設定可能な最大ブロック数に対応して独立した８個のカウンタを有しており、ブロック番号ＢＮに応じて、１サンプリング周期中の各マイクロプログラムＭＰの期間に対応するカウンタの値を出力する。ベースカウンタ８２の各マイクロプログラムＭＰに対応する個々のカウンタは、同ＭＰが動作中（通常モード）か、停止中（クリアモード）かに応じて異なる動作を行う。すなわち、該個々のカウンタは、通常モードでは１ＤＡＣサイクル毎に１ずつカウントダウンした値（すなわち、各ＤＡＣサイクル内では一定値となる）を出力し、クリアモードでは、遅延メモリ１４の１アクセス毎に１ずつカウントダウンした値を出力する。
【００６１】
また、ＭＰＲＡＭ７３から制御信号ＣＯＦＦが出力されているときは、そのときのブロック番号ＢＮに関係なく、ベースカウンタ８２は「０」を出力する。制御信号ＣＯＦＦは、マイクロプログラム中の遅延メモリ１４のバンク０にアクセスする命令に応じて出力される。バンク０は何れのマイクロプログラムからもアクセス可能な記憶領域であり、しかも異なるＤＡＣサイクルでも、アドレスデータＡＤが同じなら同じデータがアクセスされる。一方、バンク１、２、…の各バンクは、対応するマイクロプログラムＭＰのみがアクセス可能な記憶領域であり、対応するベースカウント値に応じて、ＤＡＣサイクルが異なれば同じアドレスデータでも異なるアドレスデータがアクセスされる。
【００６２】
本実施形態では、バンクサイズＢＳを２のｎ（整数）乗のサイズとしているので、ベースカウンタ８２はｎの最大値より大きい所定ビット数のカウンタで構成し、バンクサイズＢＳと無関係に上述した時間間隔でフリーカウント動作をしている。後述するようにバンク範囲制限回路８４により、バンクサイズＢＳに応じて上位ビットがマスクされるので、最終的に得られるアドレスは、対応するバンクの範囲内のアドレスとなる。なお、バンクサイズＢＳを２のｎ乗のサイズとしない場合は、バンクサイズＢＳをベースカウンタ８２に入力するように構成し、ベースカウンタ８２は、入力されたバンクサイズＢＳの範囲でカウントダウン動作を繰り返すようにする。
【００６３】
制御信号ＣＯＦＦは、ブロックレジスタ４４にも供給されるように構成されており、ブロックレジスタ４４に制御信号ＣＯＦＦが入力されると、先頭アドレスＴＡＤとして「０」が出力される。
【００６４】
バンク範囲制限回路８４は、本実施形態では、加算器８３の出力アドレス値がバンクサイズＢＳを越えたときは、上位ビットをマスクして、出力アドレス値がバンク範囲内に入るようにしている。なお、バンクサイズＢＳを２のｎ乗のサイズとしない場合は、加算器８３の出力アドレス値がバンクサイズＢＳを越えたときは、出力アドレス値からバンクサイズＢＳを減算した値に変更して、バンク範囲内に入るようにする。
【００６５】
図５の構成によれば、通常モード時は、例えばブロック番号ＢＮ＝１であるときは、マイクロプログラムＭＰ１が実行されおり、ＭＰＲＡＭ７３から出力されるマイクロプログラムＭＰ１の制御信号にしたがって、遅延メモリ１４のバンク１の書き込み及び読み出しが行われる。例えば、ＢＮ＝１の期間において、ベースカウンタ８２の出力値ＣＤ＝ＣＤｎｏｗであるとき、アドレスＡＤ＝ＡＤｗで書き込みを行うと、その書き込みアドレスＭＡＤ＝ＴＡＤ１＋ＣＤｎｏｗ＋ＡＤｗである（インディクスレジスタ８１の変調データＩＤは「０」とし、ＣＤｎｏｗ＋ＡＤｗはバンクサイズＢＳ１の範囲内にあるとする）。ベースカウンタ８２は、１ＤＡＣサイクルで１カウントダウンするので、ｘＤＡＣサイクル後のカウント値ＣＤ＝ＣＤｎｏｗ−ｘとなる。そのとき、アドレスＡＤ＝ＡＤｗ＋ｘで読み出しを行うと、読み出しアドレスＭＡＤ＝ＴＡＤ１＋ＣＤｎｏｗ−ｘ＋ＡＤｗ＋ｘ＝ＴＡＤ１＋ＣＤｎｏｗ＋ＡＤｗとなり、ｘＤＡＣサイクル前に書き込んだデータが読み出される。基本的には以上のように読み書きアドレスが制御されるが、さらにＤバス５９からインディクスレジスタ８１に供給される変調データＩＤを制御して、遅延メモリ１４からの読み出し時のアドレスＭＡＤに修正を加えることができる。例えば、変調データＩＤとして、ＬＦＯ４６が出力する１６個の変調データの任意の１個に乗算器７で重みを乗算して得られるデータを供給すれば、遅延メモリ１４から該ＬＦＯ４６の変調データで位相変調された遅延波形データを読み出すことができる。他のマイクロプログラムＭＰ２〜ＭＰ６の実行時も同様であり、１ＤＡＣサイクル毎に、マイクロプログラムＭＰ１〜ＭＰ６が繰り返し実行される。
【００６６】
ここで、マイクロプログラムＭＰ１にバンク０のアクセス命令がある場合には、先述したように、制御信号ＣＯＦＦが出力され、ベースカウンタ８２の出力値ＣＤ及びブロックレジスタ４４から出力される先頭アドレスＴＡＤがともに「０」となり、バンク０のアドレスが出力される。バンク０には、例えば図９（ａ）に示すような、入出力テーブルが格納されており、アドレスレジスタ４５からこのテーブルの先頭アドレスが出力されるとともに、インディクスレジスタ８１から入力値に対応する差分アドレスが出力される。これにより、マイクロプログラムＭＰ１は、例えば遅延メモリ１４のバンク０に格納された複数の変換テーブルのうちの先頭アドレスＡＤで指定されたテーブルを選択的に使用して、インディクスレジスタに供給された入力値に対応する出力値を決定することができる。
【００６７】
各マイクロプログラムＭＰでは、そのときのブロック番号ＢＮで指定されるバンクをアクセスする命令と、バンク０をアクセスする命令が使用可能である。該バンク０をアクセスする命令により、何れのマイクロプログラムＭＰからでもバンク０のアクセスが可能であり、例えば図９（ａ）に示した入出力テーブルを、すべてのマイクロプログラムＭＰで使用することができる。
【００６８】
なお、バンク０に格納するデータは、図９（ａ）に示すテーブルに限るものではなく、例えば同図（ｂ）に示すような波形データを格納するようにしてもよい。波形データは、マイクロプログラムＭＰで楽音生成する際の素材の波形として使用したり、効果制御する際の音像定位や振幅／ピッチ変調を制御する波形として使用することができる。
【００６９】
次にクリアモード時おける図５のアドレス発生部６２の動作について説明する。この場合、ＣＰＵ３からの指示に応じて、変更するマイクロプログラムＭＰのブロック番号ＢＮの期間中、制御レジスタ２１はＨＢ信号とクリア信号ＣＬＲを発生しており、該マイクロプログラムに対応する遅延メモリ１４のバンクは、クリアモードとなっている。その間、変更しないマイクロプログラムに関してはＨＢ信号が発生せず、通常モードの動作が継続される。
【００７０】
クリアモードでは、インディクスレジスタ８１及びアドレスレジスタ４５の出力はともに「０」となり、またベースカウンタ８２は、クリア使用するバンクのサイズを初期値として、前述したように１アクセス時間毎のカウントダウン動作を行い、これをカウント値が「０」になるまで継続する。例えば、マイクロプログラムＭＰ１が変更される場合には、ＣＰＵ３はマイクロプログラムＭＰ１の停止を指示し、さらに対応するバンク１のクリアを指示する。それに応じて、制御レジスタ２１では、対応するブロック番号ＢＮ＝１の期間だけＨＢ信号及びクリア信号ＣＬＲが発生し、クリアモードの動作が実行される。
【００７１】
一方、先頭アドレスＴＡＤとしては、その間も通常モードと同じくブロック番号ＢＮ＝１に応じたバンク１の先頭アドレスが供給されており、加算器８５で該ＴＡＤ値を前記ベースカウンタ８２のカウント値と加算することにより、クリアするバンク１の最終アドレスから１アクセス毎にカウントダウンするアドレスが生成される。そして、３２−１６変換器６１からは、遅延メモリデータバスに「０」が出力され、それが遅延メモリ１４の該アドレスの位置に順次書き込まれ、バンク１の最終アドレスから順次１アドレス分のデータがクリアされる。ここで、バンク１のすべてのアドレスのクリアが終了しないときは、次のＤＡＣサイクルのＢＮ＝１の期間においてもクリアモードとされ、バンク１内のすべてのアドレスがクリアされるまで継続される。
【００７２】
なお既に説明したように、クリアモード中のエフェクタブロックは、ホールトブロックとなり、対応するマイクロプログラムの実行は停止されている。また、図２のセレクタ２７にＨＢ（ホールトブロック）信号が入力され、マイクロプログラムＭＰ１に割り当てられた期間中は、ＣＰＵ３が遅延メモリ１４のバンク０にアクセス可能となる。このタイミングを利用して例えば図９に示したテーブルデータ又は波形データの書き換えなどを行うことができるので、バンク０の内容の変更を効率よく行うことができる。
【００７３】
マイクロプログラムＭＰ１以外の他のマイクロプログラムを変更するときも同様であり、クリアモードとする（ホールトする）エフェクタブロックを複数指定すれば１度に複数のマイクロプログラムを変更することも可能である。
【００７４】
次に図６を参照して、遅延メモリ１４にデータを書き込むとき及び遅延メモリ１４からデータを読み出すときの、データ変換処理について説明する。
【００７５】
同図（ａ）は、３２−１６変換器６１の構成を示すブロック図であり、変換器６１は、Ｄバス５９に接続されたレジスタ９１と、３２ビットの整数データを１６ビットの浮動小数点データに変換するリニアフロート変換部９２と、３２ビットの整数データを分割して２個の１６ビットの整数データに変換する１６ビット分割部９３と、リニアフロート変換部９２及び１６ビット分割部９３の出力の一方を選択して遅延メモリ１４のデータバスに出力するセレクタ９４とから成る。セレクタ９４には、ＭＰ制御部４２から制御信号が入力され、その制御信号に応じて選択が行われる。
【００７６】
図６（ｂ）は、１６−３２変換器６０の構成を示すブロック図であり、変換器６０は、遅延メモリ１４のデータバスに接続されたレジスタ１０１と、１６ビットの浮動小数点データを３２ビットの整数データに変換するフロートリニア変換部１０２と、２個の１６ビットの整数データを結合して３２ビットの整数データに変換する１６ビット結合部１０３と、フロートリニア変換部１０２及び１６ビット結合部１０３の出力の一方を選択してＤバス５９に出力するセレクタ１０４とから成る。セレクタ１０４には、ＭＰ制御部４２から制御信号が入力され、その制御信号に応じて選択が行われる。
【００７７】
制御レジスタ２１では、各マイクロプログラム毎に高精度モードと通常精度モードの一方が選択できるようになっている。各マイクロプログラムで実行するエフェクト等の処理が、遅延信号に高い精度を要求する場合は、高精度モードが選択され、３２−１６変換器６１において１６ビット分割部９３の出力を選択して、遅延メモリ１４の２アドレスを使って３２ビットのデータを２つに分割して格納する一方、高い精度が必要とされない場合には、通常精度モードが選択され、リニアフロート変換部９２の出力を選択し、遅延メモリ１４の１アドレスに３２ビットのデータを浮動小数点表示で１６ビットに圧縮したデータを格納する。これに対応して、１６−３２変換器６０において、高精度モードでは１６ビット結合部１０３の出力が、また通常精度モードではフロートリニア変換部１０２の出力がそれぞれ選択され、遅延メモリ１４から読み出された１６ビットデータに基づいて３２ビットのデータがＩレジスタ４７に供給される。
【００７８】
ここで、ベースカウンタ８２の、高精度モードが選択されたマイクロプログラムＭＰに対応するカウンタでは、各サンプリング周期毎に２ずつ、すなわち通常精度モードの場合の２倍の速さでカウントダウンが行われる。
【００７９】
各モードは、例えば以下のように選択する。単独のパートの演奏波形を入力するマイクロプログラムＭＰでは通常精度モードとし、複数パートの演奏波形の混合波形を入力する場合は高精度モードとする。またマイクロプログラムＭＰが、ディストーション等のノイズ的なエフェクト処理を実行する場合は通常精度モードとし、残響、定位制御等のノイズを防止することが望まれるエフェクト処理を実行する場合は、高精度モードとする。あるいは、複数マイクロプログラムＭＰにバンクを割り当てた後で遅延メモリ１４にまだ余裕があれば、いずれかのバンクを高精度モードに変更し、遅延メモリ１４の容量が不足するときは、高精度モードのバンクを通常精度モードに変更するようにしてもよい。その結果、それほど精度が必要でない場合は、遅延メモリ１４の記憶領域を節約することができるとともに、必要に応じて高い精度の遅延信号を得ることができる。
【００８０】
以上詳述したように本実施形態では、ＭＰＲＡＭ７３に格納されたマイクロプログラムの先頭ステップ番号をブロックレジスタ４４のＳＳレジスタに格納し、ＭＰＲＡＭ７３に格納するマイクロプログラムの数及びステップ数を所定範囲内で（マイクロプログラムの数は８個以下で、ステップ数は全体で３８４ステップ以下）任意に設定できるようにしたので、実行可能なマイクロプログラムの選択範囲が拡大し、より使い勝手を向上させることができる。
【００８１】
また、各マイクロプログラムにおいて、予め設けられた入力チャンネル（Ｉレジスタ４７の入力領域）及び出力チャンネル（Ｉレジスタ４７の出力領域）の内から、使用する入力チャンネル及び出力チャンネルを任意に設定できるようにしたので、マイクロプログラム毎に適切なチャンネルの設定を行うことができる。その結果、例えば楽音に３次元的な広がりを持たせる効果を付加する場合には出力チャンネルを４チャンネルに設定し（本実施形態では、ＤＡ変換器への出力チャンネル数を４としているので、全部を使用する設定とし）、２次元的な広がりを持たせる効果を付加する場合には、２つのマイクロプログラムで２チャンネルずつ使用する設定とするといったことができ、限られた数の出力チャンネルを効率的に使用することができる。なお、図２に示すように、信号処理回路２６は、本実施形態では入力チャンネルは全部で８チャンネル設けられ、出力チャンネルは、ＤＡ変換器９へ出力する４チャンネル及びミキサ２４に出力する８チャンネルの合計１２チャンネルが設けられている。
【００８２】
図１０は、時分割で実行するマイクロプログラムの数及びサイズと、各マイクロプログラムが使用する入出力チャンネル数の設定例を示す図である。同図（ａ）は、ステップ数４８の８個のマイクロプログラム（ＭＰ１〜ＭＡＰ８）をＭＰＲＡＭ７３に格納し（４８×８＝３８４ステップ）、各マイクロプログラムが入力チャンネル及び出力チャンネルを１チャンネルずつ使用するように設定した場合を示し、同図（ｂ）は、ステップ数１９２のマイクロプログラム１個（ＭＰ１）と、ステップ数９６のマイクロプログラム１個と（ＭＰ２）、ステップ数４８のマイクロプログラム２個（ＭＰ３，ＭＰ４）をＭＰＲＡＭ７３に格納し、ＭＰ１が２つの入力チャンネル及び４つの出力チャンネルを使用し、ＭＰ２が１つの入力チャンネル及び２つの出力チャンネルを使用し、ＭＰ３及びＭＰ４がそれぞれ１つの入出力チャンネルを使用するように設定した場合を示し、同図（ｃ）は、ステップ数１９２のマイクロプログラム１個（ＭＰ１）と、ステップ数９６のマイクロプログラム２個と（ＭＰ２，ＭＰ２）をＭＰＲＡＭ７３に格納し、ＭＰ１が２つの入力チャンネル及び２つの出力チャンネルを使用し、ＭＰ２及びＭＰ３がそれぞれ１つの入出力チャンネルを使用するように設定した場合を示している。このように本実施形態によれば、マイクロプログラム及び使用する入出力チャンネルを所定範囲内で任意に設定でき、使い勝手を大幅に向上させることができる。
【００８３】
また、遅延メモリ１４に格納するデータの圧縮処理の態様を変更できるようにし、その圧縮処理の態様の変更に対応して読み出し時の伸張処理の態様を変更するようにしたので、遅延信号の高い精度が必要でない場合は、遅延メモリ１４の記憶領域を節約することができるとともに、必要に応じて高い精度の遅延信号を得ることができる。
【００８４】
また、遅延メモリ１４のバンク０をすべてのマイクロプログラムがアクセスできる共通領域としたので、構成の複雑化やコストアップをほとんど招くことなく、二以上のマイクロプログラムで共通に使用するテーブルや波形データ（図９）などを格納することができ、且つ格納したデータを容易に使用することができる。
【００８５】
また、バンク０を共通領域としたので、制御信号ＣＯＦＦに対応してベースカウンタ８２の出力及び先頭アドレスＴＡＤをいずれも「０」とすることで、容易に共通領域にアクセスすることができる。
【００８６】
また、いずれかのマイクロプログラムのホールト期間中（ＨＢ信号の入力中）は、ＣＰＵ３が遅延メモリのバンク０にアクセスできるようにしたので、バンク０に格納したデータの変更などを容易に行うことができる。
【００８７】
なお、本発明は上述した実施形態に限定されるものではなく、種々の変形が可能である。例えば、ＭＰＲＡＭ７３の容量を大きくして、格納可能なマイクロプログラムの最大個数を増加させたり、バスやレジスタの容量を大きくして使用可能な入出力チャンネルの数を増加さるようにしてもよい。
【００８８】
また、上述した実施形態では、３２ビットのデータを分割した２つの１６ビットデータを１つの遅延用メモリにシリアルに格納するようにしたが、例えば２つの遅延用メモリを設けておき、分割した２つの１６ビットデータを並列に２つの遅延用メモリに格納するようにしてもよい。また、遅延用メモリに格納するときの圧縮処理は、３２ビットのデータを１６ビットのデータに変換するものに限るものではなく、例えば１データに対して遅延用メモリの１．５アドレスを使用することとして、３２ビットのデータを２４ビットのデータに変換するようにしてもよい。
【００８９】
また上述した実施形態では、ステップカウンタ７２は、１ＤＡＣサイクルの中で０から３８３の値を順次カウントするようにしたが、該ステップカウンタ７２のカウント順序を変更し、０から３８３の範囲を任意の順序で読み出せるようにしてもよい。そのようにすると、ＭＰＲＡＭ７３の中の複数のマイクロプログラムＭＰの読み出し順序を、任意に変更することができる。その場合、カウント順序の変更されたカウント値を係数レジスタ４３及びアドレスレジスタ４５に供給し、乗算データとアドレスデータＡＤの読み出し順序がマイクロプログラムＭＰと同様に変更されるようにする。
【００９０】
ここで、任意の読み出し順序とは、例えばもともとマイクロプログラムＭＰ１、ＭＰ２、ＭＰ３…の順に実行されてたマイクロプログラムを、ＭＰ１、ＭＰ３、ＭＰ２の順あるいはＭＰ３、ＭＰ２、ＭＰ１の順で実行できるようにすることである。
【００９１】
ＭＰＲＡＭ７３の中の複数のマイクロプログラムの読み出し順序が任意に変更可能であれば、ＭＰＲＡＭ７３の中に離れて格納されている２つのマイクロプログラムを差し替えたい場合に、その２つマイクロプログラムの記憶領域を１つにまとめて連続した記憶領域とすることができ、その２つのいずれかの記憶領域だけでは入りきらないステップ数のマイクロプログラムを、他のマイクロプログラムを動作させたままで新たに書き込むことができる。
【００９２】
また、複数のエフェクト種類（例えば「ホール３」、「ディストーション２」などと呼ばれる）で同じマイクロプログラム（処理アルゴリズム）が使用される場合もあり、新たなエフェクト種類が選択されたときでも、その選択の前後のエフェクト種類で同じマイクロプログラムを使用していれば、新たなマイクロプログラムをＭＰＲＡＭ７３に書き込む必要はない。その場合には、対応するマイクロプログラムの入力レベル及び出力レベルをフィードアウトして該マイクロプログラムを停止し、使用していた遅延メモリのバンクをクリアし、係数（係数レジスタ４３の内容）やディレイの長さ（アドレスレジスタ４５の内容）を新たな値に変更して該マイクロプログラムを始動し、再び対応する入力レベル及び出力レベルをフェードインする処理を行う。すなわち、マイクロプログラムの停止は、マイクロプログラムの変更時だけでなく、係数やディレイの長さの設定切換時にも行われる。
【００９３】
【発明の効果】
【００９４】
以上詳述したように、請求項２に記載の発明によれば、時分割処理により、任意ステップ数の複数のマイクロプログラムが並列的に実行され、さらに変更指示に応じて前記複数のマイクロプログラムのうちの変更すべきマイクロプログラムの実行のみが選択的に停止されるとともに、該停止されたマイクロプログラムの実行期間において、変更すべきマイクロプログラムの記憶領域に新たなマイクロプログラムが書き込まれるので、実行可能なマイクロプログラムの選択範囲が拡大し、より使い勝手を向上させることができるとともに、任意のマイクロプログラムを他のマイクロプログラムの実行を継続させたままで書き替えることができる。
【００９６】
請求項５に記載の発明によれば、ディジタル信号が圧縮処理を施されて遅延用記憶手段に書き込まれ、読み出し時に書き込み時と逆の伸張処理を施されて出力され、前記圧縮処理及び伸張処理の態様が必要に応じて変更可能であるので、遅延信号の高い精度が必要でない場合は、遅延用記憶手段の記憶領域を節約することができるとともに、必要に応じて高い精度の遅延信号を得ることができる。
【図面の簡単な説明】
【図１】本発明の実施の一形態にかかる電子楽器の構成を示すブロック図である。
【図２】図１の音源の構成を示すブロック図である。
【図３】図２の制御レジスタ及び信号処理回路の構成を示すブロック図である。
【図４】図３のＭＰ制御部の構成を示すブロック図である。
【図５】図３の遅延メモリアドレス発生部の構成を示す図である。
【図６】図３の３２−１６変換部及び１６−３２変換部の構成を示すブロック図である。
【図７】図３，４，５の示されるブロックレジスタに格納されるデータを示す図である。
【図８】時分割で実行されるマイクロプログラムと遅延メモリとの関係を説明するための図である。
【図９】遅延メモリの共通領域（バンク０）に格納されるデータの例を説明するための図である。
【図１０】マイクロプログラムの数及びステップ数並びに各マイクロプログラムが使用する入出力チャンネルの設定例を示す図である。
【符号の説明】
３  ＣＰＵ
８  音源
１１  システムバス
１４  遅延メモリ
２１  制御レジスタ
２６  信号処理回路
４２  マイクロプログラム制御部
４４  ブロックレジスタ
６０  １６−３２変換部
６１  ３２−１６変換部
６２  遅延メモリ用アドレス発生部
７３  マイクロプログラムＲＡＭ
【図１】
0003582276.tif 000002
【図２】
0003582276.tif 000003
【図３】
0003582276.tif 000004
【図４】
0003582276.tif 000005
【図５】
0003582276.tif 000006
【図６】
0003582276.tif 000007
【図７】
0003582276.tif 000008
【図８】
0003582276.tif 000009
【図９】
0003582276.tif 000010
【図１０】
0003582276.tif 000011