説明

マルチメディアプロセッサ及びサウンドプロセッサ

【課題】CPU負荷を低減させ、リソースを節約しながら、高音質でピッチ変換を行なうことが可能なサウンドプロセッサを提供する。
【解決手段】サウンドプロセッサは、メモリからのPCMデータの読出速度を変えることによりピッチ変換を行なう装置であり、整数部100及び小数部102を持つアドレス記憶部90と、読出速度により定まる小数値を記憶するウェーブ周波数記憶部92と、一定期間ごとにアドレス記憶部90にウェーブ周波数記憶部92の小数値を加算する加算器94と、ウェーブデータアドレス記憶部90の小数部102から整数部100への桁上がりが生じたことに応答して、整数部100をアドレスとしてメモリにアクセスしPCM音声データを読出す読出部と、アドレス記憶部90の小数部102に記憶された値を用いてPCM音声データを補間し、桁上がりが生じたときの音声データを生成する補間処理部とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェーブデータに音響効果を付与して出力するサウンドプロセッサ及びその関連技術に関し、特に、PCM(pulse code modulation)音源の音質改善技術に関する。
【背景技術】
【0002】
ゲーム装置音源としてPCM波形データ(以下「ウェーブデータ」と呼ぶ。)が広く使用されている。ウェーブデータとは、アナログの音声波形信号を一定の時間間隔でA/D(アナログ/デジタル)変換することにより作られる。この時間間隔を定める周波数を「サンプリング周波数」と呼ぶ。ウェーブデータをサンプリング周波数と同じ周波数でD/A(デジタル/アナログ)変換することにより、原音の波形に極めて近い波形を再現することができる。
【0003】
ゲーム装置では、ゲームの局面にあわせて多様な音声を再生する必要がある。そのため、ゲーム装置には音声処理専用のサウンドプロセッサが設けられることが多い。動作時には、CPU(中央演算処理装置)の制御によってウェーブデータを外部メモリからサウンドプロセッサ専用のメモリに転送し、サウンドプロセッサの制御に必要なデータをレジスタに設定して、CPUからサウンドプロセッサに再生開始のコマンドを与える。サウンドプロセッサは、このコマンドに応答して専用メモリに格納されているウェーブデータに対する処理を行なう。
【0004】
一方で、ゲーム装置はコストを抑える必要があることから、ウェーブデータを記憶するために多くの記憶容量をサウンドプロセッサ専用に設けることができないという制約がある。そのため、サウンドプロセッサ専用メモリの記憶容量を小さくしながら、ウェーブデータの大きさをできるだけ少なくする工夫がされている。例えば同一のウェーブデータの再生時の周波数を変化させることで音声波形のピッチを変え、音声の高低を変化させる技術がある。また、エンベロープデータと呼ばれる、音声波形の包絡線を定義するデータを準備し、このデータによってウェーブデータから得られる音声信号を振幅変調することにより、小さなサイズのウェーブデータを用いて実際の楽器音に近いリアルな音声の再生を行う技術が存在している。
【0005】
図1に、従来の技術によるウェーブデータの構成と、再生された音声信号の波形の概略とを示す。図1を参照して、ウェーブデータ30には、基本波形の振幅を示すデータが各サンプリング時刻に応じて記憶されている。このデータを読出し、D/A変換することで音声信号波形32が得られる。図1に示すように、この音声信号波形32はその振幅が階段状に変化したものとなる。
【0006】
再生時に、サンプリング周波数より高い周波数でウェーブデータのD/A変換を行なうと、PCM音声は原音より高い周波数で再生される。サンプリング周波数より低い周波数でD/A変換を行なうと、PCM音声は原音より低い周波数で再生される。このように周波数を変換する技術は「ピッチ変換」と呼ばれ、サンプリングした一つの楽器音から様々な音高の音を作り出す目的等に用いられる。
【0007】
特許文献1には、従来のピッチ変換の手法が開示されている。特許文献1に開示の手法では、ピッチを制御するためのピッチ制御情報がレジスタに保持される。一定の時間間隔でこのピッチ制御情報が、累算器に加算される。ピッチ制御情報は小数点以下の値であり、累算器は整数部と小数部とを有するものとすると、ピッチ制御情報が累算器の小数部に加算されると、ある頻度で桁上がりが生じ、累算器の整数部が1だけ増加する。桁上がりが生ずるごとに、メモリ中でウェーブデータが記憶された領域の先頭から、累算器の整数部をオフセットアドレスとして定められる位置からウェーブデータを読出し、D/A変換を行なう。
【0008】
ピッチ制御情報の値を大きくするとウェーブデータを読出す速度が速くなり、ピッチが高くなる。ピッチ制御情報の値を小さくすると、ウェーブデータを読出す速度が遅くなり、ピッチが遅くなる。
【0009】
上記した特許文献1には、エンベロープ制御についても開示されている。図2の上段、中段、及び下段にそれぞれ、エンベロープの乗算対象となるPCM音声信号波形40と、エンベロープ波形42と、PCM音声波形42をエンベロープ波形で振幅変調して得た音声信号波形44とを示す。特許文献1に開示された技術では、このエンベロープ波形42も、PCM波形と同様、各サンプリング点におけるエンベロープのサンプリング値の形で記憶されており、ウェーブデータに対する振幅変調により最終的なPCM音声波形44を得ることができる。
【特許文献1】特開平11-220791号公報(段落0074〜0080、図6及び図7)
【発明の開示】
【発明が解決しようとする課題】
【0010】
一般的に、CPUによりゲームプログラムの制御が実行される。音声に関する実際の処理はサウンドプロセッサが行なうため、CPUはサウンドプロセッサにコマンドを与えるに先立ち、DMAによって外部メモリからサウンドプロセッサのための専用メモリにサウンドデータを転送させる処理を実行させる必要がある。この処理は、CPUに十分高い能力があれば容易であるが、ゲーム装置のようにCPUにそれほど高い能力のものを利用できない場合には、CPUに対する過大な負荷となる可能性がある。特にゲーム装置ではゲーム制御に高い応答性が必要とされるため、CPUにかかる負荷はできるだけ小さくすることが望ましい。
【0011】
また、サウンドプロセッサのための専用メモリとしてそれほど大きな容量を準備できないため、サウンド処理の自由度が低くなる。また、CPU及びサウンドプロセッサを含め、各ユニットが専用のメモリを持っているため、全体として必要なメモリ容量が大きくなってしまうという問題もある。
【0012】
さらに従来の技術によるピッチ変換においては、次のような問題がある。A/D変換して得たウェーブデータをそのまま再生する場合、サンプリング周波数とD/A変換周波数との差が大きくなると、エイリアスノイズが増大する。したがって音質に問題が生じる場合が多い。この問題はゲームの品質に大きな影響を及ぼすため、避けることが望ましい。
【0013】
また特許文献1に開示のエンベロープデータを用いることにより、少量の基本ウェーブデータから得られる音声の音色を多様に変化させることができるという効果がある。しかし、そのためには多くのエンベロープデータを持つ必要があり、結局サウンドプロセッサのためのメモリ容量が不足したり、装置のコストが高くなったりするという問題がある。
【0014】
それゆえに本発明の一つの目的は、CPUの負荷を低減させながら、従来と同様の音声処理を行なうことが可能なプロセッサを提供することである。
【0015】
本発明の他の目的は、CPUの負荷を低減させ、必要なリソースを節約しながら、従来と同様の音声処理を行なうことが可能なプロセッサを提供することである。
【0016】
本発明のさらに他の目的は、CPUの負荷を低減させ、必要なリソースを節約しながら、ピッチ変換をよい音質で行なうことが可能なサウンドプロセッサを提供することである。
【0017】
本発明の他の目的は、CPUの負荷を低減させ、必要なリソースを節約しながら、エンベロープ制御を行なうことが可能なサウンドプロセッサを提供することである。
【課題を解決するための手段】
【0018】
本発明の第1の局面に係るプロセッサは、外部メモリに接続されると、当該外部メモリに格納されたデータを利用して処理を行なうプロセッサであって、複数個の機能ブロックと、データの転送を行なうための転送手段と、複数個の機能ブロック及び転送手段により共通にアクセス可能な共通メモリと、共通メモリへの複数個の機能ブロック及び転送手段からのアクセスを調停するためのアービタと、を含み、転送手段は、外部メモリに接続可能で、かつ共通メモリにアクセス可能であり、複数個の機能ブロックのうちの予め選択されたものからのデータ転送要求に応じ、外部メモリの、データ転送要求により指定されたアドレスから、共通メモリの、データ転送要求により指定されたアドレスに、データ転送要求により指定された量のデータをアービタによる調停を受けて転送するものである。
【0019】
複数個の機能ブロックから共通メモリにアクセスできる。共通メモリの領域を、複数の機能ブロックにより共有しながら、動的に各機能ブロックに割当てることが可能となる。ある機能ブロックが使用しない領域については、他の機能ブロックに割当てることができる。各機能ブロックに個別に専用のメモリを持たせる場合と比較して、使用されない領域の大きさを小さくすることができ、メモリ容量が小さくてすむ。また、転送手段によって、外部メモリから共通メモリへのデータ転送が行なえるため、機能ブロックのうちの予め選択されたものは、それぞれ外部メモリから共通メモリへのデータ転送処理から解放される。その結果、それら機能ブロックにかかる負荷が小さくなり、処理を高速化できる。又は同じ性能を実現するために必要なハードウェアが小規模でよくなる。
【0020】
その結果、CPU等のほかの機能ブロックにかかる負荷を低減させながら、従来と同様の音声処理を行なうことが可能なマルチメディアプロセッサを提供することができる。また、必要なリソースを節約することもできる。
【0021】
好ましくは、アービタは、共通メモリへのアクセスを調停して一時に単一の機能ブロックのみに対し共通メモリへのアクセスを許可するものであり、複数個の機能ブロックは、中央演算処理装置と、中央演算処理装置からコマンドを受け、当該コマンドにしたがって処理を行なうためのサウンドプロセッサとを含み、中央演算処理装置とサウンドプロセッサとは、いずれも共通メモリへのバスのバスマスタとなることが可能である。
【0022】
サウンドプロセッサの処理の大部分は、ある音声を再生するというものであり、これは中央演算処理装置から初期的な指示を受ければ中央演算処理装置とは独立に実行できる。ただし、音声処理に必要なデータを共通メモリにおく場合、頻繁に共通メモリにアクセスする必要が生じる。そこで、サウンドプロセッサが共通メモリへのアクセスを能動的に要求できるようにすることにより、中央演算処理装置からの指示を受けることなく共通メモリから適切な時期に音声処理に必要なデータを読出すことが可能になり、中央演算処理装置の負荷が軽減されるとともに、サウンドプロセッサにおける処理も効率化できる。
【0023】
より好ましくは、サウンドプロセッサは、音声データに対し、外部メモリに予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうものである。エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表される。サウンドプロセッサは、外部メモリから共通メモリにエンベロープデータを転送するように転送手段に指示するための転送指示手段と、共通メモリからエンベロープデータを読出してデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む。
【0024】
エンベロープの形状が、連続する複数個の線分により特定される。それら線分の各々は、勾配と、その持続期間とを特定するデータにより表される。これらデータは、エンベロープのサンプル値そのものと比較してはるかに少ないデータ量で表現できる。その結果、エンベロープデータを記憶するために必要な記憶容量を削減できる。ひいては、このサウンドプロセッサを搭載したプロセッサのコストを下げることが可能になる。
【0025】
さらに好ましくは、デコード手段は、エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、一定間隔で記憶値から一定値を減算するダウンカウンタと、勾配を特定するデータを記憶するための勾配データ記憶手段と、ダウンカウンタの値が0以下となったことに応答して、エンベロープデータ内の次の線分を表すデータのうち、持続期間をダウンカウンタに、勾配を現すデータを勾配データ記憶手段に、それぞれロードするためのロード手段と、一定間隔ごとに、勾配データ記憶手段に記憶されたデータをエンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む。
【0026】
勾配データと持続期間を表すデータとを用い、ダウンカウンタ、ロード手段、記憶手段及び加算手段という簡単な回路構成でエンベロープサンプルの値を算出できる。
【0027】
サウンドプロセッサはさらに、エンベロープデータに基づいてエンベロープサンプルの値を算出する第1のモードと、エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たなエンベロープサンプルの値を算出する第2のモードとの切替を指定するためのモード切替指定手段と、第2のモードにおいて、エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、0より大きく1より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、外部から与えられる、第1及び第2の動作モードのいずれかを指定する信号に応答して、乗算手段により算出されたエンベロープサンプルの値と、デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、エンベロープサンプル記憶手段に記憶させるための手段とを含んでもよい。
【0028】
第1のモードでは、通常の形でエンベロープデータからエンベロープサンプルをデコードし、意図されたエンベロープ形状で音声データの振幅変調を行なうことができる。一方、第2のモードでは、直前のエンベロープサンプルに対し、0より大きく1より小さなリリースレートを乗算することにより得られたエンベロープサンプルで音声データの振幅変調が行なわれる。この第2のモードでは、元のエンベロープ形状にかかわらず、リリースレートにしたがって音声の大きさを徐々に小さくすることができる。したがって、急に音声の出力を終了する場合と比較して音質への悪影響を防止しながら、任意のときに音声の出力を終了させることができる。
【0029】
本発明の第2の局面に係るサウンドプロセッサは、所定の符号化方式により符号化され、所定のメモリに格納されたデジタル音声データを、指定された速度で読出して再生することにより、任意のピッチの音声信号を生成するためのサウンドプロセッサであって、所定のビット数の整数部及び所定のビット数の小数部を有する第1の記憶手段と、指定された速度に対応して定まる、所定の小数値を記憶するための第2の記憶手段と、一定期間ごとに、第1の記憶手段の記憶内容に第2の記憶手段に記憶された所定の小数値を加算するための加算手段と、加算手段による加算の結果、第1の記憶手段の小数部から整数部への桁上がりが生じたことに応答して、メモリの、第2の記憶手段の整数部の内容により定められるアドレスからデジタル音声データを読出すための読出手段と、第1の記憶手段の小数部に記憶された値を用いて読出手段により読出されたデジタル音声データを補間することにより、桁上がりが生じたときの音声データを生成するための補間手段とを含む。
【0030】
加算手段は、一定期間ごとに、第1の記憶手段の記憶内容に第2の記憶手段に記憶された所定の小数値を加算する。第1の記憶手段の小数部から整数部への桁上がりが生じると、読出手段が、メモリの、第2の記憶手段の整数部の内容により定められるアドレスからデジタル音声データを読出す。さらに、補間手段が、第1の記憶手段の小数部に記憶された値を用いて読出手段により読出されたデジタル音声データを補間する。こうした処理により、桁上がりが生じたときの音声データが生成される。第2の記憶手段の小数部は、隣接する音声データの間での遷移の位相を表していると考えられる。そこで、この小数部を用いて隣接する音声データの間での補間を行なうことにより、ピッチ変換した場合でもより滑らかな音声信号を生成できる。
【0031】
好ましくは、補間手段は、共通メモリの、整数部の値により定められるアドレスとその前後のアドレスとに格納された予め定める複数個のデジタル音声データの各々に対し、小数部に応じてそれぞれ定められる係数を乗算するための複数個の乗算手段と、複数個の乗算手段の出力を合計することにより、桁上がりが生じたときの音声データを生成するための合計算出手段とを含む。
【0032】
共通メモリの、整数部の値により定められるアドレスとその前後のアドレスとに格納された複数個のデジタル音声データの各々に対し、乗算手段が予め定める係数を乗算する。この係数は、小数部の値に応じて定められる。これら乗算手段の出力を合計算出手段で合計することで、音声データが生成される。複数個のデジタル音声データに対する積和演算によって音声データが生成されるため、ハードウェアによっても、ソフトウェアによっても補間手段を容易に実現できる。
【0033】
より好ましくは、サウンドプロセッサは、予め定められる係数を、第1の記憶手段の記憶内容により規定されるアドレスと、複数個のデジタル音声データのアドレスとの間に定義される距離の関数としてそれぞれ算出するための係数算出手段をさらに含む。
【0034】
さらに好ましくは、係数算出手段は、次の関数f(x)により係数を算出するための手段を含む。
【0035】
【数1】

