(57)【特許請求の範囲】
【請求項１】
所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータをそれぞれ連続領域に記憶する外部記憶装置とは、バスを介して接続される楽音データ処理装置であって、
再生ピッチを指示するピッチ情報が相対的に低いピッチを示しているときは前記オリジナル波形サンプルデータを、前記ピッチ情報が相対的に高いピッチを示しているときは間引波形サンプルデータを、前記ピッチ情報に基づくサンプルデータ数だけ、前記外部記憶装置から前記バスを介して一括して読み出す第１の読出部と、
前記第１の読出部から読み出されたサンプルデータを記憶する入力バッファ部と、
前記ピッチ情報に基づいて、前記入力バッファ部に記憶された複数のサンプルデータを読み出す第２の読出部と、
予め定められた単位時間に一定レートで出力されるサンプル数に対応する楽音データを、前記ピッチ情報および前記第２の読出部から読み出された複数のサンプルデータから補間演算により、前記一定レートとは非同期に一括して生成する楽音データ生成部と、
前記楽音データ生成部によって一括生成された楽音データを記憶する出力バッファ部と、
この出力バッファ部に記憶された楽音データを前記一定レートで読み出す第３の読出部と
を備えることを特徴とする楽音データ処理装置。
【請求項２】
前記外部記憶装置は、所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータの他に、オリジナル波形サンプルデータおよび間引波形サンプルデータのそれぞれに対応してループ再生情報を記憶し、
前記第１の読出部は、サンプルデータとこれに対応する前記ループ再生情報とを読み出し、
前記楽音データ生成部は、前記ループ再生情報に従い、ループ再生を行う
ことを特徴とする請求項１に記載の楽音データ処理装置。
【請求項３】
所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータをそれぞれ連続領域に記憶する記憶装置と、
前記記憶装置とは、バスを介して接続されるとともに、再生ピッチを指示するピッチ情報が相対的に低いピッチを示しているときは前記オリジナル波形サンプルデータを、前記ピッチ情報が相対的に高いピッチを示しているときは間引波形サンプルデータを、前記ピッチ情報に基づくサンプルデータ数だけ、前記外部記憶装置から前記バスを介して一括して読み出す第１の読出部と、
前記第１の読出部から読み出されたサンプルデータを記憶する入力バッファ部と、
前記ピッチ情報に基づいて、前記入力バッファ部に記憶された複数のサンプルデータを読み出す第２の読出部と、
予め定められた単位時間に一定レートで出力されるサンプル数に対応する楽音データを、前記ピッチ情報および前記第２の読出部から読み出された複数のサンプルデータから補間演算により、前記一定レートとは非同期に一括して生成する楽音データ生成部と、
前記楽音データ生成部によって一括生成された楽音データを記憶する出力バッファ部と、
この出力バッファ部に記憶された楽音データを前記一定レートで読み出す第３の読出部と
を備えることを特徴とする楽音データ処理装置。
【請求項４】
請求項２の楽音データ処理装置を実施するコンピュータシステムであって、
前記記憶装置はコンピュータシステムのメインメモリであり、前記オリジナル波形サンプルデータを間引いて間引波形サンプルデータを作成する処理および作成した間引波形サンプルデータを前記記憶装置に記憶する処理は所定のソフトウエアによってコンピュータシステムのＣＰＵが行う処理である
ことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、波形データとピッチ情報に基づいて楽音データを生成するのに好適な楽音データ処理装置およびコンピュータシステムに関する。
【０００２】
【従来の技術】
近年のパーソナルコンピュータでは、音源ＬＳＩを搭載して各種のサウンド処理を行うものが多い。ウェーブテーブル方式で楽音データを再生する音源ＬＳＩでは、音色、ピッチあるいは音量といった発音を指示する制御データとウェーブテーブルの波形データとに基づいて楽音データを再生する処理が行われる。この波形データは、実際に楽器を一定のピッチで演奏した際に得られる楽音信号等をサンプリングして得られるデータであり、ウェーブテーブルとしてのメモリ等に記憶されている。
【０００３】
パーソナルコンピュータは、装置全体をＯＳに従って制御するＣＰＵ、例えばマイクロプログラムにより動作が規定される音源ＬＳＩ、制御データや波形データを格納するメインメモリ等をハードウエアとして備える。また、ソフトウエアとして、上記ＯＳおよび音源ＬＳＩを制御するとともにメインメモリに対して各種データの書込読出を制御するデバイスドライバ（DD:Device Driver）等を備える。
このようなパーソナルコンピュータの音源ＬＳＩは、音源ＬＳＩまたは音源ボードとしては波形データ（ＲＯＭまたはＲＡＭ）を持たずに、メインメモリに記憶したウエーブテーブル（波形データ）を利用して楽音データを再生することにより音源自体のコストおよびシステム全体のコストを削減している。
【０００４】
また、このような音源ＬＳＩは、入力バッファ、補間部、演算部、および出力バッファから構成される。入力バッファはメインメモリからバスを介して転送される波形データを一旦記憶する。補間部は、制御データが指示するピッチ情報に基づいて、転送された波形データから演算に必要な補間波形データを生成する。例えば、ピッチ情報が原波形に対して１．３オクターブ（約２．５倍の周波数に対応）高いピッチを指示するものとすれば、補間部は、図１２に示すように、波形データの黒丸印のサンプルから補間波形データを生成する。また、演算部は、制御データの指示する音量情報等に基づいて、補間波形データに演算を施し再生楽音データを生成する。出力バッファは、再生楽音データを一旦記憶し、出力サンプリング周波数に従って再生楽音データをＤＡＣに出力する。
【０００５】
この音源ＬＳＩによる処理は、例えば、出力サンプリング周波数（ＤＡＣレート）を４８ＫＨzとした場合に２５６サンプル出力するのに要する時間（５．３ｍｓ）を１フレーム（FRAME）とするフレーム単位で実行することが考えられる。ここで、出力バッファの容量は、２５６×２サンプル分の容量となる。一方、入力バッファの容量は、２５６サンプル分の再生楽音データを得るのに必要な容量となる。
すなわち、あるフレームにおいて、ＤＡＣレートとは非同期（高速）に、最終的な２５６サンプルを作成するために必要な個数の連続した波形データをメインメモリから入力バッファに一括して取り込む。そして、２５６サンプル分の再生楽音波形データを形成して出力バッファに書き込む。この出力バッファに書き込まれた２５６サンプルを次フレームにおいてＤＡＣレートで読み出すような処理を行う。
【０００６】
【発明が解決しようとする課題】
ところで、図１２の例のように、ピッチを１．３オクターブ上げる場合、図中、波形データの白丸印で示すサンプルは補間波形データの生成には利用されない。このような利用されないサンプル数はピッチを上げる比率に連動して多くなる。しかしながら、共有バス（例えばＰＣＩバス）を介してメインメモリに記憶された波形データを取り込んで再生楽音データを生成する構成の音源ＬＳＩでは、共有バスの使用効率を上げるという観点で、バースト転送モード等を使用して、メインメモリの連続したアドレス領域に記憶された波形データを一括して取り込むのが効率的であり、このようなバースト転送による波形データ取り込みでは、上記のような補間波形データの生成に不必要なサンプルも取り込まざるを得ない。バースト転送により一括して取り込まれるサンプルの量は入力バッファの容量で規定される。よって、入力バッファの容量が２Ｋバイトであり、出力バッファの容量が２５６バイトであるならば、バースト転送で一括して取り込めるサンプル数は２Ｋバイトで規定され、その結果として、再生楽音データの対応周波数範囲は８倍（３オクターブ）に制限される。
このようなピッチアップの上限が規定される不都合を解消する方法として、まず第１に、入力バッファの容量を大きくして一括して取り込めるサンプル数を多くすることが考えられるが、この方法は音源ＬＳＩのコストアップを招くという問題がある。第２の方法として、１フレーム（この例では２５６サンプル時間）を短縮することが考えられるが、この方法は出力バッファの容量も若干小さくできるという２次的な効果も期待できるものの音源ＬＳＩがバースト転送を要求する頻度が増えるために共有バスを占有する時間が多くなり、パーソナルコンピュータが（楽音発生と並行して）実行する他の処理が著しく制限されるという問題がある。第３の方法として、バースト転送モードを使用しないで必要な補間波形データの生成に必要なサンプルのみをアクセスして取り込むことも考えられるが、上記第２の方法の同様の理由により問題外である。
【０００７】
本発明は上述した問題点に鑑みてなされたものであり、入力バッファの容量を削減しつつ、再生処理における対応周波数範囲を拡大する楽音データ処理装置およびコンピュータシステムを提供するものである。
【０００８】
【課題を解決するための手段】
上記課題を解決するため請求項１に記載の発明にあっては、所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータをそれぞれ連続領域に記憶する外部記憶装置とは、バスを介して接続される楽音データ処理装置であって、再生ピッチを指示するピッチ情報が相対的に低いピッチを示しているときは前記オリジナル波形サンプルデータを、前記ピッチ情報が相対的に高いピッチを示しているときは間引波形サンプルデータを、前記ピッチ情報に基づくサンプルデータ数だけ、前記外部記憶装置から前記バスを介して一括して読み出す第１の読出部と、前記第１の読出部から読み出されたサンプルデータを記憶する入力バッファ部と、前記ピッチ情報に基づいて、前記入力バッファ部に記憶された複数のサンプルデータを読み出す第２の読出部と、予め定められた単位時間に一定レートで出力されるサンプル数に対応する楽音データを、前記ピッチ情報および前記第２の読出部から読み出された複数のサンプルデータから補間演算により、前記一定レートとは非同期に一括して生成する楽音データ生成部と、前記楽音データ生成部によって一括生成された楽音データを記憶する出力バッファ部と、この出力バッファ部に記憶された楽音データを前記一定レートで読み出す第３の読出部とを備えることを特徴とする。
【００１４】
また、請求項２記載の発明にあっては、前記外部記憶装置は、所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータの他に、オリジナル波形サンプルデータおよび間引波形サンプルデータのそれぞれに対応してループ再生情報を記憶し、前記第１の読出部は、サンプルデータとこれに対応する前記ループ再生情報とを読み出し、前記楽音データ生成部は、前記ループ再生情報に従い、ループ再生を行うことを特徴とする。
【００１５】
また、請求項３記載の発明にあっては、所定のオリジナル波形サンプルデータおよびこのオリジナル波形サンプルデータを一定の規則に従って間引いた間引波形サンプルデータをそれぞれ連続領域に記憶する記憶装置と、前記記憶装置とは、バスを介して接続されるとともに、再生ピッチを指示するピッチ情報が相対的に低いピッチを示しているときは前記オリジナル波形サンプルデータを、前記ピッチ情報が相対的に高いピッチを示しているときは間引波形サンプルデータを、前記ピッチ情報に基づくサンプルデータ数だけ、前記外部記憶装置から前記バスを介して一括して読み出す第１の読出部と、前記第１の読出部から読み出されたサンプルデータを記憶する入力バッファ部と、前記ピッチ情報に基づいて、前記入力バッファ部に記憶された複数のサンプルデータを読み出す第２の読出部と、予め定められた単位時間に一定レートで出力されるサンプル数に対応する楽音データを、前記ピッチ情報および前記第２の読出部から読み出された複数のサンプルデータから補間演算により、前記一定レートとは非同期に一括して生成する楽音データ生成部と、前記楽音データ生成部によって一括生成された楽音データを記憶する出力バッファ部と、この出力バッファ部に記憶された楽音データを前記一定レートで読み出す第３の読出部とを備えることを特徴とする。
【００１６】
また、請求項４記載の発明にあっては、楽音データ処理装置を実施するコンピュータシステムであって、前記記憶装置はコンピュータシステムのメインメモリであり、前記オリジナル波形サンプルデータを間引いて間引波形サンプルデータを作成する処理および作成した間引波形サンプルデータを前記記憶装置に記憶する処理は所定のソフトウエアによってコンピュータシステムのＣＰＵが行う処理であることを特徴とする。
【００２５】
【発明の実施の形態】
Ａ．第１実施形態
１．第１実施形態の構成
以下、図面を参照しつつ、本発明に係わる一実施形態であるコンピュータシステムの構成を説明する。図１は本実施形態に係わるコンピュータシステムのブロック図である。
図において、ＣＰＵ２０は、バス６０を介して各構成部分に接続されており、コンピュータシステムＡ全体を制御する。ＲＡＭ３０はメインメモリに相当する読み書き可能なメモリであって、ＣＰＵ２０の作業領域として機能する。また、ＲＯＭ４０は読出専用のメモリであって、そこにはブートプログラム等が格納されている。また、ハードディスク５０は、二次記憶装置に相当し、そこにはアプリケーションプログラムやデバイスドライバDDやマイクロプログラムMP等のプログラム、および制御データCDや波形データWDといった各種のデータが格納されており、必要に応じてプログラムやデータがＲＡＭ３０にロードされるようになっている。ここで、制御データCDは、音色情報（当該音色に対応する波形データWDが格納されているアドレス）、ピッチ情報および音量情報等を指示する。ここで、波形データWDは、例えば、ギターやピアノといった各種の音色に対応した楽器によって実際に発音させた楽音等をサンプリングして得られたデータである。
また、ピッチ情報は、波形データＷＤのオリジナルのピッチ、波形データＷＤのサンプリング時のサンプリング周波数、所望する再生楽音データＳＤのピッチおよび出力サンプリング周波数（ＤＡＣレート）によって決定する小数部を含む実数値で表される。例えば、波形データＷＤのサンプリング時のサンプリング周波数と出力サンプリング周波数（ＤＡＣレート）とが等しい（４８ｋＨｚ）と仮定すると、所望する再生楽音データＳＤのピッチが波形データＷＤのオリジナルのピッチと等しい場合にはピッチ情報は１となり、所望する再生楽音データＳＤのピッチが波形データＷＤのオリジナルのピッチの１オクターブ上の場合にはピッチ情報は２となる。
【００２６】
また、ＯＳの起動時にデバイスドライバDD、マイクロプログラムMP、および波形データWD等がバス６０を介してＲＡＭ３０に転送されるとともに、上位のアプリケーションによって指示される制御データCDが必要に応じてＲＡＭ３０に転送される。また、ＲＡＭ３０に格納されたマイクロプログラムMPは音源ＬＳＩ１０に転送されるようになっている。バス６０としては、大量のデータを高速転送できるものであればその種類は問わないが、この例にあっては、バースト転送モードを備えたＰＣＩバス（Peripheral Component Interconnect Bus）を用いるものとする。
【００２７】
ここで、ＲＡＭ３０に記憶される波形データWDは、ハードディスク５０に格納されている全てが記憶されるのではなく、使用頻度の高い音色に対応するものが記憶され、必要に応じてＲＡＭ３０とハードディスク５０との間で波形データWDのやり取りが行われる。また、デバイスドライバDDは、起動時および波形データWDの交換時に、ハードディスク５０から転送される波形データWDに基づいて、１オクターブ単位でサンプルを１／２に間引いた間引波形データWD1,WD2,WD3…を生成し、これをＲＡＭ３０に格納する。図２は、間引波形データWD1,WD2,WD3と波形データWDとの関係を示したものである。この場合、一定のピッチ情報および出力サンプリング周波数（４８KHz）で各間引波形データWD1,WD2,WD3を再生したとすると、波形データWDの音程に対して各間引波形データWD1,WD2,WD3の音程は、各々１オクターブ、２オクターブ、３オクターブ高くなる。また、波形データWDに対して各間引波形データWD1,WD2,WD3…のデータ量は、１／２，１／４，１／８…となる。
【００２８】
ところで、楽器を演奏した際に得られる波形は、図３（ａ）に示すように演奏開始から一定期間は複雑な形状をしているが（期間Ｔａ）、それ以降は安定した形状を示すことが多い（期間Ｔｂ）。このため、同一音色の波形データWDを長時間再生する場合には、期間Ｔａの波形WAを再生した後、期間Ｔｂの波形WBを再生し、これに引き続いて期間Ｔｂの波形WBを繰り返し再生するようにしている。これにより、波形データWDのデータ量を削減できる。なお、以下の説明では、波形WBの開始を「ループスタート」と呼び、波形WBの終了を「ループエンド」と呼ぶことにする。
【００２９】
ここで、図３（ｂ）はループスタート近傍における波形データWDのサンプリングの様子を示したものであり、同図（ｃ）はループエンド近傍における波形データWDのサンプリングの様子を示したものである。上述したように、波形WBを繰り返し再生する場合には、ループスタートとループエンドとを滑らかに接続する必要がある。そこで、この例にあっては、波形データWDを再生するためのパラメータとして、各波形データWD毎にループスタートアドレスLSAとループエンドアドレスLEAとを予め設定しておき、これらのパラメータを用いてループ再生を行うようにしている。ここで、ループスタートアドレスLSAとループエンドアドレスLEAは、波形データWDの最後から途中に戻って再生する際に用いる接続情報として機能する。ループスタートアドレスLSAとループエンドアドレスLEAは、ループスタート，ループエンドに各々対応するアドレスであり、それらの値は小数点を含むものとして与えられる。例えば、図３（ｂ）においてサンプリングポイントＳＰ１，ＳＰ２のアドレス値が各々「１０」，「１１」であれば、ループスタートアドレスLSAの値は「１０．６」となる。
【００３０】
この例では、波形データWDに基づいて各間引波形データWD1,WD2,WD3…を生成するので、間引波形データWD1,WD2,WD3…に対応するループスタートアドレスLSA1,LSA2,LSA3…とループエンドアドレスLEA1,LEA2,LEA3…とを各々生成する必要がある。このため、デバイスドライバDDは、各間引波形データWD1,WD2,WD3…をＲＡＭ３０に展開する際に、LSA，LEAに１／２，１／４，１／８…を各々乗算してLSA1,LSA2,LSA3…およびLEA1,LEA2,LEA3…を各々生成し、各間引波形データWD1,WD2,WD3…と対応づけてＲＡＭ３０に格納している。ここで、LSA1,LSA2,LSA3…およびLEA1,LEA2,LEA3…は、ループエンドからループスタートに戻り間引波形データWD1,WD2,WD3…を接続する際に用いられる変換接続情報として機能する。
【００３１】
この場合の演算は、１／２nをLSA，LEAに乗算すれば足りるので、LSA，LEAをビットシフトすることによって、LSA1,LSA2,LSA3…およびLEA1,LEA2,LEA3…を簡単に生成することができる。換言すれば、LSA1,LSA2,LSA3…およびLEA1,LEA2,LEA3…を算出し易いように、間引波形データWD1,WD2,WD3…の間引率１／２，１／４，１／８…を定めている。
【００３２】
次に、図１に示す音源ボード１００は、図示せぬ拡張スロットに装着されるようになっており、そこには、再生楽音データSDを生成する音源ＬＳＩ１０と再生楽音データSDをアナログ信号に変換して再生楽音信号Ｓを出力するＤＡＣ(Digital/Analog Converter)１７が設けられている。ここで、再生楽音データSDを再生する処理は、フレームと呼ばれる一定のサンプリング数単位で一括して行われるようになっており、この例では、再生楽音データSDを出力サンプリング周波数（４８ＫＨｚ）で２５６サンプルだけ出力する期間（５．３ｍｓ）を１フレームとしている。
またこの例では音源ＬＳＩは複数音（例えば６４チャンネル）の再生楽音データＳＤを同時に再生できるようになっている。
あるフレーム（２５６サンプル分）の再生楽音データを得るに当たって、まず、音源ＬＳＩ１０は第１チャンネルの２５６サンプルを再生するのに必要な波形データＷＤのサンプルをＰＣＩバス６０を介してＲＡＭ３０から取り込む。必要な波形データＷＤは音色情報により決定され、必要なサンプル数はピッチ情報により決定される。この取り込みは、先頭アドレスとサンプル数とを指定することでバースト転送により行われる。すなわち、ＲＡＭ３０の波形データＷＤ内の所定の連続領域が切り出されて音源ＬＳＩに一括して転送されることになる。音源ＬＳＩは取り込まれたサンプルに基づき第１チャンネルの２５６サンプルを作成する。次に第２チャンネルについて同様に２５６サンプルを作成し第１チャンネルの２５６サンプルと対応したサンプル同士加算して累算された２５６サンプルを得る。このような処理を６４チャンネル分繰り返し、最終的に６４チャンネル分を累算した２５６サンプルを得る。上記処理は各フレームで繰り返し行われるが、あるフレームで生成された２５６サンプルは次のフレームでサンプリング周波数に従いＤＡＣ１７へ転送される。なお、２５６サンプル分を貯えるバッファはダブルバッファ構成を採り、一方累算・書込みに使用された他方はＤＡＣへの読み出しに使われ、フレーム単位でそれぞれの役割が切り換わる。
【００３３】
音源ＬＳＩ１０は、制御部１１、ＰＣＩバスインターフェース１２、入力バッファ１３、補間部１４、演算部１５および出力バッファ１６から構成される。まず、制御部１１はＲＡＭ３０から転送されるマイクロプログラムMPをその内部に設けられたメモリ（図示略）に記憶し、マイクロプログラムMPに従って音源ＬＳＩ１０の各部を制御する命令ｉを発行する。次に、ＰＣＩバスインターフェース１２は、バスマスタ機能を有している。このため、音源ＬＳＩ１０は、ＣＰＵ２０を介することなくＲＡＭ３０から制御データCDや波形データWD等を直接読み出すことが可能である。
【００３４】
次に、入力バッファ１３は、ＰＣＩバスインターフェース１２を介してバースト転送される波形データWDや各間引波形データWD1,WD2,WD3…を一旦記憶する。この入力バッファ１３は２個のバッファ１３１，１３２から構成されており、一方にデータを書き込んでいる期間に他方からデータを出力するように構成されている。また、補間部１４は波形データWDまたは各間引波形データWD1,WD2,WD3…に補間処理を施して補間波形データWD'を生成する。ところで、音源ＬＳＩ１０のピッチアップ能力の限度は、入力バッファ１３と出力バッファ１６の記憶容量によって定まるが、この例では、約２倍の周波数範囲（１オクターブ）に対応できるように入力バッファ１３と出力バッファ１６の容量を規定している。
【００３５】
ここで、制御部１１は、制御データCDの音色情報に基づいてこれに対応する波形データWDの種類を特定するとともに、ピッチ情報に基づいて転送すべきデータを特定する。制御データCDの音色情報がバイオリンを指示するとともにそのピッチ情報が２．３オクターブアップを指示するのであれば、バイオリンの間引波形データWD2が特定される。この場合、間引波形データWD2は、波形データWDに対して２オクターブ上の音程に対応するものである。これに対してピッチ情報の指示は２．３オクターブアップを指示しているので０．３オクターブ足らないことになるが、音源ＬＳＩ１０内の補間を含むピッチシフト処理で実現される。
【００３６】
すなわち、制御部１１は、制御データCDの指示するピッチ情報が、波形データWDの音程に対して、音源ＬＳＩ１０のピッチアップ能力を越える場合には、音源ＬＳＩ１０のピッチアップ能力以内に収まるように最小の間引率を決定する。この例では、音源ＬＳＩ１０のピッチアップ能力は１オクターブであるから、制御部１１は波形データWDや各間引波形データWD1,WD2,WD3…の中からピッチ情報の整数部に対応するものを特定し、これを入力バッファ１３に転送するようにＰＣＩバスインターフェース１２に対して命令ｉを発行している。この意味において、制御部１１は、ピッチ情報に基づいてＲＡＭ３０に記憶されている複数の間引波形データWD1,WD2,WD3…の中から補間の対象となる間引波形データを特定し、これを読み出す読出部として機能する。
これにより、原波形の音程よりも高い音程の再生楽音信号Ｓを再生する場合、入力バッファ１３に転送するデータ量を削減して、バス６０を占有する時間を短時間にすることができる。また、入力バッファ１３のチップサイズを縮小し、しかも再生楽音データSDの周波数範囲を拡大することが可能となる。
【００３７】
次に、演算部１５は、制御データCDの音量情報等に基づきマイクロプログラムMPのフィルタ処理命令に従って、補間波形データWD'に演算処理を施し再生楽音データSDを生成する。この場合、フィルタ処理は、例えば、微妙な音色変調処理やリバーブやコーラスといった音響効果を与える処理であり、これにより、多彩な再生楽音データSDを再生することが可能となる。
【００３８】
次に、出力バッファ１６は、入力バッファ１３と同様に２個のバッファ１６１，１６２から構成されており、一方に再生楽音データSDをチャネル間の累積を行いつつ書き込んでいる期間に他方から再生楽音データSDを出力するように構成されている。この場合、出力バッファ１６からは、出力サンプリング周波数（４８ＫＨｚ）に従って再生楽音データSDが読み出されるようになっている。
こうして読み出された再生楽音データSDは、ＤＡＣ１７によってデジタル信号からアナログ信号に変換され再生楽音信号Ｓとして外部に出力される。
【００３９】
２．第１実施形態の動作
次に、図面を参照しつつ、本実施形態に係わるコンピュータシステムＡにおける楽音信号の再生処理に係わる動作を説明する。図４は楽音信号の再生処理動作を示すフローチャートである。
まず、デバイスドライバDDは、波形データWDに基づいて間引波形データWD1,WD2,WD3…を生成し、これらをＲＡＭ３０に格納する（ステップＳ１）。この際、波形データWDのループスタートアドレスLSAとループエンドアドレスLEAに基づいて、間引波形データWD1,WD2,WD3…のループスタートアドレスLSA1,LSA2,LSA3…とループエンドアドレスLEA1,LEA2,LEA3…とを各々生成し、ＲＡＭ３０に格納する（ステップＳ２）。例えば、ＲＡＭ３０の内容は、図５に示すように、ギターやバイオリンといった各種の音色に応じてデータが格納される。
【００４０】
次に、上位のアプリケーションか発音指令があり、デバイスドライバDDが制御データCDを音源ＬＳＩ１０の制御部１１に渡すと、制御データCDの音色情報とピッチ情報に基づいて転送すべきデータが特定される。制御部１１がＰＣＩバスインターフェース１２に対して転送データを指示すると、ＰＣＩバスインターフェース１２はバスマスタとして機能し、ＲＡＭ３０から当該データを読み出す（ステップＳ３）。例えば、音色情報がギターを指示し、ピッチ情報が１．３オクターブアップを指示するのであれば、図５に示すＲＡＭ３０から、１オクターブアップに対応するWD1,LSA1,LEA1が読み出されることになる。なお、WD1中の転送されるサンプル数は、音源ＬＳＩ１０内にて行う０．３オクターブ分のピッチアップ処理に必要なサンプル数となる。
【００４１】
次に、ピッチ情報に従い入力バッファ１３からデータが読み出されると、補間部１４は補間処理を施して補間波形データWD’を生成する（ステップＳ４）。ここでは、ピッチ情報が１．３オクターブ（２．５倍）を指示する場合を一例として説明する。
【００４２】
図６は、通常処理における補間動作を示す概念図である。この例では、波形データWDを１／２に間引いた間引波形データWD1が入力バッファ１３に格納され、この１／２間引波形データＷＤ1を間引きなしの波形データＷＤと同様に再生すれば１オクターブ分のピッチシフトが実現される。したがって、音源ＬＳＩ１０では０．３オクターブのピッチアップを行うことになる。この０．３オクターブ分のピッチアップ処理は、原理的には、入力バッファに記憶されたサンプルを間引きつつ出力バッファに格納される２５６サンプルを作成することにより実現されるが、この実施例では折り返しノイズを低減するために補間演算を行っている。この場合、補間部１４は隣接する２個のサンプルに基づき直線補間を行って補間波形ＷＤ’を生成する。例えば、d2’を生成する場合には、0.25d2+0.75d3を演算する。この場合の補間係数0.25、0.75は、ピッチ情報に基づいて算出される。通常（例えば、波形データＷＤのサンプリング時のサンプリング周波数と出力サンプリング周波数とが等しいようなケース）、１オクターブアップを示すピッチ情報は実数値２の値をとり、１．３オクターブアップを示すピッチ情報は実数値２．５の値をとる。上記のとおり、１オクターブのアップ分については、「間引波形データの利用」という形態をとるので、ピッチ情報の２．５という数値は１．５に補正されこの１．５を累算していった結果の小数部が上記補間係数として使われる。
【００４３】
なお、前述のとおり、ループスタートアドレスLSAとループエンドアドレスLEAはループエンドからループスタートに戻ったときにそのつなぎ目が綺麗に繋がるようにそのアドレスが決められている。ところが、この例では波形データＷＤに対して、一様に間引き処理を行い、間引き波形データＷＤ1、ＷＤ2、…、を用意するようにしているので、ループスタートアドレスLSA近傍のサンプルおよびループエンドアドレスLEA近傍のサンプルが、間引かれていたり、間引かれないでいたりする場合が生じるので、必ずしもループの繋がりが綺麗になるとは限らない。それを解決するためにはループ付近の補間を２点（直線補間）以上の多点補間とすること等が考えられる。
【００４４】
次に、演算部１５は補間波形データWD'に対して音色変調、音量付与、効果付与等の演算処理を実行して再生楽音データSDを生成しこれをチャネル間の累算を行いつつ出力バッファ１６に格納する（ステップＳ５）。この後、出力サンプリング周波数に従って出力バッファ１６から再生楽音データSDが読み出されると、ＤＡＣ１７によって再生楽音信号SDに変換され、外部機器に出力される（ステップＳ６）。
【００４５】
このように第１実施形態によれば、波形データWDをＲＡＭ３０に記憶するに際して、デバイスドライバDD（ソフトウエア）によって間引波形データWD1,WD2,WD3…を生成しこれをＲＡＭ３０に記憶しておき、ピッチ情報に基づいて必要なデータを音源ＬＳＩ１０に転送するようにしたので、入力バッファ１３のデータ容量を削減しつつ、再生楽音データSDの周波数範囲を拡大することが可能となる。
【００４６】
Ｂ．第２実施形態
上述した第１実施形態においては、ＲＡＭ３０に間引波形データWD1,WD2,WD3…を記憶するので、それらの記憶領域をＲＡＭ３０内に確保する必要がある。このため、ＲＡＭ３０の記憶容量が増大する。そこで、第２実施形態に係わるコンピュータシステムＡでは、ＲＡＭ３０の記憶容量を増大させることなく、再生処理における対応周波数範囲を拡大することを目的としている。
【００４７】
１．第２実施形態の構成
図７は、第２実施形態に係わるコンピュータシステムＡ’のブロック図である。このコンピュータシステムＡ’は、ＰＣＩバスインターフェース１２と入力バッファ１３との間に間引部１２’を設けた点を除いて、図１に示す第１実施形態のコンピュータシステムＡと同様である。なお、この例の入力バッファ１３は、ライトイネーブル端子を備えており、そこに供給されるライトイネーブル信号WEがハイレベルになると書込可能状態となり、一方、ローレベルになると書込不能状態になるものとする。
【００４８】
この間引部１２’は、入力バッファ１３に供給するライトイネーブル信号WEについて各種のパターンを格納したテーブルTBLを備えている。そして、制御データCDのピッチ情報の整数部に基づいて間引きのパターンを決定し、それに従って波形データWDを間引くように構成されている。具体的には、波形データWDと選択されたライトイネーブル信号WEを入力バッファ１３に供給する。なお、以下の説明では、間引きを行わない場合のライトイネーブル信号WEをWE0、１／２に間引く場合をWE1、１／４に間引く場合をWE2と表すことにする。
【００４９】
ここで、図８を参照してライトイネーブル信号WEの生成動作を説明する。なお、入力バッファ１３はライトイネーブル信号WEがハイレベルのとき書込可能となり、ローレベルのとき書込不能となる。まず、間引部１２’は、ピッチ情報の整数部に応じてテーブルTBLのどの記憶領域からライトイネーブル信号WEを読み出すかを決定する。この場合、ピッチアップが１オクターブ未満であればWE0を、１オクターブ以上２オクターブ未満であればWE1を、２オクターブ以上３オクターブ未満であればWE3を読み出す。例えば、ピッチ情報が１．３オクターブアップを指示するのであれば、WE1が選択されるので１／２の割合で波形データWDが間引かれ、入力バッファ１３には図２に示す間引波形データWD1が記憶される。したがって、ＲＡＭ３０には波形データWDのみを記憶しておけば足り、間引波形データWD1,WD2,WD3…は、必要に応じて間引部１２’によって生成される。この結果、ＲＡＭ３０の記憶容量を削減することが可能となる。
【００５０】
ところで、上述した第１実施形態では、ループ処理を可能にするため、ＲＡＭ３０に間引波形データWD1,WD2,WD3…のループスタートアドレスLSA1,LSA2,LSA3…とループエンドアドレスLEA1,LEA2,LEA3…とを予め生成し格納していた。一方、この例では、ＲＡＭ３０には波形データWD、ループスタートアドレスLSAおよびループエンドアドレスLEAのみを記憶する。このため、間引部１２’は波形データWDに対応するループスタートアドレLSAとループエンドアドレスLEAに基づいて、LSA1,LSA2,LSA3…およびLEA1,LEA2,LEA3…の中から必要とされるアドレスを生成する。なお、ループスタートアドレLSAとループエンドアドレスLEAは、ＰＣＩバスインターフェース１２の内部に設けられたレジスタに書き込まれるようになっている。
【００５１】
例えば、上述した例のように間引波形データWD1を入力バッファ１３に記憶する場合には、LSAとLEAをＰＣＩバスインターフェース１２から読み出し、これらをビットシフトすることによってLSA1とLEA1を生成し、これらを補間部１４に渡している。なお、補間部１４、演算部１５、出力バッファ１６およびＤＡＣ１７の構成は、第１実施形態と各々同一あるので、ここでは説明を省略する。
【００５２】
２．第２実施形態の動作
次に、第２実施形態に係わるコンピュータシステムＡ’における楽音信号の再生処理に係わる動作を説明する。図９は楽音信号の再生処理動作を示すフローチャートである。
【００５３】
まず、制御部１１は、制御データCDのピッチ情報に基づいて、ピッチ変換処理が音源ＬＳＩ１０のピッチアップ能力を越えるか否かを判定する（ステップＳ１０）。この例のピッチアップ能力は１オクターブであるから、ピッチ情報が１オクターブアップを越えると、ＹＥＳと判定され、ステップＳ１１に進む。制御部１１は、音源ＬＳＩ１０のピッチアップ能力以内に収まるように最小の間引率を設定すると（ステップＳ１１）、設定した間引率に従って、テーブルTBLからライトイネーブル信号WEを読み出す（ステップＳ１２）。これにより、波形データWDが所定の間引率で間引かれ、間引波形データWD1,WD2,WD3…が入力バッファ１３に格納されることになる。したがって、ＲＡＭ３０に間引波形データWD1,WD2,WD3…を予め生成し記憶する必要がない。
【００５４】
ところで、制御部１１が音源ＬＳＩ１０のピッチアップ能力以内に収まるように最小の間引率を設定するのは、間引に伴う折り返し歪みを低減するためである。例えば、ピッチ情報が０．６オクターブアップ（１．５倍の周波数に相当）である場合を考えると、波形データWD、間引波形データWD1、および補間波形データWD'は、図１０に示す関係がある。図示するように、補間波形データWD'を構成する各サンプリングデータは、波形データWDの方が間引波形データWD1より近い位置にある。例えば、補間波形データd'は波形データdそのものであるが、仮に、間引波形データWD1から補間波形データd'を算出する場合には、d2およびd3から算出する必要がある。このように、サンプリング位置が離れたデータから補間を行うと、誤差が生じ、これに起因して折り返し歪みが大きくなる。しかしながら、本実施形態では、音源ＬＳＩ１０のピッチアップ能力以内に収まるように最小の間引率を設定するので、折り返し歪みを抑圧することができる。
【００５５】
また、ピッチ情報の指示する値が大きくなると、サンプリング位置が離れたデータから補間を行う必要があるため、折り返し歪みが大きくなる。例えば、ピッチ情報が１．３オクターブアップを示す場合において、波形データWD、間引波形データWD1および補間波形データWD'の関係は、図１１に示すものとなる。図１１において斜線部は信号成分SSである。この場合、補間波形データWD'の信号成分SSと折り返し成分NSは近接する。このため、ＤＡＣ１７の出力フィルタを折り返し成分NSが通過してしまい再生楽音信号ＳのＳ／Ｎ比を劣化させることも想定される。しかしながら、実際には、波形データWDにおいて、幅広い音域にわたって共通の波形データWDが使われるような音色では、サンプリング周波数ｆｓに対する信号成分SSの周波数は十分離れるように設定されている。このため、補間波形データWD'の折り返し成分NSによって、再生楽音信号ＳのＳ／Ｎ比はほとんど劣化せず実用上問題とならない。
【００５６】
次に、ピッチ変換処理が音源ＬＳＩ１０のピッチアップ能力以内であるならば、ステップＳ１０の判定結果は、ＮＯとなる。この場合には、ライトイネーブル信号WEは、常にハイレベルとなる（図８のWE0を参照）。したがって、波形データWDがそのまま入力バッファ１３に書き込まれる。
【００５７】
こうして、入力バッファ１３に波形データWDや間引波形データWD1,WD2,WD3…が格納されると、補間部１４はピッチ情報に基づいて補間処理を実行する（ステップＳ１４）。補間部１４の動作は第１実施形態と同様である。
【００５８】
この後、演算部１５が演算処理を実行して再生楽音データSDをチャネル間の累算を行いつつ出力バッファ１６に格納すると（ステップＳ１５）、出力バッファ１６は再生楽音データSDをバッファリングして出力する。これを、ＤＡＣ１７を介してアナログ信号に変換することにより、再生楽音信号Ｓが生成される（ステップＳ１６）
【００５９】
このように第２実施形態によれば、波形データWDをＲＡＭ３０から読み出す際にピッチ情報に基づいて波形データWDを間引いたので、予め間引波形データWD1,WD2,WD3…を生成しこれをＲＡＭ３０に記憶する必要がない。このため、ＲＡＭ３０の記憶容量を削減しつつ、再生楽音データSDの周波数範囲を拡大することが可能となる。
【００６０】
Ｃ．変形例
以上、本発明に係わる実施形態を説明したが、本発明は上述した実施形態に限定されるものではなく、以下に述べる各種の変形が可能である。
▲１▼上述した実施形態においては、音源ＬＳＩ１０のピッチアップ能力は１オクターブとして説明したが、２オクターブであってもよい。この場合には、間引波形データとして、WD2,WD3,…をＲＡＭ３０に予め格納するか（第１実施形態に対応）、波形データWDの転送時に間引いてこれらを生成すればよい（第２実施形態に対応）。
【００６１】
▲２▼上述した実施形態において、補間部１４の補間処理は２つのサンプリングデータから直線補間を行ったが、本発明はこれに限定されるものではなく、３つ以上のサンプリングデータに重み付け係数を各々乗算しこれらを加算して補間波形データWD'を生成するようにしてもよい。この場合には、より誤差の少ない補間波形データWD'を生成することができ、再生楽音データSDの品質を向上させることができる。
【００６２】
▲３▼上述した実施形態においては、間引波形データWD1,WD2,WD3…は、波形データWDを１／２nに間引くことにより生成したが、本発明はこれに限定されるものではなく、間引率の設定に制限がないことは勿論である。特に、第２実施形態のように波形データWDを転送する際に間引部１２’で間引く場合には、予めピッチ情報の指示する値と対応づけてライトイネーブル信号WEをテーブルTBLに格納しておくことにより、補間波形データWD'を構成するデータのサンプリング位置に近いデータを入力バッファ１３に格納することができる。例えば、「1,0,1,1,0」を繰り返すパターンをテーブルTBLに格納しておき、ピッチ情報が１．３オクターブアップを指示する場合には、これを読み出してライトイネーブル信号WEを生成することによって、図１２に示す黒丸印のサンプリングデータのみを入力バッファ１３に格納するようにしてもよい。
【００６３】
【発明の効果】
上述したように本発明に係る発明特定事項によれば、第１のバッファの記憶容量を削減しつつ、楽音データの周波数範囲を拡大することが可能となる。また、間引部は、ピッチ情報に従って波形データを間引くから、予め記憶部に間引波形データを記憶しておく必要がなく、記憶部の記憶容量を削減することができる。
【図面の簡単な説明】
【図１】  本発明の第１実施形態に係わるコンピュータシステムのブロック図である。
【図２】  同実施形態に係わる間引波形データと波形データとの関係を示した概念図である。
【図３】  同実施形態に係わるループスタートおよびループエンドを説明するための概念図である。
【図４】  同実施形態に係わる楽音信号の再生処理動作を示すフローチャートである。
【図５】  同実施形態に係わるＲＡＭの記憶内容を示す図である。
【図６】  同実施形態に係わる通常処理における補間動作を示す概念図である。
【図７】  本発明の第２実施形態に係わるコンピュータシステムのブロック図である。
【図８】  同実施形態に係わるライトイネーブル信号の生成動作を説明するための概念図である。
【図９】  同実施形態に係わる楽音信号の再生処理動作を示すフローチャートである。
【図１０】  同実施形態において、波形データ、間引波形データ、および補間波形データの関係の一例を示す概念図である。
【図１１】  同実施形態に係わる波形データ、間引波形データ、および補間波形データの関係の一例を示す概念図である。
【図１２】  従来の補間動作を説明するための図である。
【符号の説明】
１１…制御部（第１の読出部、第２の読出部、第３の読出部）、１２’…間引部、１３…入力バッファ（入力バッファ部）、１４…補間部、１５…演算部（楽音データ生成部）、１６…出力バッファ（出力バッファ部）、３０…ＲＡＭ（記憶装置）、５０…ハードディスク（外部記憶装置）、SD…再生楽音データ（楽音データ）、WD…波形データ（オリジナル波形サンプルデータ）、WD1,WD2,WD3…間引波形データ（間引波形サンプルデータ）、LSA…ループスタートアドレス（ループ再生情報）、LEA…ループエンドアドレス（ループ再生情報）、LSA1,LSA2,LSA3…ループスタートアドレス（変換ループ再生情報）、LEA1,LEA2,LEA3…ループエンドアドレス（変換ループ再生情報）、Ａ，Ａ’…コンピュータシステム。
【図１】
0003659002.tif 000002
【図２】
0003659002.tif 000003
【図３】
0003659002.tif 000004
【図４】
0003659002.tif 000005
【図５】
0003659002.tif 000006
【図６】
0003659002.tif 000007
【図７】
0003659002.tif 000008
【図８】
0003659002.tif 000009
【図９】
0003659002.tif 000010
【図１０】
0003659002.tif 000011
【図１１】
0003659002.tif 000012
【図１２】
0003659002.tif 000013