(57)【要約】【課題】  電子楽器に実装される波形メモリ用のメモリデバイスとしては、ＲＯＭ，ＳＤＲＡＭ等様々な種類があり、これらの所要クロック数も様々なものが市販されている。そこで、実装できるメモリデバイスの種類をフレキシブルに設定でき、これらメモリデバイスの性能を充分に引き出す。【解決手段】  メモリデバイスをアクセスするためのアドレス信号に基づいて、当該メモリデバイスの種別（メモリタイプ信号ＴＹＰＥＨ，ＴＹＰＥＬ）が生成される。タイミング発生回路３４６，３６２は、これらメモリタイプ信号に基づいて、アウトプット・イネーブル信号、ライト・イネーブル信号、アドレス信号等のタイミングを制御する。【選択図】  図４
2005208682.tif 000002
【特許請求の範囲】
【請求項１】
ｎビット幅の波形データを記憶するとともに一のアドレスのデータ幅がｎビットである第１のメモリデバイスと、ｎビットの波形データを記憶するとともに一のアドレスのデータ幅がｎ×ｍビットである第２のメモリデバイスの何れも使用可能な波形メモリ型楽音合成装置であって、
ｎビットの波形データを読み出すためのアドレスを発生するアドレス発生部と、
該アドレスの所定数の下位ビットからメモリアドレスを生成するメモリアドレス生成部と、
該アドレスの前記下位ビットの所定数の上位ビットからメモリマスクを生成するメモリマスク生成部と、
前記メモリアドレスを用いて前記第１のメモリデバイスをアクセスし、該第１のメモリデバイスからｎビットの波形データを読み出す第１の読出部と、
前記メモリアドレスを用いて前記第２のメモリデバイスをアクセスするとともに、前記メモリマスクにより第２のメモリデバイスのｎ×ｍビットのデータのうちｎ×（ｍ−1）ビットをマスク状態に設定することにより、前記第２のメモリデバイスからｎビットの波形データを読出す第２の読出し部と
を有することを特徴とする波形メモリ型楽音合成装置。
【請求項２】
波形メモリとしてＲＯＭとＲＡＭとを有することを特徴とする波形メモリ型楽音合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器等に用いて好適な波形メモリ型楽音合成装置に関する。
【背景技術】
【０００２】
従来より、波形メモリとしてＲＡＭを備え、波形データの内容を適宜更新することができる電子楽器が知られている（例えば特許文献１）。この電子楽器においては、波形メモリに基づく発音処理は主としてＤＳＰによって実行され、波形メモリの更新、あるいはユーザインタフェース処理は制御用のＣＰＵによって実行される。そして、１サンプリング周期が複数のスロットに分割され、ＤＳＰおよび制御用ＣＰＵに対して、波形メモリにアクセスし得るスロットが割り当てられる。これにより、ＤＳＰによる波形メモリのアクセス頻度が小さい場合には、制御用ＣＰＵに対してより多くのスロットを割り当てることができ、発音中であっても制御用ＣＰＵから波形メモリに対して高速にアクセスすることができる。
【０００３】
【特許文献１】特開平１０−９７２５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、波形メモリとして使用し得るメモリデバイスは、大別するとＲＯＭおよびＲＡＭに分類される。使用頻度の高い波形データは予めＲＯＭに格納しておくことにより、制御用ＣＰＵからのロードを待たずに発音処理を開始することができる。一方、ＲＡＭを用いる場合は、ハードディスク等に格納された多種類の波形データの中から所望のものをロードすることができるから、多彩な発音処理が可能になる。
【０００５】
また、１曲のうちで使用される音色が多い場合には、これら波形メモリの記憶容量を大きくしておく必要がある。また、同時に発音される音色数が多い場合には、アクセススピードの速い波形メモリを用いることが好適である。このように、経済面および性能面の双方に鑑みて最適な波形メモリの構成は、エンドユーザの使用態様に応じて異なることになる。そして、メモリデバイスの性能は日々進歩しているため、電子楽器の販売後に、楽器メーカーがエンドユーザに対して高性能な波形メモリを随時提供できれば便利である。
【０００６】
しかし、従来の電子楽器においては、実装可能なメモリデバイスは固定的であり、様々な種類のメモリデバイスに対応することができなかった。また、仮に元々の波形メモリを高性能なメモリデバイスに差し替えることが可能であったとしても、新たなメモリデバイスに高速にアクセスすることによって電子楽器の性能を向上させることは困難であった。
この発明は上述した事情に鑑みてなされたものであり、フレキシブルに波形メモリの構成を設定でき、各種波形メモリの性能を充分に引き出す波形メモリ型楽音合成装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記課題を解決するため本発明にあっては、下記構成を具備することを特徴とする。なお、括弧内は例示である。
請求項１記載の波形メモリ型楽音合成装置にあっては、ｎ（１６）ビット幅の波形データを記憶するとともに一のアドレスのデータ幅がｎ（１６）ビットである第１のメモリデバイス（ＲＯＭ４１０）と、ｎ（１６）ビットの波形データを記憶するとともに一のアドレスのデータ幅がｎ×ｍ（１６×４＝６４）ビットである第２のメモリデバイス（ＤＩＭＭ４１４）の何れも使用可能な波形メモリ型楽音合成装置であって、ｎ（１６）ビットの波形データを読み出すためのアドレスを発生するアドレス発生部（上位・下位アドレス生成回路３１６）と、該アドレスの所定数の下位ビットからメモリアドレスを生成する（ＲＯＭについては段落０１０６：上位アドレス信号ＨＭＡ０〜３０のうち下位２３ビット（ＨＭＡ０〜２２）がアドレス信号Ａ０〜２２として供給される。ＳＤＲＡＭについては段落０１１０：上位アドレス信号ＭＡＨ０〜３０のうち下位「２０ビット」である上位アドレス信号ＭＡＨ０〜１９に基づいて、ＲＯＷ（行）およびＣＯＬ（列）アドレス信号を生成する）メモリアドレス生成部（行・列アドレス発生部３６４）と、該アドレスの前記下位ビットの所定数の上位ビットからメモリマスクを生成する（段落００９４〜００９５）メモリマスク生成部（マスク抽出部３６６）と、前記メモリアドレスを用いて前記第１のメモリデバイス（ＲＯＭ４１０）をアクセスし（段落０１０６：上位アドレス信号ＨＭＡ０〜３０のうち下位２３ビット（ＨＭＡ０〜２２）がアドレス信号Ａ０〜２２としてＲＯＭ４１０に供給される）、該第１のメモリデバイスからｎ（１６）ビットの波形データを読み出す第１の読出部（ＲＯＭコントローラ３４０）と、前記メモリアドレスを用いて前記第２のメモリデバイス（ＤＩＭＭ４１４）をアクセスするとともに、前記メモリマスクにより第２のメモリデバイスのｎ×ｍ（１６×４＝６４）ビットのデータのうちｎ×（ｍ−1）（１６×３＝４８）ビットをマスク状態に設定する（段落０１２０：上位マスク信号ＤＱＭＨ０〜３が生成されると、全６４ビットのデータバスのうち何れか「１６ビット」のみがアクティブ状態にされ、他の「４８ビット」がマスク状態に設定される）ことにより、前記第２のメモリデバイス（ＤＩＭＭ４１４）からｎ（１６）ビットの波形データを読出す第２の読出し部（ＳＤＲＡＭコントローラ３６０）とを有することを特徴とする。
また、請求項２記載の波形メモリ型楽音合成装置にあっては、波形メモリとしてＲＯＭとＲＡＭとを有することを特徴とする。
【発明の効果】
【０００８】
以上のように、本発明によれば、共通のアドレスを用いてｎビット幅の第１のメモリデバイスと、ｎ×ｍビット幅の第２のメモリデバイスとをアクセスするから、ビット幅の異なる複数種類のメモリデバイスに対して同一のアドレスを用いることができるため、回路構成を複雑化することなく、柔軟性の高いメモリシステムを構成できる。
【発明を実施するための最良の形態】
【０００９】
1．実施例の構成
1．1．電子楽器の全体構成
次に、本発明の一実施例の電子楽器の全体構成を図１を参照し説明する。
図において１０２はパネルスイッチであり、ここで電子楽器の各種パラメータが設定される。１０４はパネル表示器であり、電子楽器の各種状態等を表示する。１１４はネットワークインタフェース部であり、ローカルエリアネットワーク（図示せず）を介して、外部のパーソナルコンピュータ等との間で演奏情報や波形データ等の入出力を行う。１１６はＭＩＤＩインタフェースであり、ここに鍵盤あるいはシーケンサ等のＭＩＤＩ機器が接続され、ＭＩＤＩ信号を入出力する。
【００１０】
１１８はディスクドライブであり、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＭＯ等のディスク１２０に対して波形データ、演奏情報等のデータの読出しおよび書込みを行う。１２４はＣＰＵであり、ＲＯＭ１２６に格納された制御プログラムに基づいて、他の構成要素を制御する。１２２はタイマであり、ＣＰＵ１２４に対してタイマ割込みを発生させる。１２８はＲＡＭであり、ＣＰＵ１２４のワークメモリとして用いられる。
【００１１】
次に、４００は波形メモリ部であり、ＲＯＭおよびＲＡＭの双方あるいは一方によって構成され、波形データを記憶する。２００は音源部であり、ＣＰＵ１２４の制御の下、これら波形データを読出し、所定のサンプリング周波数の楽音信号を合成する。合成された楽音信号は、ＤＡコンバータ１１０を介してアナログ信号に変換され、サウンドシステム１１２を介して発音される。１０８は他の音源装置あるいはエフェクタ等の外部回路である。この外部回路１０８から供給される楽音信号も音源部２００において合成される楽音信号に混合され、ＤＡコンバータ１１０を介してサウンドシステム１１２に出力される。
【００１２】
1．2．音源部２００の構成
次に、図２を参照し、所定のサンプリング周期を基本周期として動作する音源部２００の詳細構成を説明する。図において３００はメモリＩ／Ｏ部であり、波形メモリ部４００内の各メモリデバイスにアクセスし、波形データの読出し／書込み等の制御を行う。２０２は音源制御レジスタであり、波形データ読出しのための読出しアドレスの初期値、ループ部の開始アドレス、ピッチ、エンベロープ特性、エフェクト処理の内容等、楽音信号を発生するための種々のパラメータが発音チャンネル毎に記憶される。２０４はＸアクセス回路であり、ＣＰＵ１２４の制御の下、メモリＩ／Ｏ部３００を介して波形メモリ部４００をアクセスすることにより、ＣＰＵ１２４による波形データの読出し／書込み制御を行う。
【００１３】
ここで、Ｘアクセス回路２０４の概要を説明しておく。ＣＰＵ１２４によって直接的に波形メモリ部４００をアクセスしようとすると、しばしば音源部２００自体によるアクセスと衝突し、ＣＰＵ１２４によるアクセスに対して待ち時間が発生することがある。Ｘアクセス回路２０４は、この待ち時間を解消することによってＣＰＵ１２４の動作効率を高めようとするものである。そこで、Ｘアクセス回路２０４においては、読出し／書込み用のＦＩＦＯバッファが設けられている。
【００１４】
ＣＰＵ１２４から波形メモリ部４００に対して転送すべきデータおよびアドレスは、書込み用のＦＩＦＯバッファにおいて予めストリームとしてまとめられる。そして、各発音チャンネルの波形合成のために波形メモリ部４００がアクセスされていない期間内においては、Ｘアクセス回路２０４の制御の下、これらのデータが波形メモリ部４００内のメモリデバイスに連続的に書き込まれるようにした。
【００１５】
同様に、ＣＰＵ１２４によって波形メモリ部４００から読み出すべきデータのアドレスも予め読出し用ＦＩＦＯバッファにストリームとしてまとめられ、音源部２００の空き時間にこれらのデータが連続的に読み出されるようにした。この読出し用ＦＩＦＯバッファに格納された情報は、必要に応じたタイミングでＣＰＵ１２４によって読み出される。
【００１６】
すなわち、発音チャンネルの波形合成のために波形メモリ部４００が頻繁にアクセスされている場合には、Ｘアクセス回路２０４によるデータ転送が遅くなり、発音チャンネルが少ない場合等においては、Ｘアクセス回路２０４によるデータ転送が高速になる。かかる処理により、データの入出力が完了するまでの時間はある程度要求されるが、データの入出力に費やされる時間そのものは短縮することができ、ＣＰＵ１２４を効率的に動作させることができる。なお、Ｘアクセス回路２０４の詳細は、上記特開平１０−９７２５８号公報に開示されている。
【００１７】
２０６はサンプリング周期毎に最大６４チャンネル分の波形データを読出しないし書き込み可能な読出書込回路であり、音源制御レジスタ２０２に記憶されたパラメータに基づいて、メモリＩ／Ｏ部３００を介して波形メモリ部４００をアクセスする。この読出書込回路２０６を介して、各発音チャンネルの楽音信号の合成に必要な波形データが波形メモリ部４００から読み出されるのである。そして、読み出された波形データを所定のサンプリング周波数でかつ該パラメータに応じたピッチの波形でデータに変換して出力する。２０８はエンベロープ付与部であり、音源制御レジスタ２０２に記憶されたエンベロープ特性に基づいて、読出書込回路２０６からサンプリング周期毎に出力される波形データにエンベロープを付与する。
【００１８】
２１２はＤＳＰ（デジタル・シグナル・プロセッサ）であり、予め設定されたマイクロプログラムと、音源制御レジスタ２０２に記憶されたエフェクトパラメータとに基づいて、サンプリング周期毎に入力される楽音信号に効果処理を施し、効果の付与された楽音信号を出力する。２１０はミキサであり、サンプリング周期毎に、エンベロープ付与部２０８、ＤＳＰ２１２および外部回路１０８から出力された楽音信号をミキシングし、その結果を必要に応じて外部回路１０８、ＤＳＰ２１２およびＤＡコンバータ１１０に供給する。
【００１９】
1．3．メモリＩ／Ｏ部３００の構成
1．3．1．エリア判定部３１０
(1)セレクタ３１２，３１４
次に、メモリＩ／Ｏ部３００の詳細構成を図３および図４を参照し説明する。
まず、図３において３１０はエリア判定部であり、読出書込回路２０６から供給されるアドレス信号ＴＧＡおよびＸアクセス回路２０４から供給されるアドレス信号ＸＡＡに基づいて、対応するメモリデバイスの種類を特定する等の処理を行う。エリア判定部３１０の内部において３１２はメモリ・モード信号セレクタであり、読出書込回路２０６から供給されるメモリ・モード信号ＴＧＷおよびＸアクセス回路２０４から供給されるメモリ・モード信号ＸＡＷのうち一方を選択し、メモリ・モード信号Ｗとして出力する。ここで、メモリ・モード信号ＸＡＷ，ＴＧＷ，Ｗは、読出し／書込みのメモリ動作を区別する二値信号である。
【００２０】
次に、３１４はアドレス信号セレクタであり、読出書込回路２０６から供給されるアドレス信号ＴＧＡおよびＸアクセス回路２０４から供給されるアドレス信号ＸＡＡのうち一方を選択し、その結果をアドレス信号ＷＡ０〜３１として出力する。なお、これらアドレス信号ＴＧＡ，ＸＡＡ，ＷＡは、波形メモリのデータ幅が「１６ビット」であると仮定した場合のアドレス信号である。このアドレス信号ＴＧＡは、各発音チャンネル毎に波形データを読み出すためのアドレスであり、各発音チャンネル毎に異なるエリアのアドレスとすることができる。
【００２１】
(2)上位・下位アドレス生成回路３１６
後述する波形メモリ部４００においては、波形メモリのデータ幅として「１６ビット」および「３２ビット」の双方を扱うことが可能になっている。「３２ビット」のデータ幅を用いる場合は、「１６ビット」構成の２系統の波形メモリが同時にアクセスされることになる。これら２系統の波形メモリを「上位」および「下位」と呼ぶ。
【００２２】
波形メモリ部４００が「３２ビット」構成である時、アドレス信号ＷＡ０〜３１を「１ビット」だけ右にシフトした結果が波形メモリ部４００におけるアドレスになる。そして、右シフトした結果、最下位ビットからあふれた「あふれビット」が“０”であれば、下位の「１６ビット」、「あふれビット」が“１”であれば上位の「１６ビット」が指定されたことになる。
【００２３】
従って、単に「１６ビット」空間のアドレス信号ＷＡ０〜３１によって指定されたアドレスを「３２ビット」空間のアドレスに変換するだけであれば、アドレス信号ＷＡ０〜３１を単に「１ビット」右シフトすればよいことになる。しかし、本実施例においては、「１６ビット」空間のアドレス信号ＷＡ０〜３１によるアクセスを、「アドレス信号ＷＡによるアドレスと、次の（ＷＡ０〜３１の値＋１の）アドレスとを同時にアクセスして３２ビットのデータの読出し／書込みを行う動作」であること定義している。
【００２４】
これは、波形メモリにはサンプリングデータがアドレス順に記憶されているから、連続したアドレスに記憶されたデータは連続して読み出される場合が多いことに鑑みてである。「１６ビット」空間における連続する２つのアドレスを同時にアクセスできることは、「３２ビット」のデータ幅を有効に利用し、メモリのアクセス回数を削減できる。しかし、かかる動作を可能ならしめるためには、単なるシフトのみでは「上位」および「下位」の波形メモリを同時にアクセスできない場合がある。
【００２５】
すなわち、アドレス信号ＷＡ０〜３１を右シフトした際の「あふれビット」が“０”であった場合には、そのシフト結果を共通のアドレス信号として「上位」および「下位」の波形メモリに供給すればよい。一方、「あふれビット」が“１”であった場合には、このシフト結果を「上位１６ビット」のアドレスとするとともに、「下位１６ビット」のアドレスはシフト結果に対してさらに「１」を加算する必要がある。
【００２６】
３１６は上位・下位アドレス生成回路であり、上述した原理に基づいて、アドレス信号ＷＡ０〜３１から上位アドレス信号ＭＡＨ０〜３０および下位アドレス信号ＭＡＬ０〜３０を出力するものである。その詳細を説明する。まず、上位・下位アドレス生成回路３１６には、バスモード信号Ｂ３２およびデータモード信号ＤＭが供給される。ここで、バスモード信号Ｂ３２は、波形メモリ部４００のデータバス幅が「３２ビット」であるか「１６ビット」であるかを指定する信号である。
【００２７】
また、データモード信号ＤＭは、各発音チャンネルにおける波形データのデータ幅を規定する二値信号であり、“０”によって「１６ビット」、または“１”によって「３２ビット」の何れかを指定する。換言すれば、アドレス信号セレクタ３１４において選択されたアドレス信号が「３２ビット」あるいは「１６ビット」の何れのビット数の波形データをアクセスするためのアドレス信号であるかを指定する信号である。なお、データモード信号ＤＭは、バスモード信号Ｂ３２とは独立しており、例えばデータバス幅が「１６ビット」であり、波形データのデータ幅が「３２ビット」であってもよいことは勿論である。
【００２８】
波形メモリ部４００のデータバス幅が「１６ビット」である場合、上位・下位アドレス生成回路３１６に供給されたアドレス信号ＷＡ０〜３１の下位３１ビットＷＡ０〜３０が、そのまま下位アドレス信号ＭＡＬ０〜３０として出力される。換言すれば、データバス幅が「１６ビット」である場合、「下位」の波形メモリのみが波形メモリ部４００に実装されることになる。
【００２９】
一方、データバス幅が「３２ビット」であって、データモード信号ＤＭが“０”（１６ビットデータ幅）である場合、アドレス信号ＷＡ０〜３１を「１ビット」右シフトした結果が上位アドレス信号ＭＡＨ０〜３０として出力される。そして、「あふれビット」が“１”である場合は、上位アドレス信号ＭＡＨ０〜３０と同一の値が下位アドレス信号ＭＡＬ０〜３０として出力され、「あふれビット」が“０”である場合は上位アドレス信号ＭＡＨ０〜３０に「１」を加算した結果が下位アドレス信号ＭＡＬ０〜３０として出力される。
【００３０】
また、データバス幅が「３２ビット」であって、かつ、データモード信号ＤＭが“１”（３２ビットデータ幅）である場合も考えられる。かかる場合においては、アドレス信号ＷＡ０〜３１の最上位ビットを除いたアドレス信号ＷＡ１〜３１が、そのまま上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０として出力される。
【００３１】
(3)アクセス制御レジスタ３３２
次に、３３２はアクセス制御レジスタであり、波形メモリ部４００に含まれる各メモリデバイスに対して、以下のデータを格納している。
【００３２】
(3．1)エリア終端アドレス
まず、波形メモリ部４００には最大で８エリア（第０エリア〜第７エリア）のメモリデバイスを設けることができる。１個のエリアは、「１６ビット」データバスの場合、通常は１個のメモリデバイスによって構成され、「３２ビット」データバスの場合は、通常は「上位」および「下位」各１個づつのメモリデバイスによって構成される。そして、これらエリア毎にチップセレクト信号が供給される。但し、メモリデバイスの種類によっては、１個のメモリデバイスで２個のエリアに割り当てられる場合もある。また、本実施例では「上位」と「下位」の波形メモリについてアクセス制御線を共用しているので、「上位」と「下位」に各１個づつメモリデバイスを設ける場合、その２つのデバイスは相互に同じアクセス速度でなければならない。
【００３３】
アクセス制御レジスタ３３２には、これら各エリアの終端アドレスが記憶される。なお、第１エリア〜第７エリアの先頭アドレスは、必ず前のエリアの終端アドレスの次のアドレスであり、第０エリアの先頭アドレスは必ず「０」であるから、これによって各エリアの先頭アドレスも特定される。なお、「エリア終端アドレス」は、「１６ビット」アドレス空間におけるアドレスである。
【００３４】
(3．2)メモリ種別
メモリ種別は３ビットのデータであり、その値に応じて、各エリア毎のメモリデバイスを例えば以下のように特定する。ここで、ＳＲＡＭは「スタティックＲＡＭ（Static Random Access Memory）」の略であり、ＳＤＲＡＭは「シンクロナスＤＲＡＭ（Synchronous Dynamic Random Access Memory）」の略である。また、ここで「ＳＤＲＡＭ」とは、メモリデバイスが単体のＳＤＲＡＭチップである場合と、ＳＤＲＡＭを複数個（例えば８個あるいは１６個）実装して成るＤＩＭＭ（Dual Inline Memory Module）の場合との双方を含む意味である。
【００３５】
０００：ＲＯＭまたはＳＲＡＭ（１６クロックアクセス）
００１：ＲＯＭまたはＳＲＡＭ（１４クロックアクセス）
０１０：ＲＯＭまたはＳＲＡＭ（１２クロックアクセス）
０１１：ＲＯＭまたはＳＲＡＭ（１０クロックアクセス）
１００：ＲＯＭまたはＳＲＡＭ（８クロックアクセス）
１０１：ＳＤＲＡＭ（１４クロックアクセス）
１１０：ＳＤＲＡＭ（１２クロックアクセス）
１１１：ＳＤＲＡＭ（８クロックアクセス）
【００３６】
なお、以後の説明においては、冗長さを避けるため、メモリ種別が「０００〜１００」である場合には、当該メモリデバイスはＲＯＭであると仮定し、必要な場合にＳＲＡＭについて言及することとする。
【００３７】
(3．3)カラムビット
「カラムビット」は、２ビットのデータであり、各エリアのメモリデバイスがＳＤＲＡＭである場合に有効なデータである。「カラムビット」は、ＳＤＲＡＭのカラムアドレスのビット数を以下のように定義する。なお、参考までに、各「カラムビット」に対応するメモリデバイスのメモリ容量の例を括弧内に挙げておく。
００：カラムアドレスビット数  ８ビット（単体ＳＤＲＡＭ６４ＭＢ，ＤＩＭＭ３２ＭＢ〜６４ＭＢ）
０１：カラムアドレスビット数  ９ビット（単体ＳＤＲＡＭ１２８ＭＢ，ＤＩＭＭ６４ＭＢ〜１２８ＭＢ）
１０：カラムアドレスビット数  １０ビット（単体ＳＤＲＡＭ２５６ＭＢ，ＤＩＭＭ２５６ＭＢ〜５１２ＭＢ）
１１：カラムアドレスビット数  １１ビット（ＤＩＭＭ５１２ＭＢ〜）
【００３８】
(3．4)ＤＱＭポジション
「ＤＱＭポジション」は２ビットのデータであり、メモリデバイスが主としてＳＤＲＡＭ型のＤＩＭＭである場合に有効なデータである。ＤＩＭＭにおいては、データバス幅は６４ビット設けられているが、内部的にはＤＩＭＭのデータバスは「８ビット」毎の「８」グループに分かれており、これらグループのうち任意のものをアクティブにする８本のＤＱＭピンが設けられている。本実施例においては、波形メモリ部４００全体のデータバス幅は「１６ビット」または「３２ビット」の何れかであるが、各メモリデバイスは「上位」または「下位」の何れかに属するため、各メモリデバイスにおいては、必要なデータバス幅は常に「１６ビット」である。
【００３９】
そこで、本実施例においては、「８ビット×２グループ」を一組として、上記８本のＤＱＭピンを２本づつアクティブにすることにより、ＤＩＭＭを「１６ビット」データ幅のメモリとして使用することとする。このため、ＤＩＭＭの２本づつのＤＱＭピンに対して供給される選択信号として、上位マスク信号ＤＱＭＨ０〜３あるいは下位マスク信号ＤＱＭＬ０〜３がメモリＩ／Ｏ部３００から出力される（詳細は後述する）。
【００４０】
これらマスク信号ＤＱＭＨ０〜３あるいはＤＱＭＬ０〜３は、ＤＩＭＭに直接的に与えられるアドレス信号のさらに上位にある「２ビット」をデコードすることにより生成される。「ＤＱＭポジション」は、上記「カラムビット」と合せて、これらマスク信号ＤＱＭＨ０〜３あるいはＤＱＭＬ０〜３を生成するために、何れの２ビットを使用するかを規定する情報である。具体的には、「カラムビット」および「ＤＱＭポジション」に応じて、上記２ビットは図１３(a)のように設定される。この図において、選択される２ビットの下の括弧内に記載されている容量は、チップセレクトを２つ有するＤＩＭＭの場合の値であり、チップセレクトを２つ有するＤＩＭＭの場合の値であり、チップセレクトが１つのＤＩＭＭではその半分の容量になる。
【００４１】
(4)エリア判定部３１８
次に、３１８はエリア判定部であり、ここには発音処理中の全ての発音チャンネルについて、波形メモリ読出アドレスＴＧＷＡが供給される。エリア判定部３１８においては、上記アクセス制御レジスタ３３２に記憶されている各エリア終端アドレスと、上記各発音チャンネルの波形メモリ読出アドレスＴＧＷＡとが比較され、各発音チャンネルに対するエリアが特定される。
【００４２】
そして、特定された各エリアについてメモリ種別が読み出され、各発音チャンネルに対するメモリ種別が特定される。また、メモリ種別によって、当該エリアにアクセスするためのクロック数が特定される。従って、エリア判定部３１８においては、これらの情報に基づいて、発音処理中の全ての発音チャンネルについて、１回あたりのアクセスに必要なクロック数が判定される。
【００４３】
(5)期間割当部３２０
次に、３２０は期間割当部であり、発音処理中の各発音チャンネルに対して、１サンプリング周期内のアクセス期間を割り当てる。このため、期間割当部３２０には、これら各発音チャンネルについて、１回あたりのアクセスに必要なクロック数が上記エリア判定部３１８から供給され、アクセス回数が続出書込回路２０６から供給されるとともに、各発音チャンネルについてデータモード信号ＤＭと、補間モード信号ＩＭとが音源制御レジスタ２０２から供給される。
【００４４】
次に、アクセス回数指令信号ＩＭについて説明する。まず、波形メモリ部４００に記憶されている波形データは、所望のピッチにピッチシフトされるため、該ピッチシフト量に対応したアドレス速度で読み出される。このアドレス速度は小数部を含む速度であるため、波形メモリ４００からは読出し時のアドレス位置の前後におけるサンプリング値が読み出され、これら読み出された値に対して補間が施され、読出し時のサンプリング値が求められる。
【００４５】
本実施例においては、前後の２点のサンプリング値に対して補間を施すモード（以下、２点補間モードという）と、前後の４点のサンプリング値に対して補間を施すモード（以下、４点補間モードという）とが各発音チャンネル毎に選択される。各発音チャンネルには過去に読出されたサンプリング値を４つ保存するバッファがそれぞれ設けられており、チャンネル毎に、基本的にはアドレス速度に応じたアドレス整数部の進行数に対応する数のサンプリング値が波形メモリから読み出される。従って、１サンプリング周期毎に波形メモリ部４００にアクセスすべき回数は発音チャンネル毎に異なる。アクセス回数指令信号ＩＭは、この１サンプリング周期に対するアクセス回数（要求回数）を指定する信号である。この要求回数に基づき後述する期間割当部３２０にて、各チャンネルのアクセス回数が確定される。
【００４６】
あるチャンネルについて１回あたりのアクセスに必要なクロック数（アクセスするメモリに応じて決まる）と、データモード信号ＤＭと、アクセス回数指令信号ＩＭとが特定されると、これによって、１サンプリング周期内において必要なクロック数が特定される。一例として、１回あたりのアクセスに必要なクロック数が「１０」であり、データバス幅が「３２ビット」であり、波形データのデータ幅が「１６ビット」ビットであり、「４点補間」モードで波形データを読み出す場合を想定してみる。なお、音源のシステムクロックの周波数は、このクロックと同じでもよいし、それよりも高い周波数でもよい。
【００４７】
「４点補間」を行うためには、「４サンプル」すなわち（１ワード＝１６ビットとして）「４ワード」のサンプルが必要である。ここでは、その全てを１サンプリング周期毎に波形データから読み出す必要が生じる場合を想定する。そして、先に上位・下位アドレス生成回路３１６について説明したように、「３２ビット」データバスを用いた場合には、「２ワード」のデータを１回のアクセスで読み出すことができる。従って、当該発音チャンネルについて「１サンプリング周期」内のアクセス回数は「２回」であり、合計で「１０×２＝２０クロック」が当該発音チャンネルに割り当てられることになる。
【００４８】
本実施例においては、「１サンプリング周期」は「２０４８クロック」から構成される。そして、期間割当部３２０においては、発音処理中の全チャンネル、Ｘアクセス回路２０４および外部回路１０８に対して、アクセスに必要なクロックタイミングが割り当てられる。そして、その割当て結果に基づいて、各クロック毎に、メモリ・モード信号セレクタ３１２およびアドレス信号セレクタ３１４に対して、期間割当部３２０から選択信号ＴＳＥＬが供給される。
【００４９】
ここで、期間割当部３２０において実行されるクロックタイミングの割当方法について説明しておく。
(1)  まず、各発音チャンネルの１アクセス当たりのクロック数とアクセス回数(要求回数)とを乗算し、その積を累計することにより、全チャンネルのアクセスに必要なクロック数の総計を求める。
(2)  この求めたクロック数の総計がＣＰＵ１２４によって設定された「最大クロック数」（例えば７００クロック、詳細は後述する）を超えているか否かが判定される。超えていなければ、各発音チャンネルに対して、１アクセス当たりのクロック数と要求回数との積であるクロック数が割り当てられ、割当処理は終了する。
【００５０】
(3)  一方、クロック数の総計が最大クロック数を超えている場合は、その超えたクロック数を「超過クロック数」とするとともに、一番若い番号の発音チャンネルを「対象チャンネル」とする。
(4)  対象チャンネルに対して、削減可能な範囲でアクセス回数を削減する。例えば、アクセス回数指令信号ＩＭによって４点補間が要求された設定された発音チャンネルについてはアクセス回数は「０〜４」の範囲になるが、これを２点補間に変更することによって、必要なアクセス回数は「０〜２」の範囲にまで削減される。
(5)  削減されたアクセス回数に相当するクロック数を「超過クロック数」から減算する。
【００５１】
(6)  超過クロック数がゼロ以下になったか否かを判断し、ゼロ以下になっている場合は、変更後のクロック数が各発音チャンネルに割り当てられ、割当処理は終了する。
(7)  超過クロック数が「１」以上であって、対象チャンネルが最終チャンネルでなければ、次に若い番号のチャンネルを対象チャンネルにするとともに(４)の処理に戻る。
(8)一方、対象チャンネルが最終チャンネルなら、処理を終了する。
【００５２】
以上処理により、各チャンネルが実際に波形メモリをアクセスする回数(図８（ｃ）参照)が確定される。この処理は、波形メモリアクセスの行なわれる期間に対し１／２サンプリング周期だけ前の周期に実行される。一方、エリア判定部３１０内の他の構成要件３１２、３１４、３１６、３２２、３２４、３２６、３２８、３３０の処理は、波形メモリアクセスの行なわれる期間に実行される。
【００５３】
なお、エリア判定部３２４内の動作は各サンプリング周期ごとに行なわれているため、何れかのチャンネルでアクセス回数が削減された(４点補間→２点補間)としても、それはそのサンプリング周期での削減であり、その次のサンプリング周期でもその削減が継続されることを意味しない。従って、アクセス回数の削減が行なわれたとしてもそれは一時的なものである場合が多く、生成される楽音への影響は小さい。
【００５４】
(6)エリア判定部３２２，３２４，他
次に、上位・下位アドレス生成回路３１６から出力された上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０は、各々エリア判定部３２２，３２４に供給される。エリア判定部３２２においては、アクセス制御レジスタ３３２の内容と下位アドレス信号ＭＡＬ０〜３０に基づいて、下位メモリタイプ信号ＴＹＰＥＬが出力される。すなわち、下位アドレス信号ＭＡＬ０〜３０と各エリア終端アドレスとが比較されることによって下位アドレス信号ＭＡＬ０〜３０に係るエリアが特定され、当該エリアに係るメモリ種別が該下位メモリタイプ信号ＴＹＰＥＬとして出力される。
【００５５】
また、メモリ種別が決定されると、当該メモリデバイスを１回アクセスするために必要なクロック数が特定される。３２６はアクセスカウンタであり、下位メモリタイプ信号ＴＹＰＥＬに基づいて、クロックをそのメモリ種別のアクセスに必要なクロック数だけカウントし、アクセスカウント値ＣＮＴとして出力する。ここで、例えば、必要なクロック数が「１０」であれば、アクセスカウンタ３２６は「０」から「９」までのカウントを行なう。このカウント値は後述するタイミング発生回路３４６，３６２におけるタイミング発生のベースとなる。また、エリア判定部３２２においては、下位アドレス信号ＭＡＬ０〜３０に基づいて、「０〜７」の何れかのエリア番号が特定される。
【００５６】
本実施例において、第０エリア〜第７エリアのうち前半ないし後半の一方の「４エリア」がＲＯＭあるいはＳＤＲＭの共用エリア(簡略化のためのＳＤＲＡＭ用と呼ぶ)として割り当てられ、他方の「４エリア」がＲＯＭの専用エリア(同ＲＯＭ用と呼ぶ)として割り当てられる。３２８は下位チップセレクト生成回路であり、特定されたエリア番号に基づいて、ＲＯＭ用の４本のチップセレクト信号ＲＣＳＬ０〜３またはＳＤＲＡＭ用の４本のチップセレクト信号ＤＣＳＬ０〜３のうち１本のみを“１”に設定し、残りの７本を“０”に設定する。なお、データバス幅が「３２ビット」の場合でも、上位と下位で独立にエリアを判定してチップセレクト信号を作成しているので、前後のメモリエリアのアクセスクロック数が同じであれば、その2つのエリアをまたいで記録された波形データを読み出すことができる。
【００５７】
同様に、エリア判定部３２４においては、上位アドレス信号ＭＡＨ０〜３０に基づいて、上位のメモリデバイスのメモリ種別を示す上位メモリタイプ信号ＴＹＰＥＨが出力され、上位チップセレクト生成回路３３０においては、上位のＲＯＭに対するチップセレクト信号ＲＣＳＨ０〜３と、上位のＳＤＲＡＭに対するチップセレクト信号ＤＣＳＨ０〜３が生成される。但し、本実施例において「上位」および「下位」には同一種類の（同一アクセススピードの）メモリデバイスを実装すべきこととしているため、アクセスカウント値ＣＮＴはアクセスカウンタ３２６から出力されるものを「上位」および「下位」にて共用している。
【００５８】
1．3．2．ＲＯＭコントローラ３４０
(1)チップセレクト付加部３４４
次に、図４において３４０はＲＯＭコントローラであり、波形メモリ部４００内のＲＯＭに供給されるアドレス信号その他各種の信号を生成する。その内部において３４４はチップセレクト付加部であり、チップセレクト信号ＲＣＳＨ０〜３，ＲＣＳＬ０〜３を上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０に付加し、その結果を上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０として、アドレスバス３７２，３７４を介して出力する。
【００５９】
上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０は、各々「３１ビット」であるが、その上位４ビットを必要に応じてチップセレクト信号として用いることができる。その詳細を図１４および図１５を参照し説明する。まず、図１４は、ＲＯＭが「下位」のみに実装された場合におけるチップセレクト信号の付加例を示す図である。
【００６０】
まず、波形メモリ部４００内において、全メモリ空間は「３１ビット」に対応して「２Ｇワード」になる。ここに「２Ｇワード」のＲＯＭを１個実装する場合は、「３１ビット」の下位アドレス信号ＭＡＬ０〜３０をそのまま下位アドレス信号ＬＭＡ０〜３０として当該ＲＯＭに供給しなければならないから、チップセレクト信号は混入されない。また、波形メモリ部４００がアクセスされる時は、必ず当該ＲＯＭがアクセスされるから、ＲＯＭのチップセレクト端子には別途チップセレクト信号を供給する必要がある。
【００６１】
また、「１Ｇワード」のＲＯＭを１個実装する場合は、最上位の下位アドレス信号ＭＡＬ３０に代えて、チップセレクト信号ＲＣＳＬ０が下位アドレス信号ＬＭＡ３０としてＲＯＭに供給されることになる。ここで、波形メモリ部４００内に割り当てられるＲＯＭのエリアは、「前半４エリア」または「後半４エリア」のうち何れかを選択することができる。「前半４エリア」にＲＯＭが割り当てられる場合は、このチップセレクト信号は第０エリアに対するチップセレクト信号であり、一方、全エリア中の「後半４エリア」にＲＯＭが割り当てられる場合は第４エリアに対するチップセレクト信号になる。図中で「ＣＳ０／４」と表記されているのはこのためである。
【００６２】
また、「５１２Ｍワード」のＲＯＭであれば、最大２個実装可能であるが、アドレス信号は「２９ビット」あればよい。このため、下位アドレス信号中のＭＡＬ３０，ＭＡＬ２９に代えて、チップセレクト信号ＲＣＳＬ０，ＲＣＳＬ１が下位アドレス信号ＬＭＡ３０，ＬＭＡ２９として波形メモリ部４００に供給される。同様に、「２５６Ｍワード」のＲＯＭであれば、最大３個実装可能であり、上位３ビットの下位アドレス信号ＬＭＡ２８〜３０に代えてチップセレクト信号ＲＣＳＬ０〜２が当該ＲＯＭに供給される。また、「１２８Ｍワード」のＲＯＭであれば、最大４個実装可能であり、上位４ビットの下位アドレス信号ＬＭＡ２７〜３０に代えてチップセレクト信号ＲＣＳＬ０〜３が当該ＲＯＭに供給される。
【００６３】
次に、ＲＯＭが上位・下位の双方に実装された場合におけるチップセレクト信号の付加例を図１５を参照し説明する。まず、「上位」および「下位」に各々「２Ｇワード」（１ワード＝１６ビット）のＲＯＭを実装する場合には、各ＲＯＭに対して「３１ビット」の上位アドレス信号ＨＭＡ０〜３０および下位アドレス信号ＬＭＡ０〜３０を全て供給しなければならない。
【００６４】
上述したように、上位アドレス信号ＨＭＡ０〜３０は、アドレス信号ＷＡ０〜３１を右に「１ビット」シフトした結果、すなわちアドレス信号ＷＡ１〜３０であるから、図１５においてはそのように表記されている。一方、下位アドレス信号ＬＭＡ０〜３０は、シフトの際の「あふれビット」が“０”であれば上位アドレス信号ＨＭＡ０〜３０に等しく、「あふれビット」が“１”であればアドレス信号ＷＡ１〜３０に「１」を加算した値になる。図１５においては、両者を総称して、「ＷＡ’０〜ＷＡ’３０」のように表記している。
【００６５】
「上位」および「下位」の双方にＲＯＭを実装する場合においても、チップセレクト信号を付加する態様は図１４の場合と同様である。すなわち、「１Ｇワード」のＲＯＭを「上位」および「下位」に各１個実装する場合は、最上位の上位アドレス信号ＭＡＨ３０（＝ＷＡ３１）および下位アドレス信号ＭＡＬ３０（＝ＷＡ’３１）に代えて、チップセレクト信号ＲＣＳＨ０およびＲＣＳＬ０が上位アドレス信号ＨＭＡ３０および下位アドレス信号ＬＭＡ３０として出力される。
【００６６】
また、「５１２Ｍワード」のＲＯＭであれば、上位および下位アドレス信号中の各上位２ビットに代えて、チップセレクト信号ＲＣＳＨ０，ＲＣＳＨ１およびＲＣＳＬ０，ＲＣＳＬ１が出力され、「２５６Ｍワード」のＲＯＭであれば、上位および下位アドレス信号中の各上位３ビットに代えて、チップセレクト信号ＲＣＳＨ０〜２およびＲＣＳＬ０〜２が出力され、「１２８Ｍワード」のＲＯＭであれば、上位および下位アドレス信号中の各上位４ビットに代えて、チップセレクト信号ＲＣＳＨ０〜３およびＲＣＳＬ０〜４が出力される。
【００６７】
(2)ＬＨマスク発生部３４２およびドライブ回路３４８
図４に戻り、３４８はドライブ回路であり、上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０等、波形メモリ部４００に供給される信号をバッファリングして出力する。その際、以下述べるように、必要に応じてこれらの信号がマスキングされる。また、外部回路１０８のアクセス期間内においては、ドライブ回路３４８はハイインピーダンス状態に設定される。３４２はＬＨマスク発生部であり、データモード信号ＤＭ等に基づいて、上位のチップセレクト信号をマスクする上位ＲＯＭマスク信号ＲＭＨおよび下位のチップセレクト信号をマスクする下位ＲＯＭマスク信号ＲＭＬを出力する。
【００６８】
上位・下位ＲＯＭマスク信号ＲＭＨ，ＲＭＬは、“１”であれば「チップセレクト可」、“０”であれば「チップセレクト不可」（マスク状態）を示す二値信号である。上述したように、波形メモリ部４００のデータバス幅が「３２ビット」であれば、「上位」および「下位」のＲＯＭを同時にアクセスする事が可能であるが、そのうち一方にのみアクセスしたい場合がある。かかる場合には、他方のチップセレクト信号をマスキングしておくことにより、消費電力や電磁波の輻射を削減することができる。
【００６９】
また、ＲＯＭに代えてＳＲＡＭが実装される場合には、「上位」または「下位」の一方のみに対して「書込み」が行われる場合がある。かかる場合には、他方に対する書込みは阻止しなければならないため、ＲＯＭマスク信号ＲＭＨ，ＲＭＬは必須である。具体的には、上位ＲＯＭマスク信号ＲＭＨが“０”になると、上位アドレス信号ＨＭＡ０〜３０中のチップセレクト信号（図１５参照）がマスクされる（強制的に“０”に設定される）。同様に、下位ＲＯＭマスク信号ＲＭＬが“０”になると、下位アドレス信号ＬＭＡ０〜３０中のチップセレクト信号がマスクされる。
【００７０】
但し、「２Ｇワード」のＲＯＭが実装される場合には、上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０中にはチップセレクト信号は付加されないため、上位・下位ＲＯＭマスク信号ＲＭＨ，ＲＭＬがそのまま波形メモリ部４００に供給され、これらが「２Ｇワード」のＲＯＭに対するチップセレクト信号として用いられることになる。
【００７１】
(3)タイミング発生回路３４６
次に、３４６はタイミング発生回路であり、ここにはメモリ・モード信号セレクタ３１２からメモリ・モード信号Ｗが供給されるとともに、アクセスカウンタ３２６からアクセスカウント値ＣＮＴが供給され、エリア判定部３２２，３２４からメモリタイプ信号ＴＹＰＥＨ，ＴＹＰＥＬが供給される。タイミング発生回路３４６においては、これらの信号に基づいて、ＲＯＭ用のメモリ・アウトプット・イネーブル信号ＭＯＥＮと、メモリ・ライト・イネーブル信号ＭＷＥＮとが出力される。なお、メモリ・ライト・イネーブル信号ＭＷＥＮは、実際はＲＯＭに代えてＳＲＡＭが用いられる場合に使用される。
【００７２】
さらに、タイミング発生回路３４６においては、ドライブ回路３４８を介して上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０の出力タイミングが制御されるとともに、後述するデータ・コントローラ３５０を介して、上位・下位データ信号ＨＭＤ０〜１５，ＬＭＤ０〜１５の入出力タイミングが制御される。次に、タイミング発生回路３４６におけるタイミング制御の内容を図９，図１０を参照し説明する。
【００７３】
まず、図９において、１６クロックアクセスのＲＯＭまたはＳＲＡＭをアクセスする場合は、アドレス信号（ＨＭＡ０〜３０またはＬＭＡ０〜３０）を第０〜第１５クロックの「１６クロック」だけ保持する必要がある。そして、読出しを行う場合には、メモリ・アウトプット・イネーブル信号ＭＯＥＮを第４〜第１５クロックの期間“０”に保持する必要がある。かかる制御を行うと、第１４〜第１５クロックにおいて、データ信号（ＨＭＤ０〜１５またはＬＭＤ０〜１５）が読み出され、第１３クロックの終わりの信号ＭＯＥＮの立ち上がりに応じて読み出されたデータ信号がバッファアンプ３５６の入力ラッチに取り込まれる。
【００７４】
また、１６クロックアクセスのＳＲＡＭに対して書込みを行う場合には、読出し時と同様にアドレス信号を「１６クロック」だけ保持する必要がある。そして、メモリ・ライト・イネーブル信号ＭＷＥＮは、第２〜第１３クロックの期間“０”に保持しておく必要がある。また、書込み用のデータ信号（ＨＭＤ０〜１５またはＬＭＤ０〜１５）は第０〜第１５クロックに渡って保持する必要がある。また、「１４，１２，１０または８クロックアクセス」のＲＯＭまたはＳＲＡＭに対しても、図９および図１０に示すように、各々のメモリ種別に応じたタイミングで各種信号が入出力される。
【００７５】
1．3．3．ＳＤＲＡＭコントローラ３６０
(1)タイミング発生回路３６２
図４に戻り、３６０はＳＤＲＡＭコントローラであり、波形メモリ部４００内のＳＤＲＡＭに供給されるアドレス信号その他各種の信号を生成する。その内部において３６２はタイミング発生回路であり、上述したＲＯＭコントローラ３４０内のタイミング発生回路３４６と同様に、ここにはメモリ・モード信号Ｗ、アクセスカウント値ＣＮＴ、メモリタイプ信号ＴＹＰＥＨ，ＴＹＰＥＬが供給される。
【００７６】
タイミング発生回路３６２においては、これらの信号に基づいて、ＳＤＲＡＭ用の行アドレスストローブ信号ＤＲＡＳ、列アドレスストローブ信号ＤＣＡＳおよびライト・イネーブル信号ＤＷＥＮが生成される。次に、タイミング発生回路３６２におけるタイミング制御の内容を図１１，図１２を参照し説明する。
【００７７】
まず、ＳＤＲＡＭに供給される動作クロックＤＣＬＫは、ＲＯＭのタイミング制御に用いられたアクセス用のクロックＣＬＫを２分周したクロック信号である。上述したように、ＳＤＲＡＭには、例えば「８，１０，１２クロックアクセス」のものが存在するが、これは動作クロックＤＣＬＫを基準にすれば「４，５，６クロックアクセス」になる。図１１，図１２におけるタイミングチャートは、この動作クロックＤＣＬＫを基準としている。
【００７８】
図１１において、８クロックアクセスのＳＤＲＡＭをアクセスする場合は、動作クロックＤＣＬＫの第１周期において上位・下位アドレス信号ＤＭＡＨ０〜１４，ＤＭＡＬ０〜１４がＲＯＷ（行）アドレス信号に設定され、残りの３周期において、これらアドレス信号はＣＯＬ（列）アドレス信号に設定される。
【００７９】
そして、動作クロックＤＣＬＫの合計４周期の期間中、バンクセレクト信号ＢＡ０，ＢＡ１は常時出力される。そして、チップセレクト信号／Ｓ０〜３（＝ＤＣＳＨ０〜３またはＤＣＳＬ０〜３）は、第１および第２周期において“Ｌ”レベル（＝“０”）に設定される。また、行・列アドレスストローブ信号／ＲＡＳ，／ＣＡＳ（＝ＤＲＡＳ，ＤＣＡＳ）は、各々第１周期，第２周期において“Ｌ”レベルに設定される。
【００８０】
また、マスク信号ＤＱＭＢ０〜７（詳細は後述する）は、上記４周期の期間中、常に何れか２本が選択される。ここで、読出しを行う場合においては、ライト・イネーブル信号／ＷＥ（＝ＤＷＥＮ）は常に“Ｈ”レベル（＝“１”）に設定される。これにより、動作クロックＤＣＬＫの第４周期において、ＳＤＲＡＭから読み出されたデータが上位・下位データ信号ＨＭＤ０〜１５，ＬＭＤ０〜１５として出力されることになる。
【００８１】
ＳＤＲＡＭでは、４つの信号（／ＣＳ、／ＲＡＳ、／ＣＡＳ、／ＷＥ）の組み合わせにより１つのコマンドＣＭＮＤが決定される（図１１，図１２の「ＣＭＮＤ」欄参照。）動作クロックＤＣＬＫの第１周期の信号(／ＣＳ、／ＲＡＳ、／ＣＡＳ、／ＷＥ)の状態（Ｌ、Ｌ、Ｈ、Ｈ）は「アクティブ命令」である。ＳＤＲＡＭにおいては当該「アクティブ命令」に応じてＲＯＷアドレス信号が取り込まれ、その後の読出しないし書込み動作のための準備が実行される。
【００８２】
第２周期の状態（Ｌ、Ｈ、Ｌ、Ｈ）は「ＲＥＡＤ命令」である。ＳＤＲＡＭにおいては当該「ＲＥＡＤ命令」に応じてＣＯＬアドレスが取り込まれ、先に取り込まれたＲＯＷアドレスとこのＣＯＬアドレスにより選択された記憶位置からのデータの読出しが開始される。
【００８３】
第３周期と第４周期の状態（Ｈ、Ｈ、Ｈ、Ｈ）はチップが選択されていない状態「ＤＥＳＬ」であり、当該ＳＤＲＡＭにおいては命令が受け取られず、既に与えられている命令に応じた動作(この場合は読出し)が継続される。この結果、読み出されたデータＲＥＡＤＤＡＴＡは第４周期にデータバスＤ０〜６３に出力される。ただし、全６４ビットのうちマスクされたビットには出力されない。
【００８４】
一方、書込みを行う場合においても、動作クロックＤＣＬＫの第１周期の状態（Ｌ、Ｌ、Ｈ、Ｈ）は「アクティブ命令」である。従って、ＳＤＲＡＭにおいては、当該「アクティブ命令」に応じてＲＯＷアドレス信号が取り込まれ、その後の読出しないし書込み動作のための準備が行なわれる。そして、書込みを行う場合においては、第２周期においてライト・イネーブル信号／ＷＥが“Ｌ”レベルに設定される。そして、上位・下位データ信号ＨＭＤ０〜１５，ＬＭＤ０〜１５は、第２〜第４周期に渡って保持される。
【００８５】
この第２の周期の状態（Ｌ、Ｈ、Ｌ、Ｌ）は「ＷＲＩＴＥ命令」である。ＳＤＲＡＭにおいては当該「ＷＲＩＴＥ命令」に応じてＣＯＬアドレス及び書込むデータＷＲＩＴＥＤＴが取り込まれ、先に取り込まれたＲＯＷアドレスとこのＣＯＬアドレスにより選択された記憶位置に対してデータの書込みが開始される。但し、マスクされたビットからはＷＲＩＴＥＤＴは取り込まれず、同ビットに関しては書込みも行なわれない。
【００８６】
第３周期と第４周期の状態（Ｈ、Ｈ、Ｈ、Ｈ）はチップが選択されていない状態「ＤＥＳＬ」であり、当該ＳＤＲＡＭにおいては命令が受け取られず、既に与えられている命令に応じた動作(この場合は書込み)が継続される。そして、第４周期において、当該データがＳＤＲＡＭ内の対応するアドレスに書き込まれることになる。また、「１４または１２クロックアクセス」のＳＤＲＡＭに対しても、図１１および図１２に示すように、各々のメモリ種別に応じたタイミングで各種信号が入出力される。
【００８７】
(2)クロック発生部３６８
図４に戻り、３６８はクロック発生部であり、クロックＣＬＫを分周してＳＤＲＡＭの動作クロックＤＣＬＫを生成するとともに、当該動作クロックＤＣＬＫが発生中であることを示すクロックイネーブル信号ＤＣＬＫＥを出力する。ここで、クロック発生部３６８においては、ＣＰＵ１２４により音源制御レジスタ２０２に設定されたクロック制御信号ＤＣＬ＿ＯＮが“１”であれば、動作クロックＤＣＬＫが常時発生されるとともに、クロックイネーブル信号ＤＣＬＫＥも“１”（オン状態）に設定される。
【００８８】
一方、クロック制御信号ＤＣＬ＿ＯＮが“０”であれば、これらの信号はアクセス中のメモリデバイスの種別、すなわち下位メモリタイプ信号ＴＹＰＥＬに応じて状態が切り換えられる。すなわち、下位メモリタイプ信号ＴＹＰＥＬが「ＳＤＲＡＭ」を指標している場合は、動作クロックＤＣＬＫが発生されるとともに、クロックイネーブル信号ＤＣＬＫＥも“１”（オン状態）に設定される。
【００８９】
一方、クロック制御信号ＤＣＬ＿ＯＮが“０”であって下位メモリタイプ信号ＴＹＰＥＬが「ＲＯＭまたはＳＲＡＭ」を指標している場合は、動作クロックＤＣＬＫが停止されるとともに、クロックイネーブル信号ＤＣＬＫＥも“０”（オフ状態）に設定される。ここで、かかる制御の意義について説明しておく。本発明者が知る限りにおいて、現在市販されているＳＤＲＡＭは、仕様上は、動作クロックＤＣＬＫを常時供給しなければならないことになっている。
【００９０】
しかし、本発明者が実験をしたところによれば、書込み／読出し時に動作クロックＤＣＬＫを供給していれば、他の期間においてＳＤＲＡＭに動作クロックＤＣＬＫを供給しなくても正常に動作することが判明した。そこで、ＳＤＲＡＭに対してアクセスしない期間すなわちＲＯＭをアクセスする期間は、動作クロックＤＣＬＫをオフ状態に設定することを可能にした。これにより、消費電力が低減されるとともに、電磁波の輻射も抑制されることになる。
【００９１】
但し、全てのＳＤＲＡＭに対してかかる動作が可能である保証は無い。そこで、動作クロックＤＣＬＫのオンオフ制御を行うか否かをエンドユーザが指示し、それに応じてＣＰＵ１２４が音源制御レジスタ２０２にクロック制御信号ＤＣＬ＿ＯＮを設定することによって自在に設定できるようにしたものであり、オンオフ制御を行った際に支障が生じる場合には、動作クロックＤＣＬＫ等を常時オン状態に設定しておくとよい。なお、クロック制御信号ＤＣＬ＿ＯＮを各エリアごとに独立に設定できるようにしてもよい。
【００９２】
また、詳細は後述するが、各サンプリング周期の先頭には、ＳＤＲＡＭをリフレッシュするためのリフレッシュ期間が設けられる。そして、クロック制御信号ＤＣＬ＿ＯＮが“０”である場合には（“１”である場合には当然に）、当該リフレッシュ期間において動作クロックＤＣＬＫがオン状態に設定される。
【００９３】
(3)その他の構成
次に、３６４は行・列アドレス発生部であり、上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０からそれぞれＲＯＷ（行）アドレス信号、ＣＯＬ（列）アドレス信号を生成し、その結果を時分割しつつ上位・下位アドレス信号ＤＭＡＨ０〜１４，ＤＭＡＬ０〜１４として、アドレスバス３７６，３７８を介して出力する。なお、上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０がＲＯＷ（行）アドレス信号およびＣＯＬ（列）アドレス信号に分割される態様は、アクセス制御レジスタ３３２中の「カラムビット」データに応じて異なる。その具体例を図１３(b)に示しておく。
【００９４】
３６６はマスク抽出部であり、上位・下位アドレス信号ＭＡＨ０〜３０，ＭＡＬ０〜３０から各々所定の「２ビット」を抽出し、これをデコードすることによって上位・下位マスク信号ＤＱＭＨ０〜３，ＤＱＭＬ０〜３を出力する。ここで、所定の「２ビット」は、先に図１３(a)において説明したように、当該ＳＤＲＡＭのエリアにおけるカラムビットおよびＤＱＭポジションによって決定される。なお、先述したように、これらのマスク信号はデータバス幅が64ビットのＤＩＭＭから１６ビットのデータを取り出すための信号であるため、ＤＩＭＭ以外では使用しなくても良い。
【００９５】
例えば、内部が２分割構造で２つのチップセレクトでそれぞれ指定される６４ＭＢのＤＩＭＭの場合には、マスク抽出部３６６の設定は以下のようになる。まず、ＤＩＭＭの１２ビットのアドレス端子には、８ビットのＣＯＬアドレスと１２ビットのＲＯＷアドレスの都合２０ビットのアドレスＭＡ０〜ＭＡ１９が出力される。従って、「カラムビット」は、「００：８ビット」に設定される。その上の２ビットＭＡ２０、ＭＡ２１はＤＩＭＭのバンクセレクトに使用されるので、マスクには更にその上の２ビットＭＡ２２、ＭＡ２３が使用される。すなわち「ＤＱＭポジション」は「１０：Ａ２２、Ａ２３」に設定される。以上の全２４ビットによって１６メガワード（＝３２ＭＢ）をアクセス可能であり、そのアドレス空間が２チップセレクト分設けられているため合計のアドレス空間は全６４ＭＢになる。
【００９６】
３６９はドライブ回路であり、上位・下位アドレス信号ＤＭＡＨ０〜１４，ＤＭＡＬ０〜１４等、波形メモリ部４００に供給される信号をバッファリングして出力する。その際、図１１，図１２において説明したタイミングチャートが実現されるように、必要に応じてこれらの信号がマスキングされる。さらに、外部回路１０８のアクセス期間内においては、ドライブ回路３６９はハイインピーダンス状態に設定される。
【００９７】
1．3．4．データ・コントローラ３５０
次に、データ・コントローラ３５０の内部において３５２はセレクタであり、読出書込回路２０６から書込みデータ信号ＴＧＷＤが、また、Ｘアクセス回路２０４から書込みデータ信号ＸＡＷＤが、各々供給される。セレクタ３５２においては、期間割当部３２０から出力される選択信号ＴＳＥＬに基づいて、そのうち一方が選択される。
【００９８】
選択されたデータ信号のデータ幅が「３２ビット」であれば、該データ信号の上位・下位各「１６ビット」が各々上位・下位データ信号ＨＭＤ０〜１５，ＬＭＤ０〜１５として、ドライブ３５４を介して波形メモリ部４００に供給される。また、選択されたデータ信号のデータ幅が「１６ビット」であれば、該データ信号はそのまま下位データ信号ＬＭＤ０〜１５として出力される。また、外部回路１０８のアクセス期間内においては、ドライブ回路３５４はハイインピーダンス状態に設定される。
【００９９】
また、波形メモリ部４００において読み出された上位・下位データ信号ＨＭＤ０〜１５，ＬＭＤ０〜１５は、バッファアンプ３５６を介して、そのまま読出書込回路２０６およびＸアクセス回路２０４に対する読出しデータ信号ＴＧＲＤ，ＸＡＲＤとして供給される。なお、Ｘアクセス回路２０４および読出書込回路２０６においては、当該回路において読出しタイミングでは無い時にデータ信号が供給されたとしても無視される。
【０１００】
ところで、本実施例においては、ＲＯＭ（またはＳＲＡＭ）用のアドレスバス３７２，３７４と、ＳＤＲＡＭ用のアドレスバス３７６，３７８とが完全に分離されている。かかる構成を採用した意義について説明しておく。まず、ＳＤＲＡＭ（特にＤＩＭＭ）は、ＲＯＭ等と比較してアドレスバスの負荷容量が大きく、両者のアドレスバスを共用すると、大容量のドライブ回路を設ける必要がある。
【０１０１】
本実施例においては、ＲＯＭ用のアドレスバス３７２，３７４をＳＤＲＡＭ用のアドレスバス３７６，３７８から完全に分離したため、ドライブ回路３４８のドライブ能力を小さくすることができるという利点がある。なお、アドレスバス３７６，３７８をドライブするドライブ回路３６９には相当の負荷容量を有するものを採用する必要があるが、ＳＤＲＡＭはアドレスバスの本数が少ないため、全体的に見れば、ドライブ回路に要求される負荷容量のドライブ能力を小さくすることができるのである。
【０１０２】
1．4．波形メモリ部４００の構成
1．4．1．単純な構成例
波形メモリ部４００としては、種々の構成を採ることが可能であるが、最初に単純な構成例を図５を参照し説明する。図において波形メモリ部４００は、各々６４メガビット（４メガワード）のＲＯＭ４０２，４０４から構成されている。これらのＲＯＭは、共に下位側に接続されている。このため、メモリＩ／Ｏ部３００の上位側の信号およびＳＤＲＡＭ用の信号は用いられていない。
【０１０３】
ＲＯＭ４０２，４０４には、下位アドレス信号ＬＭＡ０〜３０のうち下位２２ビットである（ＬＭＡ０〜２１）がＲＯＭ４０２，４０４のアドレス信号Ａ０〜２１として入力される。そして、下位アドレス信号ＬＭＡ０〜３０のうち上位２ビット（ＬＭＡ３０，２９）が各々ＲＯＭ４０２，４０４のチップセレクト信号／ＣＳとして入力される。これは、図１４，図１５において説明したように、上位・下位アドレス信号ＨＭＡ０〜３０，ＬＭＡ０〜３０の一部がチップセレクト信号として用いられているためである。
【０１０４】
また、メモリ・アウトプット・イネーブル信号ＭＯＥＮがこれらＲＯＭに対してアウトプット・イネーブル信号／ＯＥとして入力される。アウトプット・イネーブル信号／ＯＥによって出力が許可され、かつ、チップセレクト信号／ＣＳによって何れかのＲＯＭが選択されると、アドレス信号Ａ０〜２１に基づいて当該ＲＯＭの内容が読み出され、読み出されたデータは下位データ信号ＬＭＤ０〜１５としてメモリＩ／Ｏ部３００に供給される。
【０１０５】
1．4．2．一般的構成例
(1)ＲＯＭ４１０
次に、波形メモリ部４００の一般的構成例を図６，図７を参照し説明する。ここで、図６は上位側、図７は下位側のメモリデバイスを示す。なお、繁雑を避けるため、メモリＩ／Ｏ部３００とこれらメモリデバイスの結線は省略し、メモリデバイスの各端子に対応する信号名を付している。
【０１０６】
図６において４１０は１２８メガビットのＲＯＭであり、メモリ・アウトプット・イネーブル信号ＭＯＥＮがアウトプット・イネーブル信号／ＯＥとして供給され、上位アドレス信号ＨＭＡ３０がチップセレクト信号／ＣＳとして供給される。また、上位アドレス信号ＨＭＡ０〜３０のうち下位２３ビット（ＨＭＡ０〜２２）がアドレス信号Ａ０〜２２として供給される。図５におけるＲＯＭ４０２，４０４と同様に、出力が許可され、チップセレクト信号／ＣＳによって選択されると、アドレス信号Ａ０〜２２によってＲＯＭ４１０のデータが読み出され、読み出されたデータは上位データ信号ＨＭＤ０〜１５として出力される。
【０１０７】
(2)ＳＤＲＡＭ４１２
次に、４１２は単体のＳＤＲＡＭである。メモリＩ／Ｏ部３００から出力される行・列アドレスストローブ信号ＤＲＡＳ，ＤＣＡＳ、ライト・イネーブル信号ＤＷＥＮ、動作クロックＤＣＬＫ、およびクロックイネーブル信号ＤＣＬＫＥは、各々そのままＳＤＲＡＭ４１２の行・列アドレスストローブ信号／ＲＡＳ，／ＣＡＳ、ライト・イネーブル信号／ＷＥ、クロックＣＬＫ、およびクロックイネーブル信号ＣＫＥとして入力される。
【０１０８】
また、ＳＤＲＡＭ用の４本の上位チップセレクト信号ＤＣＳＨ０〜３のうち信号ＤＣＳＨ０がＳＤＲＡＭ４１２にチップセレクト信号／ＣＳとして供給される。また、ＳＤＲＡＭ４１２のデータバスは、「８ビット」のグループ毎にマスクすることが可能になっているため、マスク信号ＤＱＭＢＨ，ＤＱＭＢＬが入力される。本実施例においては、（上位のみについて考えれば）データバス幅は常に「１６ビット」であるから、双方のマスクが同時にオンオフされる。
【０１０９】
そのため、上位マスク信号ＤＱＭＨ０〜３のうち１本（図示の例ではＤＱＭＨ０）がマスク信号ＤＱＭＢＨ，ＤＱＭＢＬとして同時に供給される。なお、マスク信号ＤＱＭＢＨ、ＤＱＭＢＬにマスク信号を入力する代わりにその２つをアースに接続し、ＳＤＲＡＭ１６ビットを常時マスクされないようにしてもよい。ＳＤＲＡＭ４１２としては、「６４〜２５６メガビット（８〜３２メガバイト）」のものが使用可能であるが、ここではＳＤＲＡＭ４１２が「６４メガビット」であると仮定してアドレス制御の詳細を説明しておく。まず、ＳＤＲＡＭ４１２の内部は、４個のバンクに分割されており、各バンクは「１６ビット×１メガワード」の容量を有する。
【０１１０】
このため、各バンクは、ＲＯＷ（行）アドレス信号およびＣＯＬ（列）アドレス信号を合せて、「２０ビット」のアドレス幅を有することになる。換言すれば、ＳＤＲＡＭコントローラ３６０内の行・列アドレス発生部３６４においては、上位アドレス信号ＭＡＨ０〜３０のうち下位「２０ビット」である上位アドレス信号ＭＡＨ０〜１９に基づいて、ＲＯＷ（行）およびＣＯＬ（列）アドレス信号が生成される。
【０１１１】
ＳＤＲＡＭ４１２のＣＯＬ（列）アドレスの幅（アクセス制御レジスタ３３２内の「カラムビット」データ）が「８ビット」であるならば、ＲＯＷ（行）アドレスの幅は必然的に「１２ビット」になる。このため、ＳＤＲＡＭ４１２には、上位アドレス信号ＤＭＡＨ０〜１４のうち下位１２ビットの上位アドレス信号ＤＭＡＨ０〜１１がアドレス信号Ａ０〜１１として供給される。
【０１１２】
また、上述した４個のバンクを選択するために、ＳＤＲＡＭ４１２には「２ビット」のバンクセレクト信号ＢＡ０，ＢＡ１が入力可能になっている。本実施例においては、ＲＯＷ（行）アドレスおよびＣＯＬ（列）アドレスの指定のために用いられていた上位アドレス信号ＤＭＡＨ０〜１１のさらに上位２ビットであるＤＭＡＨ１２，１３がこれらバンクセレクト信号ＢＡ０，ＢＡ１として供給される。
【０１１３】
従って、上位アドレス信号ＤＭＡＨ０〜１１としてＲＯＷ（行）またはＣＯＬ（列）アドレス信号の何れを出力中のタイミングにおいても、上位アドレス信号ＤＭＡＨ１２，１３すなわちバンクセレクト信号ＢＡ０，ＢＡ１としては、上位アドレス信号ＭＡＨ２０，２１の値が行・列アドレス発生部３６４から出力されることになる。また、上位マスク信号ＤＱＭＨ０〜３は、そのさらに上位「２ビット」である上位アドレス信号ＭＡＨ２２，２３に基づいて生成されることになる。従って、図１３(a)によれば、ＤＱＭポジションは“１０”に設定すればよい。
【０１１４】
(3)ＤＩＭＭ４１４
次に、４１４はチップセレクトを１つだけ備えたＳＤＲＡＭ型のＤＩＭＭであり、メモリ容量が「６４〜２５６メガバイト」のものを想定している。行・列アドレスストローブ信号ＤＲＡＳ，ＤＣＡＳ、ライト・イネーブル信号ＤＷＥＮ、動作クロックＤＣＬＫ、クロックイネーブル信号ＤＣＬＫＥ、上位アドレス信号ＤＭＡＨ０〜１１は、ＳＤＲＡＭ４１２の場合と同様にＤＩＭＭ４１４にも供給される。また、チップセレクト信号としては、上記ＳＤＲＡＭ４１２のＤＣＳＨ０とは異なるＤＣＳＨ１が供給される。
【０１１５】
また、ＤＩＭＭ４１４においても、上位アドレス信号ＤＭＡＨ１２，１３はバンクセレクト信号ＢＡ０，ＢＡ１として供給される。なお、ＤＩＭＭ４１４は、複数のバンクに対して異なるチップセレクト信号あるいはクロック信号等を供給することが可能になっているため、上記各信号のうちの一部は複数の端子に入力される。また、ＤＩＭＭ４１４は、マスク信号ＤＱＭＢ０〜７が入力可能になっている。
【０１１６】
上述したように、ＤＩＭＭ４１４のデータバス幅は６４ビット設けられているが、内部的にはＤＩＭＭのデータバスは「８ビット」毎の「８」グループに分かれている。マスク信号ＤＱＭＢ０〜７は、これらグループのうち任意のものをアクティブにするための信号である。本実施例においては、「２グループ」を「一組」として、マスク状態が制御される。
【０１１７】
すなわち、最下位の「１６ビット」に対するマスク信号ＤＱＭＢ０，ＤＱＭＢ１としては、上位マスク信号ＤＱＭＨ０が供給され、その上位の「１６ビット」に対するマスク信号ＤＱＭＢ２，ＤＱＭＢ３としては、上位マスク信号ＤＱＭＨ１が供給され、さらに上位の「１６ビット」に対するマスク信号ＤＱＭＢ４，ＤＱＭＢ５としては、上位マスク信号ＤＱＭＨ２が供給され、最上位の「１６ビット」に対するマスク信号ＤＱＭＢ６，ＤＱＭＢ７としては、上位マスク信号ＤＱＭＨ３が供給される。
【０１１８】
例えば、ＤＩＭＭ４１４の容量が６４メガバイトであるとする。上述したようにＤＩＭＭ４１４には上位アドレス信号ＤＭＡＨ０〜１１の１２ビットがアドレス信号として入力されており、カラムビットが「９ビット」であるとすると、ＣＯＬとＲＯＷとして入力されるアドレスは、アドレスＭＡＨ０〜２０の全２１ビットに相当する。さらに、バンクセレクト信号ＢＡ０、ＢＡ１として入力されるする上位アドレス信号ＤＭＡＨ１２、１３は、その上位の２ビットＭＡＨ２１、２２に相当する。さらに、その上位の２ビットＭＡＨ２３、２４に基づいて上位マスク信号ＤＱＭＨ０〜３を生成させるため、「ＤＱＭポジション」は"１０"に設定しなければならない。
【０１１９】
換言すれば、行・列アドレス発生部３６４においては、「カラムビット（ここでは「０９」）」および「ＤＱＭポジション（ここでは“１０”）」が供給されると、これらに基づいて上位アドレス信号ＭＡＨ０〜３０の中から上位マスク信号ＤＱＭＨ０〜３を生成するための「２ビット」が特定される。この特定された「２ビット」が「第２３および第２４ビット」になる。そのさらに下位「２ビット（第２１および第２２ビット）」がバンクセレクト信号ＢＡ０，ＢＡ１を生成するためのビットとして用いられるのである。
【０１２０】
ここで、上位アドレス信号ＭＡＨ０〜３０中の特定の「２ビット」に基づいて上位マスク信号ＤＱＭＨ０〜３が生成されると、全６４ビットのデータバスのうち何れか「１６ビット」のみがアクティブ状態にされ、他の「４８ビット」がマスク状態に設定される。ＤＩＭＭ４１４のデータ信号端は、上記「一組」を成す「１６ビット」毎にまとめられ、異なる「組」の対応する信号端（例えばビット０，１６，３２，４８）同士が接続されている。但し、これら信号端のうちマスク状態になっているものはハイインピーダンス状態であるため、データが衝突することはない。このように、接続の結果、「１６本」になった信号端を介して、上位データ信号ＨＭＤ０〜１５が入出力される。この結果、ＤＩＭＭ４１４にアドレスＭＡＨ０〜２４の全２５ビットアドレス相当のアドレス空間を有し、このアドレス３２メガワード(６４メガバイト)全域をアクセスすることがでるようになる。
【０１２１】
(4)ＤＩＭＭ４１６
次に、４１６はＳＤＲＡＭ型のＤＩＭＭであり、上記ＤＩＭＭ４１４と同様の信号が入出力される。但し、ＤＩＭＭ４１６は「２ＲＯＷＳ（２行）」型のＤＩＭＭであり、２個のＤＩＭＭと等価な動作を行う。従って、チップセレクト信号としては、２系統（上位チップセレクト信号ＤＣＳＨ２，３）が入力される。従って、ＤＩＭＭ４１６は、１個のＤＩＭＭでありながら、「２エリア」に対応することになる。
【０１２２】
(5)下位側のメモリデバイス
次に、図７を参照し下位側のメモリデバイスの構成を説明する。図において４２０はＲＯＭ、４２２はＳＤＲＡＭ、４２４，４２６はＤＩＭＭであり、それぞれＲＯＭ４１０、ＳＤＲＡＭ４１２、ＤＩＭＭ４１４，４１６と同様に構成されている。これらメモリデバイスに対して入出力される信号は、上位側に対して対称的である。すなわち、上位側の信号名中の「Ｈ」の文字を「Ｌ」に変更した信号が入出力される。
【０１２３】
2．実施例の動作
2．1．メモリＩ／Ｏ部３００の動作
次に、本実施例の動作を説明するが、最初にメモリＩ／Ｏ部３００の動作を説明する。上述したように、本実施例において「１サンプリング周期」は「２０４８クロック」から構成される。そして、期間割当部３２０においては、発音処理中の全チャンネル、Ｘアクセス回路２０４および読出書込回路２０６に対して、アクセスに必要なクロックタイミングが割り当てられる。
【０１２４】
ここで、「１サンプリング周期」の前半（１０２４クロック）における割当状態の例を図８に示す。読出書込回路２０６に割り当てられるアクセス期間は、図８(b)において「音源アクセス期間（ＴＡＰ）」と記されている期間であり、Ｘアクセス回路２０４に割り当てられる期間は同図において「Ｘアクセス期間（ＸＡＰ）」と記されている期間である。なお、「１サンプリング周期」の後半の割当状態も「前半」と同様である。すなわち、音源の最大発音チャンネル数「６４チャンネル」のうち「前半」の期間に３２チャンネルの音源アクセスが行われ、「後半」の期間に残り３２チャンネルの音源アクセスが行われることになる。
【０１２５】
図８(b)において、「１サンプリング周期」の「前半」の先頭部分（「後半」についても同様）は、ＳＤＲＡＭのリフレッシュ期間として確保される。次に、音源アクセス期間が設けられ、しかる後にＸアクセス回路２０４によるアクセス期間が設けられ、残りの時間が空き時間になる。ここで、Ｘアクセス回路２０４によるアクセス期間や、ＣＰＵ１２４による波形メモリ部４００に対する直接アクセス等のために、予めある程度のクロック数を残しておく必要があるため、音源アクセス期間として割当て可能な最大クロック数を制限しておく必要がある。本実施例においては、その音源アクセス期間の「最大クロック数」をＣＰＵ１２４が音源制御レジスタ２０２に設定するようになっている。その値として、例えば「７００クロック」が設定される。なお、ＣＰＵ１２４は、ユーザー操作に応じてこのクロック数を設定してもよいし、電子楽器の動作状態に応じて自動設定してもよい。
【０１２６】
音源アクセス期間内においては、最大「３２チャンネル」の発音チャンネルのアクセス期間を確保することができる。なお、仮に外部回路１０８に対して全くアクセス期間を割当てていない場合には、後半の１０２４クロックにおいても同様に「３２チャンネル」の音源アクセス期間を割り当てることができ、合計で最大「６４チャンネル」の発音チャンネルを確保することができる。但し、実際に「３２チャンネル」あるいは「６４チャンネル」の発音チャンネルを確保できるか否かは、メモリデバイスの性能やデータバス幅等の要因に応じて決定される。
【０１２７】
次に、上記１０２４クロックの先頭８２クロック分の割当例を同図(c)に示す。同図において「Ｄ」の文字はＳＤＲＡＭ（またはＳＤＲＡＭ型のＤＩＭＭ）、「Ｒ」の文字はＲＯＭ（またはＳＲＡＭ）に対するアクセス期間であり、その後に続く数字は対応するクロック数である。図において、先頭部分には、上述したＳＤＲＡＭのリフレッシュ期間として１６クロックが確保される。次に、第０発音チャンネルに対して、ＳＤＲＡＭに対する１２クロックのアクセス期間が確保されている。
【０１２８】
図示の例では、第０発音チャンネルの波形データは「１２クロックアクセス」のＳＤＲＡＭに記憶されており、このタイミングにおいて、期間割当部３２０により第０チャンネルに対し１回のアクセスが割当てられている。次に、第１発音チャンネルに対し、期間割当部３２０により１回のアクセス回数が割り当てられている。但し、第１発音チャンネルの波形データは「１０クロックアクセス」のＲＯＭに格納されていることを想定しているため、１回のアクセスに割り当てられるクロック数は「１０」である。
【０１２９】
次に、第２発音チャンネルの波形データを記憶したＲＯＭに対して、２回のアクセスが割当てられている。第２発音チャンネルにおいてアクセスされるＲＯＭも「１０クロックアクセス」であり、２回のアクセスには「２０」クロックが割当てられる。
【０１３０】
以下、同様にして、第５発音チャンネルに係るＳＤＲＡＭに対して「１回×８クロック」、第７発音チャンネルに係るＲＯＭに対して「２回×１２クロック」、第１０発音チャンネルに係るＳＤＲＡＭに対して「１回×８クロック」が割り当てられている。発音チャンネル毎に１回あたりのアクセスに割り当てられるクロック数が異なるのは、それぞれメモリ種別が異なるからである。
【０１３１】
ここに本実施例の特徴の一つがある。すなわち、本実施例によれば、高性能な（所要クロック数が少ない）メモリデバイスを用いると、対応する発音チャンネルにより少ないクロック数を割り当てることができ、より多くの発音チャンネル数を確保することができる。また、所要発音チャンネル数が少なくても良い場合には、例えば全発音チャンネルに対して４点補間を適用すること等により、合成される楽音信号の品位を向上させることができる。
【０１３２】
次に、図８(d)においては、クロック制御信号ＤＣＬ＿ＯＮが“０”である場合における、ＳＤＲＡＭの動作クロックＤＣＬＫのオンオフ状態を示す。図示のように、ＳＤＲＡＭに対するリフレッシュ期間およびＳＤＲＡＭに対するアクセス期間においては、動作クロックＤＣＬＫはオン状態にされ、ＲＯＭに対するアクセス期間においては動作クロックＤＣＬＫはオフ状態に設定される。
【０１３３】
2．2．全体動作
2．2．1．ノートオン処理
次に、本実施例の全体動作について説明する。
まず、ＭＩＤＩインタフェース１１６等を介してノートオンイベントが発生すると、ＣＰＵ１２４において、図１６(a)に示すノートオン処理ルーチンが起動される。図において処理がステップＳＰ２に進むと、このノートオンイベントに対して、新たな発音チャンネルを追加したと仮定した場合に、図８(b)に示す音源アクセス期間に追加される平均のクロック数が計算される。平均のクロック数は、そのチャンネルで読み出す波形データを記憶したメモリが「下位」のみを実装されていれば、同メモリをアクセスする際の「クロック数」に、その波形データを所望の音高までピッチシフトするのに必要なアドレス速度（Fナンバと呼ばれる）を乗算した積である。また、そのメモリが「上位」と「下位」に実装されていれば、該積に更に１／２を乗算した積である。ここで、算出される平均のクロック数には小数部を含まれていてもよく、あるいは、所定の桁で四捨五入ないし切り上げて計算しても良い。
【０１３４】
次に、処理がステップＳＰ４に進むと、この追加クロック数と既に発音処理中の発音チャンネルに対して割り当てられているクロック数との合計が求められ、この合計クロック数が最大クロック数（図８の例においては７００クロック）以下の範囲に収まるか否かが判定される。ここで、「ＹＥＳ」と判定されると、処理はステップＳＰ１２に進み、音源制御レジスタ２０２において新たな発音チャンネルが確保され、その発音チャンネルで当該ノートオンに対応した新たな楽音の生成が開始される。さらに、エリア判定部３１８，期間割当部３２０を介して、音源アクセス期間内に当該発音チャンネルのクロック数が割り当てられる。これにより、本ルーチンの処理は終了する。
【０１３５】
一方、合計クロック数が最大クロック数を超えていた場合にはステップＳＰ４において「ＮＯ」と判定され、処理はステップＳＰ６に進む。ここでは、既存の発音チャンネルの中からアクセス回数を削減できるものが存在するか否かが判定される。「アクセス回数を削減できる発音チャンネル」とは、具体的には４点補間を行っている発音チャンネルであって、２点補間に変更することによってアクセス回数の削減が可能になるほどＦナンバが高い（具体的にはＦナンバが２より大きい）発音チャンネルである。
【０１３６】
かかる発音チャンネルが存在すれば、ここで「ＹＥＳ」と判定され、処理はステップＳＰ８に進み、「削減可能できる」と判断された発音チャンネルのうち何れかの補間モードが２点補間に変更され、それに応じて削減されたアクセス回数に対応するクロック数（メモリ種類に応じても異なる）が上記合計クロック数から減算される。なお、かかる処理により、当該発音チャンネルに係る楽音信号の品位が若干低下するが、新たなノートオンイベントに対して発音チャンネルを割り当てることの方が重要である。また、２点補間に変更される可能性があるのはＦナンバの高い発音チャンネルだけであり、読み出す波形データをその録音時の音高から大きくピッチアップしていない発音チャンルは４点補間から２点補間に変更される恐れはない。そして、処理はステップＳＰ４に戻り、合計クロック数が最大クロック数以下の範囲であれば、ステップＳＰ１２において新たな発音チャンネルが確保されることになる。
【０１３７】
これら発音チャンネルが解放される前に次々にノートオンイベントが発生すると、その度に本ルーチンが起動され、発音チャンネルの数が増加してゆくことになる。そして、やがては全ての発音チャンネルにおいてアクセス回数の削減が不可能な状態になる。この状態において、さらにノートオンイベントが発生すると、ステップＳＰ６において「ＮＯ」と判定され、処理はステップＳＰ１０に進む。
【０１３８】
ステップＳＰ１０においては、リリース処理中の発音チャンネルの中で音声レベルが最低である発音チャンネルが強制的に解放される。なお、リリース処理中の発音チャンネルが存在しない場合には、それ以外の発音チャンネルの中から音声レベルが最低である発音チャンネルが強制的に解放される。この場合は、解放された発音チャンネルのアクセス回数が丸ごと削減され、そのアクセス回数に対応するクロック数が上記合計クロック数から減算される。これは、やはり新たなノートオンイベントに対して優先的に発音チャンネルを割り当てるためである。そして、この発音チャンネルの解放処理が終了すると、処理はステップＳＰ４に戻る。
【０１３９】
2．2．2．ノートオフ処理
また、ＭＩＤＩインタフェース１１６等を介してノートオフイベントが発生すると、ＣＰＵ１２４において、図１６(b)に示すノートオフ処理ルーチンが起動される。図において処理がステップＳＰ２０に進むと、このノートオフイベントに係る発音チャンネル対して、リリース処理の開始が指示される。すなわち、当該発音チャンネルの音量エンベロープレベルがＣＰＵ１２４により設定されたリリースレートで減衰を開始し、所定時間後に音量エンベロープレベルが「０」になると当該チャンネルが解放される。
【０１４０】
3．変形例
本発明は上述した実施例に限定されるものではなく、例えば以下のように種々の変形が可能である。
(1)上記各実施例においては、ステップＳＰ８においてアクセス回数が削減された（２点補間に変更された）発音チャンネルは、消音されるまで常に２点補間が適用された状態になる。しかし、全発音チャンネルによって占有されているクロック数を定期的にチェックし、クロック数に余裕がある場合には、当該発音チャンネルの補間モードを４点補間に戻すようにしてもよい。
【０１４１】
(2)上記実施例において、タイミング発生回路３４６，３６２は、供給されたメモリタイプ信号ＴＹＰＥＨ，ＴＹＰＥＬに基づいて、アクセスすべきメモリデバイスのクロックタイミング等を特定した。しかし、メモリタイプ信号とクロックタイミング等との関係をフラッシュメモリ等に記憶させることにより、メモリタイプ信号に応じて任意のクロックタイミング等で各種制御信号を出力できるようにしてもよい。換言すれば、メモリデバイスの進歩に応じて、フラッシュメモリに記憶されたメモリタイプ信号の値（すなわちメモリ種別）を再定義し、ほとんど使われなくなった古いメモリデバイスに代えて新たに出現したメモリデバイスを割り当てるとよい。
【０１４２】
(3)また、上記実施例においては、クロック発生部３６８は動作クロックＤＣＬＫを供給するか否かを全ＳＤＲＡＭに対して共通に設定したが、実際にアクセスされるＳＤＲＡＭチップあるいはＤＩＭＭに対してのみ動作クロックＤＣＬＫが供給されるように、メモリデバイス毎に動作クロックＤＣＬＫのオンオフ状態を設定できるようにしてもよい。
【０１４３】
(4)また、上記実施例においては、ＤＩＭＭは全体のビット幅は６４ビットであり、４つのマスク信号によって１６ビット単位の書込み／読出しを行ったが、メモリのビット数やマスクの単位はこの組み合わせに限らない。例えば、メモリのデータバス幅は１２８ビットや２５６ビットでもよく、マスクは２４ビット単位、３２ビット単位等でもよい。
【０１４４】
(5)また、上記実施例において音源部２００は、サンプリング周期ごとに楽音信号を生成するハードウェアの音源部であったが、これに代えてＤＳＰやＣＰＵにより実現されるソフトウェア音源を用いてもよい。また、１サンプリング周期ではなく複数サンプリング周期を単位とする動作を行ってもよい。
【０１４５】
(6)音源部２００、ＤＡコンバータ１１０、波形メモリ部４００等を専用のボード上に実装することにより、上記実施例における電子楽器を汎用パーソナルコンピュータによって実現することも可能である。かかる場合には、図１６に示したルーチンは、該パーソナルコンピュータ上で動作するアプリケーションプログラムになる。このアプリケーションプログラムのみをＣＤ−ＲＯＭ、フレキシブルディスク等の記録媒体に格納して頒布し、あるいは伝送路を通じて頒布することもできる。
【図面の簡単な説明】
【０１４６】
【図１】本発明の一実施例の電子楽器の全体ブロック図である。
【図２】音源部２００の詳細ブロック図である。
【図３】メモリＩ／Ｏ部３００の詳細ブロック図（１／２）である。
【図４】メモリＩ／Ｏ部３００の詳細ブロック図（２／２）である。
【図５】波形メモリ部４００の単純な構成例を示すブロック図である。
【図６】波形メモリ部４００の一般的構成例を示すブロック図（１／２）である。
【図７】波形メモリ部４００の一般的構成例を示すブロック図（２／２）である。
【図８】メモリＩ／Ｏ部３００の動作説明図である。
【図９】各種ＲＯＭまたはＳＲＡＭに対するタイミング発生回路３４６のタイミングチャート（１／２）である。
【図１０】各種ＲＯＭまたはＳＲＡＭに対するタイミング発生回路３４６のタイミングチャート（２／２）である。
【図１１】各種ＳＤＲＡＭに対するタイミング発生回路３６２のタイミングチャート（１／２）である。
【図１２】各種ＳＤＲＡＭに対するタイミング発生回路３６２のタイミングチャート（２／２）である。
【図１３】行・列アドレス発生部３６４の動作説明図である。
【図１４】チップセレクト付加部３４４の動作説明図（１／２）である。
【図１５】チップセレクト付加部３４４の動作説明図（２／２）である。
【図１６】ＲＯＭ１２６に格納された制御プログラムのフローチャートである。
【符号の説明】
【０１４７】
１０２：パネルスイッチ、１０４：パネル表示器、１０８：外部回路、１１０：ＤＡコンバータ、１１２：サウンドシステム、１１４：ネットワークインタフェース部、１１６：ＭＩＤＩインタフェース、１１８：ディスクドライブ、１２０：ディスク、１２２：タイマ、１２４：ＣＰＵ、１２６：ＲＯＭ、１２８：ＲＡＭ、２００：音源部、２０２：音源制御レジスタ、２０４：Ｘアクセス回路、２０６：読出書込回路、２０８：エンベロープ付与部、２１０：ミキサ、２１２：ＤＳＰ、３００：メモリＩ／Ｏ部、３１０：エリア判定部、３１２：メモリ・モード信号セレクタ、３１４：アドレス信号セレクタ、３１６：上位・下位アドレス生成回路、３１８：エリア判定部、３２０：期間割当部、３２２，３２４：エリア判定部、３２６：アクセスカウンタ、３２８：下位チップセレクト生成回路、３３０：上位チップセレクト生成回路、３３２：アクセス制御レジスタ、３４０：ＲＯＭコントローラ、３４２：ＬＨマスク発生部、３４４：チップセレクト付加部、３４６：タイミング発生回路、３４８，３５４，３６９：ドライブ回路、３５０：データ・コントローラ、３５２：セレクタ、３５６：バッファアンプ、３６０：ＳＤＲＡＭコントローラ、３６２：タイミング発生回路、３６４：行・列アドレス発生部、３６６：マスク抽出部、３６８：クロック発生部、３７２，３７４，３７６，３７８：アドレスバス、４００：波形メモリ部、４０２，４０４，４１０，４２０：ＲＯＭ、４１２，４２２：ＳＤＲＡＭ、４１４，４１６，４２４，４２６：ＤＩＭＭ。
【図１】
2005208682.tif 000003
【図２】
2005208682.tif 000004
【図３】
2005208682.tif 000005
【図４】
2005208682.tif 000006
【図５】
2005208682.tif 000007
【図６】
2005208682.tif 000008
【図７】
2005208682.tif 000009
【図８】
2005208682.tif 000010
【図９】
2005208682.tif 000011
【図１０】
2005208682.tif 000012
【図１１】
2005208682.tif 000013
【図１２】
2005208682.tif 000014
【図１３】
2005208682.tif 000015
【図１４】
2005208682.tif 000016
【図１５】
2005208682.tif 000017
【図１６】
2005208682.tif 000018