Processing

Please wait...

Settings

Settings

Goto Application

1. JP2000505566 - 周波数補正されたウェーブテーブル・データを備えるPCオーディオシステム

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ JA ]
【発明の詳細な説明】 周波数補正されたウェーブテーブル・データを備えるPCオーディオシステム
この出願は、1995年8月17日に出願された出願連続番号第08/516,052号の一部継続出願である。
発明の背景1.発明の分野
この発明は、ウェーブテーブル・オーディオ・シンセサイザと周波数補正されたウェーブテーブル・データを供給するメモリとを含むPCオーディオシステムに関する。より特定的には、この発明は、周波数補正されたウェーブテーブル・データを供給するPCシステムメモリとインターフェイスする、ウェーブテーブル・オーディオ・シンセサイザとウェーブテーブル・キャッシュとを含む、PCオーディオシステムに関する。2.関連技術の簡単な説明
いくつかの種類のデジタル「シンセサイザ」、すなわち、オーディオデジタル信号処理を通じて音を発生する装置が現在利用可能である。現代のデジタルシンセサイザの一種が、ウェーブテーブル・シンセサイザである。ウェーブテーブル・シンセサイザは、ウェーブテーブル・メモリ内に記憶されるデジタル化された音の波形の部分またはデジタル化された音の波形全体のデジタル処理を通じて音を発生する。ここに引用により援用される、ノリス(Norris)他による「ウェーブテーブル・オーディオ・シンセサイザのためのデジタル信号プロセッサアーキテクチャ(Digital signal Processor Architecture for Wavetable Audio Synthesizer)」と題された米国特許出願連続番号第08/334,461号を参照されたい。
ウェーブテーブル・シンセサイザは、特定のデジタル化された波形をウェーブテーブル・メモリからデジタル−アナログ変換器(DAC)へ「プレイバック」することにより、音を発生する。ウェーブテーブル・データのアドレス指定速度が、アナログ出力の周波数またはピッチを制御する。ウェーブテーブル・データのビット幅は、発生される音の分解能に影響する。たとえば、8ビット幅のデータに対し、16ビット幅のデータの方が、より良好な分解能を達成できる。当業界では16ビットデジタルオーディオが標準となりつつある。
ウェーブテーブル・シンセサイザは、パーソナルコンピュータに応用される。パーソナルコンピュータは、ごく限られたオーディオ能力を備えるよう製造されるのが典型的である。こうした限られた能力は、アラームまたは他のユーザ警告信号などのさまざまな簡単な機能に関し、ユーザに可聴信号を提供するようモノフォニックの(モノラルの)音色(トーン)発生を行なう。典型的なパーソナルコンピュータシステムは、マルチメディアアプリケーションおよびビデオゲームアプリケーション用に所望の改良である、ステレオの高品質オーディオを提供する能力を有さず、また、音楽または他の複雑な音を発生または合成する内蔵能力も持たない。外部装置において、またはアナログスピーカを通じておよびマルチメディア(CD−ROM)アプリケーションにおいて、再生されるよう、コンピュータを通じ音を生成または記録するため、ユーザが音楽構成アプリケーションの使用を所望するとき、音楽合成能力が必須である。
さらに、時にユーザは、彼らのコンピュータを通じて記録またはプレイバック(再生)する前に、ステレオ装置、マイクロホン、および非MIDI電気装置などの外部アナログ音源をデジタル方式で記録しおよび/またはデジタル源と混合するよう、これら外部アナログ音源を使用する能力を所望する。これらの要求を満足させるために、いくつかのアッドオン製品が開発されている。このような製品ラインの1つは、当業界ではサウンドカードと呼ばれる。これらサウンドカードは、いくつかの集積回路を搭載した回路板であり、多くの場合、ウェーブテーブル・シンセサイザ、ウェーブテーブル・メモリおよびコンピュータ製造業者により提供される拡張スロット内にユーザがインストールする他の関連する回路を含む。拡張スロットは、システムバスへのインターフェイスを提供し、これにより、ホストプロセッサが、音発生にアクセスし、アプリケーションソフトウェアの制御下にあるボード上の機能を制御することができる。典型的なサウンドカードはまた、キーボードおよびゲーム用ジョイスティックなどのMIDI装置からの入力を受付けるよう、MIDIインターフェイスおよびゲームポートを備える。
先行技術によるサウンドカードの一例は、アドバンスト・グラビス・アンド・フォルテ(Advanced Gravis and Forte)がウルトラサウンド(Ultrasound)の名称で提供しているものである。このサウンドカードは、ウェーブテーブル・シンセサイザ、MIDIおよびゲームインターフェイス、DMA制御ならびにアドリブ・サウンド・ブラスタ互換性論理を1つのチップ(「GF−1)に組入れた、拡張スロット用実現例である。このASICに加え、ウルトラサウンドカードは、ウェーブテーブル・データ用のオンボードDRAM(1メガバイト)と、アドレスデコード用チップと、アナログ入力およびアナログ出力とインターフェイスするための別個のアナログ回路と、別個のプログラマブルISAバスインタフェースチップと、介入PALチップと、別個のデジタル−アナログ/アナログ−デジタル変換器チップとを含む。ここに引用により援用される、トラバース(Travers)他による「ウェーブ・テーブル・シンセサイザ(Wave Table Synthesizer)」と題された米国特許出願連続番号第072,838号を参照されたい。
オンボードサウンドカードメモリは典型的には、2分の1から4メガバイトの間の大きさを有し、音楽を合成するために使用されるすべてのウェーブテーブル・データを記憶する。1メガバイト当り約25ドルのコストであり、サウンドカードメモリのコストはサウンドカードの全体のコストにおいて重要な要因である。したがって、ウェーブテーブル・データを供給するためにもしPCシステムメモリを使用でき、したがって、サウンドカードメモリの必要をなくすかまたは減じれば、サウンドカードのコストが下がるであろう。
しかし、ウェーブテーブル・データの記憶のためにPCシステムメモリを利用するといくつかの懸念が出る。懸念の1つは、利用可能なPCシステムメモリが限られており、ウェーブテーブル・データ用に割くことができないという点である。しかし、より大きなシステムメモリを含みウェーブテーブル・データ用に利用可能なスペースを有するはずであると予測される将来の最先端PCにおいてはこのような懸念は減じられるはずである。システムメモリの使用についての他の懸念は、先行技術によるシンセサイザが必要とする数多くのメモリへのアクセスである。たとえば、32個の個別の音声(すなわち楽器の音)を合成できる先行技術のウェーブテーブル・シンセサイザは、必要なデータサンプルを引出すため22.7マイクロ秒ごとに32回メモリにアクセスせねばならない。もしシステムメモリに対しこれだけの数のアクセスがなされれば、容認できないほど高い割合のシステムバスの帯域幅がシンセサイザの動作のために使用され、PCの他の動作のために使用できるバスの帯域幅が少なくなるであろう。
またさらなる懸念は、シンセサイザが、システムメモリからウェーブテーブル・データを受けとるよりも速く(すなわち、システムの最大バス待ち時間よりも速く)ウェーブテーブル・データを処理するのではないかという点である。このような状況では、処理されたデータがギャップを有するかもしれず、合成された音楽が再生される間に不所望のポップが生じるかもしれないので、このような状況は容認できないであろう。
したがって、システムメモリにより供給されるウェーブテーブル・データから音楽を合成するが、容認できない割合のバス帯域幅を利用しない、PCオーディオシステムが必要である。さらに、少なくともデータを処理する速度と同じ速さでシステムメモリからデータを獲得する(すなわち、最大バス待ち時間がPCオーディオシステムのデータ処理速度以下である)PCオーディオシステムが必要である。
発明の概要
この発明のPCオーディオ回路は、中央プロセッサ、システムメモリおよびシステムバスを含む種類のホストパーソナルコンピュータとインターフェイスし、これをオーディオ面で向上させるよう設計される。PCオーディオ回路は、大きさおよびコストが著しく減じられ一度にウェーブテーブル・データ全体の部分のみを記憶することができるキャッシュメモリを含む。代わりに、すべてのウェーブテーブル・データは、ホストPCのシステムメモリ内に記憶され、PCオーディオ回路の必要に応じてキャッシュメモリに部分で転送される。PCオーディオ回路はデータを処理し、音楽またはサウンドエフェクトなどのデジタルオーディオ信号を発生する。キャッシュメモリは大きさおよびコストが減じられているので、PCオーディオ回路の全体としてのコストは先行技術によるシステムよりも低くなる。
先行技術のPCオーディオシステムとは異なり、この発明のPCオーディオ回路は、次に指定された音声を処理する前に、音声に対するデータサンプルのいくつかのフレームを処理する。したがって、所与の音声に対するいくつかのウェーブテーブル・データサンプルを一度にシステムメモリから引出し、キャッシュメモリ内で利用可能にすることができ、これによって、必要とされるメモリへのアクセス総数を減じ、システムバスの帯域幅の使用割合を減じる。また、この態様でデータサンプルを処理すると、ある並列処理動作が可能になる。たとえば、活性の音声に対し複数のデータサンプルが処理されている間に、データサンプルの他のグループをシステムメモリから引出し、キャッシュメモリ内での処理のため利用可能にすることができる。これにより確実にデータが連続して供給され、最大許容可能システムバスアクセス待ち時間についての懸念が減じられる。
この発明のPCオーディオ回路は、一度にいくつかのウェーブテーブル・データサンプルを引出すので、音声のデータサンプルがシステムメモリ内でブロックとして合せて組織化されていることが好ましい。したがって、もしデータサンプルの連続した列が要求されたならば、ブロックになったデータサンプル全体に対し増分していくシステムメモリのページモードを使用してこれらにアクセスすることができる。好ましくは、システムメモリとPCオーディオ回路との間のバスはPCIバスであり、したがって、ページモードを通じてアクセスされるデータをPCオーディオ回路へバーストモードで伝送することを可能にする。
好ましい実施例において、この発明のPCオーディオ回路は、PCIバスインタフェースブロック、内部アドレスデータバス、デジタル信号プロセッサ、出力制御ステートマシン、内部バスアービタおよびキャッシュメモリを含む。PCオーディオ回路は、キャッシュメモリを含むか、または集積回路の外部にあるキャッシュメモリを備える、モノリシック集積回路上に形成できる。システムメモリ内のデータは、PCIバスをわたって、PCIインターフェイスブロックを通り、内部バスをわたり、キャッシュメモリへと伝送される。
デジタル信号プロセッサ(DSP)は、キャッシュメモリ内のデータサンプルを所望のアナログオーディオ信号への変換に適したデジタルオーディオ信号に翻訳するための計算および他の処理を行なう。好ましくは、DSPは44.1KHzのフレーム速度で、32個までの個別のデジタルオーディオ信号または音声を発生することができる。
DSPにより各音声に対して発生されたデジタルオーディオ信号は、外部デジタル−アナログ変換器(DAC)へのそれらの出力の準備ができるまで、キャッシュメモリ内に蓄積されるかまたは別個のキャッシュメモリ内に蓄積されうる。出力制御ステートマシン(OCSM)は、44.1KHzのサンプル速度でのキャッシュから外部DACへの蓄積されたデータの伝送を制御する。内部バスアービタ(IBA)は、OCSM、キャッシュ、PCIインターフェイスブロックおよびDSPを含む、内部バスにアクセスするであろうさまざまなブロック間のトラフィックの方向付けの責任を持つ。内部バスは、PCI規格の部分として提供されるクロックにより、ほとんどの論理とともに、33MHzで動作する。
キャッシュは、約8から32キロバイトの容量を有する低コストSRAMであることが好ましい。キャッシュ内の利用可能なメモリは、データサンプル記憶装置、累算器記憶装置およびDSP用一般記憶装置に割当てることができる。データサンプルはデータ待ち行列AおよびB内に記憶することができ、一方、DSPにより発生されたデジタルオーディオ信号は累算器待ち行列AおよびB内に記憶することができる。適切な実現例においては、データ待ち行列AおよびBは、各々、32個の音声の各々に対し64個の16ビットデータサンプルまで記憶し、一方、累算器待ち行列AおよびBは各々、32個までの音声に対し発生されたデータサンプルを蓄積する。発生されたデータサンプルは、64個1組の16ビットデータサンプルとして累算器待ち行列AまたはB内に合せて蓄積される。
PCIインターフェイスブロックは、キャッシュのデータサンプルを更新する必要があるときを検出し、バスマスタ要求を開始する。そこからデータサンプルが引出されるはずのシステムメモリ内のアドレスは、PCIインターフェイスブロックからPCIアドレスバスヘ送られる。PCIインターフェイスブロックの制御下で、システムメモリから引出されたデータサンプルは内部データバスを通ってキャッシュへと伝送される。
PCオーディオ回路の好ましい実施例の立上げ時には、活性の音声各々に対し、128個のデータサンプルがキャッシュ内にロードされる(データ待ち行列AおよびBの各々の中に64個のデータサンプルずつ)。一旦データ待ち行列AおよびBにデータがロードされると、DSPは、第1の活性の音声に対するデータ待ち行列の一方の中のデータサンプルを処理する。他方のデータ待ち行列はこの時点では不活性である。次に、DSPは次に指定された活性の音声に対してのデータサンプルを処理する。DSPがこれらのデータサンプルを処理すると同時に、DSPにより発生されたばかりのデータサンプルが累算器待ち行列の一方の中に蓄積される。この処理は、すべての活性の音声が処理されるまで続き、それから累算器待ち行列はトグルし、第1の累算器待ち行列内に蓄積されたデータサンプルを外部DACに出力できる間、他方の累算器待ち行列は発生されるデータサンプルを蓄積するであろう。
一旦、データ待ち行列内の活性の音声各々に対するデータサンプルが処理されてしまうと、PCIインターフェイスブロックは、システムメモリからの付加的なデータサンプルに対する要求をPCIバス上で送る。システムメモリから引出されたデータサンプルは第1のデータ待ち行列内に記憶されるため、処理されたばかりのデータサンプルの上に重ね書きされる。これらのデータサンプルが引出される間に、DSPは他の待ち行列内のデータサンプルを処理する。それから、データ待ち行列はトグルし、そして処理は継続し同時に64個までのデータサンプルを処理することを可能にする。
もし、DSPが、元のオーディオ信号のアナログ−デジタル変換(記録)の間に使用されるサンプリング周波数と同じ周波数でデータサンプルを処理するのであれば、DSPにより発生されたオーディオ信号がアナログに変換され再生されるとき、結果として得られるオーディオ信号はデータサンプルを作るために使用された元のオーディオ信号と同じように聞こえるであろう(すなわち同じ周波数を有するであろう)。再生されるオーディオ信号の周波数が記録周波数と同じであるとき、その周波数比(F c)は1に等しい。もしF c>1であれば発生されたオーディオ信号は記録された信号よりも高いピッチを有するであろう。もし活性の音声各々に対しF c=1であれば、最大の許容可能PCIバス待ち時間は、これが44.1KHzのフレーム速度でデータサンプルの64個のフレームを処理するのにかかる時間に等しい。しかし、1つまたは2つ以上の活性の音声に対してF c>1であれば、DSPは音声当りフレーム当り2つ以上のデータサンプルを処理することになるので、最大許容可能PCIバス待ち時間は減じられる。F cが約2.0に等しければ、最大許容可能バス待ち時間の減少が問題になるであろう。
c>2の場合の待ち時間の問題は、処理されるであろうデータサンプルのみを引出しDSPによりスキップされるであろうデータサンプルは引出さないPCオーディオ回路を有することにより回避できる。このようにすると、引出されてデータ待ち行列内に記憶されるすべてのデータサンプルが処理されるであろう。この特徴は、活性の音声に対するF cの値にアクセスし、かつ次に現在のシステムメモリアドレスおよびF cの値に基づき所与の音声についてデータサンプルを引出すための次のシステムメモリアドレスを計算するための手段を、PCIインターフェイスブロック内に設けることにより実現される。F c>1のときに活性の音声各々に対して選択されたサンプルのみを引出すことにより、データサンプルを伝送するためにバーストモードが使用できないため、利用可能なPCI帯域幅が減じられる。たとえバーストモードが使用されないとしても、PCオーディオ回路の帯域幅使用割合は容認可能なものかもしれないが、使用割合はやや望ましくないものになるであろう。
この発明の好ましい実施例において、PCオーディオシステムは、システムメモリ内に記憶されバーストモードにおいてキャッシュメモリに伝送することができるウェーブテーブル・データのパッチまたは周波数補正されたファイルの作成を容易にするドライバソフトウェアを含み、これによってPCIバス帯域幅要求を減じる。周波数補正されたファイルまたはパッチは、F c>2を有する音声に対しDSPにより実際に処理されるであろうデータサンプルのみを含む。たとえば、F c=4を有する活性の音声に対しては、DSPはこの活性の音声に関連するウェーブテーブル・データのパッチ(「元のパッチ」)内の4番目ごとのデータサンプルのみを処理すればよい。ドライバソフトウェアは4番目ごとのサンプルのみを含む、元のパッチの周波数補正されたものの作成を容易にする。この周波数補正されたファイルまたはパッチはシステムメモリ内に記憶され、バーストモードにおいて、DSPによる処理のためPCオーディオ回路に伝送することができる。
適切なPCオーディオシステムは、上述のような種類のPCオーディオ回路、ドライバソフトウェアおよびMIDIまたは比較可能ファイルを含む。MIDIファイルは、PCオーディオ回路により発生されるであろう歌または他のオーディオ信号を定義するパラメータを含む。ドライバソフトウェアは、ファイル内に含まれるパラメータを通訳し、かつ、システムメモリ内のウェーブテーブル・データから所望のオーディオ信号を発生するようPCオーディオ回路をプログラミングする機能を行なう。以下に説明するように、ドライバソフトウェアは、また、F cの高い音声に対する周波数補正されたパッチを導出する機能を制御する命令を含む。
システムCPUは、所与の音声に対し、その音声に対しての所望の周波数の、音声に関連するシステムメモリ内のデータの記録周波数に対する比を決定する。F c>2.0の場合は、CPUは以下に説明するように周波数補正されたパッチを導出する。
周波数補正されたパッチはいくつかの方策で導出することができる。必要とするCPUの処理が最も少ない一方策は、その音声に対しての元のパッチからウェーブテーブル・データサンプルの小部分をシステムメモリ内に記憶されるパッチまたは新しいファイルにコピーまたは転置することである。新しいパッチに転置されるデータサンプルの小部分は、システムCPUにより計算されるF cの値に基づく。周波数補正されたパッチは、元のパッチの周波数よりも高い周波数を有する。たとえば、周波数補正されたパッチを作成するために元のパッチから4番目ごとにデータサンプルがコピーされたのであれば、周波数補正されたパッチの周波数は元のパッチの周波数の4倍となる。そして、周波数補正されたパッチの有効周波数(F eff)は4に等しい。
PCオーディオ回路がデータサンプルのパッチの記録周波数の2倍を超える周波数でオーディオ信号を発生するときバス待ち時間の問題が生ずるので、周波数補正されたパッチを導出するときの目標は、PCオーディオ回路が所望のオーディオ信号を発生するためパッチの周波数を2倍よりも高くする必要がない、十分に高い有効パッチ周波数を提供することである。
周波数補正されたパッチを導出するもう1つの方策は、ウェーブテーブル・データサンプルの元のパッチをデジタル方式でフィルタリングすることである。デジタル方式でのフィルタリングのためにはより多くのCPU処理が必要であるが、デジタル方式でのフィルタリングはウェーブテーブル・データの高周波数成分を除去し、発生されるデジタルオーディオ信号はノイズが少なくなるので、上述の技術よりも好ましい。デジタルフィルタリング技術の一例は、n番目ごとのサンプルの平均を取ることである。さらなる例は、さらに多くのCPU処理パワーを必要とするが、移動平均の平均を計算することである。
システムCPUは、ドライバソフトウェアにより、(1)PCオーディオ回路がMIDIファイルを処理する直前に必要な周波数補正されたパッチをすべて導出するか、または、(2)PCオーディオ回路がファイルを通じて処理を行なうとともに各パッチを導出するかのいずれかに方向付けることができる。
PCオーディオ回路が周波数補正されたパッチを処理するときには、パッチのより高い周波数に対処するため調整を行なわねばならない。ドライバソフトウェアが、PCオーディオ回路をこれらの調整を行なうようプログラミングする。たとえば、もしPCオーディオ回路がもともとF c=8でデジタルオーディオ信号を発生するようプログラミングされているが、PCオーディオ回路がF eff=4の周波数補正されたパッチを処理するのであれば、PCオーディオ回路はデータがF c=2で処理されるよう、データを処理するための周波数比を4で割るようプログラミングされる。デジタル回路においては2の因数で除算を行なう方が容易なので、周波数補正されたファイルは好ましくは2の因数である有効周波数を有するべきである。
図面の簡単な説明
以下の図面に関連して好ましい実施例および代替的な実施例の以下の詳細な説明を考慮するとき、この発明のより良い理解を得ることができる。
図1は、ホストコンピュータのシステムバスとインターフェイスする、この発明のPCオーディオ回路のブロック図である。
図2は、どのようにメモリをこの発明のキャッシュメモリ内に割当てることができるかを示す図である。
図3は、システムバスおよび内部バスとインターフェイスする、この発明のPCIバスインタフェースブロックのブロック図である。
図4は、内部バスとインターフェイスする、この発明の出力制御ステートマシンのブロック図である。
図5は、この発明により周波数補正されたウェーブテーブル・データを提供するPCオーディオシステムのブロック図である。
詳細な説明I.PCオーディオ回路の概観
以下の説明は、モノリシック集積回路上に形成できるPCオーディオ回路の好ましい実施例および代替的実施例を示す。PCオーディオ回路は、中央プロセッサ、システムメモリおよびシステムバスを含む種類のホストパーソナルコンピュータにインターフェイスし、これにオーディオ面の向上を行なうよう設計される。この発明のPCオーディオ回路と先行技術によるPCオーディオ回路との根本的な違いは、ローカルメモリの大きさが著しく減じられており(たとえば8−32キロバイトであり)、同時にウェーブテーブル・データ全体の部分しか記憶できない点である。代わって、ウェーブテーブル・データすべて(たとえば1−4メガバイト)はホストPCのシステムメモリ内に記憶され、PCオーディオ回路の必要に応じて、キャッシュメモリとしても知られるPCオーディオ回路のローカルメモリに部分的に転送される。PCオーディオ回路は、データを使用して、音楽またはサウンドエフェクトなどのデジタルオーディオ信号を発生する。
「発明の背景」で説明したように、もしシステムメモリがウェーブテーブル・データの記憶のために利用されそれによってローカルメモリの大きさが減じられるのであれば、PCオーディオ回路の全体としてのコストが減じられるであろう。しかし、システムメモリを使用すると、(i)容認できない割合のシステムバスの帯域幅が使用されるのではないか、および(ii)PCオーディオ回路がホストコンピュータの最大バス待ち時間よりも高速でウェーブテーブル・データを処理するのではないか、という懸念が生じる。この発明のPCオーディオ回路は、これらの懸念を緩和するよう設計される。
オーディオ用の典型的なフレーム速度は、44.1KHzである。このフレーム速度では、各フレームは約22.7マイクロ秒である。したがって、もし先行技術のPCオーディオ回路が1フレームの間に32個の音声を発生するのであれば、この短い時間期間の間にメモリに対し32回のデータアクセスが行なわれなければならない。もしデータアクセスがローカルメモリに対するものであればこれは問題とならない。しかし、もしこの数のアクセスがシステムメモリに対して行なわれるのであれば、バスの帯域幅使用およびバス待ち時間が懸念となってくる。
先行技術のシステムとは異なり、この発明のPCオーディオ回路は、次に指定された音声を処理する前に、音声に対するデータサンプルのいくつかのフレームを処理する。したがって、所与の音声に対するいくつかのウェーブテーブル・データサンプルを一度にシステムメモリから引出し、キャッシュメモリ内で利用可能にすることができ、これによって、必要とされるメモリへのアクセス総数を減じ、バス帯域幅の使用割合を減じる。また、この態様でデータサンプルを処理すると、ある並行処理動作が可能になる。たとえば、活性の音声に対し複数のデータサンプルが処理されている間に、データサンプルの他のグループをシステムメモリから引出し、PCオーディオ回路のキャッシュメモリ内での処理のために利用可能にすることができる。これにより確実にデータが連続的に供給され、バスアクセスの待ち時間に関しての懸念が減じられる。
この発明のPCオーディオ回路は、一度にいくつかのウェーブテーブル・データサンプルを引出すので、音声のデータサンプルがシステムメモリ内でブロックとして合せて組織化されていることが好ましい。したがって、もし連続したデータサンプルの列が要求されたならば、ブロックになったデータサンプル全体に対し増分していくシステムメモリのページモードを使用してこれらにアクセスすることができる。もし、システムメモリとPCオーディオ回路との間のバスがPCIバス(すなわちより高性能のバス)であれば、ページモードを通じてアクセスされたデータをバーストモードで(すなわちより高速で)PCオーディオ回路に伝送することができる。バーストモードの使用により、最大バス待ち時間および帯域幅使用割合が減じられる。II.PCオーディオ回路アーキテクチャ
図1は、PCオーディオ回路の好ましいアーキテクチャを示す。図示するように、PCオーディオ回路10は、PCIバスインタフェースブロック12、内部アドレスデータバス14、デジタル信号プロセッサ16、出力制御ステートマシン18、内部バスアービタ20およびキャッシュメモリ22を含む。データは、PCIバス24からPCIインターフェイスブロック12を通り内部バス14をわたってキャッシュ22へとわたされる。キャッシュ22を含むPCオーディオ回路10は、モノリシック集積回路上に形成することができる。図1の破線のボックスは、このような集積回路の好ましい実施例の外辺を表わす。代替的に、キャッシュ22は回路の外部にあってもよい。
デジタル信号プロセッサ(DSP)16は、ここに引用により援用されるノリス他による米国特許出願連続番号第08/334,461号に開示されるウェーブテーブル・シンセサイザDSPと同じようにデータに対して動作する。言換えると、この発明のDSP16は、生のウェーブテーブル・データを所望のアナログオーディオ信号への変換に適したデジタルオーディオ信号に翻訳するため、計算および他の処理を行なう。DSP16は、ROMコード26内に記憶される命令によって動作し、好ましくは44.1KHzのフレーム速度で32個までの個別のデジタルオーディオ信号または音声を発生することができる。しかし、上に引用した特許出願に開示されるウェーブテーブル・シンセサイザとは異なり、この発明のDSP16は、フレームごと音声ごとに1つのデータサンプルではなく、音声ごとにウェーブテーブル・データサンプルのいくつかのフレームを処理する。DSP16の実現の詳細は、当業者の有する技量のレベル内にある。
DSP16により各音声に対して発生されたデジタルオーディオ信号は、外部オーディオデジタル−アナログ変換器(DAC)へポート28を通つて出力される準備ができるまで、キャッシュ22内に蓄積されるかまたは、別個のキャッシュメモリ内に蓄積されうる。出力制御ステートマシン(OCSM)18は、44.1KHzのサンプル速度でのキャッシュ22から外部DACへの蓄積されたデータの伝送の責任を持つ。OCSM18は、確実にサンプル速度と同期するよう、それ自身の16.9344MHzクロック30を利用する。内部バスアービタ(IBA)20は、OCSM18、キャッシュ22、PCIインターフェイスブロック(PCI I/Fブロック)12およびDSP16を含む、内部バス14にアクセスするであろうさまざまなブロック間でのトラフィックの方向付けの責任を持つ。内部バス14は、PCI規格の部分として提供されるクロック32により、ほとんどの論理とともに、33MHzで動作する。
内部バス 内部バス14は32ビットデータバスおよび16ビットアドレスバスを有する。内部バスのアドレスマップは以下のとおりである。
PCIバス PCIバスは、標準PCIプラグアンドプレイ回路を通じて256個のI/O(バイト幅の)アドレスのブロックを割当てられる。これらのアドレスは、システムの中央プロセッサにより以下のように使用される。
ウェーブテーブル・キャッシュRAM キャッシュ22は、約8から32キロバイトの容量を有する低コストSRAMであることが好ましい。キャッシュ22内の利用可能なメモリは、データサンプル記憶装置、累算器記憶装置およびDSP16用の一般記憶装置に割当てることができる。図2は、どのように利用可能なメモリをデータサンプル記憶装置および累算器記憶装置の間で適切に割当てることができるかを示している。データサンプルはデータ待ち行列「A」および「B」内に記憶することができ、一方、DSP16により発生されたデジタルオーディオ信号(発生されたデータサンプル)は累算器待ち行列「A」および「B」内に記憶することができる。図2を参照されたい。データ待ち行列AおよびBは各々、32個の音声の各々に対する64個の16ビットデータサンプルまで記憶することができる。累算器待ち行列AおよびBは各々、32個までの音声に対し発生されたデータサンプルを蓄積することができる。発生されたデータサンプルは、1組の16ビットデータサンプルとして待ち行列AまたはB内に合せて蓄積される。1組の中に64個までのデータサンプルが存在し得る。
データ待ち行列AおよびBは合せて8キロバイトまで記憶でき、一方累算器待ち行列AおよびBは合せて256バイトまで記憶できる。一般的DSP記憶装置用にキャッシュ22内に付加的なメモリを設けることができる。
好ましくは、音声のための2つのデータ待ち行列の一方が、システムメモリからデータサンプルが引出されるに従ってデータサンプルを記憶するために使用され、一方、他方のデータ待ち行列はデータサンプルをDSP16に供給する。したがって、もしデータ待ち行列AがデータサンプルをDSP16に供給するのであれば、データ待ち行列Bがシステムメモリから引出されるデータサンプルを記憶する。データ待ち行列Bは、DSP16により処理されるべきデータサンプルの次の組で占められ、DSPがデータ待ち行列A内のデータサンプルの処理を完了する前にいっぱいにならなければならない。さもなければ、発生されるデジタルオーディオ信号内に不所望のギャップができるであろう。データ待ち行列A内のすべてのデータサンプルが処理されてしまったとき、データ待ち行列AおよびBはトグルし、DSP16はデータ待ち行列B内に記億されたデータサンプルを処理し、システムメモリから引出されるデータサンプルはデータ待ち行列A内に記憶される。このプロセスがDSP16がデータサンプルを処理し続ける限り続く。
同様に、累算器待ち行列の一方が、外部DACに、蓄積されたデータサンプルを供給するために使用され一方、他方の累算器はDSP16により発生されたデータサンプルを蓄積する。したがって、もし累算器待ち行列Aが蓄積されたデータサンプルを供給するのであれば、累算器待ち行列Bがデータサンプルを蓄積する。活性の音声のすべてに対して、発生されたデータサンプルは、累算器待ち行列A内のデータサンプルがすべて外部DACに伝送されてしまうよりも前に、累算器待ち行列B内に蓄積されねばならない。さもなければ、アナログ信号内にギャップができるであろう。累算器待ち行列A内のデータサンプルがすべて外部DACに伝送されてしまったとき、累算器待ち行列AおよびBはトグルし、データ待ち行列B内に蓄積されたデータサンプルが外部DACに伝送され、発生されたデータサンプルがデータ待ち行列A内に蓄積される。この発明の全体動作を以下にさらに説明する。
この発明に適したウェーブテーブル・キャッシュのためのアドレスマップは以下のとおりである。
PCIインターフェイス 図3は、PCIインターフェイスブロック12のブロック図を示す。PCIインターフェイスブロック12は、PCIインターフェイスコントローラ34、バッファ36および38、内部バスアドレスレジスタ40ならびにPCI I/Fブロックレジスタ42を含む。図示するように、PCIコントローラ34は、PCIアドレスバス、バッファ36および38、内部バスアドレスレジスタ40ならびにPCI I/Fブロックレジスタ42に接続される。バッファ36は、PCIデータバス、PCIコントローラ34、内部バスアドレスレジスタ40および内部データバスに接続し、一方、バッファ38は、PCIアドレスバス、PCIコントローラ34およびPCI I/Fブロックレジスタ42に接続する。内部バスアドレスレジスタ40は、PCIコントローラ34、内部アドレスバス、内部データバスおよびバッファ36に接続する。最後にPCI I/Fブロックレジスタ42は、バッファ38、PCIコントローラ34ならびに内部データバスおよびアドレスバスに接続される。
PCI I/Fブロックレジスタ42は、どの音声が、キャッシュ内への付加的なデータサンプルの記憶およびシステムメモリ内のアドレスのデータサンプルの獲得を必要としているかを示す、状態およびアドレス情報を含む。これらのレジスタの詳細な説明は、内部バスのための先述のアドレスマップに示す。内部バスアドレスレジスタ40は、システム中央プロセッサによって、内部バス上のPCオーディオ回路レジスタにアクセスするため使用される。たとえば、中央プロセッサは、ウェーブテーブル・データ記憶位置を示すシステムメモリアドレスを書込むために、PCI I/Fブロックレジスタへのアクセスを必要とするであろう。内部バスアドレスレジスタ40はまた、システムメモリからのウェーブテーブル・データサンプルがそこに記憶されているキャッシュ22のアドレスを記憶する。先述のI/Oアドレステーブル内に示すように、中央プロセッサは、内部バスアドレスレジスタ40内にバッファ36を介してそのアドレスを書込むことによって、内部バスを通じてレジスタにアクセスする。特定のレジスタへの書込または読出アクセスは、上の表に特定するポートを通じて行なわれる。
PCI I/Wブロックレジスタ42内に記憶される状態情報に基づき、PCIインターフェイスコントローラ34はデータサンプルでキャッシュ22を更新する必要があるときを検出し、バスマスタ要求を開始する。PCIインターフェイスコントローラ34の制御下で、そこからデータサンプルが引出されるはずのシステムメモリ内のアドレスが、PCIインターフェイスブロックレジスタ42からバッファ38を通じてPCIアドレスバスに送られる。システムメモリから引出されたデータサンプルはPCIデータバス上でバッファ36へと送られる。PCIインターフェイスコントローラ34の制御下で、バッファ36内のデータサンプルは内部データバス上でキャッシュ22へと伝送される。データサンプルを記憶するためのキャッシュ22内のアドレスは、内部バスアドレスレジスタ40内に含まれ、内部アドレスバス上で伝送される。好ましくは、PCIインターフェイスブロック12は、一度に2つ以上の活性の音声に対するデータサンプルを要求できる。
PCIコントローラ34は、どの音声が更新中であるか、待ち行列AまたはBが更新中であるか、そして待ち行列のどの32ビットワードが更新中であるかを決定することによって、データサンプルを記憶するためのキャッシュアドレスを計算する。PCIコントローラ34は、待ち行列内のどのサンプルが次にPCIインターフェイスブロック12により更新されるべきであるかを決定するため、各音声に対して1つずつ、32個の5ビットカウンタを含む。PCIインターフェイスブロックレジスタ42は、各音声がどの待ち行列を現在使用しているかを示すため、各音声に対し1つずつ32個の1ビットトグルレジスタを含む。これらのレジスタは、待ち行列がPCIインターフェイスブロック12によりいっぱいになるごとにトグルする。PCIコントローラ34は、計算されたキャッシュアドレスを内部バスアドレスレジスタ40内に記憶し、それらが内部アドレスバスに出力されるときを制御する。PCIインターフェイスブロック12の実現の詳細は、当業者の有する技量のレベル内にある。
出力制御ステートマシン 図4は、OCSM18のブロック図を示す。図示するように、OCSM18は、バッファを備える制御ブロック46と、アドレスデコードおよび制御ブロック48と、7ビットカウンタ50と、22.66マイクロ秒タイマ54とを含む。図示するように、制御ブロック46は、内部アドレスバスおよび内部データバス、アドレスデコードおよび制御ブロック48、7ビットカウンタ50ならびにFIFO52に接続される。アドレスデコードおよび制御ブロック48は、内部アドレスバス、制御ブロック46、7ビットカウンタ50およびタイマ54に接続される。7ビットカウンタ50は、アドレスデコードおよび制御ブロック48、制御ブロック46およびFIFO52に接続される。7ビットカウンタは、上述の内部バスのためのアドレスマップ内に説明されており、OCSMサンプルカウントレジスタと呼ばれる。FIFO52は、一方を頂部位置に他方を底部位置に、2つのデータサンプルを記憶でき、制御ブロック46、7ビットカウンタ50、タイマ54および外部DACに接続される。タイマ54は、アドレスデコードおよび制御ブロック48、FIFO52およびクロック発生器30に接続する。
DSP16は、その制御レジスタに書込することによりOCSM18を可能化する。一旦OCSM18が可能化されると、制御ブロック46の制御下で、キャッシュ22内の累算器待ち行列から内部データバス上で制御ブロック46内のバッファを通りFIFO52へと2つのデータサンプルが伝送される。タイマ54により示されるように、22.66マイクロ秒ごとに、FIFO52は底部位置にあるデータサンプルを頂部位置にシフトし、それによって、そのデータサンプルの外部DACへの出力を可能化する。その前に頂部位置にあったデータサンプルは廃棄される。同時に、他のデータサンプルがキャッシュ22から引出されFIFO52の底部位置に記憶され、アドレスデコードおよび制御ブロック48の制御下で7ビットカウンタ50が増分される。アドレスデコードおよび制御ブロック48は、7ビットカウンタ50および内部アドレスバス上で供給されるキャッシュアドレス情報から、キャッシュ22から引出されるべきデータサンプルのアドレスを計算する。これらの計算されたアドレスは制御ブロック46に送られ、そこでキャッシュ22から特定のデータサンプルを要求するために使用される。OCSM18の実現の詳細は、当業者の有する技量のレベル内にある。DSP16は、データサンプルの次のグループの蓄積を開始する時期を決定するため、カウンタ50のビット7を監視できる。
内部バスアービタ 内部バスアービタ20は、(i)DSP16(最低優先順位)、(ii)PCIバスインタフェースブロック12(中間優先順位)および(iii)OCSM18(最高優先順位)からのバス要求に対し固定された優先順位を有する簡単なアービタである。アービタ20は、最高優先順位を有する要求してきた装置に対しバスアクセスを認め、この時点で、この装置は自由にアドレスバスおよびREADまたはWRITE信号のいずれかを駆動する。もしアクセスが読出であれば、優先順位のある装置は、データバスからのデータをつかまえるかまたは使用するであろう。もしアクセスが書込であれば、優先順位のある装置はデータバスを駆動するであろう。アービタ20の実現の詳細は、当業者の有する技量のレベル内にある。III.PCオーディオシステムの動作
PCオーディオ回路10の好ましい実施例の立上がりにおいて、活性の音声各々に対し、128個のデータサンプルがキャッシュ22内にロードされる(データ待ち行列AおよびBの各々に対し64個のデータサンプル)。32個の活性の音声があると仮定すれば、これは必要とされるメモリに対しての最悪の場合である。
(32個の音声)(128個のサンプル/音声)(2バイト/サンプル)=8キロバイトさらに、キャッシュ22は各々64個のデータサンプル容量を有する累算器待ち行列AおよびBを必要とする。したがって、付加的に必要とされるメモリは、
(2個の待ち行列)(64個のサンプル/待ち行列)(2バイト/サンプル)=256バイト先述したように、付加的なメモリが、一般DSP動作のために設けられても良い。
一旦データ待ち行列AおよびBにデータがロードされると、DSP16は、第1の活性の音声(たとえば、音声0)に対するデータ待ち行列の一方の中のデータサンプルを処理する。他方のデータ待ち行列はこの時点では不活性である。次に、DSP16は、次に指定された活性の音声(たとえば、音声1)に対してのデータサンプルを処理する。DSP16がこれらのデータサンプルを処理すると同時にDSP16により発生されたばかりのデータサンプルが累算器待ち行列の一方の中に蓄積される。この処理は、すべての活性の音声が処理されてしまうまで続き、それから累算器待ち行列はトグルし、第1の累算器待ち行列内に蓄積されたデータサンプルを外部DACに出力できる間、他方の累算器待ち行列は発生されるデータサンプルを蓄積するであろう。
また、一旦、第1のデータ待ち行列内の活性の音声各々に対するデータサンプルが処理さてしまうと、PCIインターフェイスブロック12は、システムメモリからの付加的なデータサンプルに対する要求をPCIバス上で送る。システムメモリから引出されたデータサンプルは第1のデータ待ち行列内に記憶されるため処理されたばかりのデータサンプルの上に重ね書きされる。これらの付加的なデータサンプルが引出される間に、DSP16は他の待ち行列内のデータサンプルを処理する。それから、データ待ち行列はトグルし、そして処理は継続し同時に64個までのデータサンプルを処理することを可能にする。
もし、DSP16が、元のオーディオ信号のアナログ−デジタル変換(記録)の間に使用されるサンプリング周波数と同じ周波数でデータサンプルを処理するのであれば、DSPにより発生されたオーディオ信号がアナログに変換され再生されるとき、結果として得られるオーディオ信号はデータサンプルを作るために使用された元のオーディオ信号と同じように聞こえるであろう(すなわち同じ周波数を有するであろう)。再生されるオーディオ信号の周波数が記録周波数と同じであるとき、その周波数比(F c)は1に等しい。たとえば、もし、ピアノの中央ハ音(中央ハ=440Hz)が記録され、かつF c=1であれば、発生または再生されるオーディオ信号は記録された信号と同じ周波数であり同じように聞こえるであろう。もしF c>1であれば、発生されたオーディオ信号はより高いピッチを有するであろう。F c=4の場合には、発生されるオーディオ信号は、記録された信号のサンプリング周波数よりも2オクターブ高くなる。
もし活性の音声各々に対しF c=1であれば、最大許容可能PCIバス待ち時間は、これが44.1KHzのフレーム速度でデータサンプルの64個のフレームを処理するのにかかる時間に等しい。
64フレーム×1/44100秒=1.45ミリ秒しかし、もし、1つまたは2つ以上の活性の音声に対してF c>1であれば、DSP16は音声当りフレーム当り2つ以上のデータサンプルを処理することになるので、最大許容可能PCIバス待ち時間が減じられる。言換えると、特定の音声に対するデータ待ち行列内のデータサンプルは、F c=1の場合よりも速く消費される。たとえば、F c=2であれば、DSP16はデータ待ち行列内のデータサンプルを1つおきにスキップする。F cが約2.0よりも大きい場合は、最大許容可能バス待ち時間の減少が問題になるであろう。
c>2の場合の待ち時間の問題は、処理されるであろうデータサンプルのみを引出しDSP16によりスキップされるであろうデータサンプルは引出さないPCオーディオ回路10を有することにより回避できる。このようにすると、引出されてキャッシュ22のデータ待ち行列内に記憶されるすべてのデータサンプルが処理されるであろう。この特徴は、活性の音声に対するF cの値にアクセスし、かつ次に現在のシステムメモリアドレスおよびF cの値に基づき所与の音声についてデータを引出すための次のシステムメモリアドレスを計算するための手段を、PCIインターフェイスブロック12内に設けることにより実現される。たとえば、もし、所与の活性の音声に対しF c=4であれば、次のシステムメモリアドレス=現在アドレス+4である。この特徴の実現の詳細は、当業者の有する技量のレベル内にある。
c>1のときに活性の音声各々に対して選択されたデータサンプルを引出すと、データサンプルの伝送のためにバーストモードを使用することができないため、利用可能なPCI帯域幅が減じられる。しかし、バーストモードを使用しないとしても、帯域幅の使用割合は通常容認可能なものであると予測される。
PCIバスがバーストモードにあるときは、これは典型的には60ns/32ビットで動作し、必要とされる帯域幅は、
である(2音声=32ビットであることに注意)。4.2%という帯域幅使用は極めて容認可能である。もしPCIバスがバーストモードになければ、これは典型的には4分の1の速さで動作し、帯域幅使用は17%である。17%という帯域幅使用は容認可能ではあろうが、あまり望ましくなく、過剰な量のPCIバス帯域幅が使用される危険性を増加させる。IV.周波数補正されたウェーブテーブル・データの提供によるPCIバス帯域幅要求の低減
先述したように、1つまたは2つ以上の活性の音声に対しF c>2であるとき、DSP16がデータサンプルをスキップし、F c=1であるときよりも速くデータサンプルを消費するため、バス待ち時間の問題が生じるであろう。スキップされるであろうデータサンプルではなく処理されるであろうデータサンプルのみを引出すPCオーディオ回路10を備えることによって、このバス待ち時間の問題を回避できる。しかし、選択されたデータサンプルのみがシステムメモリから引出されるときは、バーストモードを使用することができず、このためPCIバス帯域幅使用割合が増加する。この発明の好ましい実施例において、PCオーディオシステムは、システムメモリ内に記憶されバーストモードにおいてキャッシュメモリ22に伝送することができるウェーブテーブル・データのパッチまたは周波数補正されたファイルの作成を容易にするドライバソフトウェアを含み、これによってPCIバス帯域幅要求を減じる。周波数補正されたファイルまたはパッチは、F c>2を有する音声に対しDSP16により実際に処理されるであろうデータサンプルのみを含む。たとえば、F c=4を有する活性の音声に対しては、DSP16はこの活性の音声に関連するウェーブテーブル・データのパッチ(「元のパッチ」)内の4番目ごとのデータサンプルのみを処理すればよい。ドライバソフトウェアは4番目ごとのサンプルのみを含む、元のパッチの周波数補正されたものの作成を容易にする。この周波数補正されたファイルまたはパッチはシステムメモリ内に記憶され、バーストモードにおいて、DSP16による処理のためPCオーディオ回路に伝送することができる。
図5は、先述したように周波数補正されたパッチを提供できるPCオーディオシステムのブロック図を示す。PCオーディオシステムは、前述したような種類のPCオーディオ回路10と、ドライバソフトウェア62と、MIDIまたは比較可能ファイル64とを含む。PCオーディオ回路10は、PCIバス24を通じてシステムメモリ60に接続される。ファイル64は、PCオーディオ回路10により発生されるであろう歌または他のオーディオ信号を規定するパラメータを含む。ドライバソフトウェア62は、ファイル64内に含まれるパラメータの翻訳機能およびシステムメモリ内のウェーブテーブル・データから所望のオーディオ信号を発生するためのPCオーディオ回路10のプログラミング機能を行なう。以下に説明するように、ドライバソフトウェア62はまた、F cの高い音声に対し周波数補正されたパッチを提供する機能を制御する命令を含む。
ドライバソフトウェア62内の命令の実行に際し、システムCPUは以下のステップを行なう。ステップ1:ファイル64内の音色または音声のためのパラメータを引出す。ステップ2:これらのパラメータから音声の所望のF cおよび音声に関連するシステムメモリ内のウェーブテーブル・データの周波数を計算する。ステップ3:もしF c>2.0であれば、音声に関連するシステムメモリ内に記憶されたウェーブテーブル・データのパッチから周波数補正されたパッチを導出する。周波数補正されたパッチはシステムメモリ内に記憶される。ステップ1および2において、システムCPUは、ファイル64内の所与の音声について、その音声がその音声に対するシステムメモリ内のウェーブテーブル・データの周波数よりも高周波数で再生されるのか否かを決定する。所望の周波数の、システムメモリ内のデータの周波数に対する比は、その音声に対するF cを決定する。CPUは次にF cの値を2.0と比較する。F c>2.0であれば、CPUは以下に説明するように周波数補正されたパッチを導出する。ステップ1から3がファイル64内の各音声について繰返される。
周波数補正されたパッチはいくつかの方策で導出することができる。必要とするCPUの処理が最も少ない一方策は、その音声に対しての元のパッチからウェーブテーブル・データサンプルの小部分をシステムメモリ内に記憶されるパッチまたは新しいファイルにコピーまたは転置することである。新しいパッチに転置されるデータサンプルの小部分は、システムCPUにより計算されるF cの値に基づく。周波数補正されたパッチは、元のパッチの周波数よりも高い周波数を有する。たとえば、周波数補正されたパッチを作成するために元のパッチから4番目ごとにデータサンプルがコピーされたのであれば、周波数補正されたパッチの周波数は元のパッチの周波数の4倍となる。そして、周波数補正されたパッチの有効周波数(F eff)は4に等しい。
PCオーディオ回路10がデータサンプルのパッチの記録周波数の2倍を超える周波数(F c>2)でオーディオ信号を発生するときバス待ち時間の問題が生ずるので、周波数補正されたパッチを導出するときの目標は、PCオーディオ回路10が所望のオーディオ信号を発生するためパッチの周波数を2倍よりも高くする必要がない、十分に高い有効パッチ周波数を提供することである。たとえば、もしF c=8であれば、システムCPUはデータサンプルを4番目ごとに新しいファイルまたはパッチにコピーしなければならない。新しいファイルまたはパッチは、「周波数補正」されており、有効周波数は4(F eff=4)である。したがって、PCオーディオ回路10は、F c=8のオーディオ信号を提供するためにこの周波数補正されたパッチを周波数のたった2倍で処理することができる。もし、PCオーディオ回路10がそうではなくてウェーブテーブル・データの元のパッチを処理するのであれば、PCオーディオ回路は所望のオーディオ信号を発生するために記録周波数の8倍(F c=8)でデータを処理しなければならないであろうから、バス待ち時間の問題が発生する。
周波数補正されたパッチを導出する他の方策は、ウェーブテーブル・データサンプルの元のパッチをデジタル方式でフィルタリングすることである。デジタル方式のフィルタリングにはより多くのCPU処理が必要であるが、ウェーブテーブル・データサンプルの小部分をパッチ内に転置する先述した技術よりも好ましい。上述の技術において、ウェーブテーブル・データのパッチの高周波数成分が周波数補正されたパッチ内のノイズに翻訳される。デジタル方式でのフィルタリングにより高周波数成分が除去され、したがってよりクリアな音を提供する周波数補正されたパッチが得られる。デジタルフィルタリング技術の一例は、n番目ごとのサンプルの平均を取るというものである。たとえば、F c=8の音声については、CPUは周波数補正されたパッチを導出するため、4番目ごとのサンプルの平均をとることができよう。デジタルフィルタリング技術のさらなる例は、さらに多くのCPU処理パワーを必要とするものだが、移動平均の平均を計算するものである。
システムCPUは、ドライバソフトウェア62によって、(1)PCオーディオ回路10がMIDIファイル64を処理する直前に必要とされる周波数補正されたパッチをすべて導出するか、または(2)PCオーディオ回路10がファイル64を通じて処理を行なうとともに各パッチを導出するかのいずれかに方向付けることができる。前者の技術においては、周波数補正されたパッチすべてがPCオーディオ回路10による処理の前に導出されシステムメモリ内に記憶されるのでより多くのメモリが必要である。前者の技術はまた、MIDIファイル64を再生できるようになるまでに遅延を生ずる。もしCPUがファイル64の処理に伴う必要な計算を行なうために十分なパワーおよび余剰時間を有するのであれば、後者の技術が好ましい。
PCオーディオ回路10が周波数補正されたパッチを処理するときには、パッチのより高い周波数に対処するため調整を行なわなければならない。たとえば、もし音声に対してはF c=8であり、かつ、周波数補正されたパッチに対してはF eff=4であれば、PCオーディオ回路10は、F c=8のデジタルオーディオ信号を発生するため、この周波数の8倍ではなくこの周波数の2倍でパッチを処理するだけでよい。ドライバソフトウェア64が、PCオーディオ回路10をこれらの調整を行なうようプログラミングする。たとえば、もしPCオーディオ回路10がもともとF c=8でデジタルオーディ.オ信号を発生するようプログラミングされているが、PCオーディオ回路がF eff=4の周波数補正されたパッチを処理するのであれば、PCオーディオ回路はデータがF c=2で処理されるよう、データを処理するための周波数比を4で割るようプログラミングされる。デジタル回路においては2の因数で除算を行なう方が容易なので、周波数補正されたファイルは好ましくは2の因数である有効周波数を有するべきである。
上の議論は、PCIバス帯域幅要求を減じるための周波数補正されたパッチの使用に焦点を当てているが、周波数補正されたパッチは、システムメモリからではなくローカルメモリからウェーブテーブル・データを獲得するPCオーディオシステムにおいても応用される。先に延べたように、ウェーブテーブル・データのパッチをデジタル方式でフィルタリングすることで、パッチが記録周波数よりも高い周波数で再生されるとき(たとえば、F c>2)ノイズに翻訳される高周波数がフィルタにより取除かれる。ローカルメモリ内に記憶され、高周波数比のデジタルオーディオ信号を発生するためウェーブテーブル・シンセサイザにより使用されるはずのウェーブテーブル・データは、シンセサイザがきれいなデジタルオーディオ信号を発生するよう、上述のデジタルフィルタリング技術により前処理できる。
したがって、この発明は、この目的の実現によく適応し、ここに説明した目標および利点ならびにこの開示から明らかとなる他の目標および利点を達成する。開示を目的として、この発明の好ましい実施例を説明してきたが、ここに説明したこれらの実施例に対する多くの変更および修正は、当業者には明らかであり、この発明の精神および添付した請求の範囲の範囲内に包含される。