ただし
【0036】
【数2】

であり、xは前記距離をあらわす。
【0037】
関数f(x)により、第1の記憶手段の記憶内容により規定されるアドレスに近い距離のアドレスのデジタル音声データには絶対値の大きな係数が割当てられ、遠くなると一般的に絶対値の小さな係数が割当てられる。小数部まで考慮して距離が算出されるため、補間点の位相まで反映した形で周囲の音声から補間点の音声を補間できる。
【0038】
好ましくは、読出手段は、加算手段による加算の結果、第1の記憶手段の小数部から整数部への桁上がりが生じたことに応答して、メモリの、第2の記憶手段の整数部をアドレスとしてメモリからデジタル音声データを読出すための手段を含む。
【0039】
第2の記憶手段の整数部をアドレスとしてメモリからデジタル音声データを読出すことができるため、読出手段の構成を簡易なものにすることができる。
【0040】
さらに好ましくは、所定の符号化方式はPCM符号化方式である。
【0041】
PCM符号化方式の場合、読出した符号から単純な処理で音声データを復号化でき、音声信号のピッチ変換を簡単な回路構成で、高品質で行なうことができる。
【0042】
本発明の第3の局面に係るサウンドプロセッサは、音声データに対し、予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうサウンドプロセッサであって、エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、サウンドプロセッサは、エンベロープデータをデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む。
【0043】
エンベロープの形状が、連続する複数個の線分により特定される。それら線分の各々は、勾配と、その持続期間とを特定するデータにより表される。これらデータは、エンベロープのサンプル値そのものと比較してはるかに少ないデータ量で表現できる。その結果、エンベロープデータを記憶するために必要な記憶容量を削減できる。ひいては、このサウンドプロセッサ及び当該サウンドプロセッサを搭載したマルチメディアプロセッサのコストを下げることが可能になる。
【0044】
好ましくは、デコード手段は、エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、一定間隔で記憶値から一定値を減算するダウンカウンタと、勾配を特定するデータを記憶するための勾配データ記憶手段と、ダウンカウンタの値が0以下となったことに応答して、エンベロープデータ内の次の線分を表すデータのうち、持続期間をダウンカウンタに、勾配を現すデータを勾配データ記憶手段にロードするためのロード手段と、一定間隔ごとに、勾配データ記憶手段に記憶されたデータをエンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む。
【0045】
勾配データと持続期間を表すデータとを用い、ダウンカウンタ、ロード手段、記憶手段及び加算手段という簡単な回路構成でエンベロープサンプルを算出できる。
【0046】
より好ましくは、サウンドプロセッサはさらに、エンベロープデータに基づいてエンベロープサンプルの値を算出する第1のモードと、エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たなエンベロープサンプルの値を算出する第2のモードとの切替を指定するためのモード切替指定手段と、第2のモードにおいて、エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、0より大きく1より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、外部から与えられる、第1及び第2の動作モードのいずれかを指定する信号に応答して、乗算手段により算出されたエンベロープサンプルの値と、デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、エンベロープサンプル記憶手段に記憶させるための手段とを含む。
【0047】
第1のモードでは、通常の形でエンベロープデータからエンベロープサンプルをデコードし、意図されたエンベロープ形状で音声データの振幅変調を行なうことができる。一方、第2のモードでは、直前のエンベロープサンプルに対し、0より大きく1より小さなリリースレートを乗算することにより得られたエンベロープサンプルで音声データの振幅変調が行なわれる。この第2のモードでは、元のエンベロープ形状にかかわらず、リリースレートにしたがって音声の大きさを徐々に小さくすることができる。したがって、急に音声の出力を終了する場合と比較して音質への悪影響を防止しながら、任意のときに音声の出力を終了させることができる。
【発明を実施するための最良の形態】
【0048】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一又は相当部分については同一の参照符号を付してその説明を援用する。アドレス情報等の先頭に付した「0x」はその情報が16進数であることを意味する。
【0049】
<原理>
本実施の形態の特徴として、D/A変換のタイミングに応じたウェーブデータの補間処理と、必要なメモリ容量を削減しながら従来と同様の効果を奏することができるエンベロープ制御とがある。以下、それらの原理について順に説明する。
【0050】
−補間処理
図3に、図1に示したものと同様のウェーブデータ30と、ウェーブデータ30から得られる理想的な音声信号波形60とを示す。本実施の形態で使用されるサウンドプロセッサは、ピッチ変換を行ないながら、得られる音声信号波形を音声信号波形60に近づけるような補間処理を行なう点に一つの特徴を持つ。そのために本実施の形態では、D/A変換のタイミングとして、特許文献1に開示の累算器と同様の構成を使用しながら、累算器の整数部の値だけではなく、小数部の値を用いて補間を行なう。
【0051】
なお、本実施の形態に係るマルチメディア装置では、PCMデータは1サンプルにつき8ビットを使用するものとする。さらに、サウンドチャンネルは64チャンネルが使用可能であるが、以下の説明では簡略のために原則として1チャンネルのみについて説明する。使用するデータも、基本的にチャンネル数だけ必要であり、メモリ上にもそれだけの記憶場所が必要である。しかし、以下の説明では、記載を分かりやすくするため、必要とされる記憶容量も1チャンネルのみのものとする。
【0052】
図4及び図6を参照して、ウェーブデータの補間は本実施の形態では以下のようにして行なわれる。図4は、実際の音声波形信号70を示し、実際の音声波形信号70に対し、補間ポイント72でのウェーブデータを補間により得ることを考える。図4において横軸は時間軸だが、一定時間でD/A変換をするため、横軸はメモリ上でのウェーブデータのアドレスに対応する。右がアドレスの大きくなる方向、左がアドレスの小さくなる方向である。
【0053】
補間ポイント72のウェーブデータを得るためには、補間ポイント72を中心とする前後8サンプルのウェーブデータを用いる。これらサンプルの値をD〜Dとする。そして、補間ポイント72とサンプルD〜Dとの間の距離をそれぞれX〜Xとする。ここでの距離は、二つのアドレスの間の差により定義される。補間ポイント72のアドレスとサンプルDのアドレスとの間の差Xは、補間ポイント72を指定している累算器の小数部の値に相当する。
【0054】
補間ポイント72の値Wは以下の補間式により算出される。
【0055】
【数3】

