(57)【特許請求の範囲】
【請求項１】
サンプリング周期毎に循環するカウント結果を出力するカウンタと、
複数の信号発生装置と、
前記複数の信号発生装置の出力する信号が各々の信号に応じた特定の記憶位置に書き込まれる信号記憶装置と、
複数ブロックに分割され各ブロック毎に複数ステップの信号処理プログラムを記憶するとともに前記カウント結果に基づいて前記信号処理プログラムが読み出されるプログラム記憶装置であって、前記各ブロックに記憶されている前記信号処理プログラムには、前記信号記憶装置の記憶位置を相対的に指標する相対的指標情報を有するステップを含むプログラム記憶装置と、
前記カウント結果に応じて、読み出し中の信号処理プログラムに対応するブロックを識別し、当該ブロックに対して割り当てられた信号発生装置の信号の前記信号記憶装置における先頭の記憶位置を示すオフセット情報を発生するオフセット情報発生装置と、
前記カウント結果によって前記プログラム記憶装置から前記相対的指標情報を含むステップが読み出されたとき、前記オフセット情報発生装置の発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報を発生し、前記信号記憶装置の該絶対的指標情報の示す記憶位置から信号を読み出す信号読出装置と、
前記カウント結果に基づいて読み出された信号処理プログラムと、前記信号読出装置の読み出した信号とに基づいて、入力された信号に対して複数ブロックの信号処理を施す信号処理装置と
を有することを特徴とする効果付与装置。
【請求項２】
前記信号発生装置は、所定の周波数で所定の低周波波形を出力する発振器、供給された信号にエンベロープを付与するためにエンベロープ信号を出力するエンベロープジェネレータのうち何れかであることを特徴とする請求項１記載の効果付与装置。
【請求項３】
サンプリング周期毎に循環するカウント結果を出力するカウンタと、
複数の信号を外部から入力する外部入力装置により、入力した複数の信号が各々の信号に応じた特定の記憶位置に書き込まれるとともに、複数の信号を受信する外部受信装置への信号が、該外部受信装置によって各々異なる特定の記憶位置から読み出される信号記憶装置と、
複数ブロックに分割され、各ブロック毎に複数ステップの信号処理プログラムを記憶するプログラム記憶装置であって、前記各ブロックに記憶される信号処理プログラムには、前記信号記憶装置の記憶位置を相対的に指標する相対的指標情報を有する書込ステップないし読出ステップを含むプログラム記憶装置と、
前記カウント結果に応じて、読み出し中の信号処理プログラムに対応するブロックを識別し、当該ブロックに対して割り当てられた前記外部入力装置および前記外部受信装置の信号の前記信号記憶装置における各々の先頭の記憶位置を示す複数のオフセット情報を発生するオフセット情報発生装置と、
前記カウント結果によって前記プログラム記憶装置から前記相対的指標情報を有する読出ステップが読み出されると、前記オフセット情報発生装置の発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報を発生し、前記信号記憶装置の該絶対的指標情報の示す記憶位置から前記外部入力装置により書き込まれた信号を読み出す信号読出装置と、
前記カウント結果によって読み出された信号処理プログラムと、前記信号読出装置の読み出した信号とに基づいて、入力された信号に対して複数のブロックの信号処理を施す信号処理装置と、
前記カウント結果によって前記プログラム記憶装置から前記相対的指標情報を有する書込ステップが読み出されると、前記オフセット情報発生装置と発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報を発生し、前記信号処理装置の出力した信号であって、前記外部受信装置によって読み出されるべき信号を前記信号記憶装置の該絶対的指標情報の示す記憶位置に書き込む信号書込装置と
を有することを特徴とする効果付与装置。
【請求項４】
ユーザによって新たなプログラムが指定されると、ユーザによって指定されたプログラムにおいて必要とされる信号発生装置の数と、既に読み込まれているプログラムにおいて必要とされる信号発生装置の数との合計が所定の最大数以下であるか否かを判定する判定手段と、
該判定手段による判定結果が否定的であった場合に所定の警告表示を行う表示手段と
をさらに具備することを特徴とする請求項１または２記載の効果付与装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音信号の合成に用いて好適な効果付与装置に関する。
【０００２】
【従来の技術】
従来より、電子楽器等の音源においては楽音信号に各種の効果を付与するためにＤＳＰ（デジタル・シグナル・プロセッサ）が用いられている。一般的にＤＳＰにおいては、１サンプリング周期内において数百ないし数千ステップ程度のマイクロプログラムを実行できるようになっている。そして、このマイクロプログラムを、処理内容が異なる複数の「ブロック」に分割できるものも知られており、これによって各ブロックの処理が並列して実行されることになる。なお、かかる技術は、例えば特開平１０−１９８５５９号公報等に開示されている。
【０００３】
【発明が解決しようとする課題】
ところで、上述した技術においては、マイクロプログラムの各ブロック毎に、各種のリソースが固定的に割り当てられていた。ここで、「リソース」とは、例えば外部ＲＡＭのアドレス領域、マイクロプログラムＲＡＭの領域、低周波発振器（ＬＦＯ）等である。しかし、かかる技術によれば、一部のブロックが変更され必要なリソースが増加すると、これによって他のブロックにも影響が及び、他のブロックのコーディングを再度行わなければならず、開発設計作業が煩雑になっていた。
この発明は上述した事情に鑑みてなされたものであり、開発設計作業を効率化できる効果付与装置を提供することを目的としている。
【０００４】
【課題を解決するための手段】
上記課題を解決するため本発明にあっては、下記構成を具備することを特徴とする。なお、括弧内は例示である。
請求項１記載の効果付与装置にあっては、サンプリング周期毎に循環するカウント結果（ＣＮ）を出力するカウンタ（１１４）と、複数の信号発生装置（ＬＦＯ，ＥＧ）と、前記複数の信号発生装置（ＬＦＯ，ＥＧ）の出力する信号が各々の信号に応じた特定の記憶位置に書き込まれる信号記憶装置（５６）と、複数ブロックに分割され各ブロック毎に複数ステップの信号処理プログラムを記憶するとともに前記カウント結果（ＣＮ）に基づいて前記信号処理プログラムが読み出されるプログラム記憶装置であって、前記各ブロックに記憶されている前記信号処理プログラムには、前記信号記憶装置の記憶位置を相対的に指標する相対的指標情報（低周波発振器（ＬＦＯ）等の相対的なチャンネル番号）を有するステップを含むプログラム記憶装置（１００）と、前記カウント結果（ＣＮ）に応じて、読み出し中の信号処理プログラムに対応するブロックを識別し、当該ブロックに対して割り当てられた信号発生装置の信号の前記信号記憶装置における先頭の記憶位置を示すオフセット情報（低周波発振器（ＬＦＯ）等のオフセットチャンネル番号）を発生するオフセット情報発生装置（ＬＦＯ先頭ｃｈレジスタ１０４−０〜１０４−１５、ＥＧ先頭ｃｈレジスタ１０５−０〜１０５−１５等）と、前記カウント結果（ＣＮ）によって前記プログラム記憶装置（１００）から前記相対的指標情報を含むステップが読み出されたとき、前記オフセット情報発生装置の発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報（絶対的なチャンネル番号）を発生し、前記信号記憶装置の該絶対的指標情報の示す記憶位置から信号を読み出す信号読出装置（エンコーダ８２）と、前記カウント結果（ＣＮ）に基づいて読み出された信号処理プログラムと、前記信号読出装置（８２）の読み出した信号とに基づいて、入力された信号に対して複数ブロックの信号処理を施す信号処理装置（５８〜７５）とを有することを特徴とする。
さらに、請求項２記載の構成にあっては、請求項１記載の効果付与装置において、前記信号発生装置は、所定の周波数で所定の低周波波形を出力する発振器（ＬＦＯ）、供給された信号にエンベロープを付与するためにエンベロープ信号を出力するエンベロープジェネレータ（ＥＧ）のうち何れかであることを特徴とする。
また、請求項３記載の効果付与装置にあっては、サンプリング周期毎に循環するカウント結果（ＣＮ）を出力するカウンタ（１１４）と、複数の信号を外部から入力する外部入力装置（５０，５２）により、入力した複数の信号が各々の信号に応じた特定の記憶位置に書き込まれるとともに、複数の信号を受信する外部受信装置（５４）への信号が、該外部受信装置によって各々異なる特定の記憶位置から読み出される信号記憶装置（５６）と、複数ブロックに分割され、各ブロック毎に複数ステップの信号処理プログラムを記憶するプログラム記憶装置であって、前記各ブロックに記憶される信号処理プログラムには、前記信号記憶装置の記憶位置を相対的に指標する相対的指標情報を有する書込ステップないし読出ステップを含むプログラム記憶装置（１００）と、前記カウント結果（ＣＮ）に応じて、読み出し中の信号処理プログラムに対応するブロックを識別し、当該ブロックに対して割り当てられた前記外部入力装置（５０，５２）および前記外部受信装置（５４）の信号の前記信号記憶装置における各々の先頭の記憶位置を示す複数のオフセット情報を発生するオフセット情報発生装置（１０３−０〜１０３−１５，１０４−０〜１０４−１５，１０５−０〜１０５−１５）と、前記カウント結果（ＣＮ）によって前記プログラム記憶装置（１００）から前記相対的指標情報を有する読出ステップが読み出されると、前記オフセット情報発生装置の発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報を発生し、前記信号記憶装置の該絶対的指標情報の示す記憶位置から前記外部入力装置（５０，５２）により書き込まれた信号を読み出す信号読出装置（８２）と、前記カウント結果（ＣＮ）によって読み出された信号処理プログラムと、前記信号読出装置（８２）の読み出した信号とに基づいて、入力された信号に対して複数のブロックの信号処理を施す信号処理装置（５８〜７５）と、前記カウント結果（ＣＮ）によって前記プログラム記憶装置（１００）から前記相対的指標情報を有する書込ステップが読み出されると、前記オフセット情報発生装置と発生するオフセット情報と、前記相対的指標情報とに基づいて、前記信号記憶装置の記憶位置を絶対的に指標する絶対的指標情報を発生し、前記信号処理装置（５８〜７５）の出力した信号であって、前記外部受信装置（５４）によって読み出されるべき信号を前記信号記憶装置の該絶対的指標情報の示す記憶位置に書き込む信号書込装置（８２）とを有することを特徴とする。
さらに、請求項４記載の構成にあっては、請求項１または２記載の効果付与装置において、ユーザによって新たなプログラムが指定されると、ユーザによって指定されたプログラムにおいて必要とされる信号発生装置（ＬＦＯ，ＥＧ）の数と、既に読み込まれているプログラムにおいて必要とされる信号発生装置（ＬＦＯ，ＥＧ）の数との合計が所定の最大数以下であるか否かを判定する判定手段（ＳＰ１０２，図７）と、該判定手段による判定結果が否定的であった場合に所定の警告表示を行う表示手段（ＳＰ１０４）とをさらに具備することを特徴とする。
【０００５】
【発明の実施の形態】
1．実施形態の構成
1．1．全体構成
次に、本発明の一実施形態の音源装置の構成を図１を参照し説明する。
図において２は波形Ｉ／Ｏ部であり、外部機器との間でアナログ信号の入出力を行う。６は波形生成部であり、バスライン１６を介して供給された演奏情報に基づいて最終的な楽音信号の基礎になる楽音信号を合成する。８はミキサであり、波形Ｉ／Ｏ部２、波形生成部６、あるいはＤＳＰ（デジタル・シグナル・プロセッサ）１０を介して供給されたデジタル信号に対してミキシング処理を施す。
【０００６】
ここで、ＤＳＰ１０は、５１２ステップのマイクロプログラムを実行するように構成され、１ステップのマイクロプログラムは１２バイトから構成されている。なお、マイクロプログラムを記憶するメモリはＤＳＰ１０内に内蔵されており、このマイクロプログラムは、必要に応じて複数のブロック（最大１６ブロック）に分割することが可能である。４は外部ＲＡＭであり、このマイクロプログラムにおいて使用されるデータ等が記憶される。１２はＤＡコンバータであり、ミキサ８によるミキシング結果である楽音信号をアナログ信号に変換し出力する。１４はサウンドシステムであり、この楽音信号を発音する。
【０００７】
１８は通信Ｉ／Ｏ部であり、外部機器との間でＭＩＤＩ信号等の情報をやりとりする。２０は表示器であり、ユーザに対して各種情報を表示する。２２は操作子であり、鍵盤や音色設定用操作子等から構成されている。２６はＣＰＵであり、ＲＯＭ２８に格納された制御プログラムに基づいて他の構成要素を制御する。２４はタイマであり、ＣＰＵ２６に対して所定時間毎にタイマ割込みを発生させる。３０はＲＡＭであり、ＣＰＵ２６のワークメモリとして用いられる。
【０００８】
1．2．外部ＲＡＭ４
ここで、外部ＲＡＭ４のメモリ空間について説明しておく。まず、マイクロプログラムの「１」ブロックで管理できる最大のメモリ空間は「２５６」キロワード（「１６」ビット／「３２」ビット共）である。従って、データ長を「３２」ビットとし、ブロック数を「１６」とすれば、外部ＲＡＭ４のメモリ容量は最大で「３２」ビット×「２５６」キロワード×「１６」ブロック＝「１２８」Ｍビットになる。ＤＳＰ１０のマイクロプログラムがブロック単位に分割できるのと同様に、外部ＲＡＭ４のメモリ空間もブロック単位で分割される。ここで、外部ＲＡＭ４のデータ精度はブロック毎に設定でき、「３２」ビットリニア、「１６」ビットフローティング、「１６」ビットリニア等の精度に設定することができる。
【０００９】
1．3．ＤＳＰの構成
1．3．1．演算回路等（図２）
次に、ＤＳＰ１０の詳細構成を図２，図３を参照し説明する。図２において５０は低周波発振部であり、「３２」チャンネルの低周波発振器（ＬＦＯ）から構成されている。これら低周波発振器は、０.０１〜５.４kＨzの範囲で発振周波数を設定することができ、正弦波、三角波、鋸歯状波、ランダム波、矩形波等の波形を指定できるようになっている。
【００１０】
次に、５２はエンベロープジェネレータ部であり、「３２」チャンネルのエンベロープジェネレータ(ＥＧ)から構成されている。各エンベロープジェネレータ(ＥＧ)には、パラメータとして目標レベルとコンペアレベルとが設定可能になっている。目標レベルが設定されていると、該エンベロープジェネレータ(ＥＧ)のエンベロープレベルは該目標レベルに向かって漸近カーブを辿るように変化するが、コンペアレベルに達すると、エンベロープレベルの変化がストップする。
【００１１】
ところで、ＤＳＰ１０におけるデジタル信号の入出力は、全てミキサ８を経由して実行される。５４はミキサＩ／Ｏ部であり、入力３２チャンネル、出力３２チャンネルのデジタル信号をミキサ８に対して入出力する。５６は入出力インタフェース用のＲＡＭ（以下、Ｉ−ＲＡＭという）であり、上記低周波発振部５０およびエンベロープジェネレータ部５２から入力される信号およびミキサＩ／Ｏ部５４を介して入出力されるデータを格納する。
【００１２】
６０および６４は各々演算処理のために用いられるＲＡＭ（以下、Ｔ−ＲＡＭおよびＹ−ＲＡＭという）である。なお、これらの詳細なメモリマップについては後述する。５８は加算器であり、Ｉ−ＲＡＭ５６およびＴ−ＲＡＭ６０から読み出されたデータを加算する。６２はセレクタ（以下、Ａセレクタという）であり、マイクロプログラムに基づく制御信号に応じて、Ｉ−ＲＡＭ５６から読み出されたデータ、加算器５８の加算結果またはＴ−ＲＡＭ６０から読み出されたデータのうち何れかを選択し出力する。
【００１３】
６６は係数補間部であり、係数補間結果（詳細は後述する）を出力する。６８はセレクタ（以下、Ｙセレクタという）であり、Ｔ−ＲＡＭ６０、Ｙ−ＲＡＭ６４または係数補間部６６の出力データのうち何れかを制御信号に応じて選択し出力する。なお、係数補間部６６の出力データは、Ｙ−ＲＡＭ６４に書込むことも可能である。７０は乗算器であり、Ａセレクタ６２およびＹセレクタ６８において各々選択されたデータを乗算する。
【００１４】
７２はセレクタ（以下、Ｂセレクタという）であり、演算器７４の出力データ、Ｉ−ＲＡＭ５６またはＴ−ＲＡＭ６０から読み出されたデータのうち何れかを制御信号に応じて選択する。７４は演算器であり、Ｂセレクタ７２で選択されたデータと、乗算器７０の乗算結果とに対して、加算、減算、比較等の演算を施し、この演算結果をバスライン７５を介して出力する。この加算結果は、Ｉ−ＲＡＭ５６、Ｔ−ＲＡＭ６０またはＹ−ＲＡＭ６４にフィードバックして記憶させることができ、また、書込み部７６を介して外部ＲＡＭ４に書込むことが可能である。
【００１５】
また、７８は読出し部であり、外部ＲＡＭ４に記憶されたデータを読み出す。読み出されたデータは、バスライン７５を介して、Ｉ−ＲＡＭ５６、Ｔ−ＲＡＭ６０またはＹ−ＲＡＭ６４に書込まれる。８０は外部ＲＡＭアドレス発生部であり、外部ＲＡＭ４に対する読出しおよび書込みアドレスを発生する。８２はエンコーダであり、マイクロプログラム等の内容に基づいて、上記各部を制御する制御信号を出力する。
【００１６】
1．3．2．内部ＲＡＭのメモリマップ（図４）
(1)Ｉ−ＲＡＭ５６
次に、図４(a)にＩ−ＲＡＭ５６のメモリマップを示す。図において先頭から「１６」ワードは共通アクセス領域１３０であり、マイクロプログラムの何れのブロックからでも読出しおよび書込み可能になっている。なお、図４において読出しおよび書込み可能な領域には「ｒｗ」の文字を、読出しのみ可能な領域には「ｒｏ」の文字を付している。
【００１７】
次に、１３２はＩ／Ｏ領域であり、入力「３２」チャンネルおよび出力「３２」チャンネルに相当するメモリ容量を有している。ここで、Ｉ／Ｏ領域１３２においては、メモリが「２」ページ設けられており、それぞれ入力チャンネル用（読出し用）のページと出力チャンネル用（書込み用）のページになっている。両ページにおいて、同一のチャンネル番号に対応する部分には同一のアドレスが割り当てられている。換言すれば、Ｉ／Ｏ領域１３２内のあるアドレスを指定してデータを書き込むと、このデータは出力チャンネル用のページに書込まれる。そして、その後直ちに同一アドレスを指定してデータ読出しを行うと、入力チャンネル用のページからデータが読み出されるため、書き込んだデータとは全く異なるデータが読み出されることになる。
【００１８】
次に、１３４はＬＦＯ領域であり、「３２」チャンネルに相当するメモリ容量を有している。ＬＦＯ領域１３４には、低周波発振部５０内の各低周波発振器（ＬＦＯ）の出力データがチャンネル毎に逐次書き込まれる。但し、マイクロプログラムの制御信号によって、ＬＦＯ領域１３４については読出しのみが可能になっている。同様に、１３６はＥＧ領域であり、「３２」チャンネルに相当するメモリ容量を有している。ＥＧ領域１３６には、エンベロープジェネレータ部５２内の各エンベロープジェネレータ(ＥＧ)の出力データがチャンネル毎に逐次書き込まれる。但し、マイクロプログラムの制御信号によっては、ＥＧ領域１３６については読出しのみが可能になっている。
【００１９】
１３８は個別アクセス領域であり、「１２８」ワードのメモリ空間が割り当てられ、マイクロプログラムによる読出しおよび書込みが可能になっている。なお、詳細は後述するが、個別アクセス領域１３８はマイクロプログラムのブロック毎に重複しないように領域が割り当てられており、各ブロックにおいては、割り当てられた領域に対してのみアクセスすることが可能になっている。
【００２０】
(2)Ｔ−ＲＡＭ６０
次に、図４(b)にＴ−ＲＡＭ６０のメモリマップを示す。図示のように、Ｔ−ＲＡＭ６０は、「１６」ワードの共通アクセス領域１４０と、「２４０」ワードの個別アクセス領域１４２とから構成されている。共通アクセス領域１４０は、上記Ｉ−ＲＡＭ５６の共通アクセス領域１３０と同様に、マイクロプログラムの何れのブロックからでも読出しおよび書込み可能になっている。一方、個別アクセス領域１４２は、Ｉ−ＲＡＭ５６の個別アクセス領域１３８と同様に、マイクロプログラムのブロック毎に割り当てられている。
【００２１】
(3)Ｙ−ＲＡＭ６４
次に、図４(c)にＹ−ＲＡＭ６４のメモリマップを示す。図示のように、Ｙ−ＲＡＭ６４は、「１４」ワードの共通アクセス領域１５０と、「２」ワード×「１６」ページの個別アクセス領域１５２とから構成されている。個別アクセス領域１５２の各ページは、マイクロプログラムのブロックに対応付けて割り当てられている。すなわち、個別アクセス領域１５２の各ページには重複するアドレスが割り当てられているが、マイクロプログラムの実行時においては、実行中のブロックに対応するページのみが読出しおよび書込み可能になる。
【００２２】
1．3．3．レジスタ等（図３）
次に、図３において１１４はステップカウンタであり、１サンプリング周期内で「０〜５１１」の範囲でインクリメントされるカウント結果ＣＮを出力する。１００はマイクロプログラムＲＡＭであり、全５１２ステップのマイクロプログラムを記憶する。そして、上記カウント結果ＣＮがアドレス信号として用いられることにより、マイクロプログラムＲＡＭ１００からマイクロプログラムの各ステップが読み出される。また、このマイクロプログラムの各ステップにおいては、ステップ毎に独自の係数（ステップ固有係数）を１個づつ用いることができる。これらステップ固有係数は、リニア、またはフローティングで「１６」ビットのデータ幅を有している。１０１は係数ＲＡＭであり、これら５１２個のステップ固有係数を記憶するとともに、カウント結果ＣＮによって読み出される。
【００２３】
上述したように、本実施形態のＤＳＰ１０はマイクロプログラムを最大「１６」ブロックに分割することができる。これらを「第０ブロック〜第１５ブロック」と呼ぶことにする。１０９−０〜１０９−１５は先頭ステップレジスタであり、第０ブロック〜第１５ブロックの先頭ステップ番号ＳＳを各々記憶する。１１６はブロックナンバ発生器であり、ステップカウンタ１１４のカウント結果ＣＮと、先頭ステップレジスタ１０９−０〜１０９−１５内の先頭ステップ番号ＳＳとの比較結果に基づいて、ブロックナンバＢＮを出力する。すなわち、ブロックナンバ発生器１１６は、現在のブロックナンバＢＮに基づいて、次のブロックの先頭ステップ番号ＳＳを逐次読出しており、カウント結果ＣＮがこの読出中の先頭ステップ番号ＳＳに等しくなると、ブロックナンバＢＮを「１」だけインクリメントする。
【００２４】
１０２−０〜１０２−２９は補間制御レジスタであり、ステップ固有係数を補間するための各種パラメータが記憶される。ここで、補間制御の意義について説明しておく。係数ＲＡＭ１０１の内容（およびその他のＲＡＭやレジスタの内容）は、ＣＰＵ２６の制御の下、必要に応じて更新することが可能になっている。ここで、ＣＰＵ２６によってステップ固有係数が更新された時、そのステップ固有係数を単に用いると、前回のサンプリング周期における信号レベル（すなわち演算器７４の出力データ）から大幅に信号レベルが変化し、楽音信号にパルス的なノイズが乗る場合がある。
【００２５】
このため、係数ＲＡＭ１０１の更新前のデータから更新後のデータに徐々に変化させるため、必要に応じて補間制御を行うこととしたものである。補間レートは、ステップ毎に、ダイレクト（無補間）、全ブロック共用１４種類、またはブロック別専用各１種類のうち何れかから選択することが可能である。また、補間態様は漸近型またはリニアの何れかから選択することができる。補間制御レジスタ１０２−０〜１０２−２９には、これら補間レートおよび補間の態様が記憶されるのである。
【００２６】
合計「３０」個の補間制御レジスタ１０２−０〜１０２−２９のうち最初の「１６」個がブロック別専用のレジスタであり、上記ブロックナンバＢＮに基づいてそのうちの１個のみがマイクロプログラムによって読み出されるようになっている。一方、残りの「１４」個のレジスタについては何れのブロックからでも任意に読み出すことが可能である。マイクロプログラムの各ステップにおいては、係数ＲＡＭ１０１から読出されたステップ固有係数と、補間制御レジスタ１０２−０〜１０２−２９から読出された補間レートおよび補間態様とが上述した係数補間部６６に供給され、これによって補間制御の施された係数がＹ−ＲＡＭ６４あるいはＹセレクタ６８に供給されるのである。
【００２７】
次に、１０３−０〜１０３−１５はＩ／Ｏ先頭ｃｈレジスタであり、マイクロプログラムの第０〜第１５ブロックに各々対応して１６個設けられている。１個のＩ／Ｏ先頭ｃｈレジスタ１０３−ｋには、当該ブロックで使用されるミキサＩ／Ｏ部５４の入力チャンネルのオフセットチャンネル番号（先頭のチャンネル番号）と、出力チャンネルのオフセットチャンネル番号とが記憶される。また、１０４−０〜１０４−１５はＬＦＯ先頭ｃｈレジスタであり、第０〜第１５ブロックにおいて使用される低周波発振器（ＬＦＯ）の各オフセットチャンネル番号が記憶される。１０５−０〜１０５−１５はＥＧ先頭ｃｈレジスタであり、第０〜第１５ブロックにおいて使用されるエンベロープジェネレータ(ＥＧ)の各オフセットチャンネル番号が記憶される。
【００２８】
次に、１０６−０〜１０６−１５はＩ−Ｒ先頭ａｄレジスタであり、Ｉ−ＲＡＭ５６の個別アクセス領域１３８内において第０〜第１５ブロックに割り当てられた領域の各オフセットアドレス（先頭アドレス）を記憶する。同様に、１０７−０〜１０７−１５はＴ−Ｒ先頭ａｄレジスタであり、Ｔ−ＲＡＭ６０の個別アクセス領域１４２内において第０〜第１５ブロックに割り当てられた領域の各オフセットアドレスを記憶する。１００はマイクロプログラムＲＡＭであり、最大「５１２」ステップのマイクロプログラムを記憶する。上述したようにマイクロプログラムは複数のブロックに分割可能である。その一例として、マイクロプログラムを「６」個のブロックに分割した場合のマイクロプログラムＲＡＭ１００のメモリマップを図４(d)に示す。
【００２９】
１０８−０〜１０８−３１はパラメータレジスタであり、各「３２」チャンネルの低周波発振器（ＬＦＯ）およびエンベロープジェネレータ(ＥＧ)に関するパラメータ、その他各種のパラメータをチャンネル毎に記憶する。上述したように、低周波発振器（ＬＦＯ）のパラメータは、「発振周波数」（０.０１〜５.４kＨz）および「波形」（正弦波、三角波、鋸歯状波、ランダム波、矩形波等）等であり、エンベロープジェネレータ(ＥＧ)のパラメータは、「目標レベル」および「コンペアレベル」等である。
【００３０】
上述したように、外部ＲＡＭ４はマイクロプログラムの各ブロックにおいてアクセスされるが、外部ＲＡＭ４の領域もこれらブロックに対応付けて分割されている。１１１−０〜１１１−１５は外部ＲＡＭブロック情報レジスタであり、外部ＲＡＭ４の各ブロックに対する情報を格納する。１個の外部ＲＡＭブロック情報レジスタには、当該ブロックに関する以下の情報が記憶される。
【００３１】
(１)外部メモリデータ長フラグ
外部ＲＡＭ４に格納されるデータは、「１６」ビットまたは「３２」ビットの何れかを選択可能である。外部メモリデータ長フラグは、このデータ長を示すフラグであり、“０”が「１６」ビット、“１”が「３２」ビットを示す。
(２)外部メモリブロックサイズ
このパラメータは、外部ＲＡＭ４内で当該ブロックに割り当てられるメモリ領域のサイズを示す。なお、この外部メモリブロックサイズは、上記外部メモリデータ長フラグの値に拘らず、「ワード」（１６ビット）を単位とする数値によって表わされる。
【００３２】
(３)外部メモリオフセットアドレス
このパラメータは、外部ＲＡＭ４内で当該ブロックに割り当てられるメモリ領域のオフセットアドレス（先頭アドレス）を示す。なお、外部ＲＡＭ４内の各メモリ領域は、必ずしもブロックナンバＢＮ順に割り当てられるとは限らないため、この「外部メモリオフセットアドレス」と上記「外部メモリブロックサイズ」の双方が揃って、メモリ領域の範囲が特定されるのである。
【００３３】
ところで、ＤＳＰ１０においては、外部ＲＡＭ４をアクセス（読出しないし書込み）するマイクロコードを、３ステップに１回実行可能である。すなわち、ＤＳＰ１０は、「５１２」ステップのマイクロプログラムを実行している間に、最大で「１７０」回、外部ＲＡＭ４をアクセスすることができる。１１０−０〜１１０−１６９は外部ＲＡＭアクセスａｄレジスタであり、外部ＲＡＭ４をアクセスする際の相対アドレスを格納する。この相対アドレスは、「外部メモリオフセットアドレス」に対する差分に等しい。上記外部ＲＡＭアドレス発生部８０は、この相対アドレスと外部メモリオフセットアドレスとを加算することによって外部ＲＡＭ４の絶対アドレスを求めるものである。
【００３４】
上記各レジスタのうち、一部の（ブロック別専用の）補間制御レジスタ１０２−０〜１０２−１５、Ｉ／Ｏ先頭ｃｈレジスタ１０３−０〜１０３−１５、ＬＦＯ先頭ｃｈレジスタ１０４−０〜１０４−１５、ＥＧ先頭ｃｈレジスタ１０５−０〜１０５−１５、Ｉ−Ｒ先頭ａｄレジスタ１０６−０〜１０６−１５、Ｔ−Ｒ先頭ａｄレジスタ１０７−０〜１０７−１５、および外部ＲＡＭブロック情報レジスタ１１１−０〜１１１−１５は、ブロックナンバ発生器１１６からのブロックナンバＢＮに基づいて、対応する各１個のレジスタのみが選択状態に設定され、各リソースのアクセスのために使用されることになる。また、外部ＲＡＭアクセスａｄレジスタ１１０−０〜１１０−１６９は、ステップカウンタ１１４のカウント結果ＣＮを「３」で除算した結果に基づいて、対応する１個のレジスタのみが選択状態に設定される。
【００３５】
2．実施形態の動作
2．1．マイクロプログラムのロード処理
次に、本実施形態の動作を説明する。まず、ＣＰＵ２６の制御の下、ＤＳＰ１０にマイクロプログラムをロードする必要がある。ユーザによって、ロードすべき一または複数のマイクロプログラムのブロックが指定され、所定の操作が行われると、図８に示すマイクロプログラムロード処理ルーチンが起動される。
【００３６】
図において処理がステップＳＰ１０２に進むと、指定されたブロックに対してリソースの割当が可能か否かが判定される。このステップＳＰ１０２における処理の内容を図７を参照し説明する。まず、この図では、６個のブロックがユーザによって指定されたことを想定している。図７は、これら６個のブロックにおいて使用されるリソースを一覧表にしたものである。
【００３７】
同図によれば、各ブロックに割り当てられたステップ数の合計は「４９８」であり、最大ステップ数「５１２」以下に抑えられている。「アクセス数」の欄は、各ブロックが外部ＲＡＭ４にアクセスする回数である。ミキサＩ／Ｏ部５４に対する入力チャンネル数の合計は「２８」、出力チャンネル数の合計は「３２」、低周波発振器（ＬＦＯ）数の合計は「３２」、エンベロープジェネレータ(ＥＧ)数の合計は「３２」であり、これらは全て「最大チャンネル数３２以下」の条件を満たしている。
【００３８】
また、Ｉ−ＲＡＭ５６の個別アクセス領域１３８内の各ブロック領域の合計は「１２０」ワードであり、「最大１２８ワード」の条件が満たされている。同様に、Ｔ−ＲＡＭ６０の個別アクセス領域１４２内の各ブロック領域の合計は「２４０」であり、「最大２４０ワード」の条件が満たされている。また、Ｙ−ＲＡＭ６４の個別アクセス領域１５２については、各ブロック共「２」ワードであり、各ブロックの最大値「２」ワードが何れのブロックにおいても満たされている。従って、図７に示す例においては、該マイクロプログラムは使用可能なリソースの範囲内で構築されており、ＤＳＰ１０において実行可能であることが解る。
【００３９】
図８に戻り、以上のような判定内容に基づいて、リソースの割当が不可能であった場合は処理はステップＳＰ１０４に進み、例外処理が実行される。ここでは、例えば図７に示したような一覧表を表示器２０に表示され、割当が不可能なリソースについて強調表示（例えば文字色を赤色にして点滅させる）するとよい。
【００４０】
一方、リソースの割当が可能であれば、処理はステップＳＰ１０６に進む。ここでは、実際に各ブロックに割り当てられるリソースが決定される。具体的には、マイクロプログラムＲＡＭ１００にロードする際のオフセットアドレス、外部ＲＡＭ４におけるオフセットアドレス、ミキサＩ／Ｏ部５４における入力および出力チャンネルのオフセットチャンネル番号、低周波発振部５０における低周波発振器（ＬＦＯ）のオフセットチャンネル番号、エンベロープジェネレータ部５２におけるエンベロープジェネレータ(ＥＧ)のオフセットチャンネル番号、Ｉ−ＲＡＭ５６の個別アクセス領域１３８におけるオフセットアドレス、Ｔ−ＲＡＭ６０の個別アクセス領域１４２におけるオフセットアドレス等が、各ブロック毎に決定される。
【００４１】
次に、処理がステップＳＰ１０８に進むと、ＲＡＭ３０等に格納されているマイクロプログラムの各ブロックがＤＳＰ１０内のマイクロプログラムＲＡＭ１００にロードされる。そして、処理がステップＳＰ１１０に進むと、マイクロプログラムの各ステップで用いられるステップ固有係数が係数ＲＡＭ１０１にロードされる。次に、処理がステップＳＰ１１２に進むと、先にステップＳＰ１０６において割り当てた内容に従って、各レジスタに値が設定される。
【００４２】
すなわち、先頭ステップレジスタ１０９−０〜１０９−１５に、マイクロプログラムの各ブロックのオフセットアドレス（先頭アドレス）が格納され、外部ＲＡＭブロック情報レジスタ１１１−０〜１１１−１５に各ブロックに割り当てられた領域のオフセットアドレスが格納される。また、マイクロプログラムの３ステップ毎に、外部ＲＡＭ４をアクセスするための相対アドレスが外部ＲＡＭアクセスａｄレジスタ１１０−０〜１１０−１６９に設定される。補間制御レジスタ１０２−０〜１０２−２９には補間レートおよび補間態様のパラメータが設定される。同様に、Ｉ／Ｏ先頭ｃｈレジスタ１０３−０〜１０３−１５、ＬＦＯ先頭ｃｈレジスタ１０４−０〜１０４−１５、ＥＧ先頭ｃｈレジスタ１０５−０〜１０５−１５、Ｉ−Ｒ先頭ａｄレジスタ１０６−０〜１０６−１５、Ｔ−Ｒ先頭ａｄレジスタ１０７−０〜１０７−１５、およびパラメータレジスタ１０８−０〜１０８−３１等においても、必要なパラメータが格納される。
【００４３】
2．2．一部のブロックの再ロード処理
図８において説明した処理においては、各ブロックの内容が確定しリソースの割当が可能であることが確認された後、マイクロプログラム等がロードされた。しかし、あるブロックに割り当てるリソースをある程度の余裕を持って確保しておくことにより、そのリソースの範囲内で実行可能な他のブロックをマイクロプログラムＲＡＭ１００内に上書きして実行させることも可能である。
【００４４】
実際の音源装置等の製品においては、楽音信号を合成するためのアルゴリズムはある程度固定的に決定されている。例えば、ＸＧ（商標）規格の音源装置においては、ＤＳＰ１０によって実現されるエフェクトは、リバーブ、コーラス、バリエーションの３系統である。ここで、リバーブおよびコーラスに対しては、パラメータの値は種々変更されるが、必要なリソースはほぼ固定されている。但し、バリエーションには様々なアルゴリズムが設定され得るため、必要なリソースはバリエーションの内容に応じて異なる。
【００４５】
従って、リバーブおよびコーラスに対しては必要なリソースを固定的に割り当てておき、バリエーションについては各エフェクトに必要なリソースの最大値を満たすように予めリソースを確保しておくとよい。これにより、バリエーションの種類に拘らず、ロード処理を固定化することが可能である。
【００４６】
2．3．エンコーダ８２の動作
上述したロード処理が終了した後、ＣＰＵ２６によってＤＳＰ１０が起動されると、各ブロックのマイクロプログラムが実行される。上述したように、１ステップのマイクロプログラムは１２バイト（＝９６ビット）から構成されている。この１ステップは複数のマイクロコードから成立している。ここで、主要なマイクロコードの内容と、それに伴うＤＳＰ１０内の各部の動作について説明する。
【００４７】
2．3．1．ＩＲＡマイクロコード（８ビット）
ＩＲＡマイクロコードは、Ｉ−ＲＡＭ５６に対する読出し制御内容を規定するマイクロコードである。
まず、ＩＲＡマイクロコードが「０」〜「１５」である場合、この値が共通アクセス領域１３０内の絶対アドレスとして用いられ、共通アクセス領域１３０内の対応するデータが読み出される。ＩＲＡマイクロコードが「１６」〜「３１」である場合は、ここでは詳細な説明は行わないが、他のデバイスとの通信用のコードとして用いられる。
【００４８】
また、ＩＲＡマイクロコードが「３２」〜「６３」である場合は、その値から「３２」を減算した結果が、Ｉ／Ｏ領域１３２の入力チャンネルページを読み出すための相対アドレスとして用いられる。この相対アドレスは、アクセスすべき絶対アドレスからＩ／Ｏ先頭ｃｈレジスタ１０３−ｋ（但し、ｋは当該ステップが実行される際のブロックナンバＢＮである）内の入力用オフセットアドレスを減算した値である。
【００４９】
換言すれば、エンコーダ８２は、該ステップ内のＩＲＡマイクロコードから「３２」を減算し、さらにＩ／Ｏ先頭ｃｈレジスタ１０３−ｋ内の入力用オフセットアドレスを加算することによって、チャンネル番号を求め、このチャンネル番号にＩ／Ｏ領域１３２の先頭アドレスを加算した結果を最終的なアドレスとして、Ｉ−ＲＡＭ５６（Ｉ／Ｏ領域１３２の入力チャンネルページ）をアクセスすることになる。
【００５０】
また、ＩＲＡマイクロコードが「６４」〜「９５」である場合は、その値から「６４」を減算した結果が、ＥＧ領域１３６の相対アドレスとして用いられる。すなわち、Ｉ／Ｏ領域１３２の場合と同様に、エンコーダ８２はＩＲＡマイクロコードから「６４」を減算し、さらにＥＧ先頭ｃｈレジスタ１０５−ｋの内容（オフセットチャンネル番号）を加算することによってエンベロープジェネレータ(ＥＧ)のチャンネル番号を求め、このチャンネル番号にＥＧ領域１３６の先頭アドレスを加算した結果を最終的なアドレスとして、Ｉ−ＲＡＭ５６をアクセスする。これにより、対応するエンベロープジェネレータ(ＥＧ)の出力データがＩ−ＲＡＭ５６から読み出される。
【００５１】
また、同様に、ＩＲＡマイクロコードが「９６」〜「１２７」である場合は、その値から「９６」を減算した結果が、ＬＦＯ領域１３４の相対アドレスとして用いられる。すなわち、エンコーダ８２はＩＲＡマイクロコードから「９６」を減算し、さらにＬＦＯ先頭ｃｈレジスタ１０４−ｋの内容であるオフセットチャンネル番号を加算することによって低周波発振器（ＬＦＯ）のチャンネル番号を求め、このチャンネル番号にＬＦＯ領域１３４の先頭アドレスを加算した結果を最終的なアドレスとして、Ｉ−ＲＡＭ５６をアクセスする。これにより、対応する低周波発振器（ＬＦＯ）の出力データがＩ−ＲＡＭ５６から読み出される。
【００５２】
また、ＩＲＡマイクロコードが「１２８」〜「２５５」である場合は、その値から「１２８」を減算した結果が、個別アクセス領域１３８内の当該第ｋブロック用の領域内の相対アドレスとして用いられる。すなわち、エンコーダ８２はＩＲＡマイクロコードから「１２８」を減算し、さらにＩ−Ｒ先頭ａｄレジスタ１０６−ｋの内容すなわちオフセットアドレスを加算することによって、個別アクセス領域１３８の先頭アドレスを「０」と仮定した場合におけるアドレスを求め、このアドレスに個別アクセス領域１３８の実際の先頭アドレスを加算することによって、Ｉ−ＲＡＭ５６の絶対アドレスを求める。そして、この絶対アドレスに基づいて、個別アクセス領域１３８内のデータが読み出されることになる。
【００５３】
2．3．2．ＴＲＡマイクロコード（８ビット）
次に、ＴＲＡマイクロコードは、Ｔ−ＲＡＭ６０に対する読出し制御内容を規定するマイクロコードである。
まず、ＴＲＡマイクロコードが「０」〜「１５」である場合、この値が共通アクセス領域１４０内の絶対アドレスとして用いられ、共通アクセス領域１４０内の対応するデータが読み出される。
【００５４】
また、ＴＲＡマイクロコードが「１６」〜「２５５」である場合は、その値から「１６」を減算した結果が、個別アクセス領域１４２内の当該第ｋブロック用の領域内の相対アドレスとして用いられる。すなわち、エンコーダ８２はＴＲＡマイクロコードから「１６」を減算し、さらにＴ−Ｒ先頭ａｄレジスタ１０７−ｋの内容であるオフセットアドレスを加算することによって、個別アクセス領域１４２の先頭アドレスを「０」と仮定した場合におけるアドレスを求め、このアドレスに個別アクセス領域１４２の先頭アドレスを加算することによって、Ｔ−ＲＡＭ６０の絶対アドレスを求める。そして、この絶対アドレスに基づいて、個別アクセス領域１３８内のデータが読み出されることになる。
【００５５】
2．3．3．ＡＳＥＬマイクロコード（４ビット）
ＡＳＥＬマイクロコードは、Ａセレクタ６２の選択状態を規定するマイクロコードである。
すなわち、このマイクロコードの値に応じて、Ｉ−ＲＡＭ５６、加算器５８またはＴ−ＲＡＭ６０のうち何れかの出力データが選択され、Ａセレクタ６２から出力される。
【００５６】
2．3．4．ＹＲＡマイクロコード（４ビット）
次に、ＹＲＡマイクロコードは、Ｙ−ＲＡＭ６４に対する読出し制御内容を規定するマイクロコードである。まず、ＹＲＡマイクロコードが「０」〜「１３」である場合、この値が「１４」ワードの共通アクセス領域１５０内の絶対アドレスとして用いられ、「１４」ワードの共通アクセス領域１５０内の対応するデータが読み出される。また、ＹＲＡマイクロコードが「１４」である場合は、個別アクセス領域１５２の最初のワードのデータが、また「１５」である場合は２番目のワードのデータが、各々読み出される。なお、個別アクセス領域１５２に対しては、ブロックナンバＢＮに対応したページが選択される。
【００５７】
2．3．5．ＹＳＥＬマイクロコード（３ビット）
ＹＳＥＬマイクロコードは、Ｙセレクタ６８の選択状態を規定するマイクロコードである。
すなわち、このマイクロコードの値に応じて、Ｔ−ＲＡＭ６０、Ｙ−ＲＡＭ６４、係数補間部６６のうち何れかの出力データが選択され、Ｙセレクタ６８から出力される。
【００５８】
2．3．6．ＢＳＥＬマイクロコード（３ビット）
ＢＳＥＬマイクロコードは、Ｂセレクタ７２の選択状態を規定するマイクロコードである。
すなわち、このマイクロコードの値に応じて、演算器７４、Ｉ−ＲＡＭ５６またはＴ−ＲＡＭ６０のうち何れかの出力データが選択され、Ｂセレクタ７２から出力される。
【００５９】
2．3．7．ＦＮＣマイクロコード（３ビット）
ＦＮＣマイクロコードは、演算器７４の動作内容を指定するマイクロコードである。乗算器７０の出力データを「Ａ」とし、Ｂセレクタ７２の出力データを「Ｂ」とした時、ＦＮＣマイクロコードの内容に応じて、演算器７４は、「Ａ＋Ｂ」、「Ａ−Ｂ」、「|Ａ|＋Ｂ」、「Ａ＋|Ｂ|」、「min(Ａ，Ｂ)」、「max(Ａ，Ｂ)」、……等の演算結果を出力する。
【００６０】
2．3．8．ＩＷＡマイクロコード（８ビット）
ＩＷＡマイクロコードは、Ｉ−ＲＡＭ５６に対する書込み制御内容を規定するマイクロコードである。
まず、ＩＷＡマイクロコードが「０」〜「１５」である場合、この値が共通アクセス領域１３０内の絶対アドレスとして用いられ、バスライン７５を介して供給されたデータが共通アクセス領域１３０内の対応するアドレスに書き込まれる。
【００６１】
また、ＩＷＡマイクロコードが「３２」〜「６３」である場合は、その値から「３２」を減算した結果が、Ｉ／Ｏ領域１３２の出力チャンネルページにデータを書き込むための相対アドレスとして用いられる。この相対アドレスは、アクセスすべき絶対アドレスからＩ／Ｏ先頭ｃｈレジスタ１０３−ｋ（但し、ｋは当該ステップが実行される際のブロックナンバＢＮである）内の出力用オフセットアドレスを減算した値である。
【００６２】
換言すれば、エンコーダ８２は、該ステップ内のＩＷＡマイクロコードから「３２」を減算し、さらにＩ／Ｏ先頭ｃｈレジスタ１０３−ｋ内の出力用オフセットアドレスを加算することによって、チャンネル番号を求め、このチャンネル番号にＩ／Ｏ領域１３２の先頭アドレスを加算した結果を最終的なアドレスとして、Ｉ−ＲＡＭ５６（Ｉ／Ｏ領域１３２の出力チャンネルページ）をアクセスすることになる。
【００６３】
そして、アクセスされたアドレスには、バスライン７５を介して供給されたデータが書き込まれ、やがてミキサＩ／Ｏ部５４を介してミキサ８に読み出される。ミキサ８に読み出される合計「３２」チャンネルの出力データのうち、所定の「２」チャンネルは最終的な楽音信号の出力データであり、ＤＡコンバータ１２およびサウンドシステム１４を介して発音されることになる。
【００６４】
また、ＩＷＡマイクロコードが「６４」〜「１２７」である場合は、Ｉ−ＲＡＭ５６に対する書込みは行われない。また、ＩＷＡマイクロコードが「１２８」〜「２５５」である場合は、その値から「１２８」を減算した結果が、個別アクセス領域１３８内の当該第ｋブロック用の領域内の相対アドレスとして用いられる。すなわち、エンコーダ８２はＩＷＡマイクロコードから「１２８」を減算し、さらにＩ−Ｒ先頭ａｄレジスタ１０６−ｋの内容であるオフセットアドレスを加算することによって、個別アクセス領域１３８の先頭アドレスを「０」とした場合におけるアドレスを求め、このアドレスに個別アクセス領域１３８のオフセットアドレスを加算することによって、Ｉ−ＲＡＭ５６の絶対アドレスを求める。そして、バスライン７５を介して供給されたデータは、個別アクセス領域１３８内の当該絶対アドレスに書き込まれることになる。
【００６５】
2．3．9．ＴＷＡマイクロコード（８ビット）
次に、ＴＷＡマイクロコードは、Ｔ−ＲＡＭ６０に対する書込み制御内容を規定するマイクロコードである。
まず、ＴＷＡマイクロコードが「０」〜「１５」である場合、この値が共通アクセス領域１４０内の絶対アドレスとして用いられ、バスライン７５を介して供給されたデータが共通アクセス領域１４０内の対応するアドレスに書き込まれることになる。
【００６６】
また、ＴＷＡマイクロコードが「１６」〜「２５５」である場合は、その値から「１６」を減算した結果が、個別アクセス領域１４２内の当該第ｋブロック用の領域内の相対アドレスとして用いられる。すなわち、エンコーダ８２はＴＷＡマイクロコードから「１６」を減算し、さらにＴ−Ｒ先頭ａｄレジスタ１０７−ｋの内容であるオフセットアドレスを加算することによって、個別アクセス領域１４２の先頭アドレスを「０」とした場合におけるアドレスを求め、このアドレスに個別アクセス領域１４２の実際の先頭アドレスを加算することによって、Ｔ−ＲＡＭ６０の絶対アドレスを求める。そして、バスライン７５を介して供給されたデータは、個別アクセス領域１３８内のこの絶対アドレスに書き込まれることになる。
【００６７】
2．3．10．ＹＷＡマイクロコード（８ビット）
次に、ＹＷＡマイクロコードは、Ｙ−ＲＡＭ６４に対する書込み制御内容を規定するマイクロコードである。まず、ＹＷＡマイクロコードが「０」〜「１３」である場合、この値が「１４」ワードの共通アクセス領域１５０内の絶対アドレスとして用いられ、バスライン７５を介して供給されるデータ、あるいは係数補間部６６の出力データが、共通アクセス領域１５０内の当該絶対アドレスに書き込まれることになる。また、ＹＷＡマイクロコードが「１４」である場合は、個別アクセス領域１５２の最初のワードに、また「１５」である場合は２番目のワードに、上記データが書き込まれる。なお、個別アクセス領域１５２に対しては、ブロックナンバＢＮに対応したページが選択される。
【００６８】
2．3．11．ＪＡマイクロコード（９ビット）
ＪＡマイクロコードは、マイクロプログラムの相対ジャンプ内容を規定するマイクロコードである。まず、ＪＡマイクロコードが「０」であれば、相対ジャンプは行われない。ＪＡマイクロコードが「０」以外の値であれば、現在のステップ番号からその値を加算したステップに処理がジャンプすることになる。具体的には、ステップカウンタ１１４のカウント結果ＣＮがそのジャンプ先のステップ番号に達する迄、各レジスタおよびメモリに対する書込みが禁止状態に設定される。
【００６９】
2．4．効果アルゴリズム例
次に、ＤＳＰ１０のマイクロプログラムによって実現されるアルゴリズムの具体例として、ロータリースピーカ効果（スピーカが回転しているかのような音場を形成する効果）を実現するアルゴリズムを図５を参照し説明する。図において２０２はエンベロープジェネレータであり、スピーカの模擬的な回転周期に応じたエンベロープ信号を出力する。
【００７０】
２１２は乗算器であり、このエンベロープ信号と入力信号Ｓiとを乗算し出力する。この乗算結果である信号Ｓimは、乗算器２２２，２２４を夫々介して加算器２３４，２３６に供給される。また、２１４は２次のハイパスフィルタであり、信号Ｓimの高周波成分を抽出する。２１６は変調付与部であり、この高周波成分に対して変調を施す。この変調結果は、乗算器２２６，２２８を夫々介して加算器２３４，２３６に供給される。
【００７１】
また、２１８は２次のローパスフィルタであり、信号Ｓimの低周波成分を抽出する。２２０は変調付与部であり、この低周波成分に対して変調を施す。この変調結果は、乗算器２３０，２３２を夫々介して加算器２３４，２３６に供給される。加算器２３４，２３６においては、供給された各３系統の信号が加算され、両者の加算結果がステレオ信号として出力される。
【００７２】
ここで、変調付与部２１６の詳細構成を図６を参照し説明する。
図において２５２はディレイラインであり、ハイパスフィルタ２１４の出力信号を遅延させる。該ディレイライン２５２において、ＬＦ１，ＬＦ２，ＬＦ３は、それぞれタップ位置を意味しており、３種類の低周波発振器（ＬＦＯ）の波形に応じてタップ位置が変調される。これにより、ハイパスフィルタ２１４の出力信号に対してピッチ変調がなされることになる。
【００７３】
但し、タップ位置は実際にはサンプリング周期の整数倍の値であるため、小数点以下の値は乗算器２４０〜２４６および加算器２５８，２６２，２６６による補間によって実現されている。各タップ位置から読み出された信号は、乗算器２６０，２６４，２６８を介してレベル調節される。２７０は加算器であり、乗算器２６０，２６４の出力信号を加算する。同様に、２７２は加算器であり、乗算器２６０，２６８の出力信号を加算する。２７４，２７６は乗算器であり、加算器２７０，２７２における加算結果に各々係数Ｋ３，Ｋ４を乗算し、これらの乗算結果を出力する。
【００７４】
また、２５４，２５６は乗算器であり、ハイパスフィルタ２１４の出力信号に各々係数Ｋ１，Ｋ２を乗算し、これらの乗算結果を出力する。２８０は加算器であり、乗算器２５４，２７４の乗算結果を加算し、その結果を第１系統の変調結果として出力する。同様に、２８２は加算器であり、乗算器２５６，２７６の乗算結果を加算し、その結果を第２系統の変調結果として出力する。以上、変調付与部２１６の構成について説明したが、変調付与部２２０もこれと同様に構成される。
【００７５】
次に、上記ロータリースピーカ効果のアルゴリズムをＤＳＰ１０において実現する際に必要なリソースについて検討する。まず、エンベロープジェネレータ２０２はエンベロープジェネレータ部５２内の「１」チャンネルを用いれば実現できる。ハイパスフィルタ２１４は、遅延時間が「１」サンプリング周期である「４」個の遅延回路によって構成される。これらの遅延回路はＩ−ＲＡＭ５６またはＴ−ＲＡＭ６０を用いて実現することができる。すなわち、あるサンプリング周期における演算器７４の出力データを「４」個、Ｉ−ＲＡＭ５６等に書き込んでおき、そのデータ「１」〜「４」を「１」サンプリング周期後に読み出すことによって遅延回路を実現できる。ローパスフィルタ２１８についても同様である。
【００７６】
また、変調付与部２１６，２２０については、各々ディレイライン２５２を実現する必要がある。ディレイライン２５２は遅延時間が長いため、外部ＲＡＭ４によって実現すると好適である。そして、タップ位置ＬＦ１，ＬＦ２，ＬＦ３を求めるため、３個の低周波発振器（ＬＦＯ）が必要であり、低周波発振部５０において各「３」チャンネル（合計で「６」チャンネル）が変調付与部２１６，２２０に対して割り当てられることになる。
【００７７】
本発明は上述した実施形態に限定されるものではなく、例えば以下のように種々の変形が可能である。
(1)上記各実施形態においては、リソースの例として、図７に示す様々なものを列挙したが、リソースはこれに限定されるものではなく、ＤＳＰ１０の処理に必要な他の種々のリソースに適用可能であることは言うまでもない。
【００７８】
【発明の効果】
以上説明したように、オフセット情報と相対的指標情報とに基づいて、アクセスすべきリソースの絶対的指標情報を出力する構成によれば、各ブロック毎に独立して相対的指標情報を指定することができる。また、メモリのページのうち、ブロック識別情報に対応するページを選択状態に設定する構成によれば、各ブロック毎に独立したページをアクセスすることができる。従って、何れによっても、一部のブロックが変更され必要なリソースが増加した場合においても、他のブロックに対する影響を排除することができ、プログラムのコーディング作業等を効率的に行うことが可能である。
【図面の簡単な説明】
【図１】  本発明の一実施形態の音源装置の全体ブロック図である。
【図２】  図１におけるＤＳＰ１０の詳細ブロック図（１／２）である。
【図３】  図１におけるＤＳＰ１０の詳細ブロック図（２／２）である。
【図４】  上記実施形態におけるメモリマップである。
【図５】  マイクロプログラムによって実現されるアルゴリズムの一例のブロック図である。
【図６】  図５における変調付与部２１６の詳細ブロック図である。
【図７】  上記実施形態における各種リソースの割当例を示す図である。
【図８】  マイクロプログラムのロード処理のフローチャートである。
【符号の説明】
２…波形Ｉ／Ｏ部、４…外部ＲＡＭ、６…波形生成部、８…ミキサ、１０…ＤＳＰ、１２…ＤＡコンバータ、１４…サウンドシステム、１６…バスライン、１８…通信Ｉ／Ｏ部、２０…表示器、２２…操作子、２４…タイマ、２６…ＣＰＵ、２８…ＲＯＭ、３０…ＲＡＭ、５０…低周波発振部、５２…エンベロープジェネレータ部、５４…ミキサＩ／Ｏ部、５６…Ｉ−ＲＡＭ、５８…加算器、６０…Ｔ−ＲＡＭ、６２…Ａセレクタ、６４…Ｙ−ＲＡＭ、６６…係数補間部、６８…Ｙセレクタ、７０…乗算器、７２…Ｂセレクタ、７４…演算器、７５…バスライン、７６…書込み部、７８…読出し部、８０…外部ＲＡＭアドレス発生部、８２…エンコーダ（絶対的指標情報発生装置，ページ切換回路）、１００…マイクロプログラムＲＡＭ（プログラム記憶装置）、１０１…係数ＲＡＭ、１０２−０〜１０２−２９…補間制御レジスタ、１０３−０〜１０３−１５…Ｉ／Ｏ先頭ｃｈレジスタ（オフセット情報記憶装置）、１０４−０〜１０４−１５…ＬＦＯ先頭ｃｈレジスタ（オフセット情報記憶装置）、１０５−０〜１０５−１５…ＥＧ先頭ｃｈレジスタ（オフセット情報記憶装置）、１０６−０〜１０６−１５…Ｉ−Ｒ先頭ａｄレジスタ（オフセット情報記憶装置）、１０７−０〜１０７−１５…Ｔ−Ｒ先頭ａｄレジスタ（オフセット情報記憶装置）、１０８−０〜１０８−３１…パラメータレジスタ、１０９−０〜１０９−１５…先頭ステップレジスタ、１１０−０〜１１０−１６９…外部ＲＡＭアクセスａｄレジスタ（オフセット情報記憶装置）、１１１−０〜１１１−１５…外部ＲＡＭブロック情報レジスタ（オフセット情報記憶装置）、１１４…ステップカウンタ（カウンタ）、１１６…ブロックナンバ発生器（ブロック識別情報発生装置）、１３０…共通アクセス領域、１３２…Ｉ／Ｏ領域、１３４…ＬＦＯ領域、１３６…ＥＧ領域、１３８…個別アクセス領域、１４０…共通アクセス領域、１４２…個別アクセス領域、１５２…個別アクセス領域（複数のページを有するメモリ）。
【図１】
0003760824.tif 000002
【図２】
0003760824.tif 000003
【図３】
0003760824.tif 000004
【図４】
0003760824.tif 000005
【図５】
0003760824.tif 000006
【図６】
0003760824.tif 000007
【図７】
0003760824.tif 000008
【図８】
0003760824.tif 000009