(57)【特許請求の範囲】
【請求項１】
波形データに基づいて楽音データを生成する楽音データ処理装置において、
前記波形データのサンプリングレートを、予め用意された複数の内部サンプリングレートの中から選択したサンプリングレートに変換する第１のサンプリングレート変換手段と、
この第１のサンプリングレート変換手段の出力データに対して演算処理を実行する演算手段と、
この演算手段の出力データを前記第１のサンプリングレート変換手段により変換されたサンプリングレートよりも高いサンプリングレートに変換して楽音データを生成する第２のサンプリングレート変換手段と
を備え、
前記第１のサンプリングレート変換手段は、
前記波形データのサンプリングレートと予め用意された複数のサンプリングレートとを比較し、その比較結果に基づいて、前記波形データのサンプリングレートよりも高く、且つ最も近い内部サンプリングレートに従って前記波形データを変換する
ことを特徴とする楽音データ処理装置。
【請求項２】
記憶装置に記憶された波形データに基づいて、楽音データを出力サンプリングレートとは非同期に一括して生成する楽音データ処理装置であって、
前記記憶装置から一括して読み出された前記波形データを記憶する入力バッファ手段と、
前記入力バッファ手段から前記波形データを読み出して前記第１のサンプリングレート変換手段に供給する第１の読出手段と、
前記第２のサンプリングレート変換手段の出力データを記憶する出力バッファ手段と、前記出力バッファ手段から前記出力サンプリングレートに従って楽音データを読み出す第２の読出手段と
を備えることを特徴とする請求項１に記載の楽音データ処理装置。
【請求項３】
複数チャンネルの波形データに基づいて、同時に複数音の発音を指示する楽音データを生成する請求項２に記載の楽音データ処理装置であって、
前記第２のサンプリングレート変換手段によって各チャンネルの楽音データが生成されるたびに前記出力バッファ手段に記憶されている前記楽音データを読み出し、読み出した楽音データと新たに生成された楽音データとを累算して、累算結果によって前記出力バッファ手段の記憶内容を更新する累算手段をさらに備えることを特徴とする楽音データ処理装置。
【請求項４】
請求項２または３に記載の楽音データ処理装置を実施するコンピュータシステムであって、前記記憶装置はコンピュータシステムのメインメモリであることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、処理負荷を軽減するのに好適な楽音データ処理装置およびコンピュータシステムに関する。
【０００２】
【従来の技術】
近年のパーソナルコンピュータでは、音源ＬＳＩを搭載して各種のサウンド処理を行うものが多い。音源ＬＳＩの代表的な処理としては、制御データと波形データとに基づいて楽音データを再生する再生処理がある。波形データは楽器の演奏音を所定のレートでサンプリングして得られたものであり、制御データは、音色、再生ピッチおよび音量等を指示する。サウンド処理機能を有するパーソナルコンピュータは、通常、装置全体をＯＳに従って制御するＣＰＵ、音源ＬＳＩ、制御データおよび波形データあるいは他のアプリケーションプログラムを格納するメインメモリ、各構成部分を接続しデータの授受を行うためのバス等から構成されている。
【０００３】
音源ＬＳＩは、処理を行うために必要なデータをメインメモリからバスを介して取得しなければならないが、バスを長時間占有すると、他のアプリケーションがバスを使用する時間が短くなる。この結果、コンピュータシステム全体としてみると、円滑な動作に支障をきたすことになる。このため、音源ＬＳＩは出力サンプリング周波数（ＤＡＣレート）を４８ＫＨzで２５６サンプル出力するのに要する時間（５．３ｍｓ）を１フレーム（FRAME）とするフレーム単位で一括して楽音データを生成しており、コンピュータシステムは１フレームの処理に必要なデータを一括してメインメモリから音源ＬＳＩにバースト転送している。
【０００４】
図５は従来の音源ＬＳＩにおける主要部の機能ブロック図である。なお、この例では、複数の音色が同時発音可能であるものとし、各音色に対応する処理をチャンネル（ｃｈ）と呼ぶことにする。
この音源ＬＳＩに入力される波形データWDのサンプリングレートには、44.1KHz,22.05KHz,11.025KHz,8KHzといったように各種のものがあるが、ピッチ処理PTでは、波形データWDにピッチ変換を施して、出力サンプリングレート（４８ＫＨz）に対応する波形データWD'を生成している。この際、サンプリングレート変換とピッチシフトとを同時に行っている。例えば、あるチャンネルの波形データWDにおいて、そのサンプリングレートが８ＫＨｚであり、それをピッチシフトなしで再生する場合は、１フレーム当たり約４４サンプルの波形データWDが転送されることになるが、ピッチ処理ＰＴではピッチ変換によってそのサンプル数を２５６に変換している。
【０００５】
次に、フィルタ処理FILにおいて波形データWD'に２次のＩＩＲフィルタ処理を施した後、その出力データにアンプ処理AMPを施して音量を調整する。次に、ミキサ処理MIXにおいて、生成された楽音データを内部バッファに格納する。
以上の処理において、まず、チャンネルｃｈ１の２５６サンプルを作成する。次にチャンネルｃｈ２について同様に２５６サンプルを作成しチャンネルｃｈ１の２５６サンプルと対応したサンプル同士加算して累算された２５６サンプルを得る。このような処理を複数チャンネル分繰り返し、最終的に複数チャンネル分を累算した２５６サンプルを得る。上記処理は各フレームで繰り返し行われる。これにより、複数チャンネルの楽音データを累算し、複数同時発音を可能としている。
【０００６】
このように従来の音源ＬＳＩにおいては、フィルタ処理FILやアンプ処理AMP等の内部処理を実行するに先だって、ピッチ処理PTにより、１フレーム当たりのサンプル数を出力サンプリングレートに対応するサンプル数に変換し、内部処理を出力サンプリングレートで実行するようにしていた。
【０００７】
【発明が解決しようとする課題】
ところで、１フレーム期間に処理すべきサンプル数が増加すると、音源ＬＳＩの処理負荷はそれだげ重くなる。上述した従来の音源ＬＳＩでは、波形データWDのサンプリングレートを出力サンプリングレートまで上げて、サンプリングレートを揃えた後に内部処理を実行するので、音源ＬＳＩの処理負荷が重くなっていた。
【０００８】
一方、コンピュータシステムで行われるサウンド処理では、臨場感に溢れる音響を実現するために、いわゆる３Ｄサウンドポジショニング処理が行われることがある。この処理は、音源から左右の耳までの頭部伝達関数ＨＲＴＦ（Head Related Trausfer Function）を、音源の座標と対応付けて予め測定しておき、音源の座標が変化するのに応じて、頭部伝達関数ＨＲＴＦの係数（以下、ＨＲＴＦ係数と呼ぶ）を動的に変化させるものである。これにより、例えば、ゲームソフトにおいて、飛行機が左から右に飛び去っていくようなシーンで、効果音の音源位置を左から右に移動させることが可能となる。このため、３Ｄサウンドポジショニング処理を音源ＬＳＩで実行したいといった要求がある。また、リバーブやコーラスあるいはバリエーションといった音響効果を付与するエフェクト処理を音源ＬＳＩで実行したいといった要求がある。
【０００９】
しかしながら、３Ｄサウンドポジショニング処理やエフェクト処理を音源ＬＳＩに取り込むと、音源ＬＳＩの処理負荷がさらに増大することになり、それに対応すると著しくコストがアップしていた。そこで、従来のコンピュータシステムでは３Ｄサウンドポジショニング処理やエフェクト処理といった処理負荷が重いものは、ＣＰＵで実行していた。
【００１０】
ここで、音源ＬＳＩの処理負荷を軽減するために、波形データWDに対してフィルタ処理FILやアンプ処理AMP等を直接施し、最後にピッチ処理PTを実行して、波形データWDのサンプリングレートを出力サンプリングレートまで上げることも考えられる。
しかしながら、この場合には、フィルタ処理FILに用いる係数データの組を波形データWDのサンプリングレートの種類だけ予め用意しておき、入力される波形データWDに応じてこれを切り換える必要がある。また、３Ｄポジショニング処理やエフェクト処理といった新しい機能を音源ＬＳＩに取り込むものとすれば、予め用意する係数データが更に増加するといった問題がある。
【００１１】
本発明は、上述した事情に鑑みてなされたものであり、処理負荷を軽減しつつ、性能の向上を図った楽音データ処理装置およびコンピュータシステムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記課題を解決するため請求項１に記載の発明にあっては、波形データに基づいて楽音データを生成する楽音データ処理装置において、前記波形データのサンプリングレートを、予め用意された複数の内部サンプリングレートの中から選択したサンプリングレートに変換する第１のサンプリングレート変換手段と、この第１のサンプリングレート変換手段の出力データに対して演算処理を実行する演算手段と、この演算手段の出力データを前記第１のサンプリングレート変換手段により変換されたサンプリングレートよりも高いサンプリングレートに変換して楽音データを生成する第２のサンプリングレート変換手段とを備え、前記第１のサンプリングレート変換手段は、前記波形データのサンプリングレートと予め用意された複数のサンプリングレートとを比較し、その比較結果に基づいて、前記波形データのサンプリングレートよりも高く、且つ最も近い内部サンプリングレートに従って前記波形データを変換することを特徴とする。
【００１４】
また、請求項２に記載の発明にあっては、記憶装置に記憶された波形データに基づいて、楽音データを出力サンプリングレートとは非同期に一括して生成する楽音データ処理装置であって、前記記憶装置から一括して読み出された前記波形データを記憶する入力バッファ手段と、前記入力バッファ手段から前記波形データを読み出して前記第１のサンプリングレート変換手段に供給する第１の読出手段と、前記第２のサンプリングレート変換手段の出力データを記憶する出力バッファ手段と、前記出力バッファ手段から前記出力サンプリングレートに従って楽音データを読み出す第２の読出手段とを備えることを特徴とする。
【００１５】
また、請求項３に記載の発明にあっては、複数チャンネルの波形データに基づいて、同時に複数音の発音を指示する楽音データを生成する楽音データ処理装置であって、前記第２のサンプリングレート変換手段によって各チャンネルの楽音データが生成されるたびに前記出力バッファ手段に記憶されている前記楽音データを読み出し、読み出した楽音データと新たに生成された楽音データとを累算して、累算結果によって前記出力バッファ手段の記憶内容を更新する累算手段をさらに備えることを特徴とする。
【００１６】
また、請求項４に記載の発明にあっては、前記楽音データ処理装置を実施するコンピュータシステムであって、前記記憶装置はコンピュータシステムのメインメモリであることを特徴とする。
【００１７】
【発明の実施の形態】
１．コンピュータシステムの全体構成
以下、図面を参照しつつ、本発明に係わる一実施形態であるコンピュータシステムの構成を説明する。図１は本実施形態に係わるコンピュータシステムのブロック図である。
【００１８】
図において、ＣＰＵ２０は、バス６０を介して各構成部分に接続されており、コンピュータシステムＡ全体を制御する。ＲＡＭ３０はメインメモリに相当する読み書き可能なメモリであって、ＣＰＵ２０の作業領域として機能する。また、ＲＯＭ４０は読出専用のメモリであって、そこにはブートプログラム等が格納されている。また、ハードディスク５０は、二次記憶装置に相当し、そこにはアプリケーションプログラムやデバイスドライバDDやマイクロプログラムMP等のプログラム、および制御データCDや波形データWDといった各種のデータが格納されている。そして、これらのプログラムやデータは必要に応じてＲＡＭ３０にロードされるようになっている。
【００１９】
ここで、制御データCDは、音色情報（当該音色に対応する波形データWDが格納されているアドレス）、ピッチ情報、音量情報の他、対応する波形データWDのサンプリングレートを指示するサンプリングレート情報が含まれている。また、波形データWDは、例えば、ギターやピアノといった各種の音色に対応する楽器によって実際に発音させた楽音等をサンプリングして得られたデータである。各種の波形データWDが記憶されるＲＡＭ３０の記憶領域は周知のウエーブテーブルを構成している。
【００２０】
また、ＯＳの起動時にデバイスドライバDD、マイクロプログラムMP、および波形データWD等がバス６０を介してＲＡＭ３０に転送されるとともに、上位のアプリケーションによって指示される制御データCDが必要に応じてＲＡＭ３０に転送される。また、ＲＡＭ３０に格納されたマイクロプログラムMPは音源ＬＳＩ１０に転送される。バス６０としては、大量のデータを高速転送できるものであればその種類は問わないが、この例にあっては、バースト転送モードを備えたＰＣＩバス（Peripheral Component Interconnect Bus）を用いるものとする。
【００２１】
ここで、波形データWDは、ハードディスク５０に格納されているデータの中から使用頻度の高い音色に対応するものが選択されＲＡＭ３０に記憶され、必要に応じてＲＡＭ３０とハードディスク５０との間で波形データWDのやり取りが行われる。また、ＲＡＭ３０において、波形データWDは物理アドレスが連続する連続直線領域に格納されるようになっている。物理アドレスが不連続であると、論理アドレスから物理アドレスを算出する必要があるため、これを回避してＯＳの負荷を軽減するためである。
【００２２】
２．音源ボードの構成
次に、図１に示す音源ボード１００は、図示せぬ拡張スロットに装着されるようになっており、そこには、再生楽音データSDを生成する音源ＬＳＩ１０と再生楽音データSDをアナログ信号に変換して再生楽音信号Ｓを出力するＤＡＣ(Digital/Analog Converter)１６が設けられている。再生楽音データSDを再生する処理は、フレームと呼ばれる一定のサンプリング数単位で一括して行われるようになっており、この例では、再生楽音データSDを出力サンプリングレート（４８ＫＨｚ）で２５６サンプルだけ出力する期間（５．３ｍｓ）を１フレームとし、これをさらに４分割したサブフレーム単位で音源ＬＳＩ１０は一括処理を行っている。また、音源ＬＳＩ１０は複数音（例えば６４チャンネル）を同時発音する再生楽音データSDを再生できるようになっている。
【００２３】
あるサブフレームの再生楽音データSDを得るに当たって、音源ＬＳＩ１０は、まず、出力サンプリングレートに換算してサブフレーム分のサンプルを再生するのに必要な波形データWDをＰＣＩバス６０を介してＲＡＭ３０から一括して取り込む。例えば、Ｎチャンネルの同時発音を行うものとすれば、波形データWD1〜WDNが取り込まれる。各チャンネルのサンプル数は、波形データWD1〜WDNの各サンプリングレートに応じて異なる。例えば、波形データWD1のサンプリングレートが８ＫＨｚであり、ピッチシフトなしで再生するとすれば、サブフレーム当たりのサンプル数は８となるので、８個の波形データWD1が取り込まれることになる。
【００２４】
この取り込みは、先頭アドレスとサンプル数とを指定することでバースト転送により行われる。すなわち、ＲＡＭ３０の波形データWD内の所定の連続領域が切り出されて音源ＬＳＩに一括して転送されることになる。音源ＬＳＩは取り込まれたサンプルに基づきチャンネルｃｈ1の６４サンプル（１サブフレームに相当）を作成する。次にチャンネルｃｈ2について同様に６４サンプルを作成しチャンネルｃｈ1の６４サンプルと対応したサンプル同士加算して累算された６４サンプルを得る。このような処理をＮチャンネル分繰り返し、最終的にＮチャンネル分を累算した６４サンプルを得る。上記処理は各サブフレームで繰り返し行われるが、あるサブフレームで生成された６４サンプルは次のフレームで出力サンプリングレートに従ってＤＡＣ１６へ転送される。
【００２５】
２−１：音源ＬＳＩ
音源ＬＳＩ１０は、制御部１１、ＰＣＩバスインターフェース１２、入力バッファ１３、演算部１４および出力バッファ１５から構成される。まず、制御部１１はＲＡＭ３０から転送されるマイクロプログラムMPをその内部に設けられたメモリ（図示略）に記憶し、マイクロプログラムMPに従って音源ＬＳＩ１０の各部を制御する命令ｉを発行する。次に、ＰＣＩバスインターフェース１２は、バスマスタ機能を有している。このため、音源ＬＳＩ１０は、ＣＰＵ２０を介することなくＲＡＭ３０から制御データCDや波形データWD等を直接読み出すことが可能である。
【００２６】
２−１−１：入力バッファ
次に、入力バッファ１３は、ＰＣＩバスインターフェース１２を介してバースト転送される波形データWDを一旦記憶する。この入力バッファ１３は２個のバッファ１３１，１３２から構成されており、一方にデータを書き込んでいる期間に他方からデータを出力するダブルバッファとして構成されている。ここで、制御部１１は、制御データCDの音色情報に基づいてこれに対応する波形データWDの種類を特定する。例えば、制御データCDの音色情報がバイオリンを指示するのであれば、バイオリンの波形データWDが特定される。
【００２７】
２−１−２：演算部
次に、演算部１４は、チャンネル毎に各種の演算をマイクロプログラムＭＰに従って時分割で実行できるように構成されており、その内部にはＬch用バッファ１４１、Ｒch用バッファ１４２、および第１〜第３のエフェクトバッファ１４３〜１４５を備えている。ここで、Ｌch用バッファ１４１とＲch用バッファ１４２は、ステレオ形式の楽音データを再生する場合に用いられ、また、第１〜第３のエフェクトバッファ１４３〜１４５は、後述するポスト処理POSTの一部であるエフェクト処理EFを実行する場合に使用される。なお、この例では、リバーブ、コーラス、バリエーションといった３種類のエフェクト処理EFを実行するため、エフェクト処理用に３個のバッファを用意したが、４種類以上のエフェクト処理EFを行うのであれば、その種類に応じた数のバッファを用意すれば良い。
この演算部１４の演算処理には、ピッチ処理PT、フィルタ処理FIL、アンプ処理AMP、ミキサ処理MIX、およびポスト処理POSTがある。ここでは、各処理を機能モジュールとして捉え、図２に示す機能ブロック図を参照しつつ、演算部１４を説明する。
【００２８】
２−１−２−１：ピッチ処理
まず、ピッチ処理PTでは、制御データCDのサンプリングレート情報及びピッチ情報に基づいて、波形データWDにピッチ変換を施して、そのサンプリングレートを予め定められた複数の内部サンプリングレートから選択したものに変換して、波形データWD'を生成する処理が実行される。この場合、内部サンプリングレートとしては各種のものが考えられるが、この例にあっては、４８ＫＨｚ，４２ＫＨｚ，３６ＫＨｚ，３０ＫＨｚ，２４ＫＨｚが用意されている。内部サンプリングレートの選択は、サンプリングレート情報と各内部サンプリングレートを比較し、その比較結果に基づいて、サンプリングレート情報より高く、且つ、最も近い内部サンプリングレートが選択されるようになっている。
【００２９】
具体的には、サンプリングレート情報が示す波形データWDのサンプリングレートをＦｓとしたとき、以下のように内部サンプリングレートが選択される。
▲１▼Ｆｓ≦２４ＫＨｚであるならば、内部サンプリングレートは２４ＫＨｚとなる。
▲２▼２４ＫＨｚ＜Ｆｓ≦３０ＫＨｚであるならば、内部サンプリングレートは３０ＫＨｚとなる。
▲３▼３０ＫＨｚ＜Ｆｓ≦３６ＫＨｚであるならば、内部サンプリングレートは３６ＫＨｚとなる。
▲４▼３６ＫＨｚ＜Ｆｓ≦４２ＫＨｚであるならば、内部サンプリングレートは４２ＫＨｚとなる。
▲５▼４２ＫＨｚ＜Ｆｓ≦４８ＫＨｚであるならば、内部サンプリングレートは４８ＫＨｚとなる。
【００３０】
サンプリングレート情報より高い内部サンプリングレートを選択するようにしたのは、低い内部サンプリングレートを選択すると、ピッチ変換を行う際に波形データWDのサンプルを間引くことにより、波形データWDが本来有している情報が失われてしまい、再生楽音データSDの品質が劣化してしまうが、高い内部サンプリングレートを選択すれば、そのようなことがなく、波形データWDが本来有するすべての情報をピッチ変換後の波形データWD'に承継させることができるからである。
【００３１】
また、最も近い内部サンプリングレートを選択するようにしたのは、以下の理由による。上述したように再生楽音データSDの品質に鑑みると、内部サンプリングレートはサンプリングレート情報に比較して高く設定する必要があるが、サンプリングレートを上げると、サブフレーム期間中に処理するサンプル数が増加し、音源ＬＳＩ１０の処理負荷が重くなる。このため、音源ＬＳＩ１０の処理負荷を軽減するためには、できる限り低い内部サンプリングレートに変換する必要がある。そこで、最も近い内部サンプリングレートを選択したのである。
【００３２】
このように、サンプリングレート情報より高く、且つ、最も近い内部サンプリングレートを選択するようにしたので、再生楽音データSDの品質を損なうことなく、音源ＬＳＩ１０の処理負荷を軽減することが可能となる。
【００３３】
２−１−２−２：フィルタ処理
次に、フィルタ処理FILには、２次のＩＩＲフィルタ処理ＩＩＲと、３Ｄサウンドポジショニングを行うための頭部伝達関数を計算する頭部伝達関数処理HRTFとがある。ここで、ＩＩＲフィルタ処理IIRは、音源ＬＳＩ１０をシンセサイザーとして用いる場合などに微妙な音色変調効果を与えるために用いるもので、フィルタの係数データが時間とともに動的変化するようになっている。
【００３４】
また、３Ｄサウンドポジショニングにおいては、仮想音源から左右の耳までの頭部伝達関数を、音源の座標と対応付けて予め測定しておき、仮想音源の座標が変化するのに応じて、頭部伝達関数の係数を動的に変化させることが行われる。この場合、頭部伝達関数処理HRTFは、図３に示すようなＦＩＲフィルタと等価である。この図においてｈ0〜ｈk-1は、ＨＴＲＦ係数であって仮想音源の座標によって動的に変化する。
【００３５】
そこで、フィルタ処理FILにおいては、ＩＩＲフィルタ処理IIRおよび頭部伝達関数処理HRTFを実行するために必要な係数データを予め格納しておいた内部メモリから係数データを読み出し、これに基づいて演算を実行する。ここで、上述したピッチ処理PTを行わずに、波形データWDにフィルタ処理FILを直接実行するものとすれば、波形データWDが取り得るサンプリングレートの種類に応じた係数データを内部メモリに格納する必要があるため、大容量の内部メモリが必要となる。しかしながら、この例にあっては、ピッチ変換によって５種類の内部サンプリングレートのうちいずれかに変換されるから、係数データとしては、各内部サンプリングレートに対応して５組を用意しておけば足りる。
【００３６】
２−１−２−３：アンプ処理
次に、アンプ処理AMPは、制御データCDの音量情報に基づいて、フィルタ処理FILが施された波形データWD'に対して音量情報に対応する係数を乗算して、音量が調整された波形データWD'を生成する。
【００３７】
２−１−２−４：ミキサ処理
次に、ミキサ処理MIXでは、ピッチ処理PT、フィルタ処理FIL、およびアンプ処理AMPによって生成された各チャンネルの楽音データをＬch用バッファ１４１、Ｒch用バッファ１４２、および第１〜第３のエフェクトバッファ１４３〜１４５に振り分けて格納している。各バッファに楽音データを格納する際には、そこに格納されている楽音データを読み出して、新たに生成された楽音データと加算して格納している。
【００３８】
例えば、チャンネルｃｈ1〜ｃｈ5の楽音データにコーラス効果を付与するものとし、このために第１のエフェクトバッファ１４３を使用し、内部処理は３６ＫＨｚの内部サンプリングレート（サブフレーム当たり４８サンプル）に従って動作する場合を考える。この場合には、まず、チャンネルｃｈ1の４８サンプルが生成され第１のエフェクトバッファ１４３に格納される。次に、チャンネルｃｈ2の４８サンプルが順次生成されると、これに同期してチャンネルｃｈ1の４８サンプルを順次読み出し、チャンネルｃｈ2とチャンネルｃｈ1の４８サンプルを加算して、再び第１のエフェクトバッファ１４３に格納する。これをチャンネルｃｈ5まで繰り返すことによって、チャンネルｃｈ1〜ｃｈ5の楽音データが累算される。
【００３９】
ただし、ミキサ処理MIXの累算は、同じ内部サンプリングレートのチャンネル間でのみ行われ、異なる内部サンプリングレート間では行われない。異なる内部サンプリングレート間の楽音データの合成は、後述するようにポスト処理POST中の周波数変換処理FSCが行われた後、出力バッファに書き込む際に実行される。
【００４０】
２−１−２−５：ポスト処理
次に、ポスト処理POSTでは、クロストークキャンセル処理XTC、エフェクト処理EF、および周波数変換処理FSCが行われる。
このクロストークキャンセル処理XTCは、３Ｄサウンドポジショニング処理の一部であって、フィルタ処理FILで説明した頭部伝達関数処理HTRFと対の関係にある。頭部伝達関数処理HTRFによって生成される波形データは、左右の耳に直接入力されることを前提としている。したがって、ヘッドホンのように発音手段が左右の耳に近接しており、一方の発音手段からの発音が、片方の耳だけで聞かれる場合は問題ないが、ＬチャンネルとＲチャンネルのスピーカを視聴者の前方に設置すると、片方のスピーカの発音によって、両方の耳に音が入力されてしまいクロストークが生じる。クロストークキャンセル処理XTCは、Ｌch用バッファ１４１とＲch用バッファ１４２に各々格納された楽音データに基づいて、クロストークを聴感上なくすように補正を施す処理である。
【００４１】
また、エフェクト処理EFは、リバーブ、コーラス、バリエーションといった音響効果を付与する処理であって、エフェクト処理用に用意した第１〜第３のエフェクトバッファ１４３〜１４４に格納された楽音データに基づいて実行される。なお、リバーブ処理においては、比較的長い遅延を使ったオールパスフィルタ処理、込むフィルタ処理等が行われる。その際、エフェクトバッファに格納した楽音データを一旦ＲＡＭ３０に転送し、しかるべき遅延時間の後に再度取り込むことにより、音源ＬＳＩ１０のコストを更に下げることが可能となる。
【００４２】
ところで、この例における内部サンプリングレートは、ピッチ処理PTによって、４８ＫＨｚ，４２ＫＨｚ，３６ＫＨｚ，３０ＫＨｚ，または２４ＫＨｚのうちの一つに選択されることは、上述した通りである。一方、ミキサ処理MIXによって累算された楽音データは、ある内部サンプリングレートにおける楽音データについて実行される。したがって、異なる内部サンプリングレートの楽音データ間でデータを合成するためには、サンプリングレートを揃える必要がある。周波数変換処理FSCはこのために行われる処理であって、そこでは、楽音データの合成を行うために、各種の内部サンプリングレートで生成された楽音データを一定のサンプリングレートの楽音データに周波数変換している。この場合、出力サンプリングレートと異なるサンプリングレートに変換すると、再度、出力サンプリングレートに変換する必要があるため、この例にあっては、各内部サンプリングレートを出力サンプリングレート（４８ＫＨｚ）に変換している。ただし、内部サンプリングレートが出力サンプリングレートに一致する場合には、周波数変換処理を実行しない。
【００４３】
２−１−３：出力バッファ
次に、出力バッファ１５は、第１のＬchバッファ１５１，第１のＲchバッファ１５２，第２のＬchバッファ１５３，第２のＲchバッファ１５４から構成されている。第１のＬ,Ｒchバッファ１５１,１５２に再生楽音データSDを書き込んでいる期間に第２のＬ,Ｒchバッファ１５３,１５４から再生楽音データSDを出力する。また、その逆に第２のＬ,Ｒchバッファ１５３,１５４に再生楽音データSDを書き込んでいる期間に第１のＬ,Ｒchバッファ１５１,１５２から再生楽音データSDを出力する。ここで、出力バッファ１５に楽音データを書き込む際には、書込を行うバッファから、そこに格納されている楽音データを読み出し、読み出された楽音データと生成された楽音データとを加算して当該バッファに書き込むことによって累算を行っている。
【００４４】
この場合、上述した周波数変換処理FSCによって、内部バッファから読み出される楽音データの内部サンプリングレートは出力サンプリングレートに変換されているので、出力バッファ１５には出力サンプリングレートに変換された再生楽音データSDが格納されていく。そして、出力バッファ１５からは、出力サンプリングレート（４８ＫＨｚ）に従って再生楽音データSDが読み出されると、再生楽音データSDは、ＤＡＣ１６によってデジタル信号からアナログ信号に変換され再生楽音信号Ｓとして外部に出力される。
【００４５】
３．実施形態の動作例
次に、図面を参照しつつ、本実施形態に係わるコンピュータシステムＡにおける再生楽音データSDを生成する動作例を説明する。
図４は、音源ＬＳＩの動作チャネルのフローを示す説明図である。なお、この例にあっては、チャンネルｃｈ1〜ｃｈK+2を３Ｄサウンドポジショニング用に使用し、チャンネルｃｈK+3〜ｃｈNを波形データWDの再生処理に用いるものとする。
まず、上位アプリケーションからの発音指令に従って、デバイスドライバDDが制御データCDを音源ＬＳＩ１０の制御部１１に渡すと、制御データCDの音色情報に基づいて転送すべきデータが特定される。制御部１１がＰＣＩバスインターフェース１２に対して転送データを指示すると、ＰＣＩバスインターフェース１２はバスマスタとして機能し、ＲＡＭ３０から当該データを読み出して、入力バッファ１３にバースト転送する。
【００４６】
ここでは、チャンネルｃｈ1〜ｃｈKが２４ＫＨｚ以下のサンプリングレートでサンプリングされた波形データWD1〜WDK、チャンネルｃｈK+1,ｃｈK+2が４８ＫＨｚでサンプリングされた波形データWDK+1,WDK+2、チャンネルｃｈK+3〜ｃｈNが33.075ＫＨｚでサンプリングされた波形データWDK+3〜WDNを各々対象として処理を行うものとする。
【００４７】
まず、ステップＳ1〜ＳKでは、２４ＫＨｚ以下の波形データWD1〜WDKを処理対象とするので、ピッチ処理PTによってピッチ変換が行われる。図に示すようにチャンネルｃｈ1は８ＫＨｚ、チャンネルｃｈ２は１１．０２５ＫＨｚ、チャンネルｃｈＫは２２．０５ＫＨｚのサンプリングレートを有するが、ピッチ処理PTによって、内部サンプリングレートが２４ＫＨｚに統一されることになる。
【００４８】
この後、頭部伝達関数処理HRTF、アンプ処理AMP、およびミキサ処理MIXが実行される。このミキサ処理MIXでは、Ｌch用バッファ１４１およびＲch用バッファ１４２を用いて楽音データの累算が行われる。ここで、アンプ処理AMPがなされた各チャンネルの楽音データをSD1〜SDNで表すものとすれば、ステップＳ1のミキサ処理MIXではSD1+SD2を行い、ステップＳKのミキサ処理MIXでは、ステップＳK-1までに累算されたSD1+SD2+…SDK-1とSDKとを加算する処理が行われる。このように累算を行うことができるのは、ピッチ処理PTによって、内部サンプリングレートを２４ＫＨｚに統一しているからである。こうして、２４ＫＨｚの内部サンプリングレートで行われる処理が終了すると、周波数変換処理FSCを実行して、Ｌch用バッファ１４１およびＲch用バッファ１４２に格納されている楽音データのサンプリングレートを出力サンプリングレートに変換し、これらを出力バッファ１５に転送する（ステップＳK+1）。
【００４９】
次に、ステップＳK+2,ＳK+3においては、チャンネルｃｈK+1,ｃｈK+2を処理するが、これらのチャンネルは、４８ＫＨｚでサンプリングされた波形データWDK+1,WDK+2を対象とする。このため、周波数変換処理FSCは省略され、ピッチシフトに伴うピッチ処理PTと頭部伝達関数処理HRTF、アンプ処理AMP、およびミキサ処理MIXのみが行われる。なお、この場合には、出力サンプリングレートに従って内部処理が行われるので、ミキサ処理MIXでは、出力バッファ１５に格納されている楽音データとの間で累算を行う。ここで、演算部１４が第１のＬ,Ｒchバッファ１５１,１５２にアクセスするものとすれば、ステップＳK+4で行われるクロストークキャンセル処理XTCは、第１のＬ,Ｒchバッファ１５１,１５２に格納されている楽音データに基づいて行われ、その処理結果が再び第１のＬ,Ｒchバッファ１５１,１５２に格納される。
【００５０】
３Ｄサウンドポジショニングに関する処理が終了すると、ステップＳK+5に進む。ステップＳK+5〜ステップＳN+4では、チャンネルｃｈK+3〜ｃｈNに関する処理が行われる。これらのチャンネルは、33.075ＫＨｚでサンプリングされた波形データWDK+3〜WDNを処理対象とするので、まず、ピッチ処理PTにおいて内部サンプリングレートが３６ＫＨｚに設定される。この後、ＩＩＲフィルタ処理IIR、アンプ処理AMPおよびミキサ処理MIXが実行され、これに続いてエフェクト処理EFが実行される（ステップＳN+3）。
【００５１】
こうして、チャンネルｃｈK+3〜ｃｈNの楽音データが合成され１サブフレーム当たり４８サンプルのデータが生成されると、出力バッファ１５に当該データを足し込むために、周波数変換処理FSCを実行する（ステップＳN+4）。ここでは、内部サンプリングレートに従って得られた４８サンプルのデータを６４サンプルに変換する。これにより、生成された再生楽音データSDのサンプリングレートを出力バッファ１６に格納されているデータのサンプリングレートと一致させることができる。これを出力バッファ１５に足し込むことにより、内部サンプリングレートの異なる再生楽音データSDを合成することができる。
この結果、出力バッファ１５の内部に、３Ｄサウンドポジショニング処理（内部サンプリングレート24KHz,48KHz）とエフェクト処理（内部サンプリングレート36KHz）が付与された再生楽音データSDが生成される。
【００５２】
以上の動作例において、ステップＳ1〜ＳKでは２４ＫＨｚ、ステップＳK+2,ＳK+3では４８ＫＨｚ、ステップＳK+5〜ステップＳN+3では３６ＫＨｚといったように複数の内部サンプリングレートで各チャンネルの処理が行われるが、内部サンプリングレートが出力サンプリングレートと一致する場合を除いて（ＳK+2,ＳK+3）、周波数変換処理FSCを行うようにしたので、異なる内部サンプリングレートの処理結果を累算することができる。また、この例では、同一の内部サンプリングレートとなるステップが連続するように各チャンネルの処理順序を設定したので、周波数変換処理FSCの回数を最小にすることができる。
【００５３】
４．実施形態の効果
上述したように本実施形態によれば、ピッチ処理PTによって、サンプリングレート情報よりも高い内部サンプリングレートを選択するようにしたので、波形データWDが本来有するすべての情報をピッチ変換後の波形データWD'に承継させ、高品質の再生楽音データを得ることができる。
また、最も近い内部サンプリングレートを選択するようにしたので、サブフレーム期間中に処理するサンプル数を削減して音源ＬＳＩ１０の処理負荷を軽減することができる。
さらに、周波数変換処理FSCによって、内部サンプリングレートを出力サンプリングレートに変換するようにしたので、複数の内部サンプリングレートで音源ＬＳＩ１０の内部処理を実行することができる。
この結果、従来のＬＳＩと同一規模の音源ＬＳＩ１０で、例えば、３Ｄサウンドポジショニング処理やエフェクト処理を内部に取り込むことができ、音源ＬＳＩ１０の性能を向上させることが可能となる。
【００５４】
【発明の効果】
上述したように本発明に係る発明特定事項によれば、楽音データを生成するのに、処理負荷を軽減しつつ、高度な演算処理を実行できる楽音データ処理装置およびコンピュータシステムを提供することができる。
【図面の簡単な説明】
【図１】  本発明の一本実施形態に係わるコンピュータシステムのブロック図である。
【図２】  同実施形態に係わる演算部の機能ブロック図である。
【図３】  同実施形態に係わる頭部伝達関数処理と等価なＦＩＲフィルタのブロック図である。
【図４】  同実施形態に係わる音源ＬＳＩの動作チャネルのフローを示す説明図である。
【図５】  従来の音源ＬＳＩの主要部の機能ブロック図である。
【符号の説明】
１０…音源ＬＳＩ（楽音データ処理装置）、１４…演算部（演算手段）、３０…ＲＡＭ（記憶装置）、WD…波形データ、SD…再生楽音データ（楽音データ）、PT…ピッチ処理（第１のサンプリングレート変換手段）、FSC…周波数変換処理（第２のサンプリングレート変換手段）、Ａ…コンピュータシステム。
【図１】
0003991458.tif 000002
【図２】
0003991458.tif 000003
【図３】
0003991458.tif 000004
【図４】
0003991458.tif 000005
【図５】
0003991458.tif 000006