また、このように計算された補間ポイント72の値Wが、ウェーブデータとして許容される範囲の外になる場合は、この範囲内に収まるようにデータが修正される。すなわちWの値は、許容される最大値より大きければ最大値に、許容される最小値より小さければ最小値に、それぞれ修正される。
【0056】
この関数sinc(πx)のグラフ74を図5に示す。
【0057】
図4の補間ポイント72のリードアドレスの算出を行なうアドレス算出回路80の基本的構成について図6に示す。図6を参照して、このアドレス算出回路80は、特許文献1に記載の累算器に相当する現在のウェーブデータアドレス記憶部90及び加算器94と、特許文献1に記載のピッチ制御情報(以下この情報を「ウェーブ周波数」と呼ぶ。)を格納する部分に相当するウェーブ周波数記憶部92とを含む。ウェーブデータアドレス記憶部90及びウェーブ周波数記憶部92は、32ビットの整数部100及び110、16ビットの小数部102及び112をそれぞれ有する記憶部である。ただしウェーブ周波数記憶部92の整数部110にはゼロが書込まれ、小数部112にはピッチを制御するためのデータがCPUにより与えられる。またウェーブデータアドレス記憶部90の整数部100の値が、メモリ内のウェーブデータのアドレスを与える。
【0058】
加算器94は、所定のサンプリングレート記憶部96に格納された値により定まるサンプリングレートでウェーブデータアドレス記憶部90に格納された現在のウェーブデータアドレスとウェーブ周波数記憶部92に格納されたウェーブ周波数とを加算する。加算後の値はウェーブデータアドレス記憶部90に書込まれる。この加算の結果、ウェーブデータアドレス記憶部90の小数部102の値が1を超えると、キャリーが発生し、整数部100の値に1が加算され、それに応答してウェーブデータがメモリ内の整数部100により定められるアドレスから読出される。
【0059】
読出されたウェーブデータと、ウェーブデータアドレス記憶部90の小数部102とを用いて上記した補間処理が行なわれる。なお、この補間の際には補間ポイント72の前だけでなく後のサンプル(図4におけるD〜D)も必要とされる。したがって、実際には処理対象のアドレスのサンプルよりもアドレスの小さなデータ及び大きなデータも読出される。
【0060】
このような補間処理を行なうための補間回路114の構成例を図7に示す。図7を参照して、補間回路114はデジタルフィルタであり、直列接続された8個のレジスタ140〜158を含む、読出されたウェーブデータを順番に格納するためのシフトレジスタ120と、シフトレジスタ120の各レジスタ140〜158に格納されたサンプルデータの各々に対し、図6に示すウェーブデータアドレス記憶部90の小数部102の値(この値はサンプルの位相を表すと考えられるので、以下「WPHASE」と呼ぶ。)によって上記した式による係数を算出するための係数算出部122と、レジスタ140〜158に格納されたサンプルに対し、それぞれ係数算出部122で算出された係数を乗算するための8個の乗算器170〜184を含む乗算処理部124と、乗算器170〜184の出力を合計して補間後のPCMデータを出力するための合計部126とを含む。なお、合計部126による合計結果が0になるか、又は合計部126による合計結果の符号が変化したときに第1の値がセットされ、それ以外のときには第2の値がセットされるステータスレジスタ128が設けられている。ステータスレジスタ128の出力する信号は、本明細書ではゼロステータス信号と呼び、後述するようにエンベロープデータの適用タイミングの判定に用いられる。
【0061】
−エンベロープ処理
特許文献1に記載の技術では、エンベロープデータはサンプリングデータとして保持されている。したがってエンベロープデータの格納のために必要となるメモリ領域は比較的大きい。それに対し本実施の形態では、メモリ領域を節約するために、図8の中段により表されるように、エンベロープ200を連続する線分の集まり(線分210、212及び214)で表す。なお、図8に示す例では、エンベロープ200の最終部分の点218からはそれまでの線分と異なり、比較的急速に減衰する部分216となっている。この部分216は、音声の発生を終了させるために、メモリに格納されたエンベロープデータを使用せず、発生する音声の振幅をある一定の比率で減衰させる部分である。この部分216の存在により、対応する音声波形信号230の最終部分も対応して振幅が減衰していく。エンベロープのどの部分からこうした部分が始まるかはCPUにより任意に決められる。このように一定の比率でエンベロープの大きさが減衰していくように動作するモードを、エンベロープのリリースモードと呼ぶ。これに対し、それより前のようにエンベロープにしたがって音声を振幅変調するような動作モードをシーケンシャルモードと呼ぶ。
【0062】
図9に示すように、エンベロープデータ240は、これら線分を表す1又は複数のエントリ250,252,…,254と、エンベロープデータ240の終わりを表すエントリ256とを含む。
【0063】
エントリ250〜254の各々は32ビットからなり、勾配領域260と、持続時間領域262とを含む。勾配領域260は16ビット符号付き固定小数点データであり、持続時間領域262は16ビット符号無し整数データである。エントリ256の持続時間領域262の部分には0x0000が格納されている。エンベロープデータ読出しの際、持続時間領域262に0x0000が格納されていれば、そこでそのエンベロープデータが終了すると判定できる。エンベロープデータの終了が検出された場合、最終的に算出されたエンベロープサンプルの値を保持する。
【0064】
このようなデータからエンベロープによるウェーブデータの振幅変調を行なうためには、エンベロープのサンプル値を算出する処理が必要となる。本明細書では、この処理をエンベロープデータの「デコード」と呼ぶこととする。デコードは、基本的に、1サイクルごとに現在のエンベロープデータに対し勾配の値を加算する処理を、持続時間に相当するサイクル数だけ繰返すことにより行なわれる。
【0065】
図10に、図9に示すようなデータ形式のエンベロープデータ270から作成したエンベロープ272の例を示す。図10に示す例では、エンベロープデータ270の第1番目のエントリによれば、勾配は0x3800、持続時間はサンプリングのサイクル数にして0x0009(=9)サイクルである。第2番目のエントリによれば、勾配は0xD000、持続時間は0x0002(=2)サイクル、第3番目のエントリによれば、勾配は0xF800、持続時間は0x0018(=24)サイクルである。なお、エンベロープサンプルの値が0xFFFF以上になる場合には0xFFFFに修正され、エンベロープエンベロープサンプルの値が0以下になる場合には0に修正される。したがって、図10に示すように、第1番目のエントリが示すエンベロープにおいては、エンベロープサンプルの値が0xFFFF以上になる部分において0xFFFFに修正され、第3番目のエントリが示すエンベロープにおいては、エンベロープサンプルの値が0以下になる部分において0に修正されている。デジタル処理をするため、エンベロープデータは所定のタイミングで更新される。したがって、エンベロープ272は図10に示したように階段状に変化する外形となるが、ウェーブデータの振幅変調にはこのようなエンベロープで十分である。
【0066】
なお、エンベロープデータによる振幅変調でエンベロープデータの値が変化する際には、新たなエンベロープの値を適用するのはウェーブデータの振幅が0付近にある場合が望ましい。これは、ウェーブデータから得られる音声波形信号の振幅が大きいところでエンベロープの値を変化させると、得られる音声の振幅が急速に変化してしまい、音質が低下するためである。そこで、図11に示すように、音声波形信号280に対するエンベロープ290の変化をそのまま適用するのではなく、実線292により示されるように、音声波形信号280の振幅が0となった場合にはそのタイミングで、又はその値の符号が変化したときにはその直後のタイミングで、新たなエンベロープデータの値を適用する。図7に示すステータスレジスタ128の値がここで利用される。
【0067】
図12に、上記したエンベロープ処理のうち、シーケンシャルモードを実現するためのエンベロープ処理回路300の例を示す。図12を参照して、エンベロープ処理回路300は、所定のメモリの、エンベロープデータ用の領域から読出されたエンベロープデータを一時格納するためのエンベロープデータ保持部310と、エンベロープデータ保持部310に格納されたエンベロープデータのうち、持続時間が設定され、D/A変換のためのサンプリングレートにしたがって1ずつカウントを減算していくための持続時間ダウンカウンタ312と、エンベロープデータ保持部310に格納されたエンベロープデータのうちの勾配データを格納するための勾配記憶部320とを含む。
【0068】
エンベロープ処理回路300はさらに、持続時間ダウンカウンタ312のカウントが0となったことに応答して、エンベロープデータ保持部310から次のエンベロープデータを読出し、持続時間を持続時間ダウンカウンタ312に、勾配データを勾配記憶部320に、それぞれロードするためのロード回路314と、現在のエンベロープサンプルデータを保持するためのエンベロープサンプル保持部318と、エンベロープサンプル保持部318に保持されているエンベロープサンプルの値に、勾配記憶部320に保持されている勾配の値を加算してエンベロープサンプル保持部318に与えるための加算器322と、エンベロープ更新タイミング信号を発生するためのエンベロープ更新タイミング信号発生回路316とを含む。エンベロープサンプル保持部318は、エンベロープ更新タイミング信号発生回路316からエンベロープ更新タイミング信号が与えられたことに応答して、加算器322の出力を保持する。
【0069】
ロード回路314がエンベロープデータ保持部310から次のエンベロープデータを読み出した際に、エンベロープデータ内の持続時間領域に0x0000を検出すると、ロード回路314は以降のロード動作を停止する。ロード回路314でのロード動作が停止すると、エンベロープ更新タイミング信号発生回路316もエンベロープ更新タイミング信号の発生を停止し、エンベロープサンプル保持部318は、現在保持している値を保持し続ける。
【0070】
図13に、上記したエンベロープ処理のうち、リリースモードを実現するためのエンベロープ処理回路330の例を示す。図13を参照して、このエンベロープ処理回路330は、現在のエンベロープサンプルデータを保持するための、図12に示すものと同一のエンベロープサンプル保持部318と、エンベロープの減衰率(リリースレート)を格納するエンベロープリリースレート記憶部340と、エンベロープサンプル保持部318の保持するエンベロープサンプルの現在の値に、エンベロープリリースレート記憶部340に保持されたリリースレートを乗算し、エンベロープサンプル保持部318に与えるための乗算器342とを含む。
【0071】
リリースモードでは、エンベロープリリースレート記憶部340にリリースレートが設定される。乗算器342はエンベロープサンプル保持部318に格納されたエンベロープサンプルの現在値にエンベロープリリースレート記憶部340に格納されたリリースレートを乗算し、エンベロープサンプル保持部318に与える。エンベロープサンプル保持部318は、エンベロープの更新タイミングで乗算器342の出力を格納する。こうして、リリースモードでは、現在のエンベロープサンプルの値にリリースレートを乗算して次のエンベロープサンプルの値が決まる。リリースレートは0より大きく1より小さな値に設定されるので、リリースモードではエンベロープ処理回路330によりエンベロープの大きさはリリースレートの値に応じた率で減衰していく。
【0072】
本実施の形態では、上記したシーケンシャルモードとリリースモードとを切替可能とする。そのための回路構成を図14に示す。図14には、エンベロープ処理回路のうち、モードの切替に関連する部分のみと、エンベロープ処理回路により算出されたエンベロープの値に対し、所定のゲインを乗算することにより、ウェーブデータに関する振幅データを算出する部分とを示す。図14を参照して、このエンベロープ処理回路352は、勾配記憶部320、エンベロープサンプル保持部318、加算器322、エンベロープリリースレート記憶部340及び乗算器342に加えて、CPUにより設定されるゲインを格納するためのゲイン記憶部344と、加算器322又は乗算器342から出力されるエンベロープのサンプル値にゲイン記憶部344の保持されたゲインを乗算し、振幅データ348を出力するための乗算器346とを含む。乗算器346への入力はエンベロープサンプル保持部318にフィードバックされ保持される。
【0073】
勾配記憶部320は16ビット符号付き固定小数点数記憶部(整数部7ビット、小数部8ビット)である。エンベロープサンプル保持部318は16ビット符号無し固定小数点数記憶部(整数部8ビット、小数部8ビット)である。エンベロープリリースレート記憶部340は8ビット符号無し固定小数点数記憶部であり、小数部のみからなる。ゲイン記憶部344も同じく8ビット符号無し固定小数点数記憶部であり、小数部のみからなる。振幅データ(アンプリチュードデータ)348は16ビット符号無し固定小数点データであり、整数部8ビット及び小数部8ビットからなる。振幅データ348のうち、整数部8ビットが振幅D/A変換器(以下「DAC」と呼ぶ。)に出力される。DACから出力されるアナログ信号が、後述するオーディオDACブロック386内で、ウェーブデータをD/A変換するウェーブD/A変換器から出力されるアナログ信号とアナログ乗算される。この乗算は、カスケード接続されたD/A変換器により行われる。このようにして、ウェーブデータに振幅変調が施される。
【0074】
なお、上記説明では一つのサウンドチャンネルについての処理を説明したが、後述する本実施の形態に係るマルチメディアプロセッサは複数のサウンドチャンネルに対する処理を行なうことができる。したがって、上記した構成は複数のサウンドチャンネルに対して設けられており、サウンドチャンネルの数とシステムクロックの周波数とに応じた速度で各チャンネルに対する処理が実行される。
【0075】
<構成>
図15は、本実施の形態によるマルチメディアプロセッサ360の内部構成を示すブロック図である。図15に示すように、このマルチメディアプロセッサ360は、外部バス362を介して外部メモリ364に接続される。マルチメディアプロセッサ360は、後述する内部の各ブロックで共有されるメインRAM(Random Access Memory)388と、各ブロックからのメインRAM388に対するアクセスを調停するためのメインRAMアクセスアービタ390とを含む。なお、メインRAM388にアクセスすることのあるブロックはいずれもメインRAMアクセスアービタ390を介し、その調停を受けるので、以下の説明ではそれらがメインRAMアクセスアービタ390を介してメインRAM388にアクセスすることについては特に触れない。
【0076】
マルチメディアプロセッサ360はさらに、外部バス362に接続される外部メモリインタフェース380と、外部メモリ364とマルチメディアプロセッサ360の内部のメモリとの間のデータ転送を行なうためのDMAC(direct memory access controller)382と、ゲームを制御するためのプログラムを実行するためのCPU392と、CPU392に接続されたCPUローカルRAM394とを含む。
【0077】
マルチメディアプロセッサ360はさらに、CPU392からのコマンドを受けて動作するレンダリングプロセッシングユニット(以下、「RPU」と呼ぶ。)396と、RPU396に接続されたカラーパレットRAM398と、CPU392からのコマンドを受けて動作するサウンドプロセシングユニット(以下、「SPU」と呼ぶ。)400と、SPU400に接続されたSPUローカルRAM402と、CPU392からのコマンドを受けて動作するジオメトリエンジン(以下、「GE」と呼ぶ。)404と、CPU392からの指示を受けて動作するYソーティングユニット(以下、「YSU」と呼ぶ。)406とを含む。
【0078】
マルチメディアプロセッサ360はさらに、周辺装置368との間のインタフェースとなる外部インタフェースブロック408と、CPU392、RPU396、SPU400、GE404、YSU406、及び外部インタフェースブロック408が接続されるI/Oバス410と、RPU396の出力するデジタルビデオ信号を外部のビデオ出力機器370に与えるためのビデオDAC(digital to analog converter)384と、SPU400の出力するデジタルオーディオ信号を外部のオーディオ出力機器372に与えるためのオーディオDACブロック386と、外部のアナログ装置366からのアナログ信号をデジタル信号に変換し、CPU392の制御にしたがってI/Oバス410上に出力するためのA/Dコンバータ(以下、「ADC」と呼ぶ。)412とを含む。メインRAM388及び外部メモリ364を区別して説明する必要がないときは、「メモリMEM」と表記する。
【0079】
CPU392は、メモリMEMに格納されたプログラムを実行して、各種演算やシステム全体の制御を行なう。また、CPU392は、DMAC382にプログラム及びデータの転送要求を行なうこともできるし、DMAC382を介さずに、外部メモリ364から直接プログラムコードをフェッチし、外部メモリ364に直接データアクセスを行なうこともできる。
【0080】
I/Oバス410は、CPU392をバスマスタとするシステム制御用のバスであり、バススレイブである各機能ユニット(外部メモリインタフェース380、DMAC382、RPU396、SPU400、GE404、YSU406、及び外部インタフェースブロック408)の制御レジスタ及びローカルRAM394,398,402へのアクセスに用いられる。このようにして、これらの機能ユニットは、I/Oバス410を通じて、CPU392により制御される。
【0081】
CPUローカルRAM394は、CPU392専用のRAMであり、サブルーチンコールや割り込み時におけるデータの退避等を行なうためのスタック領域、及びCPU392のみが扱う変数の格納領域等として使用される。
【0082】
RPU396は、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成する。具体的には、RPU396は、YSU406によるソート済みの、ポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、メインRAM388から読出し、所定の処理を実行して、スクリーン(表示画面)のスキャンに合わせて水平ラインごとにイメージを生成する。生成されたイメージは、コンポジットビデオ信号波形を示すデータストリームに変換され、ビデオDAC384に出力される。また、RPU396は、DMAC382に対して、ポリゴン及びスプライトのテクスチャパターンデータの取込みのためのDMA転送要求を行なう機能を有する。
【0083】
テクスチャパターンデータとは、ポリゴン又はスプライトに貼り付けられる2次元の画素配列データであり、各画素データは、カラーパレットRAM398のエントリを指定するための情報の一部である。以降、テクスチャパターンデータの画素を「テクセル」と呼称し、スクリーンに表示されるイメージを構成する画素を指す「ピクセル」とは区別して使用する。従って、テクスチャパターンデータは、テクセルデータの集合である。
【0084】
ポリゴン構造体配列は、多角形状のグラフィック要素であるポリゴンのための構造体配列であり、スプライト構造体配列は、スクリーンに平行な矩形のグラフィック要素であるスプライトのための構造体配列である。ポリゴン構造体配列の要素を、「ポリゴン構造体インスタンス」と呼び、スプライト構造体配列の要素を、「スプライト構造体インスタンス」と呼ぶ。ただし、両者を区別して説明する必要がないときは、単に「構造体インスタンス」と呼ぶこともある。
【0085】
ポリゴン構造体配列に格納された各ポリゴン構造体インスタンスは、ポリゴンごとの表示情報(スクリーンにおける頂点座標、テクスチャマッピングモードでのテクスチャパターンに関する情報及びグーローシェーディングモードでのカラーデータ(RGBのカラーコンポーネント)を含む。)であり、一つのポリゴン構造体インスタンスに一つのポリゴンが対応している。スプライト構造体配列に格納された各スプライト構造体インスタンスは、スプライトごとの表示情報(スクリーンにおける座標及びテクスチャパターンに関する情報を含む。)であり、一つのスプライト構造体インスタンスに一つのスプライトが対応している。
【0086】
ビデオDAC384は、アナログのビデオ信号を生成するためのデジタル/アナログ変換器である。ビデオDAC384は、RPU396から入力されたデータストリームをアナログのコンポジットビデオ信号に変換し、ビデオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)に出力する。
【0087】
カラーパレットRAM398は、本実施の形態では512色すなわち512エントリのカラーパレットからなる。RPU396は、テクスチャパターンデータに含まれるテクセルデータをカラーパレットのエントリを指定するインデックスの一部として用いることにより、カラーパレットRAM398を参照し、テクスチャパターンデータをカラーデータ(RGBのカラーコンポーネント)に変換する。
【0088】
本実施の形態の特徴の一つであるSPU400は、ウェーブデータ、アンプリチュードデータ、及びメインボリュームデータを生成する。具体的には、SPU400は、最大64チャンネル分のウェーブデータを生成して時分割多重化するとともに、最大64チャンネル分のエンベロープデータを生成してチャンネルボリュームデータ(ゲイン)と乗算し、アンプリチュードデータを時分割多重化する。そして、SPU400は、メインボリュームデータ、時分割多重化されたウェーブデータ、及び時分割多重化されたアンプリチュードデータを、オーディオDACブロック386に出力する。オーディオDACブロック386は、このようにSPU400から与えられた左右のチャンネルのウェーブデータに、左右のチャンネルのアンプリチュードデータを乗算し、さらにメインボリュームを乗算してアナログ信号として出力する機能を持つ。このアナログオーディオ信号は、オーディオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)のオーディオ入力端子(図示せず)に出力される。また、SPU400は、DMAC382に対して、ウェーブデータ及びエンベロープデータの取込みのためのDMA転送要求を行なう機能を有する。SPU400の詳細は後述する。
【0089】
SPUローカルRAM402は、SPU400がウェーブ再生及びエンベロープ生成を行なう際に用いるパラメータ(例えば、ウェーブデータやエンベロープデータの格納アドレスやウェーブ周波数小数部等)を格納する。
【0090】
GE404は、三次元イメージを表示するための幾何演算を実行する。具体的には、GE404は、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)等の演算を実行する。
【0091】
YSU406は、メインRAM388に格納されているポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、ソートルール1〜4に従ってソートする。この場合、ポリゴン構造体配列とスプライト構造体配列とで、別個にソートが行なわれる。
【0092】
以下、YSU406によるソートルール1〜4について説明するが、その前に座標系について説明する。テレビジョンモニタ等のディスプレイ装置(図示せず)への実際の表示に用いられる二次元座標系をスクリーン座標系と呼ぶ。本実施の形態では、スクリーン座標系は、水平方向2048ピクセル×垂直方向1024ピクセルの2次元ピクセル配列から構成される。座標原点は左上にあり、右方向がX軸の正、下方向がY軸の正に相当する。ただし、実際に表示される領域は、スクリーン座標系の全空間ではなく一部の空間である。この表示領域をスクリーンと呼ぶことにする。
【0093】
ソートルール1は、最小Y座標が小さい順に、各ポリゴン構造体インスタンスを並べ替えることである。最小Y座標とは、ポリゴンの全頂点のY座標のうち、最も小さいY座標のことである。Y座標はスクリーンの垂直座標であり、下向きが正方向である。ソートルール2は、最小Y座標が同じである複数のポリゴンについては、デプス値が大きい順に、各ポリゴン構造体インスタンスを並べることである。なお、デプス値が大きいほど奥に描画される。
【0094】
ただし、YSU406は、スクリーンの先頭ラインに表示されるピクセルを持つ複数のポリゴンについては、最小Y座標が異なっている場合でも、それらが同一であるとみなして、ソートルール1ではなく、ソートルール2に従って、各ポリゴン構造体インスタンスの並べ替えを行なう。つまり、スクリーンの先頭ラインに表示されるピクセルを持つポリゴンが複数存在する場合は、最小Y座標が同一であるとみなして、デプス値が大きい順に並べ替えられる。これがソートルール3である。
【0095】
インタレーススキャンの場合でも、ソートルール1〜3が適用される。ただし、奇数フィールドを表示するためのソートでは、奇数ラインに表示されるポリゴンの最小Y座標及び/又はその奇数ラインの一つ前の偶数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行なう。ただし、先頭の奇数ラインは除く。なぜなら、その一つ前の偶数ラインが存在しないからである。一方、偶数フィールドを表示するためのソートでは、偶数ラインに表示されるポリゴンの最小Y座標及び/又はその偶数ラインの一つ前の奇数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行なう。これがソートルール4である。
【0096】
スプライトに関するソートルール1〜4は、それぞれポリゴンに関するソートルール1〜4と同様である。
【0097】
外部メモリインタフェース380は、外部バス362を介して、外部メモリ364からのデータの読出し、及び外部メモリ364へのデータの書込みを司る。この場合、外部メモリインタフェース380は、図示しないEBI(External Bus Interface)優先順位テーブルに従って、CPU392及びDMAC382からの外部バスアクセス要求要因(外部バス362へのアクセスを要求する要因)を調停して、いずれか一つの外部バスアクセス要求要因を選択する。そして、選択した外部バスアクセス要求要因に対して外部バス362へのアクセスを許可する。EBI優先順位テーブルは、CPU392からの複数種類の外部バスアクセス要求要因及びDMAC382からの外部バスアクセス要求要因の優先順位を定めたテーブルである。
【0098】
外部バスアクセス要求要因として、CPUに含まれる図示しないIPL(initial program loader)によるブロック転送要求、CPU392によるデータアクセス要求、CPU392による命令フェッチ要求、及びDMAC382によるDMA要求がある。
【0099】
DMAC382は、メインRAM388と、外部バス362に接続された外部メモリ364と、の間でDMA転送を行なう。この場合、DMAC382は、図示しないDMA優先順位テーブルに従って、CPU392、RPU396、及びSPU400からのDMA転送要求要因(DMA転送を要求する要因)を調停して、いずれか一つのDMA転送要求要因を選択する。そして、外部メモリインタフェース380に対して、DMA要求を行なう。DMA優先順位テーブルは、CPU392、RPU396、及びSPU400からのDMA要求要因の優先順位を定めたテーブルである。
【0100】
SPU400のDMA要求要因として、(1)ウェーブデータをウェーブバッファに転送すること、(2)エンベロープデータをエンベロープバッファに転送すること、がある。ウェーブバッファ及びエンベロープバッファは、それぞれメインRAM388上に設定されるウェーブデータ及びエンベロープデータのテンポラリ格納領域である。なお、SPU400の2つのDMA要求要因間の調停は、SPU400内のハードウェア(図示せず)で行なわれ、DMAC382は関知しない。
【0101】
RPU396のDMA要求要因として、テクスチャパターンデータをテクスチャバッファに転送すること、がある。テクスチャバッファは、メインRAM388上に設定されるテクスチャパターンデータのテンポラリ格納領域である。
【0102】
CPU392のDMA要求要因として、(1)仮想記憶管理においてページミスが発生した場合のページ転送、(2)アプリケーションプログラム等が要求するデータ転送、がある。なお、CPU392内で複数のDMA転送要求が同時に発生した場合は、その調停はCPU392で実行されるソフトウェアにて行なわれ、DMAC382は関知しない。
【0103】
外部インタフェースブロック408は、周辺装置368とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。24チャンネルのI/Oポートの各々は、4チャンネル分のマウスインタフェース機能、4チャンネル分のライトガンインタフェース機能、2チャンネル分の汎用タイマ/カウンタ、1チャンネル分の調歩同期式シリアルインタフェース機能、1チャンネル分の汎用パラレル/シリアル変換ポート機能のうち1又は複数に内部接続されている。
【0104】
ADC412は、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置366から入力されたアナログ信号をデジタル信号に変換する。例えば、マイク音声等のアナログ入力信号をサンプリングしてデジタルデータに変換する。
【0105】
メインRAMアクセスアービタ390は、機能ユニット(CPU392、RPU396、SPU400、GE404、YSU406、DMAC382、及び外部インタフェースブロック408(汎用パラレル/シリアル変換ポート))からのメインRAM388へのアクセス要求を調停して、いずれかの機能ユニットにアクセス許可を出す。メインRAMアクセスアービタ390は、CPU392及びSPU400をバスマスタとする、メインRAM388へのアクセスのためのバスとしての機能も果たす。
【0106】
メインRAM388は、CPU392のワーク領域、変数格納領域、及び仮想記憶管理領域等として利用される。また、メインRAM388は、CPU392が他の機能ユニットに受け渡すデータの格納領域、RPU396及びSPU400が外部メモリ364からDMAによって取得したデータの格納領域、GE404及びYSU406の入力データ及び出力データの格納領域等としても使用される。したがってメインRAM388は、CPU392、RPU396、SPU400、GE404及びYSU406により共有されるメモリである。この構成により、メインRAM388の領域を必要なときに必要な機能ユニットに動的に割当てることが可能になる。
【0107】
各機能ユニットに専用のRAMを設ける場合には、各専用RAMの領域を、使用される可能性のある最大容量としておく必要がある。それに対し、本実施の形態におけるようにメインRAM388を複数の機能ユニットで共有し、必要なときに必要な容量だけを適切な機能ユニットに割当てることにより、使用されない領域が発生することを避けることができ、メインRAM388の領域全体を有効に利用できる。その結果、マルチメディアプロセッサ360全体として必要な記憶容量の総量が削減できる。
【0108】
外部バス362は、外部メモリ364にアクセスするためのバスである。CPU392及びDMAC382から、外部メモリインタフェース380を介してアクセスされる。外部バス362のアドレスバスは、30ビットから成り、最大で1Gバイト(=8Gビット)の外部メモリ364を接続することができる。外部バス362のデータバスは、16ビットから成り、8ビット又は16ビットのデータバス幅を持つ外部メモリ364を接続できる。異なるデータバス幅を持つ外部メモリを同時に接続可能であり、アクセスする外部メモリによってデータバス幅を自動的に切替える機能が備えられる。
【0109】
以下、SPU400の構成及び機能について詳細に説明していく。まず、以下の記載で使用する用語について説明する。
【0110】
SPU400は、全部で64チャンネルのサウンドチャンネルで音声データを処理できる。ここで、物理線に対応するサウンドチャンネルを物理サウンドチャンネルと呼び、物理サウンドチャンネルに出力するウェーブデータを再生するサウンドチャンネルである論理サウンドチャンネルとは区別する。
【0111】
以下では、単に「サウンドチャンネル」と言う場合は、論理サウンドチャンネルを意味する。また、本実施の形態では、左右2つの物理サウンドチャンネルを設定している。左音声信号(左ウェーブデータ)を再生する物理サウンドチャンネルを「左チャンネル」、右音声信号(右ウェーブデータ)を再生する物理サウンドチャンネルを「右チャンネル」と呼ぶ。
【0112】
図16に、図15に示すSPU400の内部構成を概略的に示す。図16を参照して、SPU400は、データ処理ブロック438、コマンド処理ステートマシン430、制御レジスタセット432、DMAリクエスタ434、メインRAMインタフェース436、クロストーク低減回路442、及びSPUローカルRAMインタフェース440を含む。
【0113】
コマンド処理ステートマシン430は、CPU392がI/Oバス410を通じて発行するコマンドに応じて、SPU400のコマンド実行における状態制御を行なう。発行されるコマンドの種類は、「START」、「STOP」、「UPDATE」、及び「NOP」の4種類である。これらのコマンドは、コマンド処理ステートマシン430のSPUコマンドレジスタ450に、対象となる論理サウンドチャンネルの番号と共に書込まれる。
【0114】
コマンドSTARTは、指定された論理サウンドチャンネルの再生を開始させる命令である。CPU392は、このコマンドSTARTの発行前に、SPUローカルRAM402に再生に必要なパラメータを予め書込んでおく。コマンドSTOPは、指定された論理サウンドチャンネルの再生を停止させる命令である。
【0115】
コマンドUPDATEは、指定された論理サウンドチャンネルの再生中に、再生に用いられるパラメータの一部を更新させる命令である。CPU392は、このコマンドUPDATEの発行前に、SPU400内の対応する制御レジスタ(次に説明する制御レジスタセット432に含まれる。)に更新するパラメータを予め書込んでおく。
【0116】
コマンドNOPは、特に何の処理も行なわせない命令である。
【0117】
制御レジスタセット432は、SPUコマンドレジスタ450以外のSPU400を制御するための複数の制御レジスタ(図示せず)を含む。通常、制御レジスタセット432には、SPU400の動作中に何らかの制御を実行するために必要なデータが書込まれる。制御レジスタセット432は、論理サウンドチャンネル再生に用いられるパラメータを更新するためのアップデートレジスタを含む。コマンドUPDATEを発行することにより、アップデートレジスタの値がSPU400により読出され、論理サウンドチャンネル再生に用いられるパラメータが更新される。
【0118】
例えば、制御レジスタセット432は、補間モードレジスタ、ウェーブ周波数アップデートレジスタ、エンベロープリリースレートアップデートレジスタ、ゲインアップデートレジスタ、エンベロープモードアップデートレジスタ、ウェーブサンプリングレートレジスタ、エンベロープサンプリングレートレジスタ及びクロストーク低減回路制御レジスタ(いずれも図示せず)等を含む。補間モードレジスタには、前述した補間処理を行なうか否かを指定するデータが設定される。ウェーブ周波数アップデートレジスタには、音高を制御するウェーブ周波数(の小数部)の更新値が設定される。ゲインアップデートレジスタには、当該チャンネルのゲインの更新値が設定される。エンベロープモードアップデートレジスタには、エンベロープ処理におけるシーケンシャルモードとリリースモードとのいずれかを示す更新値が設定される。エンベロープリリースレートアップデートレジスタには、リリースモードにおけるエンベロープのリリースレートの更新値が設定される。ウェーブサンプリングレートレジスタには、ウェーブデータをD/A変換する周波数を指定する値が設定される。エンベロープサンプリングレートレジスタには、アンプリチュードデータ(エンベロープデータに左右のゲインを乗算したもの)をSPUローカルRAM402から読出しD/A変換する際の周波数を指定する値が設定される。クロストーク低減回路制御レジスタには、オーディオDACブロック386内でカスケード接続されたDAC間の伝達遅延に起因する、サウンドチャンネル間のクロストークノイズを低減するためのパラメータが設定される。これらのレジスタの内、ウェーブ周波数アップデートレジスタ、エンベロープリリースレートアップデートレジスタ、ゲインアップデートレジスタ、エンベロープモードアップデートレジスタに設定されるパラメータは、コマンドUPDATEが発行されると、データ処理ブロック438によりSPUローカルRAM402内の対応する記憶部に転記される。
【0119】
DMAリクエスタ434は、コマンド処理ステートマシン430からの指示に従い、ウェーブデータ及びエンベロープデータを外部メモリ364から取得するために、DMAC382に対してDMA転送要求を発行する。また、DMA転送によって取得したデータをデータ処理ブロック438に出力する。
【0120】
データ処理ブロック438は、ウェーブデータの取得及び再生、エンベロープデータの取得及びデコード、アンプリチュードデータの生成、エコー処理、並びにマイクエコー処理を行なう。
【0121】
そして、データ処理ブロック438は、左チャンネルに対する複数の論理サウンドチャンネルのウェーブデータを時分割多重化し、左チャンネルウェーブデータMWLとして、クロストーク低減回路442に出力する。また、データ処理ブロック438は、右チャンネルに対する複数の論理サウンドチャンネルのウェーブデータを時分割多重化し、右チャンネルウェーブデータMWRとして、クロストーク低減回路442に出力する。
【0122】
さらに、データ処理ブロック438は、左チャンネルに対する複数の論理サウンドチャンネルのアンプリチュードデータを時分割多重化し、左チャンネルアンプリチュードデータMAMLとして、クロストーク低減回路442に出力する。また、データ処理ブロック438は、右チャンネルに対する複数の論理サウンドチャンネルのアンプリチュードデータを時分割多重化し、右チャンネルアンプリチュードデータMAMRとして、クロストーク低減回路442に出力する。
【0123】
このように、物理サウンドチャンネル毎に時分割多重化を行なうことにより、物理サウンドチャンネル毎に複数の論理サウンドチャンネルのウェーブデータのミキシング、及び、物理サウンドチャンネル毎に複数の論理サウンドチャンネルのアンプリチュードデータのミキシングを行なう。これは、時分割多重化されてデジタル/アナログ変換された音声出力が、聴覚上ミキシングされて聞こえることを利用している。
【0124】
SPUローカルRAM402には、複数の論理サウンドチャンネルに対応して複数の記憶領域が設けられる。各記憶領域には、対応する論理サウンドチャンネルの再生に必要なパラメータが格納される。従って、SPUローカルRAM402に設けられている記憶領域の総数は64であり、この内、多重チャンネル数(=再生する論理サウンドチャンネル数)に等しい数の記憶領域が用いられる。また、各記憶領域に格納されるパラメータにはウェーブデータのアドレス情報も含まれ、これによって、論理サウンドチャンネルに割当てるウェーブデータが設定される。
【0125】
これらのパラメータは、基本的には各チャンネルに対するSPU400の処理開始前にCPU392により設定される。しかし、SPU400の処理が開始された後には、処理途中の任意の時点でパラメータを変化させると再生される音声に悪影響が及ぶ。そのため、CPU392は、制御レジスタセット432内に制御用のパラメータを設定し、コマンドUPDATEを発行する。このコマンドに応答し、SPU400が、処理に悪影響の及ばないタイミングで制御レジスタセット432内のデータをSPUローカルRAM402内に転送し、新たなパラメータで動作を開始する。
【0126】
図16に戻って、メインRAMインタフェース436は、データ処理ブロック438のメインRAM388へのアクセスを仲介する。メインRAM388へのアクセスは、(1)DMA転送によって取得したウェーブデータ及びエンベロープデータのメインRAM388への書込み、(2)論理サウンドチャンネルの再生のためのウェーブデータ及びエンベロープデータのメインRAM388からの読出し、(3)エコー処理及びマイクエコー処理のためのメインRAM388へのエコー成分たるウェーブデータ及びマイクエコー成分たるウェーブデータの読書きにおいて行なわれる。
【0127】
SPUローカルRAMインタフェース440は、データ処理ブロック438のSPUローカルRAM402へのアクセスを仲介する。SPUローカルRAM402へのアクセスは、ウェーブデータ再生のためのパラメータ、並びに、エンベロープデータ及びアンプリチュードデータ生成のためのパラメータの読書きにおいて行なわれる。また、SPUローカルRAMインタフェース440は、CPU392がI/Oバス410を通じてSPUローカルRAM402へアクセスする際の仲介も行なう。
【0128】
ウェーブデータは、8ビット単位のデータストリームであり、通常、予め外部メモリ364に格納される。論理サウンドチャンネルの再生が開始されると、SPU400は、DMAC382にウェーブデータの取得要求を開始する。DMAC382は、SPU400からの要求に応じて、ウェーブデータを外部メモリ364からメインRAM388上に確保されたウェーブバッファへと転送する。
【0129】
但し、ウェーブデータが圧縮されており、伸張処理が必要な場合もある。その場合には、CPU392による圧縮ウェーブデータの伸張処理が行なわれ、DMAC382によるウェーブデータの取得は行なわない。この場合は、CPU392が直接メインRAM388上のウェーブバッファにウェーブデータを書込む。いずれの処理を選択するかはCPU392により実行されるプログラムがデータの内容により判定する。
【0130】
図17に、データ処理ブロック438の詳細なブロック図を示す。なお、図17には、図の簡略化のため、ウェーブデータの再生(特にウェーブデータの補間処理とエンベロープ処理)に関連する部分のみを図示し、コマンドUPDATEによるパラメータ更新処理にかかわる部分、及びエコー処理を行なう部分については図示していない。また、図17のデータ処理ブロック438内に示される機能は全て、コマンド処理ステートマシン430からの指示を受けて、データ処理ブロック内部のステートマシンにより制御されるが、この部分についても図示していない。
【0131】
図17を参照して、データ処理ブロック438は、ウェーブデータリードバッファ460、ウェーブ補間フィルタ462、マルチプレクサ(MUX)464、エンベロープアドレス算出部467、エンベロープデータリードバッファ468、エンベロープ算出部470、乗算器472L、乗算器472R、及びサウンドチャンネルデータ出力部458を含む。
【0132】
ウェーブデータリードバッファ460及びエンベロープデータリードバッファ468は、メインRAM388から読出されたウェーブデータ及びエンベロープデータをそれぞれ格納するデータバッファである。ウェーブデータリードバッファ460は、64ビット単位でメインRAMから読み出されたウェーブデータを8ビット単位で出力する。エンベロープデータリードバッファ468は、64ビット単位でメインRAMから読み出されたエンベロープデータを32ビット単位で出力する。ウェーブ補間フィルタ462は、前述したウェーブデータの補間処理を行う。ウェーブ補間フィルタ462は、図7に示す補間回路114と同様の構成を持つ。
【0133】
マルチプレクサ464は、制御レジスタセット432に含まれるウェーブ補間モード設定レジスタに設定されている値に従って、ウェーブ補間フィルタ462の出力及びウェーブデータリードバッファ460の出力のいずれかを選択して出力する。マルチプレクサ464から出力されたデータは、SPUローカルRAM402の当該論理チャンネルの領域に書出される。ウェーブアドレス算出部466は、メインRAM388からのウェーブデータ読出しのためのアドレス計算を実行し、DMAリクエスタ434及びメインRAMインタフェース436に算出したアドレスの整数部を出力するとともに、アドレスの小数部をWPHASEとしてウェーブ補間フィルタ462に与える。このアドレスはSPUローカルRAM402に格納され、次のアドレス計算に用いられる。
【0134】
エンベロープアドレス算出部467は、メインRAM388からのエンベロープデータ読出しのためのアドレス計算を実行し、DMAリクエスタ434及びメインRAMインタフェース436に算出したアドレスを出力する。エンベロープ算出部470は、SPUローカルRAMの当該サウンドチャンネルの領域に格納されているエンベロープモードに従って、シーケンシャルモード又はリリースモードでのエンベロープのサンプル値の算出を行う。シーケンシャルモードでは、エンベロープ処理の開始、及び新たなエンベロープの読出処理の開始時に、エンベロープデータリードバッファ468から出力されたエンベロープデータを取得し、エンベロープデータに対するデコード処理を実行してエンベロープのサンプル値を算出し、算出したエンベロープのサンプル値をSPUローカルRAM402の当該サウンドチャネルの領域に格納する。リリースモードでは、SPUローカルRAM402の当該サウンドチャネルの領域にに格納されたエンベロープの現在のサンプル値に対し、エンベロープリリースレートを乗算することにより、リリースモードにおける次のサイクルのエンベロープサンプル値を算出し、算出したエンベロープのサンプル値をSPUローカルRAM402の当該サウンドチャンネルの領域に格納する。
【0135】
乗算器472L及び乗算器472Rは、SPUローカルRAM402から読出された現在のエンベロープサンプルの値に対し、左チャンネル用のゲイン及び右チャンネル用のゲインをそれぞれ乗算して左右チャンネル用のアンプリチュードを算出し、算出したアンプリチュードデータをSPUローカルRAM402に格納する。サウンドチャンネルデータ出力部458は、制御レジスタセット432に含まれるウェーブサンプリングレートと現在処理中の論理サウンドチャンネルのナンバにしたがって、SPUローカルRAM402の当該サウンドチャンネルの領域から、ウェーブデータ及びアンプリチュードデータを読出し、クロストーク低減回路442へ出力する。論理サウンドチャンネルの処理は順次的かつ巡回的に行われるので、結果としてクロストーク低減回路442へのデータ出力は時分割多重化される。ここで、エンベロープデータはエンベロープサンプリングレートの値により定まる周波数で更新されているが、サウンドチャンネルデータ出力部458が出力するアンプリチュードデータが更新されるのはウェーブ補間フィルタ462のステータスレジスタ128(図7参照)からのゼロステータス信号の値によってウェーブデータの値がゼロであるか又はその符号が変化したタイミングである。SPUローカルRAM402の当該サウンドチャンネルの領域には、常に現在のアンプリチュードデータと次に用いられるアンプリチュードデータとの両方が格納されている。
【0136】
<動作>
以上構成について説明したマルチメディアプロセッサ360は以下のように動作する。なお、以下の説明はサウンド処理について行ない、その他の制御についての説明は必要なときを除き行なわない。
【0137】
図15を参照して、予め、処理に必要なデータ(PCMウェーブデータ及びエンベロープデータ)は外部メモリ364に格納されている。SPU400によるサウンド処理を実行する必要が生じた場合、CPU392はSPUローカルRAM402に対して、対象データのアドレス等のサウンド処理に必要なパラメータを設定した後、I/Oバス410を介してSPU400に対してコマンドSTARTを与える。CPU392はこの後、サウンド処理については基本的にSPU400に任せ、他の処理を実行する。ただし、再生中のサウンドチャンネルに対し、音声の大きさを変えたり、エンベロープ処理の動作モードを変更したりする必要が生じた場合、CPU392はそのためのパラメータをSPU400の制御レジスタセット432(図16参照)に設定し、コマンドUPDATEを発行する。
【0138】
CPU392がSPUローカルRAM402に設定するパラメータとして、補間をするか否か(補間モード)を示す補間モード、音高を制御するためのウェーブ周波数(図6のウェーブ周波数記憶部92の小数部112)、各論理サウンドチャンネルの先頭音声の読出アドレス、エンベロープデータのサンプリングレート等がある。なお、本実施の形態では、処理の最初では、エンベロープモードはシーケンシャルモードに設定される。
【0139】
−シーケンシャルモード−
シーケンシャルモードでは、図17に示すエンベロープ算出部470は現在のエンベロープサンプルの値に対しエンベロープリリースレートを乗算した値を算出する。
【0140】
コマンドSTARTを受けると、SPU400のDMAリクエスタ434(図16参照)は、DMAC382に対し、CPU392によって指定された論理サウンドチャンネルのデータをメインRAM388に転送するようにDMACリクエストを発行する。DMAC382は、指定されたアドレスのデータを外部メモリ364から読出し、メインRAM388上のウェーブバッファに格納する。
【0141】
DMAC転送が終了すると、SPU400はCPU392により指定された論理サウンドチャンネルのウェーブデータの再生を開始する。ウェーブデータの再生には、前述のように補間を使用するか否かという二つの動作モードがある。
【0142】
補間を使用しない場合、マルチプレクサ464は、直接にウェーブデータリードバッファ460の内容を選択するように切替えられる。補間を使用する場合、マルチプレクサ464はウェーブ補間フィルタ462の出力を選択するように切替えられる。
【0143】
ウェーブアドレス算出部466は、一定の時間間隔でSPUローカルRAM402中のウェーブデータアドレス記憶部90に記憶された値に、同じくSPUローカルRAM402内のウェーブ周波数記憶部92に記憶された値を加算する。加算後の値は、ウェーブデータアドレス記憶部90に書戻される。ウェーブアドレス算出部466は、この加算によりウェーブデータアドレス記憶部90の小数部から整数部への桁上がりが発生したことに応答して、メインRAM388からウェーブデータを読出し、ウェーブデータリードバッファ460に格納する。この際のアドレスにはウェーブデータアドレス記憶部90の整数部が用いられる。
【0144】
ウェーブ周波数記憶部92に記憶された値は0より大きく1より小さい。この値が大きくなると、加算の結果桁上がりが生ずる頻度が高くなり、結果としてウェーブデータをメインRAM388から読出す頻度が高くなる。ウェーブ周波数記憶部92に記憶された値を小さくすると、ウェーブデータをメインRAM388から読出す頻度が低くなる。
【0145】
このようにSPU400がメインRAM388からの読出し速度を変えることで、ピッチ変換が行なわれる。補間をすることが指定されている場合、ウェーブデータの補間がウェーブ補間フィルタ462により行なわれ、補間後のウェーブデータが後段に送出される。一方、補間を行なわない場合は、マルチプレクサ464がウェーブデータリードバッファ460の出力に直接短絡され、補間なしのウェーブデータがサウンドチャンネルデータ出力部458に送出される。
【0146】
マルチプレクサ464からのウェーブデータは、複数の論理サウンドチャンネルに対し、左チャンネルと右チャンネル(左右の物理サウンドチャンネル)との両方の時分割多重化処理を行なうサウンドチャンネルデータ出力部458に出力される。
【0147】
シーケンシャルモードでは、デジタルブロック456は以下のように動作する。DMAC382がSPU400からの要求に応じて外部メモリ364からメインRAM388上に確保されたエンベロープバッファにエンベロープデータ列を転送する。エンベロープ処理の開始時、又は新たに適用されるエンベロープが変更されると、このエンベロープデータからエンベロープデータが読出され、図17に示すエンベロープデータリードバッファ468に格納される。エンベロープ算出部470がこのエンベロープデータをデコードしてエンベロープサンプルを算出する。算出されたエンベロープサンプルがSPUローカルRAM402に格納される。
【0148】
左乗算器472L及び右乗算器472Rが、SPUローカルRAM402中のエンベロープサンプルに対し、ゲインを乗算してアンプリチュードデータを算出し、SPUローカルRAM402に格納する。
【0149】
サウンドチャンネルデータ出力部458は、制御レジスタセット432に含まれるウェーブサンプリングレートと現在処理中の論理サウンドチャンネルのナンバとにしたがって、SPUローカルRAM402の当該サウンドチャンネルの領域から、左右両チャンネルに対するウェーブデータ及びアンプリチュードデータを読出し、クロストーク低減回路442へ出力する。論理サウンドチャンネルの処理は順次的かつ巡回的に行われるので、結果としてクロストーク低減回路442へのデータ出力は時分割多重化される。なお、エンベロープデータはエンベロープサンプリングレートの値により定まる周波数で更新されているが、サウンドチャンネルデータ出力部458が出力するアンプリチュードデータが更新されるのはウェーブ補間フィルタ462のステータスレジスタ128(図7参照)からのゼロステータス信号の値によってウェーブデータの値がゼロであるか又はその符号が変化したタイミングである。
【0150】
以上の動作がデータ処理ブロック438で繰返されることにより、シーケンシャルモードでの各論理サウンドチャンネルにおけるウェーブデータの生成が行なわれる。
【0151】
CPU392が何らかの条件の充足により制御レジスタセット432内のエンベロープモードレジスタ(図示せず)にリリースモードを示す値を設定し、コマンドUPDATEをSPU400に対し発行することにより、SPU400の動作モードはリリースモードに移る。
【0152】
−リリースモード−
リリースモードでは、エンベロープ算出部470はSPUローカルRAM402に格納された現在のエンベロープサンプルの値にエンベロープリリースレートを乗算して新たなエンベロープサンプルの値を算出する。したがって、前回のエンベロープサンプルに、指定されたエンベロープリリースレートを乗じた値のエンベロープサンプルが生成され、SPUローカルRAM402に格納される。
【0153】
データ処理ブロック438でのこれ以後の動作はシーケンシャルモードと同様である。ただし、リリースモードでは、ウェーブデータの値がゼロとなった論理サウンドチャンネルの動作は停止する。
【0154】
図15のオーディオDACブロック386は、カスケード接続されたDAC(図示せず)を含む。上記のように、複数の論理サウンドチャンネルのミキシングは、DACへの入力データを時分割多重化することによって行なわれる。また、複数のパラメータ間のアナログ乗算(例えば、ウェーブデータとアンプリチュードデータとの乗算)は、カスケード接続されたDACにより行われる。このように時分割多重化されたデータをそのままオーディオDACブロック386に入力すると、カスケード接続されたDAC間における伝播遅延が、論理サウンドチャンネル間のクロストークを引き起こす可能性がある。
【0155】
図16のクロストーク低減回路442は、このような論理サウンドチャンネル間のクロストークの発生を防止する機能を持つ。このクロストーク低減回路442は、各論理サウンドチャンネルのデータをカスケード接続されたDACに出力する際に、論理サウンドチャンネル間に予め設定された長さの無音期間を挿入する。これにより、カスケード接続されたDAC間を、ある論理サウンドチャンネルの信号が伝播する際に、前後の論理サウンドチャンネルの信号と干渉が発生することを防止する。無音期間の長さは、CPU392がI/Oバス410を通じて、制御レジスタセット432内の対応する制御レジスタ(図示せず)に設定する。
【0156】
詳細には、クロストーク低減回路442は、左チャンネルウェーブデータMWLの論理サウンドチャンネル間に無音期間を挿入して、左チャンネルウェーブデータMWLCとして、オーディオDACブロック386に出力する。また、クロストーク低減回路442は、右チャンネルウェーブデータMWRの論理サウンドチャンネル間に無音期間を挿入して、右チャンネルウェーブデータMWRCとして、オーディオDACブロック386に出力する。
【0157】
さらに、クロストーク低減回路442は、左チャンネルアンプリチュードデータMAMLの論理サウンドチャンネル間に無音期間を挿入して、左チャンネルアンプリチュードデータMALCとして、オーディオDACブロック386に出力する。また、クロストーク低減回路442は、右チャンネルアンプリチュードデータMAMRの論理サウンドチャンネル間に無音期間を挿入して、右チャンネルアンプリチュードデータMARCとして、オーディオDACブロック386に出力する。
【0158】
さらに、クロストーク低減回路442は、制御レジスタセット432の対応する制御レジスタ(図示せず)から入力されたメインボリュームデータMVを、そのままメインボリュームデータMVCとして、オーディオDACブロック386に出力する。
【0159】
詳細は図示しないが、オーディオDACブロック386は、左チャンネルウェーブデータMWLCに左チャンネルアンプリチュードデータMALCを乗算し、さらにメインボリュームMVCを乗算することにより最終的な左音声信号を生成する。同様に、オーディオDACブロック386は、右チャンネルウェーブデータMWRCに右チャンネルアンプリチュードデータMARCを乗算し、さらにメインボリュームMVCを乗算することにより最終的な右音声信号を生成する。
【0160】
以上のように本実施の形態に係るマルチメディアプロセッサ360では、各機能ユニットで共有するメインRAM388を設けている。したがって、各機能ユニットに個別の専用メモリを設ける場合に発生する無駄な記憶容量を削減でき、マルチメディアプロセッサ360全体として必要なメモリの容量を削減できる。CPU392だけでなく、SPU400もメインRAM388へのアクセスのためのメインRAMアクセスアービタ390のバスマスタとなることができるため、CPU392からの最小限の指示でサウンド処理を実行することができる。そのため、CPU392に係る負荷を小さくすることができ、CPU392としてそれほど性能の高いものを用いる必要がない。その結果、マルチメディアプロセッサ360のコストを下げることができる。又は、同じ性能のCPU392を用いる場合、より高度な処理を実行することができる。
【0161】
さらに、マルチメディアプロセッサ360のSPU400では、PCMウェーブデータのピッチ変換を行なう際に、単にウェーブデータの読出速度を調整するだけでなく、ウェーブデータの読出アドレスの小数部まで考慮して補間を行なう。そのため、従来のように単純に読出速度をあげる場合と比較してエイリアスノイズの発生を抑えることができ、高品質の音声を出力できる。また、補間をするか否かをプログラムにより選択できるため、場面にあわせて音質とメインRAMへのバス帯域の負荷とのどちらかを重視した形の処理を選択的に行なうことができる。
【0162】
またこのピッチ変換におけるPCMウェーブデータの読出速度は、オーディオDACブロック386への音声信号の出力速度とは全く無関係に設定できる。したがって、この装置を用いたプログラミングでは、音声信号の出力レートによる影響を考慮する必要がない。音声信号出力部のハードウェアの仕様に影響されず、音質の劣化の無いピッチ変換回路を実現できる。
【0163】
また、SPU400では、エンベロープデータを従来のようにサンプルデータそのものの形ではなく、勾配とその持続時間の形で準備する。これらはいずれもデジタルデータであり、そのデータ量は少ない。その結果、サンプルデータをそのまま利用する場合と比較してエンベロープデータを記憶するために必要なメモリ容量を削減することができる。さらに、エンベロープ処理の動作モードとしてシーケンシャルモードとリリースモードとを用意し、両者を簡単に切替えることができる。その結果、音声の出力を停止したりする際に、音声信号に悪影響を及ぼすことなく、簡単に処理できる。また、どのようなエンベロープデータに対してもこのリリースモードを適用できるため、使用中のエンベロープについて確認する必要がなく、容易に音声の出力を停止できる。
【0164】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0165】
(1)上記実施の形態では、物理サウンドチャンネル数を複数にしたが、単数であっても、本発明は適用できる。また、上記実施の形態では、論理サウンドチャンネル数の最大値を64としているが、設計仕様と使用するハードウェアの性能とにより、この数を任意に増減することができる。
【0166】
(2)上記実施の形態では、PCMウェーブデータの読出アドレスに、ウェーブ周波数記憶部92に記憶されたWPHASEデータ(ウェーブ周波数)を加算した後の、ウェーブデータアドレス記憶部90に記憶されたデータの整数部を用いている。これは、このようにすれば処理が最も簡単でかつ高速だからである。しかし本発明はそのような実施の形態には限定されない。例えば、この整数部の値に対して所定の関数を適用することによりウェーブデータの読出アドレスを算出するようにしてもよい。また、上記実施の形態ではウェーブデータアドレス記憶部90の整数部と小数部とでそれぞれウェーブデータのアドレスと補間量とを算出しているが、これらを全く別個の記憶領域に記憶するようにしてもよい。
【0167】
(3)上記実施の形態では、補間のための関数として図5に示すような関数を用いている。しかし本発明はそのような実施の形態には限定されない。例えば、f(x)とf(x+1)間が直線補間される関数f(x)を用いても、ある程度の効果が期待できる。
【0168】
(4)上記実施の形態では、複数の論理サウンドチャンネルの音声信号を時分割多重化することにより、物理サウンドチャンネルの信号を作成している。これは、そのような時分割多重化された音声信号で発生された音声について、人間には同時に発生された音声として感じられるという人間の聴覚特性に基づいている。しかし、本発明はそのような時分割多重化を行なう装置のみに適用可能なわけではなく、通常の方法により音声信号を混合する装置にも適用できる。
【0169】
(5)上記実施の形態では、エンベロープデータとして勾配データと持続時間データとの双方を用いている。しかし、本発明はそのような実施の形態には限定されない。例えば、持続時間としてどの勾配データについても一定の持続時間を予め定めておくことにより、勾配データのみでエンベロープデータを定義することもできる。同じ勾配が長く続くときには、同じ値を持つ勾配データを連続して準備しておけばよい。この場合、同じ勾配のデータが続く個数が、その持続時間を表すことになる。
【0170】
(6)上記実施の形態では、ピッチ変換のために、ウェーブデータアドレス記憶部90に記憶されたアドレスデータに、ウェーブ周波数記憶部92に記憶された値を加算している。しかし、本発明は加算を用いるような実施の形態のみには限定されない。例えば、減算を用いても全く同様の処理を実現することができることは明らかである。減算は実質的には加算と同じ処理であるから、当然である。
【0171】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【図面の簡単な説明】
【0172】
【図1】従来の技術におけるPCMウェーブデータの再生原理を示す図である。
【図2】従来の技術におけるウェーブデータに対するエンベロープ処理の原理を説明するための図である。
【図3】本発明の一実施の形態におけるPCMウェーブデータの補間結果を例示する図である。
【図4】本発明の一実施の形態におけるPCMウェーブデータの補間原理を説明するための図である。
【図5】本発明の一実施の形態の補間において使用される関数のグラフを示す図である。
【図6】本発明の一実施の形態におけるPCMウェーブデータのピッチ変換におけるアドレス計算の原理を説明するための図である。
【図7】本発明の一実施の形態におけるウェーブデータの補間回路114の構成例を示す図である。
【図8】本発明の一実施の形態におけるエンベロープ処理の原理を説明するための図である。
【図9】本発明の一実施の形態におけるエンベロープデータの構成例を示す図である。
【図10】本発明の一実施の形態におけるエンベロープサンプルの算出原理を説明するための図である。
【図11】本発明の一実施の形態におけるエンベロープの適用タイミングを説明するための図である。
【図12】本発明の一実施の形態における本発明の一実施の形態における、シーケンシャルモードのためのエンベロープ処理回路300の例を示すブロック図である。
【図13】本発明の一実施の形態における、リリースモードのためのエンベロープ処理回路330の例を示すブロック図である。
【図14】本発明の一実施の形態において、シーケンシャルモードとリリースモードとを切替えて実行可能なエンベロープ処理回路352の構成例を示すブロック図である。
【図15】本発明の一実施の形態に係るマルチメディアプロセッサ360のブロック図である。
【図16】マルチメディアプロセッサ360に含まれるSPU400のブロック図である。
【図17】図16に示すデータ処理ブロック438のブロック図である。
【符号の説明】
【0173】
72…補間ポイント、80…アドレス算出回路、110…補間回路、120…シフトレジスタ、122…係数算出部、124…乗算処理部、200…エンベロープ、240…エンベロープデータ、300,330,352…エンベロープ処理回路、312…持続時間ダウンカウンタ、320…勾配記憶部、360…マルチメディアプロセッサ、384…ビデオDAC、386…オーディオDACブロック、382…DMAC、388…メインRAM、390…メインRAMアクセスアービタ、392…CPU、396…RPU、400…SPU、404…GE、406…YSU、410…I/Oバス、430…コマンド処理ステートマシン、432…制御レジスタセット、434…DMAリクエスタ、436…メインRAMインタフェース、438…データ処理ブロック、442…クロストーク低減回路、450…コマンドレジスタ、460…ウェーブデータリードバッファ、462…ウェーブ補間フィルタ、464…マルチプレクサ、466…ウェーブアドレス算出部、467…エンベロープアドレス算出部、468…エンベロープデータリードバッファ、470…エンベロープ算出部、472L,472R…乗算器

【特許請求の範囲】
【請求項1】
外部メモリに接続されると、当該外部メモリに格納されたデータを利用して処理を行なうプロセッサであって、
複数個の機能ブロックと、
データの転送を行なうための転送手段と、
前記複数個の機能ブロック及び前記転送手段により共通にアクセス可能な共通メモリと、
前記共通メモリへの前記複数個の機能ブロック及び前記転送手段からのアクセスを調停するためのアービタと、を含み、
前記転送手段は、前記外部メモリに接続可能で、かつ前記共通メモリにアクセス可能であり、前記複数個の機能ブロックのうちの予め選択されたものからのデータ転送要求に応じ、前記外部メモリの、前記データ転送要求により指定されたアドレスから、前記共通メモリの、前記データ転送要求により指定されたアドレスに、前記データ転送要求により指定された量のデータを前記アービタによる調停を受けて転送するものである、プロセッサ。
【請求項2】
前記アービタは、前記共通メモリへのアクセスを調停して一時に単一の機能ブロックのみに対し前記共通メモリへのアクセスを許可するものであり、
前記複数個の機能ブロックは、
中央演算処理装置と、
前記中央演算処理装置からコマンドを受け、当該コマンドにしたがって処理を行なうためのサウンドプロセッサとを含み、
前記中央演算処理装置と前記サウンドプロセッサとは、いずれも前記共通メモリへの前記バスのバスマスタとなることが可能な、請求項1に記載のプロセッサ。
【請求項3】
前記サウンドプロセッサは、音声データに対し、前記外部メモリに予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうものであり、
前記エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、
前記サウンドプロセッサは、
前記外部メモリから前記共通メモリに前記エンベロープデータを転送するように前記転送手段に指示するための転送指示手段と、
前記共通メモリから前記エンベロープデータを読出してデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、
前記デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む、請求項2に記載のプロセッサ。
【請求項4】
前記デコード手段は、
前記エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、
一定間隔で記憶値から一定値を減算するダウンカウンタと、
前記勾配を特定するデータを記憶するための勾配データ記憶手段と、
前記ダウンカウンタの値が0以下となったことに応答して、前記エンベロープデータ内の次の線分を表すデータのうち、前記持続期間を前記ダウンカウンタに、前記勾配を現すデータを前記勾配データ記憶手段に、それぞれロードするためのロード手段と、
前記一定間隔ごとに、前記勾配データ記憶手段に記憶されたデータを前記エンベロープサンプル記憶手段に記憶された前記エンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む、請求項3に記載のプロセッサ。
【請求項5】
前記サウンドプロセッサはさらに、
前記エンベロープデータに基づいて前記エンベロープサンプルの値を算出する第1のモードと、前記エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たな前記エンベロープサンプルの値を算出する第2のモードとの切替を指定するためのモード切替指定手段と、
前記第2のモードにおいて、前記エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、0より大きく1より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、
外部から与えられる、第1及び第2の動作モードのいずれかを指定する信号に応答して、前記乗算手段により算出されたエンベロープサンプルの値と、前記デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、前記エンベロープサンプル記憶手段に記憶させるための手段とを含む、請求項4に記載のプロセッサ。
【請求項6】
所定の符号化方式により符号化され、所定のメモリに格納されたデジタル音声データを、指定された速度で読出して再生することにより、任意のピッチの音声ウェーブ信号を生成するためのサウンドプロセッサであって、
所定のビット数の整数部及び所定のビット数の小数部を有する第1の記憶手段と、
前記指定された速度に対応して定まる、所定の小数値を記憶するための第2の記憶手段と、
一定期間ごとに、前記第1の記憶手段の記憶内容に前記第2の記憶手段に記憶された前記所定の小数値を加算するための加算手段と、
前記加算手段による加算の結果、前記第1の記憶手段の前記小数部から前記整数部への桁上がりが生じたことに応答して、前記メモリの、前記第2の記憶手段の前記整数部の内容により定められるアドレスから前記デジタル音声データを読出すための読出手段と、
前記第1の記憶手段の前記小数部に記憶された値を用いて前記読出手段により読出されたデジタル音声データを補間することにより、前記桁上がりが生じたときの前記音声データを生成するための補間手段とを含む、サウンドプロセッサ。
【請求項7】
前記補間手段は、
前記共通メモリの、前記整数部の値により定められるアドレスとその前後のアドレスとに格納された予め定める複数個のデジタル音声データの各々に対し、前記小数部に応じてそれぞれ定められる係数を乗算するための複数個の乗算手段と、
前記複数個の乗算手段の出力を合計することにより、前記桁上がりが生じたときの前記音声データを生成するための合計算出手段とを含む、請求項6に記載のサウンドプロセッサ。
【請求項8】
前記予め定められる係数を、前記第1の記憶手段の記憶内容により規定されるアドレスと、前記複数個のデジタル音声データのアドレスとの間に定義される距離の関数としてそれぞれ算出するための係数算出手段をさらに含む、請求項7に記載のサウンドプロセッサ。
【請求項9】
前記係数算出手段は、次の関数f(x)により前記係数を算出するための手段を含む、請求項8に記載のサウンドプロセッサ。
【数1】

ただし
【数2】

であり、xは前記距離をあらわす。
【請求項10】
前記読出手段は、前記加算手段による加算の結果、前記第1の記憶手段の前記小数部から前記整数部への桁上がりが生じたことに応答して、前記メモリの、前記第2の記憶手段の前記整数部をアドレスとして前記メモリから前記デジタル音声データを読出すための手段を含む、請求項6に記載のサウンドプロセッサ。
【請求項11】
前記所定の符号化方式はパルス・コード・モジュレーション符号化方式である、請求項6〜請求項10のいずれかに記載のサウンドプロセッサ。
【請求項12】
音声データに対し、予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうサウンドプロセッサであって、
前記エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、前記サウンドプロセッサは、
前記エンベロープデータをデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、
前記デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む、サウンドプロセッサ。
【請求項13】
前記デコード手段は、
前記エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、
一定間隔で記憶値から一定値を減算するダウンカウンタと、
前記勾配を特定するデータを記憶するための勾配データ記憶手段と、
前記ダウンカウンタの値が0以下となったことに応答して、前記エンベロープデータ内の次の線分を表すデータのうち、前記持続期間を前記ダウンカウンタに、前記勾配を現すデータを前記勾配データ記憶手段にロードするためのロード手段と、
前記一定間隔ごとに、前記勾配データ記憶手段に記憶されたデータを前記エンベロープサンプル記憶手段に記憶された前記エンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む、請求項12に記載のサウンドプロセッサ。
【請求項14】
前記サウンドプロセッサはさらに、
前記エンベロープデータに基づいて前記エンベロープサンプルの値を算出する第1のモードと、前記エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たな前記エンベロープサンプルの値を算出する第2のモードとの切替を指定するためのモード切替指定手段と、
前記第2のモードにおいて、前記エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、0より大きく1より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、
外部から与えられる、第1及び第2の動作モードのいずれかを指定する信号に応答して、前記乗算手段により算出されたエンベロープサンプルの値と、前記デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、前記エンベロープサンプル記憶手段に記憶させるための手段とを含む、請求項13に記載のサウンドプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2007−132961(P2007−132961A)
【公開日】平成19年5月31日(2007.5.31)
【国際特許分類】
【出願番号】特願2005−322944(P2005−322944)
【出願日】平成17年11月7日(2005.11.7)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】