(57)【要約】【課題】ＣＰＵ負荷を低減させ、リソースを節約しながら、高音質でピッチ変換を行なうことが可能なサウンドプロセッサを提供する。【解決手段】サウンドプロセッサは、メモリからのＰＣＭデータの読出速度を変えることによりピッチ変換を行なう装置であり、整数部１００及び小数部１０２を持つアドレス記憶部９０と、読出速度により定まる小数値を記憶するウェーブ周波数記憶部９２と、一定期間ごとにアドレス記憶部９０にウェーブ周波数記憶部９２の小数値を加算する加算器９４と、ウェーブデータアドレス記憶部９０の小数部１０２から整数部１００への桁上がりが生じたことに応答して、整数部１００をアドレスとしてメモリにアクセスしＰＣＭ音声データを読出す読出部と、アドレス記憶部９０の小数部１０２に記憶された値を用いてＰＣＭ音声データを補間し、桁上がりが生じたときの音声データを生成する補間処理部とを含む。【選択図】図６
2007132961.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリに接続されると、当該外部メモリに格納されたデータを利用して処理を行なうプロセッサであって、
複数個の機能ブロックと、
データの転送を行なうための転送手段と、
前記複数個の機能ブロック及び前記転送手段により共通にアクセス可能な共通メモリと、
前記共通メモリへの前記複数個の機能ブロック及び前記転送手段からのアクセスを調停するためのアービタと、を含み、
前記転送手段は、前記外部メモリに接続可能で、かつ前記共通メモリにアクセス可能であり、前記複数個の機能ブロックのうちの予め選択されたものからのデータ転送要求に応じ、前記外部メモリの、前記データ転送要求により指定されたアドレスから、前記共通メモリの、前記データ転送要求により指定されたアドレスに、前記データ転送要求により指定された量のデータを前記アービタによる調停を受けて転送するものである、プロセッサ。
【請求項２】
前記アービタは、前記共通メモリへのアクセスを調停して一時に単一の機能ブロックのみに対し前記共通メモリへのアクセスを許可するものであり、
前記複数個の機能ブロックは、
中央演算処理装置と、
前記中央演算処理装置からコマンドを受け、当該コマンドにしたがって処理を行なうためのサウンドプロセッサとを含み、
前記中央演算処理装置と前記サウンドプロセッサとは、いずれも前記共通メモリへの前記バスのバスマスタとなることが可能な、請求項１に記載のプロセッサ。
【請求項３】
前記サウンドプロセッサは、音声データに対し、前記外部メモリに予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうものであり、
前記エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、
前記サウンドプロセッサは、
前記外部メモリから前記共通メモリに前記エンベロープデータを転送するように前記転送手段に指示するための転送指示手段と、
前記共通メモリから前記エンベロープデータを読出してデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、
前記デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む、請求項２に記載のプロセッサ。
【請求項４】
前記デコード手段は、
前記エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、
一定間隔で記憶値から一定値を減算するダウンカウンタと、
前記勾配を特定するデータを記憶するための勾配データ記憶手段と、
前記ダウンカウンタの値が０以下となったことに応答して、前記エンベロープデータ内の次の線分を表すデータのうち、前記持続期間を前記ダウンカウンタに、前記勾配を現すデータを前記勾配データ記憶手段に、それぞれロードするためのロード手段と、
前記一定間隔ごとに、前記勾配データ記憶手段に記憶されたデータを前記エンベロープサンプル記憶手段に記憶された前記エンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む、請求項３に記載のプロセッサ。
【請求項５】
前記サウンドプロセッサはさらに、
前記エンベロープデータに基づいて前記エンベロープサンプルの値を算出する第１のモードと、前記エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たな前記エンベロープサンプルの値を算出する第２のモードとの切替を指定するためのモード切替指定手段と、
前記第２のモードにおいて、前記エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、０より大きく１より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、
外部から与えられる、第１及び第２の動作モードのいずれかを指定する信号に応答して、前記乗算手段により算出されたエンベロープサンプルの値と、前記デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、前記エンベロープサンプル記憶手段に記憶させるための手段とを含む、請求項４に記載のプロセッサ。
【請求項６】
所定の符号化方式により符号化され、所定のメモリに格納されたデジタル音声データを、指定された速度で読出して再生することにより、任意のピッチの音声ウェーブ信号を生成するためのサウンドプロセッサであって、
所定のビット数の整数部及び所定のビット数の小数部を有する第１の記憶手段と、
前記指定された速度に対応して定まる、所定の小数値を記憶するための第２の記憶手段と、
一定期間ごとに、前記第１の記憶手段の記憶内容に前記第２の記憶手段に記憶された前記所定の小数値を加算するための加算手段と、
前記加算手段による加算の結果、前記第１の記憶手段の前記小数部から前記整数部への桁上がりが生じたことに応答して、前記メモリの、前記第２の記憶手段の前記整数部の内容により定められるアドレスから前記デジタル音声データを読出すための読出手段と、
前記第１の記憶手段の前記小数部に記憶された値を用いて前記読出手段により読出されたデジタル音声データを補間することにより、前記桁上がりが生じたときの前記音声データを生成するための補間手段とを含む、サウンドプロセッサ。
【請求項７】
前記補間手段は、
前記共通メモリの、前記整数部の値により定められるアドレスとその前後のアドレスとに格納された予め定める複数個のデジタル音声データの各々に対し、前記小数部に応じてそれぞれ定められる係数を乗算するための複数個の乗算手段と、
前記複数個の乗算手段の出力を合計することにより、前記桁上がりが生じたときの前記音声データを生成するための合計算出手段とを含む、請求項６に記載のサウンドプロセッサ。
【請求項８】
前記予め定められる係数を、前記第１の記憶手段の記憶内容により規定されるアドレスと、前記複数個のデジタル音声データのアドレスとの間に定義される距離の関数としてそれぞれ算出するための係数算出手段をさらに含む、請求項７に記載のサウンドプロセッサ。
【請求項９】
前記係数算出手段は、次の関数ｆ（ｘ）により前記係数を算出するための手段を含む、請求項８に記載のサウンドプロセッサ。
【数１】
2007132961.tif 000006
ただし
【数２】
2007132961.tif 000007
であり、ｘは前記距離をあらわす。
【請求項１０】
前記読出手段は、前記加算手段による加算の結果、前記第１の記憶手段の前記小数部から前記整数部への桁上がりが生じたことに応答して、前記メモリの、前記第２の記憶手段の前記整数部をアドレスとして前記メモリから前記デジタル音声データを読出すための手段を含む、請求項６に記載のサウンドプロセッサ。
【請求項１１】
前記所定の符号化方式はパルス・コード・モジュレーション符号化方式である、請求項６〜請求項１０のいずれかに記載のサウンドプロセッサ。
【請求項１２】
音声データに対し、予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうサウンドプロセッサであって、
前記エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、前記サウンドプロセッサは、
前記エンベロープデータをデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、
前記デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む、サウンドプロセッサ。
【請求項１３】
前記デコード手段は、
前記エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、
一定間隔で記憶値から一定値を減算するダウンカウンタと、
前記勾配を特定するデータを記憶するための勾配データ記憶手段と、
前記ダウンカウンタの値が０以下となったことに応答して、前記エンベロープデータ内の次の線分を表すデータのうち、前記持続期間を前記ダウンカウンタに、前記勾配を現すデータを前記勾配データ記憶手段にロードするためのロード手段と、
前記一定間隔ごとに、前記勾配データ記憶手段に記憶されたデータを前記エンベロープサンプル記憶手段に記憶された前記エンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む、請求項１２に記載のサウンドプロセッサ。
【請求項１４】
前記サウンドプロセッサはさらに、
前記エンベロープデータに基づいて前記エンベロープサンプルの値を算出する第１のモードと、前記エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たな前記エンベロープサンプルの値を算出する第２のモードとの切替を指定するためのモード切替指定手段と、
前記第２のモードにおいて、前記エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、０より大きく１より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、
外部から与えられる、第１及び第２の動作モードのいずれかを指定する信号に応答して、前記乗算手段により算出されたエンベロープサンプルの値と、前記デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、前記エンベロープサンプル記憶手段に記憶させるための手段とを含む、請求項１３に記載のサウンドプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェーブデータに音響効果を付与して出力するサウンドプロセッサ及びその関連技術に関し、特に、ＰＣＭ（ｐｕｌｓｅ  ｃｏｄｅ  ｍｏｄｕｌａｔｉｏｎ）音源の音質改善技術に関する。
【背景技術】
【０００２】
ゲーム装置音源としてＰＣＭ波形データ（以下「ウェーブデータ」と呼ぶ。）が広く使用されている。ウェーブデータとは、アナログの音声波形信号を一定の時間間隔でＡ／Ｄ（アナログ／デジタル）変換することにより作られる。この時間間隔を定める周波数を「サンプリング周波数」と呼ぶ。ウェーブデータをサンプリング周波数と同じ周波数でＤ／Ａ（デジタル／アナログ）変換することにより、原音の波形に極めて近い波形を再現することができる。
【０００３】
ゲーム装置では、ゲームの局面にあわせて多様な音声を再生する必要がある。そのため、ゲーム装置には音声処理専用のサウンドプロセッサが設けられることが多い。動作時には、ＣＰＵ（中央演算処理装置）の制御によってウェーブデータを外部メモリからサウンドプロセッサ専用のメモリに転送し、サウンドプロセッサの制御に必要なデータをレジスタに設定して、ＣＰＵからサウンドプロセッサに再生開始のコマンドを与える。サウンドプロセッサは、このコマンドに応答して専用メモリに格納されているウェーブデータに対する処理を行なう。
【０００４】
一方で、ゲーム装置はコストを抑える必要があることから、ウェーブデータを記憶するために多くの記憶容量をサウンドプロセッサ専用に設けることができないという制約がある。そのため、サウンドプロセッサ専用メモリの記憶容量を小さくしながら、ウェーブデータの大きさをできるだけ少なくする工夫がされている。例えば同一のウェーブデータの再生時の周波数を変化させることで音声波形のピッチを変え、音声の高低を変化させる技術がある。また、エンベロープデータと呼ばれる、音声波形の包絡線を定義するデータを準備し、このデータによってウェーブデータから得られる音声信号を振幅変調することにより、小さなサイズのウェーブデータを用いて実際の楽器音に近いリアルな音声の再生を行う技術が存在している。
【０００５】
図１に、従来の技術によるウェーブデータの構成と、再生された音声信号の波形の概略とを示す。図１を参照して、ウェーブデータ３０には、基本波形の振幅を示すデータが各サンプリング時刻に応じて記憶されている。このデータを読出し、Ｄ／Ａ変換することで音声信号波形３２が得られる。図１に示すように、この音声信号波形３２はその振幅が階段状に変化したものとなる。
【０００６】
再生時に、サンプリング周波数より高い周波数でウェーブデータのＤ／Ａ変換を行なうと、ＰＣＭ音声は原音より高い周波数で再生される。サンプリング周波数より低い周波数でＤ／Ａ変換を行なうと、ＰＣＭ音声は原音より低い周波数で再生される。このように周波数を変換する技術は「ピッチ変換」と呼ばれ、サンプリングした一つの楽器音から様々な音高の音を作り出す目的等に用いられる。
【０００７】
特許文献１には、従来のピッチ変換の手法が開示されている。特許文献１に開示の手法では、ピッチを制御するためのピッチ制御情報がレジスタに保持される。一定の時間間隔でこのピッチ制御情報が、累算器に加算される。ピッチ制御情報は小数点以下の値であり、累算器は整数部と小数部とを有するものとすると、ピッチ制御情報が累算器の小数部に加算されると、ある頻度で桁上がりが生じ、累算器の整数部が１だけ増加する。桁上がりが生ずるごとに、メモリ中でウェーブデータが記憶された領域の先頭から、累算器の整数部をオフセットアドレスとして定められる位置からウェーブデータを読出し、Ｄ／Ａ変換を行なう。
【０００８】
ピッチ制御情報の値を大きくするとウェーブデータを読出す速度が速くなり、ピッチが高くなる。ピッチ制御情報の値を小さくすると、ウェーブデータを読出す速度が遅くなり、ピッチが遅くなる。
【０００９】
上記した特許文献１には、エンベロープ制御についても開示されている。図２の上段、中段、及び下段にそれぞれ、エンベロープの乗算対象となるＰＣＭ音声信号波形４０と、エンベロープ波形４２と、ＰＣＭ音声波形４２をエンベロープ波形で振幅変調して得た音声信号波形４４とを示す。特許文献１に開示された技術では、このエンベロープ波形４２も、ＰＣＭ波形と同様、各サンプリング点におけるエンベロープのサンプリング値の形で記憶されており、ウェーブデータに対する振幅変調により最終的なＰＣＭ音声波形４４を得ることができる。
【特許文献１】特開平11-220791号公報（段落００７４〜００８０、図６及び図７）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
一般的に、ＣＰＵによりゲームプログラムの制御が実行される。音声に関する実際の処理はサウンドプロセッサが行なうため、ＣＰＵはサウンドプロセッサにコマンドを与えるに先立ち、ＤＭＡによって外部メモリからサウンドプロセッサのための専用メモリにサウンドデータを転送させる処理を実行させる必要がある。この処理は、ＣＰＵに十分高い能力があれば容易であるが、ゲーム装置のようにＣＰＵにそれほど高い能力のものを利用できない場合には、ＣＰＵに対する過大な負荷となる可能性がある。特にゲーム装置ではゲーム制御に高い応答性が必要とされるため、ＣＰＵにかかる負荷はできるだけ小さくすることが望ましい。
【００１１】
また、サウンドプロセッサのための専用メモリとしてそれほど大きな容量を準備できないため、サウンド処理の自由度が低くなる。また、ＣＰＵ及びサウンドプロセッサを含め、各ユニットが専用のメモリを持っているため、全体として必要なメモリ容量が大きくなってしまうという問題もある。
【００１２】
さらに従来の技術によるピッチ変換においては、次のような問題がある。Ａ／Ｄ変換して得たウェーブデータをそのまま再生する場合、サンプリング周波数とＤ／Ａ変換周波数との差が大きくなると、エイリアスノイズが増大する。したがって音質に問題が生じる場合が多い。この問題はゲームの品質に大きな影響を及ぼすため、避けることが望ましい。
【００１３】
また特許文献１に開示のエンベロープデータを用いることにより、少量の基本ウェーブデータから得られる音声の音色を多様に変化させることができるという効果がある。しかし、そのためには多くのエンベロープデータを持つ必要があり、結局サウンドプロセッサのためのメモリ容量が不足したり、装置のコストが高くなったりするという問題がある。
【００１４】
それゆえに本発明の一つの目的は、ＣＰＵの負荷を低減させながら、従来と同様の音声処理を行なうことが可能なプロセッサを提供することである。
【００１５】
本発明の他の目的は、ＣＰＵの負荷を低減させ、必要なリソースを節約しながら、従来と同様の音声処理を行なうことが可能なプロセッサを提供することである。
【００１６】
本発明のさらに他の目的は、ＣＰＵの負荷を低減させ、必要なリソースを節約しながら、ピッチ変換をよい音質で行なうことが可能なサウンドプロセッサを提供することである。
【００１７】
本発明の他の目的は、ＣＰＵの負荷を低減させ、必要なリソースを節約しながら、エンベロープ制御を行なうことが可能なサウンドプロセッサを提供することである。
【課題を解決するための手段】
【００１８】
本発明の第１の局面に係るプロセッサは、外部メモリに接続されると、当該外部メモリに格納されたデータを利用して処理を行なうプロセッサであって、複数個の機能ブロックと、データの転送を行なうための転送手段と、複数個の機能ブロック及び転送手段により共通にアクセス可能な共通メモリと、共通メモリへの複数個の機能ブロック及び転送手段からのアクセスを調停するためのアービタと、を含み、転送手段は、外部メモリに接続可能で、かつ共通メモリにアクセス可能であり、複数個の機能ブロックのうちの予め選択されたものからのデータ転送要求に応じ、外部メモリの、データ転送要求により指定されたアドレスから、共通メモリの、データ転送要求により指定されたアドレスに、データ転送要求により指定された量のデータをアービタによる調停を受けて転送するものである。
【００１９】
複数個の機能ブロックから共通メモリにアクセスできる。共通メモリの領域を、複数の機能ブロックにより共有しながら、動的に各機能ブロックに割当てることが可能となる。ある機能ブロックが使用しない領域については、他の機能ブロックに割当てることができる。各機能ブロックに個別に専用のメモリを持たせる場合と比較して、使用されない領域の大きさを小さくすることができ、メモリ容量が小さくてすむ。また、転送手段によって、外部メモリから共通メモリへのデータ転送が行なえるため、機能ブロックのうちの予め選択されたものは、それぞれ外部メモリから共通メモリへのデータ転送処理から解放される。その結果、それら機能ブロックにかかる負荷が小さくなり、処理を高速化できる。又は同じ性能を実現するために必要なハードウェアが小規模でよくなる。
【００２０】
その結果、ＣＰＵ等のほかの機能ブロックにかかる負荷を低減させながら、従来と同様の音声処理を行なうことが可能なマルチメディアプロセッサを提供することができる。また、必要なリソースを節約することもできる。
【００２１】
好ましくは、アービタは、共通メモリへのアクセスを調停して一時に単一の機能ブロックのみに対し共通メモリへのアクセスを許可するものであり、複数個の機能ブロックは、中央演算処理装置と、中央演算処理装置からコマンドを受け、当該コマンドにしたがって処理を行なうためのサウンドプロセッサとを含み、中央演算処理装置とサウンドプロセッサとは、いずれも共通メモリへのバスのバスマスタとなることが可能である。
【００２２】
サウンドプロセッサの処理の大部分は、ある音声を再生するというものであり、これは中央演算処理装置から初期的な指示を受ければ中央演算処理装置とは独立に実行できる。ただし、音声処理に必要なデータを共通メモリにおく場合、頻繁に共通メモリにアクセスする必要が生じる。そこで、サウンドプロセッサが共通メモリへのアクセスを能動的に要求できるようにすることにより、中央演算処理装置からの指示を受けることなく共通メモリから適切な時期に音声処理に必要なデータを読出すことが可能になり、中央演算処理装置の負荷が軽減されるとともに、サウンドプロセッサにおける処理も効率化できる。
【００２３】
より好ましくは、サウンドプロセッサは、音声データに対し、外部メモリに予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうものである。エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表される。サウンドプロセッサは、外部メモリから共通メモリにエンベロープデータを転送するように転送手段に指示するための転送指示手段と、共通メモリからエンベロープデータを読出してデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む。
【００２４】
エンベロープの形状が、連続する複数個の線分により特定される。それら線分の各々は、勾配と、その持続期間とを特定するデータにより表される。これらデータは、エンベロープのサンプル値そのものと比較してはるかに少ないデータ量で表現できる。その結果、エンベロープデータを記憶するために必要な記憶容量を削減できる。ひいては、このサウンドプロセッサを搭載したプロセッサのコストを下げることが可能になる。
【００２５】
さらに好ましくは、デコード手段は、エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、一定間隔で記憶値から一定値を減算するダウンカウンタと、勾配を特定するデータを記憶するための勾配データ記憶手段と、ダウンカウンタの値が０以下となったことに応答して、エンベロープデータ内の次の線分を表すデータのうち、持続期間をダウンカウンタに、勾配を現すデータを勾配データ記憶手段に、それぞれロードするためのロード手段と、一定間隔ごとに、勾配データ記憶手段に記憶されたデータをエンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む。
【００２６】
勾配データと持続期間を表すデータとを用い、ダウンカウンタ、ロード手段、記憶手段及び加算手段という簡単な回路構成でエンベロープサンプルの値を算出できる。
【００２７】
サウンドプロセッサはさらに、エンベロープデータに基づいてエンベロープサンプルの値を算出する第１のモードと、エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たなエンベロープサンプルの値を算出する第２のモードとの切替を指定するためのモード切替指定手段と、第２のモードにおいて、エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、０より大きく１より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、外部から与えられる、第１及び第２の動作モードのいずれかを指定する信号に応答して、乗算手段により算出されたエンベロープサンプルの値と、デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、エンベロープサンプル記憶手段に記憶させるための手段とを含んでもよい。
【００２８】
第１のモードでは、通常の形でエンベロープデータからエンベロープサンプルをデコードし、意図されたエンベロープ形状で音声データの振幅変調を行なうことができる。一方、第２のモードでは、直前のエンベロープサンプルに対し、０より大きく１より小さなリリースレートを乗算することにより得られたエンベロープサンプルで音声データの振幅変調が行なわれる。この第２のモードでは、元のエンベロープ形状にかかわらず、リリースレートにしたがって音声の大きさを徐々に小さくすることができる。したがって、急に音声の出力を終了する場合と比較して音質への悪影響を防止しながら、任意のときに音声の出力を終了させることができる。
【００２９】
本発明の第２の局面に係るサウンドプロセッサは、所定の符号化方式により符号化され、所定のメモリに格納されたデジタル音声データを、指定された速度で読出して再生することにより、任意のピッチの音声信号を生成するためのサウンドプロセッサであって、所定のビット数の整数部及び所定のビット数の小数部を有する第１の記憶手段と、指定された速度に対応して定まる、所定の小数値を記憶するための第２の記憶手段と、一定期間ごとに、第１の記憶手段の記憶内容に第２の記憶手段に記憶された所定の小数値を加算するための加算手段と、加算手段による加算の結果、第１の記憶手段の小数部から整数部への桁上がりが生じたことに応答して、メモリの、第２の記憶手段の整数部の内容により定められるアドレスからデジタル音声データを読出すための読出手段と、第１の記憶手段の小数部に記憶された値を用いて読出手段により読出されたデジタル音声データを補間することにより、桁上がりが生じたときの音声データを生成するための補間手段とを含む。
【００３０】
加算手段は、一定期間ごとに、第１の記憶手段の記憶内容に第２の記憶手段に記憶された所定の小数値を加算する。第１の記憶手段の小数部から整数部への桁上がりが生じると、読出手段が、メモリの、第２の記憶手段の整数部の内容により定められるアドレスからデジタル音声データを読出す。さらに、補間手段が、第１の記憶手段の小数部に記憶された値を用いて読出手段により読出されたデジタル音声データを補間する。こうした処理により、桁上がりが生じたときの音声データが生成される。第２の記憶手段の小数部は、隣接する音声データの間での遷移の位相を表していると考えられる。そこで、この小数部を用いて隣接する音声データの間での補間を行なうことにより、ピッチ変換した場合でもより滑らかな音声信号を生成できる。
【００３１】
好ましくは、補間手段は、共通メモリの、整数部の値により定められるアドレスとその前後のアドレスとに格納された予め定める複数個のデジタル音声データの各々に対し、小数部に応じてそれぞれ定められる係数を乗算するための複数個の乗算手段と、複数個の乗算手段の出力を合計することにより、桁上がりが生じたときの音声データを生成するための合計算出手段とを含む。
【００３２】
共通メモリの、整数部の値により定められるアドレスとその前後のアドレスとに格納された複数個のデジタル音声データの各々に対し、乗算手段が予め定める係数を乗算する。この係数は、小数部の値に応じて定められる。これら乗算手段の出力を合計算出手段で合計することで、音声データが生成される。複数個のデジタル音声データに対する積和演算によって音声データが生成されるため、ハードウェアによっても、ソフトウェアによっても補間手段を容易に実現できる。
【００３３】
より好ましくは、サウンドプロセッサは、予め定められる係数を、第１の記憶手段の記憶内容により規定されるアドレスと、複数個のデジタル音声データのアドレスとの間に定義される距離の関数としてそれぞれ算出するための係数算出手段をさらに含む。
【００３４】
さらに好ましくは、係数算出手段は、次の関数ｆ（ｘ）により係数を算出するための手段を含む。
【００３５】
【数１】
2007132961.tif 000003
ただし
【００３６】
【数２】
2007132961.tif 000004
であり、ｘは前記距離をあらわす。
【００３７】
関数ｆ（ｘ）により、第１の記憶手段の記憶内容により規定されるアドレスに近い距離のアドレスのデジタル音声データには絶対値の大きな係数が割当てられ、遠くなると一般的に絶対値の小さな係数が割当てられる。小数部まで考慮して距離が算出されるため、補間点の位相まで反映した形で周囲の音声から補間点の音声を補間できる。
【００３８】
好ましくは、読出手段は、加算手段による加算の結果、第１の記憶手段の小数部から整数部への桁上がりが生じたことに応答して、メモリの、第２の記憶手段の整数部をアドレスとしてメモリからデジタル音声データを読出すための手段を含む。
【００３９】
第２の記憶手段の整数部をアドレスとしてメモリからデジタル音声データを読出すことができるため、読出手段の構成を簡易なものにすることができる。
【００４０】
さらに好ましくは、所定の符号化方式はＰＣＭ符号化方式である。
【００４１】
ＰＣＭ符号化方式の場合、読出した符号から単純な処理で音声データを復号化でき、音声信号のピッチ変換を簡単な回路構成で、高品質で行なうことができる。
【００４２】
本発明の第３の局面に係るサウンドプロセッサは、音声データに対し、予め準備された、音声データのエンベロープを特定するエンベロープデータによる振幅変調を行なうサウンドプロセッサであって、エンベロープデータは、エンベロープの形状を、連続する複数個の線分により特定するものであり、当該複数個の線分の各々は、勾配とその持続期間とを特定するデータから表され、サウンドプロセッサは、エンベロープデータをデコードし、音声データの再生時刻におけるエンベロープサンプルの値を算出するためのデコード手段と、デコード手段により算出されたエンベロープサンプルの値を用い、対応する再生時刻における音声データに対する振幅変調を行なうための振幅変調手段とを含む。
【００４３】
エンベロープの形状が、連続する複数個の線分により特定される。それら線分の各々は、勾配と、その持続期間とを特定するデータにより表される。これらデータは、エンベロープのサンプル値そのものと比較してはるかに少ないデータ量で表現できる。その結果、エンベロープデータを記憶するために必要な記憶容量を削減できる。ひいては、このサウンドプロセッサ及び当該サウンドプロセッサを搭載したマルチメディアプロセッサのコストを下げることが可能になる。
【００４４】
好ましくは、デコード手段は、エンベロープサンプルの値を記憶するためのエンベロープサンプル記憶手段と、一定間隔で記憶値から一定値を減算するダウンカウンタと、勾配を特定するデータを記憶するための勾配データ記憶手段と、ダウンカウンタの値が０以下となったことに応答して、エンベロープデータ内の次の線分を表すデータのうち、持続期間をダウンカウンタに、勾配を現すデータを勾配データ記憶手段にロードするためのロード手段と、一定間隔ごとに、勾配データ記憶手段に記憶されたデータをエンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に加算することにより、新たなエンベロープサンプルの値を算出するための加算手段とを含む。
【００４５】
勾配データと持続期間を表すデータとを用い、ダウンカウンタ、ロード手段、記憶手段及び加算手段という簡単な回路構成でエンベロープサンプルを算出できる。
【００４６】
より好ましくは、サウンドプロセッサはさらに、エンベロープデータに基づいてエンベロープサンプルの値を算出する第１のモードと、エンベロープサンプル記憶手段に記憶された現在のエンベロープサンプルの値に基づいて新たなエンベロープサンプルの値を算出する第２のモードとの切替を指定するためのモード切替指定手段と、第２のモードにおいて、エンベロープサンプル記憶手段に記憶されたエンベロープサンプルの値に、外部より指定された、０より大きく１より小さな所定のリリースレートを乗算することにより、新たなエンベロープサンプルの値を算出するための乗算手段と、外部から与えられる、第１及び第２の動作モードのいずれかを指定する信号に応答して、乗算手段により算出されたエンベロープサンプルの値と、デコード手段により算出されたエンベロープサンプルの値とのいずれか一方を選択し、エンベロープサンプル記憶手段に記憶させるための手段とを含む。
【００４７】
第１のモードでは、通常の形でエンベロープデータからエンベロープサンプルをデコードし、意図されたエンベロープ形状で音声データの振幅変調を行なうことができる。一方、第２のモードでは、直前のエンベロープサンプルに対し、０より大きく１より小さなリリースレートを乗算することにより得られたエンベロープサンプルで音声データの振幅変調が行なわれる。この第２のモードでは、元のエンベロープ形状にかかわらず、リリースレートにしたがって音声の大きさを徐々に小さくすることができる。したがって、急に音声の出力を終了する場合と比較して音質への悪影響を防止しながら、任意のときに音声の出力を終了させることができる。
【発明を実施するための最良の形態】
【００４８】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一又は相当部分については同一の参照符号を付してその説明を援用する。アドレス情報等の先頭に付した「０ｘ」はその情報が１６進数であることを意味する。
【００４９】
＜原理＞
本実施の形態の特徴として、Ｄ／Ａ変換のタイミングに応じたウェーブデータの補間処理と、必要なメモリ容量を削減しながら従来と同様の効果を奏することができるエンベロープ制御とがある。以下、それらの原理について順に説明する。
【００５０】
−補間処理
図３に、図１に示したものと同様のウェーブデータ３０と、ウェーブデータ３０から得られる理想的な音声信号波形６０とを示す。本実施の形態で使用されるサウンドプロセッサは、ピッチ変換を行ないながら、得られる音声信号波形を音声信号波形６０に近づけるような補間処理を行なう点に一つの特徴を持つ。そのために本実施の形態では、Ｄ／Ａ変換のタイミングとして、特許文献１に開示の累算器と同様の構成を使用しながら、累算器の整数部の値だけではなく、小数部の値を用いて補間を行なう。
【００５１】
なお、本実施の形態に係るマルチメディア装置では、ＰＣＭデータは１サンプルにつき８ビットを使用するものとする。さらに、サウンドチャンネルは６４チャンネルが使用可能であるが、以下の説明では簡略のために原則として１チャンネルのみについて説明する。使用するデータも、基本的にチャンネル数だけ必要であり、メモリ上にもそれだけの記憶場所が必要である。しかし、以下の説明では、記載を分かりやすくするため、必要とされる記憶容量も１チャンネルのみのものとする。
【００５２】
図４及び図６を参照して、ウェーブデータの補間は本実施の形態では以下のようにして行なわれる。図４は、実際の音声波形信号７０を示し、実際の音声波形信号７０に対し、補間ポイント７２でのウェーブデータを補間により得ることを考える。図４において横軸は時間軸だが、一定時間でＤ／Ａ変換をするため、横軸はメモリ上でのウェーブデータのアドレスに対応する。右がアドレスの大きくなる方向、左がアドレスの小さくなる方向である。
【００５３】
補間ポイント７２のウェーブデータを得るためには、補間ポイント７２を中心とする前後８サンプルのウェーブデータを用いる。これらサンプルの値をＤＡ〜ＤＨとする。そして、補間ポイント７２とサンプルＤＡ〜ＤＨとの間の距離をそれぞれＸＡ〜ＸＨとする。ここでの距離は、二つのアドレスの間の差により定義される。補間ポイント７２のアドレスとサンプルＤＤのアドレスとの間の差ＸＤは、補間ポイント７２を指定している累算器の小数部の値に相当する。
【００５４】
補間ポイント７２の値Ｗは以下の補間式により算出される。
【００５５】
【数３】
2007132961.tif 000005
また、このように計算された補間ポイント７２の値Ｗが、ウェーブデータとして許容される範囲の外になる場合は、この範囲内に収まるようにデータが修正される。すなわちＷの値は、許容される最大値より大きければ最大値に、許容される最小値より小さければ最小値に、それぞれ修正される。
【００５６】
この関数ｓｉｎｃ（πｘ）のグラフ７４を図５に示す。
【００５７】
図４の補間ポイント７２のリードアドレスの算出を行なうアドレス算出回路８０の基本的構成について図６に示す。図６を参照して、このアドレス算出回路８０は、特許文献１に記載の累算器に相当する現在のウェーブデータアドレス記憶部９０及び加算器９４と、特許文献１に記載のピッチ制御情報（以下この情報を「ウェーブ周波数」と呼ぶ。）を格納する部分に相当するウェーブ周波数記憶部９２とを含む。ウェーブデータアドレス記憶部９０及びウェーブ周波数記憶部９２は、３２ビットの整数部１００及び１１０、１６ビットの小数部１０２及び１１２をそれぞれ有する記憶部である。ただしウェーブ周波数記憶部９２の整数部１１０にはゼロが書込まれ、小数部１１２にはピッチを制御するためのデータがＣＰＵにより与えられる。またウェーブデータアドレス記憶部９０の整数部１００の値が、メモリ内のウェーブデータのアドレスを与える。
【００５８】
加算器９４は、所定のサンプリングレート記憶部９６に格納された値により定まるサンプリングレートでウェーブデータアドレス記憶部９０に格納された現在のウェーブデータアドレスとウェーブ周波数記憶部９２に格納されたウェーブ周波数とを加算する。加算後の値はウェーブデータアドレス記憶部９０に書込まれる。この加算の結果、ウェーブデータアドレス記憶部９０の小数部１０２の値が１を超えると、キャリーが発生し、整数部１００の値に１が加算され、それに応答してウェーブデータがメモリ内の整数部１００により定められるアドレスから読出される。
【００５９】
読出されたウェーブデータと、ウェーブデータアドレス記憶部９０の小数部１０２とを用いて上記した補間処理が行なわれる。なお、この補間の際には補間ポイント７２の前だけでなく後のサンプル（図４におけるＤＥ〜ＤＨ）も必要とされる。したがって、実際には処理対象のアドレスのサンプルよりもアドレスの小さなデータ及び大きなデータも読出される。
【００６０】
このような補間処理を行なうための補間回路１１４の構成例を図７に示す。図７を参照して、補間回路１１４はデジタルフィルタであり、直列接続された８個のレジスタ１４０〜１５８を含む、読出されたウェーブデータを順番に格納するためのシフトレジスタ１２０と、シフトレジスタ１２０の各レジスタ１４０〜１５８に格納されたサンプルデータの各々に対し、図６に示すウェーブデータアドレス記憶部９０の小数部１０２の値（この値はサンプルの位相を表すと考えられるので、以下「ＷＰＨＡＳＥ」と呼ぶ。）によって上記した式による係数を算出するための係数算出部１２２と、レジスタ１４０〜１５８に格納されたサンプルに対し、それぞれ係数算出部１２２で算出された係数を乗算するための８個の乗算器１７０〜１８４を含む乗算処理部１２４と、乗算器１７０〜１８４の出力を合計して補間後のＰＣＭデータを出力するための合計部１２６とを含む。なお、合計部１２６による合計結果が０になるか、又は合計部１２６による合計結果の符号が変化したときに第１の値がセットされ、それ以外のときには第２の値がセットされるステータスレジスタ１２８が設けられている。ステータスレジスタ１２８の出力する信号は、本明細書ではゼロステータス信号と呼び、後述するようにエンベロープデータの適用タイミングの判定に用いられる。
【００６１】
−エンベロープ処理
特許文献１に記載の技術では、エンベロープデータはサンプリングデータとして保持されている。したがってエンベロープデータの格納のために必要となるメモリ領域は比較的大きい。それに対し本実施の形態では、メモリ領域を節約するために、図８の中段により表されるように、エンベロープ２００を連続する線分の集まり（線分２１０、２１２及び２１４）で表す。なお、図８に示す例では、エンベロープ２００の最終部分の点２１８からはそれまでの線分と異なり、比較的急速に減衰する部分２１６となっている。この部分２１６は、音声の発生を終了させるために、メモリに格納されたエンベロープデータを使用せず、発生する音声の振幅をある一定の比率で減衰させる部分である。この部分２１６の存在により、対応する音声波形信号２３０の最終部分も対応して振幅が減衰していく。エンベロープのどの部分からこうした部分が始まるかはＣＰＵにより任意に決められる。このように一定の比率でエンベロープの大きさが減衰していくように動作するモードを、エンベロープのリリースモードと呼ぶ。これに対し、それより前のようにエンベロープにしたがって音声を振幅変調するような動作モードをシーケンシャルモードと呼ぶ。
【００６２】
図９に示すように、エンベロープデータ２４０は、これら線分を表す１又は複数のエントリ２５０，２５２，…，２５４と、エンベロープデータ２４０の終わりを表すエントリ２５６とを含む。
【００６３】
エントリ２５０〜２５４の各々は３２ビットからなり、勾配領域２６０と、持続時間領域２６２とを含む。勾配領域２６０は１６ビット符号付き固定小数点データであり、持続時間領域２６２は１６ビット符号無し整数データである。エントリ２５６の持続時間領域２６２の部分には０ｘ００００が格納されている。エンベロープデータ読出しの際、持続時間領域２６２に０ｘ００００が格納されていれば、そこでそのエンベロープデータが終了すると判定できる。エンベロープデータの終了が検出された場合、最終的に算出されたエンベロープサンプルの値を保持する。
【００６４】
このようなデータからエンベロープによるウェーブデータの振幅変調を行なうためには、エンベロープのサンプル値を算出する処理が必要となる。本明細書では、この処理をエンベロープデータの「デコード」と呼ぶこととする。デコードは、基本的に、１サイクルごとに現在のエンベロープデータに対し勾配の値を加算する処理を、持続時間に相当するサイクル数だけ繰返すことにより行なわれる。
【００６５】
図１０に、図９に示すようなデータ形式のエンベロープデータ２７０から作成したエンベロープ２７２の例を示す。図１０に示す例では、エンベロープデータ２７０の第１番目のエントリによれば、勾配は０ｘ３８００、持続時間はサンプリングのサイクル数にして０ｘ０００９（＝９）サイクルである。第２番目のエントリによれば、勾配は０ｘＤ０００、持続時間は０ｘ０００２（＝２）サイクル、第３番目のエントリによれば、勾配は０ｘＦ８００、持続時間は０ｘ００１８（＝２４）サイクルである。なお、エンベロープサンプルの値が０ｘＦＦＦＦ以上になる場合には０ｘＦＦＦＦに修正され、エンベロープエンベロープサンプルの値が０以下になる場合には０に修正される。したがって、図１０に示すように、第１番目のエントリが示すエンベロープにおいては、エンベロープサンプルの値が０ｘＦＦＦＦ以上になる部分において０ｘＦＦＦＦに修正され、第３番目のエントリが示すエンベロープにおいては、エンベロープサンプルの値が０以下になる部分において０に修正されている。デジタル処理をするため、エンベロープデータは所定のタイミングで更新される。したがって、エンベロープ２７２は図１０に示したように階段状に変化する外形となるが、ウェーブデータの振幅変調にはこのようなエンベロープで十分である。
【００６６】
なお、エンベロープデータによる振幅変調でエンベロープデータの値が変化する際には、新たなエンベロープの値を適用するのはウェーブデータの振幅が０付近にある場合が望ましい。これは、ウェーブデータから得られる音声波形信号の振幅が大きいところでエンベロープの値を変化させると、得られる音声の振幅が急速に変化してしまい、音質が低下するためである。そこで、図１１に示すように、音声波形信号２８０に対するエンベロープ２９０の変化をそのまま適用するのではなく、実線２９２により示されるように、音声波形信号２８０の振幅が０となった場合にはそのタイミングで、又はその値の符号が変化したときにはその直後のタイミングで、新たなエンベロープデータの値を適用する。図７に示すステータスレジスタ１２８の値がここで利用される。
【００６７】
図１２に、上記したエンベロープ処理のうち、シーケンシャルモードを実現するためのエンベロープ処理回路３００の例を示す。図１２を参照して、エンベロープ処理回路３００は、所定のメモリの、エンベロープデータ用の領域から読出されたエンベロープデータを一時格納するためのエンベロープデータ保持部３１０と、エンベロープデータ保持部３１０に格納されたエンベロープデータのうち、持続時間が設定され、Ｄ／Ａ変換のためのサンプリングレートにしたがって１ずつカウントを減算していくための持続時間ダウンカウンタ３１２と、エンベロープデータ保持部３１０に格納されたエンベロープデータのうちの勾配データを格納するための勾配記憶部３２０とを含む。
【００６８】
エンベロープ処理回路３００はさらに、持続時間ダウンカウンタ３１２のカウントが０となったことに応答して、エンベロープデータ保持部３１０から次のエンベロープデータを読出し、持続時間を持続時間ダウンカウンタ３１２に、勾配データを勾配記憶部３２０に、それぞれロードするためのロード回路３１４と、現在のエンベロープサンプルデータを保持するためのエンベロープサンプル保持部３１８と、エンベロープサンプル保持部３１８に保持されているエンベロープサンプルの値に、勾配記憶部３２０に保持されている勾配の値を加算してエンベロープサンプル保持部３１８に与えるための加算器３２２と、エンベロープ更新タイミング信号を発生するためのエンベロープ更新タイミング信号発生回路３１６とを含む。エンベロープサンプル保持部３１８は、エンベロープ更新タイミング信号発生回路３１６からエンベロープ更新タイミング信号が与えられたことに応答して、加算器３２２の出力を保持する。
【００６９】
ロード回路３１４がエンベロープデータ保持部３１０から次のエンベロープデータを読み出した際に、エンベロープデータ内の持続時間領域に０ｘ００００を検出すると、ロード回路３１４は以降のロード動作を停止する。ロード回路３１４でのロード動作が停止すると、エンベロープ更新タイミング信号発生回路３１６もエンベロープ更新タイミング信号の発生を停止し、エンベロープサンプル保持部３１８は、現在保持している値を保持し続ける。
【００７０】
図１３に、上記したエンベロープ処理のうち、リリースモードを実現するためのエンベロープ処理回路３３０の例を示す。図１３を参照して、このエンベロープ処理回路３３０は、現在のエンベロープサンプルデータを保持するための、図１２に示すものと同一のエンベロープサンプル保持部３１８と、エンベロープの減衰率（リリースレート）を格納するエンベロープリリースレート記憶部３４０と、エンベロープサンプル保持部３１８の保持するエンベロープサンプルの現在の値に、エンベロープリリースレート記憶部３４０に保持されたリリースレートを乗算し、エンベロープサンプル保持部３１８に与えるための乗算器３４２とを含む。
【００７１】
リリースモードでは、エンベロープリリースレート記憶部３４０にリリースレートが設定される。乗算器３４２はエンベロープサンプル保持部３１８に格納されたエンベロープサンプルの現在値にエンベロープリリースレート記憶部３４０に格納されたリリースレートを乗算し、エンベロープサンプル保持部３１８に与える。エンベロープサンプル保持部３１８は、エンベロープの更新タイミングで乗算器３４２の出力を格納する。こうして、リリースモードでは、現在のエンベロープサンプルの値にリリースレートを乗算して次のエンベロープサンプルの値が決まる。リリースレートは０より大きく１より小さな値に設定されるので、リリースモードではエンベロープ処理回路３３０によりエンベロープの大きさはリリースレートの値に応じた率で減衰していく。
【００７２】
本実施の形態では、上記したシーケンシャルモードとリリースモードとを切替可能とする。そのための回路構成を図１４に示す。図１４には、エンベロープ処理回路のうち、モードの切替に関連する部分のみと、エンベロープ処理回路により算出されたエンベロープの値に対し、所定のゲインを乗算することにより、ウェーブデータに関する振幅データを算出する部分とを示す。図１４を参照して、このエンベロープ処理回路３５２は、勾配記憶部３２０、エンベロープサンプル保持部３１８、加算器３２２、エンベロープリリースレート記憶部３４０及び乗算器３４２に加えて、ＣＰＵにより設定されるゲインを格納するためのゲイン記憶部３４４と、加算器３２２又は乗算器３４２から出力されるエンベロープのサンプル値にゲイン記憶部３４４の保持されたゲインを乗算し、振幅データ３４８を出力するための乗算器３４６とを含む。乗算器３４６への入力はエンベロープサンプル保持部３１８にフィードバックされ保持される。
【００７３】
勾配記憶部３２０は１６ビット符号付き固定小数点数記憶部（整数部７ビット、小数部８ビット）である。エンベロープサンプル保持部３１８は１６ビット符号無し固定小数点数記憶部（整数部８ビット、小数部８ビット）である。エンベロープリリースレート記憶部３４０は８ビット符号無し固定小数点数記憶部であり、小数部のみからなる。ゲイン記憶部３４４も同じく８ビット符号無し固定小数点数記憶部であり、小数部のみからなる。振幅データ（アンプリチュードデータ）３４８は１６ビット符号無し固定小数点データであり、整数部８ビット及び小数部８ビットからなる。振幅データ３４８のうち、整数部８ビットが振幅Ｄ／Ａ変換器（以下「ＤＡＣ」と呼ぶ。）に出力される。ＤＡＣから出力されるアナログ信号が、後述するオーディオＤＡＣブロック３８６内で、ウェーブデータをＤ／Ａ変換するウェーブＤ／Ａ変換器から出力されるアナログ信号とアナログ乗算される。この乗算は、カスケード接続されたＤ／Ａ変換器により行われる。このようにして、ウェーブデータに振幅変調が施される。
【００７４】
なお、上記説明では一つのサウンドチャンネルについての処理を説明したが、後述する本実施の形態に係るマルチメディアプロセッサは複数のサウンドチャンネルに対する処理を行なうことができる。したがって、上記した構成は複数のサウンドチャンネルに対して設けられており、サウンドチャンネルの数とシステムクロックの周波数とに応じた速度で各チャンネルに対する処理が実行される。
【００７５】
＜構成＞
図１５は、本実施の形態によるマルチメディアプロセッサ３６０の内部構成を示すブロック図である。図１５に示すように、このマルチメディアプロセッサ３６０は、外部バス３６２を介して外部メモリ３６４に接続される。マルチメディアプロセッサ３６０は、後述する内部の各ブロックで共有されるメインＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３８８と、各ブロックからのメインＲＡＭ３８８に対するアクセスを調停するためのメインＲＡＭアクセスアービタ３９０とを含む。なお、メインＲＡＭ３８８にアクセスすることのあるブロックはいずれもメインＲＡＭアクセスアービタ３９０を介し、その調停を受けるので、以下の説明ではそれらがメインＲＡＭアクセスアービタ３９０を介してメインＲＡＭ３８８にアクセスすることについては特に触れない。
【００７６】
マルチメディアプロセッサ３６０はさらに、外部バス３６２に接続される外部メモリインタフェース３８０と、外部メモリ３６４とマルチメディアプロセッサ３６０の内部のメモリとの間のデータ転送を行なうためのＤＭＡＣ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）３８２と、ゲームを制御するためのプログラムを実行するためのＣＰＵ３９２と、ＣＰＵ３９２に接続されたＣＰＵローカルＲＡＭ３９４とを含む。
【００７７】
マルチメディアプロセッサ３６０はさらに、ＣＰＵ３９２からのコマンドを受けて動作するレンダリングプロセッシングユニット（以下、「ＲＰＵ」と呼ぶ。）３９６と、ＲＰＵ３９６に接続されたカラーパレットＲＡＭ３９８と、ＣＰＵ３９２からのコマンドを受けて動作するサウンドプロセシングユニット（以下、「ＳＰＵ」と呼ぶ。）４００と、ＳＰＵ４００に接続されたＳＰＵローカルＲＡＭ４０２と、ＣＰＵ３９２からのコマンドを受けて動作するジオメトリエンジン（以下、「ＧＥ」と呼ぶ。）４０４と、ＣＰＵ３９２からの指示を受けて動作するＹソーティングユニット（以下、「ＹＳＵ」と呼ぶ。）４０６とを含む。
【００７８】
マルチメディアプロセッサ３６０はさらに、周辺装置３６８との間のインタフェースとなる外部インタフェースブロック４０８と、ＣＰＵ３９２、ＲＰＵ３９６、ＳＰＵ４００、ＧＥ４０４、ＹＳＵ４０６、及び外部インタフェースブロック４０８が接続されるＩ／Ｏバス４１０と、ＲＰＵ３９６の出力するデジタルビデオ信号を外部のビデオ出力機器３７０に与えるためのビデオＤＡＣ（ｄｉｇｉｔａｌ  ｔｏ  ａｎａｌｏｇ  ｃｏｎｖｅｒｔｅｒ）３８４と、ＳＰＵ４００の出力するデジタルオーディオ信号を外部のオーディオ出力機器３７２に与えるためのオーディオＤＡＣブロック３８６と、外部のアナログ装置３６６からのアナログ信号をデジタル信号に変換し、ＣＰＵ３９２の制御にしたがってＩ／Ｏバス４１０上に出力するためのＡ／Ｄコンバータ（以下、「ＡＤＣ」と呼ぶ。）４１２とを含む。メインＲＡＭ３８８及び外部メモリ３６４を区別して説明する必要がないときは、「メモリＭＥＭ」と表記する。
【００７９】
ＣＰＵ３９２は、メモリＭＥＭに格納されたプログラムを実行して、各種演算やシステム全体の制御を行なう。また、ＣＰＵ３９２は、ＤＭＡＣ３８２にプログラム及びデータの転送要求を行なうこともできるし、ＤＭＡＣ３８２を介さずに、外部メモリ３６４から直接プログラムコードをフェッチし、外部メモリ３６４に直接データアクセスを行なうこともできる。
【００８０】
Ｉ／Ｏバス４１０は、ＣＰＵ３９２をバスマスタとするシステム制御用のバスであり、バススレイブである各機能ユニット（外部メモリインタフェース３８０、ＤＭＡＣ３８２、ＲＰＵ３９６、ＳＰＵ４００、ＧＥ４０４、ＹＳＵ４０６、及び外部インタフェースブロック４０８）の制御レジスタ及びローカルＲＡＭ３９４，３９８，４０２へのアクセスに用いられる。このようにして、これらの機能ユニットは、Ｉ／Ｏバス４１０を通じて、ＣＰＵ３９２により制御される。
【００８１】
ＣＰＵローカルＲＡＭ３９４は、ＣＰＵ３９２専用のＲＡＭであり、サブルーチンコールや割り込み時におけるデータの退避等を行なうためのスタック領域、及びＣＰＵ３９２のみが扱う変数の格納領域等として使用される。
【００８２】
ＲＰＵ３９６は、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成する。具体的には、ＲＰＵ３９６は、ＹＳＵ４０６によるソート済みの、ポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、メインＲＡＭ３８８から読出し、所定の処理を実行して、スクリーン（表示画面）のスキャンに合わせて水平ラインごとにイメージを生成する。生成されたイメージは、コンポジットビデオ信号波形を示すデータストリームに変換され、ビデオＤＡＣ３８４に出力される。また、ＲＰＵ３９６は、ＤＭＡＣ３８２に対して、ポリゴン及びスプライトのテクスチャパターンデータの取込みのためのＤＭＡ転送要求を行なう機能を有する。
【００８３】
テクスチャパターンデータとは、ポリゴン又はスプライトに貼り付けられる２次元の画素配列データであり、各画素データは、カラーパレットＲＡＭ３９８のエントリを指定するための情報の一部である。以降、テクスチャパターンデータの画素を「テクセル」と呼称し、スクリーンに表示されるイメージを構成する画素を指す「ピクセル」とは区別して使用する。従って、テクスチャパターンデータは、テクセルデータの集合である。
【００８４】
ポリゴン構造体配列は、多角形状のグラフィック要素であるポリゴンのための構造体配列であり、スプライト構造体配列は、スクリーンに平行な矩形のグラフィック要素であるスプライトのための構造体配列である。ポリゴン構造体配列の要素を、「ポリゴン構造体インスタンス」と呼び、スプライト構造体配列の要素を、「スプライト構造体インスタンス」と呼ぶ。ただし、両者を区別して説明する必要がないときは、単に「構造体インスタンス」と呼ぶこともある。
【００８５】
ポリゴン構造体配列に格納された各ポリゴン構造体インスタンスは、ポリゴンごとの表示情報（スクリーンにおける頂点座標、テクスチャマッピングモードでのテクスチャパターンに関する情報及びグーローシェーディングモードでのカラーデータ（ＲＧＢのカラーコンポーネント）を含む。）であり、一つのポリゴン構造体インスタンスに一つのポリゴンが対応している。スプライト構造体配列に格納された各スプライト構造体インスタンスは、スプライトごとの表示情報（スクリーンにおける座標及びテクスチャパターンに関する情報を含む。）であり、一つのスプライト構造体インスタンスに一つのスプライトが対応している。
【００８６】
ビデオＤＡＣ３８４は、アナログのビデオ信号を生成するためのデジタル／アナログ変換器である。ビデオＤＡＣ３８４は、ＲＰＵ３９６から入力されたデータストリームをアナログのコンポジットビデオ信号に変換し、ビデオ信号出力端子（図示せず）からテレビジョンモニタ等（図示せず）に出力する。
【００８７】
カラーパレットＲＡＭ３９８は、本実施の形態では５１２色すなわち５１２エントリのカラーパレットからなる。ＲＰＵ３９６は、テクスチャパターンデータに含まれるテクセルデータをカラーパレットのエントリを指定するインデックスの一部として用いることにより、カラーパレットＲＡＭ３９８を参照し、テクスチャパターンデータをカラーデータ（ＲＧＢのカラーコンポーネント）に変換する。
【００８８】
本実施の形態の特徴の一つであるＳＰＵ４００は、ウェーブデータ、アンプリチュードデータ、及びメインボリュームデータを生成する。具体的には、ＳＰＵ４００は、最大６４チャンネル分のウェーブデータを生成して時分割多重化するとともに、最大６４チャンネル分のエンベロープデータを生成してチャンネルボリュームデータ（ゲイン）と乗算し、アンプリチュードデータを時分割多重化する。そして、ＳＰＵ４００は、メインボリュームデータ、時分割多重化されたウェーブデータ、及び時分割多重化されたアンプリチュードデータを、オーディオＤＡＣブロック３８６に出力する。オーディオＤＡＣブロック３８６は、このようにＳＰＵ４００から与えられた左右のチャンネルのウェーブデータに、左右のチャンネルのアンプリチュードデータを乗算し、さらにメインボリュームを乗算してアナログ信号として出力する機能を持つ。このアナログオーディオ信号は、オーディオ信号出力端子（図示せず）からテレビジョンモニタ等（図示せず）のオーディオ入力端子（図示せず）に出力される。また、ＳＰＵ４００は、ＤＭＡＣ３８２に対して、ウェーブデータ及びエンベロープデータの取込みのためのＤＭＡ転送要求を行なう機能を有する。ＳＰＵ４００の詳細は後述する。
【００８９】
ＳＰＵローカルＲＡＭ４０２は、ＳＰＵ４００がウェーブ再生及びエンベロープ生成を行なう際に用いるパラメータ（例えば、ウェーブデータやエンベロープデータの格納アドレスやウェーブ周波数小数部等）を格納する。
【００９０】
ＧＥ４０４は、三次元イメージを表示するための幾何演算を実行する。具体的には、ＧＥ４０４は、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度／ポリゴン明度計算（ベクトル内積）、及びポリゴン裏面カリング処理（ベクトル外積）等の演算を実行する。
【００９１】
ＹＳＵ４０６は、メインＲＡＭ３８８に格納されているポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、ソートルール１〜４に従ってソートする。この場合、ポリゴン構造体配列とスプライト構造体配列とで、別個にソートが行なわれる。
【００９２】
以下、ＹＳＵ４０６によるソートルール１〜４について説明するが、その前に座標系について説明する。テレビジョンモニタ等のディスプレイ装置（図示せず）への実際の表示に用いられる二次元座標系をスクリーン座標系と呼ぶ。本実施の形態では、スクリーン座標系は、水平方向２０４８ピクセル×垂直方向１０２４ピクセルの２次元ピクセル配列から構成される。座標原点は左上にあり、右方向がＸ軸の正、下方向がＹ軸の正に相当する。ただし、実際に表示される領域は、スクリーン座標系の全空間ではなく一部の空間である。この表示領域をスクリーンと呼ぶことにする。
【００９３】
ソートルール１は、最小Ｙ座標が小さい順に、各ポリゴン構造体インスタンスを並べ替えることである。最小Ｙ座標とは、ポリゴンの全頂点のＹ座標のうち、最も小さいＹ座標のことである。Ｙ座標はスクリーンの垂直座標であり、下向きが正方向である。ソートルール２は、最小Ｙ座標が同じである複数のポリゴンについては、デプス値が大きい順に、各ポリゴン構造体インスタンスを並べることである。なお、デプス値が大きいほど奥に描画される。
【００９４】
ただし、ＹＳＵ４０６は、スクリーンの先頭ラインに表示されるピクセルを持つ複数のポリゴンについては、最小Ｙ座標が異なっている場合でも、それらが同一であるとみなして、ソートルール１ではなく、ソートルール２に従って、各ポリゴン構造体インスタンスの並べ替えを行なう。つまり、スクリーンの先頭ラインに表示されるピクセルを持つポリゴンが複数存在する場合は、最小Ｙ座標が同一であるとみなして、デプス値が大きい順に並べ替えられる。これがソートルール３である。
【００９５】
インタレーススキャンの場合でも、ソートルール１〜３が適用される。ただし、奇数フィールドを表示するためのソートでは、奇数ラインに表示されるポリゴンの最小Ｙ座標及び／又はその奇数ラインの一つ前の偶数ラインに表示されるポリゴンの最小Ｙ座標が同一であるとみなして、ソートルール２によるソートを行なう。ただし、先頭の奇数ラインは除く。なぜなら、その一つ前の偶数ラインが存在しないからである。一方、偶数フィールドを表示するためのソートでは、偶数ラインに表示されるポリゴンの最小Ｙ座標及び／又はその偶数ラインの一つ前の奇数ラインに表示されるポリゴンの最小Ｙ座標が同一であるとみなして、ソートルール２によるソートを行なう。これがソートルール４である。
【００９６】
スプライトに関するソートルール１〜４は、それぞれポリゴンに関するソートルール１〜４と同様である。
【００９７】
外部メモリインタフェース３８０は、外部バス３６２を介して、外部メモリ３６４からのデータの読出し、及び外部メモリ３６４へのデータの書込みを司る。この場合、外部メモリインタフェース３８０は、図示しないＥＢＩ（Ｅｘｔｅｒｎａｌ  Ｂｕｓ  Ｉｎｔｅｒｆａｃｅ）優先順位テーブルに従って、ＣＰＵ３９２及びＤＭＡＣ３８２からの外部バスアクセス要求要因（外部バス３６２へのアクセスを要求する要因）を調停して、いずれか一つの外部バスアクセス要求要因を選択する。そして、選択した外部バスアクセス要求要因に対して外部バス３６２へのアクセスを許可する。ＥＢＩ優先順位テーブルは、ＣＰＵ３９２からの複数種類の外部バスアクセス要求要因及びＤＭＡＣ３８２からの外部バスアクセス要求要因の優先順位を定めたテーブルである。
【００９８】
外部バスアクセス要求要因として、ＣＰＵに含まれる図示しないＩＰＬ（ｉｎｉｔｉａｌ  ｐｒｏｇｒａｍ  ｌｏａｄｅｒ）によるブロック転送要求、ＣＰＵ３９２によるデータアクセス要求、ＣＰＵ３９２による命令フェッチ要求、及びＤＭＡＣ３８２によるＤＭＡ要求がある。
【００９９】
ＤＭＡＣ３８２は、メインＲＡＭ３８８と、外部バス３６２に接続された外部メモリ３６４と、の間でＤＭＡ転送を行なう。この場合、ＤＭＡＣ３８２は、図示しないＤＭＡ優先順位テーブルに従って、ＣＰＵ３９２、ＲＰＵ３９６、及びＳＰＵ４００からのＤＭＡ転送要求要因（ＤＭＡ転送を要求する要因）を調停して、いずれか一つのＤＭＡ転送要求要因を選択する。そして、外部メモリインタフェース３８０に対して、ＤＭＡ要求を行なう。ＤＭＡ優先順位テーブルは、ＣＰＵ３９２、ＲＰＵ３９６、及びＳＰＵ４００からのＤＭＡ要求要因の優先順位を定めたテーブルである。
【０１００】
ＳＰＵ４００のＤＭＡ要求要因として、（１）ウェーブデータをウェーブバッファに転送すること、（２）エンベロープデータをエンベロープバッファに転送すること、がある。ウェーブバッファ及びエンベロープバッファは、それぞれメインＲＡＭ３８８上に設定されるウェーブデータ及びエンベロープデータのテンポラリ格納領域である。なお、ＳＰＵ４００の２つのＤＭＡ要求要因間の調停は、ＳＰＵ４００内のハードウェア（図示せず）で行なわれ、ＤＭＡＣ３８２は関知しない。
【０１０１】
ＲＰＵ３９６のＤＭＡ要求要因として、テクスチャパターンデータをテクスチャバッファに転送すること、がある。テクスチャバッファは、メインＲＡＭ３８８上に設定されるテクスチャパターンデータのテンポラリ格納領域である。
【０１０２】
ＣＰＵ３９２のＤＭＡ要求要因として、（１）仮想記憶管理においてページミスが発生した場合のページ転送、（２）アプリケーションプログラム等が要求するデータ転送、がある。なお、ＣＰＵ３９２内で複数のＤＭＡ転送要求が同時に発生した場合は、その調停はＣＰＵ３９２で実行されるソフトウェアにて行なわれ、ＤＭＡＣ３８２は関知しない。
【０１０３】
外部インタフェースブロック４０８は、周辺装置３６８とのインタフェースであり、２４チャンネルのプログラマブルなデジタル入出力（Ｉ／Ｏ）ポートを含む。２４チャンネルのＩ／Ｏポートの各々は、４チャンネル分のマウスインタフェース機能、４チャンネル分のライトガンインタフェース機能、２チャンネル分の汎用タイマ／カウンタ、１チャンネル分の調歩同期式シリアルインタフェース機能、１チャンネル分の汎用パラレル／シリアル変換ポート機能のうち１又は複数に内部接続されている。
【０１０４】
ＡＤＣ４１２は、４チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置３６６から入力されたアナログ信号をデジタル信号に変換する。例えば、マイク音声等のアナログ入力信号をサンプリングしてデジタルデータに変換する。
【０１０５】
メインＲＡＭアクセスアービタ３９０は、機能ユニット（ＣＰＵ３９２、ＲＰＵ３９６、ＳＰＵ４００、ＧＥ４０４、ＹＳＵ４０６、ＤＭＡＣ３８２、及び外部インタフェースブロック４０８（汎用パラレル／シリアル変換ポート））からのメインＲＡＭ３８８へのアクセス要求を調停して、いずれかの機能ユニットにアクセス許可を出す。メインＲＡＭアクセスアービタ３９０は、ＣＰＵ３９２及びＳＰＵ４００をバスマスタとする、メインＲＡＭ３８８へのアクセスのためのバスとしての機能も果たす。
【０１０６】
メインＲＡＭ３８８は、ＣＰＵ３９２のワーク領域、変数格納領域、及び仮想記憶管理領域等として利用される。また、メインＲＡＭ３８８は、ＣＰＵ３９２が他の機能ユニットに受け渡すデータの格納領域、ＲＰＵ３９６及びＳＰＵ４００が外部メモリ３６４からＤＭＡによって取得したデータの格納領域、ＧＥ４０４及びＹＳＵ４０６の入力データ及び出力データの格納領域等としても使用される。したがってメインＲＡＭ３８８は、ＣＰＵ３９２、ＲＰＵ３９６、ＳＰＵ４００、ＧＥ４０４及びＹＳＵ４０６により共有されるメモリである。この構成により、メインＲＡＭ３８８の領域を必要なときに必要な機能ユニットに動的に割当てることが可能になる。
【０１０７】
各機能ユニットに専用のＲＡＭを設ける場合には、各専用ＲＡＭの領域を、使用される可能性のある最大容量としておく必要がある。それに対し、本実施の形態におけるようにメインＲＡＭ３８８を複数の機能ユニットで共有し、必要なときに必要な容量だけを適切な機能ユニットに割当てることにより、使用されない領域が発生することを避けることができ、メインＲＡＭ３８８の領域全体を有効に利用できる。その結果、マルチメディアプロセッサ３６０全体として必要な記憶容量の総量が削減できる。
【０１０８】
外部バス３６２は、外部メモリ３６４にアクセスするためのバスである。ＣＰＵ３９２及びＤＭＡＣ３８２から、外部メモリインタフェース３８０を介してアクセスされる。外部バス３６２のアドレスバスは、３０ビットから成り、最大で１Ｇバイト（＝８Ｇビット）の外部メモリ３６４を接続することができる。外部バス３６２のデータバスは、１６ビットから成り、８ビット又は１６ビットのデータバス幅を持つ外部メモリ３６４を接続できる。異なるデータバス幅を持つ外部メモリを同時に接続可能であり、アクセスする外部メモリによってデータバス幅を自動的に切替える機能が備えられる。
【０１０９】
以下、ＳＰＵ４００の構成及び機能について詳細に説明していく。まず、以下の記載で使用する用語について説明する。
【０１１０】
ＳＰＵ４００は、全部で６４チャンネルのサウンドチャンネルで音声データを処理できる。ここで、物理線に対応するサウンドチャンネルを物理サウンドチャンネルと呼び、物理サウンドチャンネルに出力するウェーブデータを再生するサウンドチャンネルである論理サウンドチャンネルとは区別する。
【０１１１】
以下では、単に「サウンドチャンネル」と言う場合は、論理サウンドチャンネルを意味する。また、本実施の形態では、左右２つの物理サウンドチャンネルを設定している。左音声信号（左ウェーブデータ）を再生する物理サウンドチャンネルを「左チャンネル」、右音声信号（右ウェーブデータ）を再生する物理サウンドチャンネルを「右チャンネル」と呼ぶ。
【０１１２】
図１６に、図１５に示すＳＰＵ４００の内部構成を概略的に示す。図１６を参照して、ＳＰＵ４００は、データ処理ブロック４３８、コマンド処理ステートマシン４３０、制御レジスタセット４３２、ＤＭＡリクエスタ４３４、メインＲＡＭインタフェース４３６、クロストーク低減回路４４２、及びＳＰＵローカルＲＡＭインタフェース４４０を含む。
【０１１３】
コマンド処理ステートマシン４３０は、ＣＰＵ３９２がＩ／Ｏバス４１０を通じて発行するコマンドに応じて、ＳＰＵ４００のコマンド実行における状態制御を行なう。発行されるコマンドの種類は、「ＳＴＡＲＴ」、「ＳＴＯＰ」、「ＵＰＤＡＴＥ」、及び「ＮＯＰ」の４種類である。これらのコマンドは、コマンド処理ステートマシン４３０のＳＰＵコマンドレジスタ４５０に、対象となる論理サウンドチャンネルの番号と共に書込まれる。
【０１１４】
コマンドＳＴＡＲＴは、指定された論理サウンドチャンネルの再生を開始させる命令である。ＣＰＵ３９２は、このコマンドＳＴＡＲＴの発行前に、ＳＰＵローカルＲＡＭ４０２に再生に必要なパラメータを予め書込んでおく。コマンドＳＴＯＰは、指定された論理サウンドチャンネルの再生を停止させる命令である。
【０１１５】
コマンドＵＰＤＡＴＥは、指定された論理サウンドチャンネルの再生中に、再生に用いられるパラメータの一部を更新させる命令である。ＣＰＵ３９２は、このコマンドＵＰＤＡＴＥの発行前に、ＳＰＵ４００内の対応する制御レジスタ（次に説明する制御レジスタセット４３２に含まれる。）に更新するパラメータを予め書込んでおく。
【０１１６】
コマンドＮＯＰは、特に何の処理も行なわせない命令である。
【０１１７】
制御レジスタセット４３２は、ＳＰＵコマンドレジスタ４５０以外のＳＰＵ４００を制御するための複数の制御レジスタ（図示せず）を含む。通常、制御レジスタセット４３２には、ＳＰＵ４００の動作中に何らかの制御を実行するために必要なデータが書込まれる。制御レジスタセット４３２は、論理サウンドチャンネル再生に用いられるパラメータを更新するためのアップデートレジスタを含む。コマンドＵＰＤＡＴＥを発行することにより、アップデートレジスタの値がＳＰＵ４００により読出され、論理サウンドチャンネル再生に用いられるパラメータが更新される。
【０１１８】
例えば、制御レジスタセット４３２は、補間モードレジスタ、ウェーブ周波数アップデートレジスタ、エンベロープリリースレートアップデートレジスタ、ゲインアップデートレジスタ、エンベロープモードアップデートレジスタ、ウェーブサンプリングレートレジスタ、エンベロープサンプリングレートレジスタ及びクロストーク低減回路制御レジスタ（いずれも図示せず）等を含む。補間モードレジスタには、前述した補間処理を行なうか否かを指定するデータが設定される。ウェーブ周波数アップデートレジスタには、音高を制御するウェーブ周波数（の小数部）の更新値が設定される。ゲインアップデートレジスタには、当該チャンネルのゲインの更新値が設定される。エンベロープモードアップデートレジスタには、エンベロープ処理におけるシーケンシャルモードとリリースモードとのいずれかを示す更新値が設定される。エンベロープリリースレートアップデートレジスタには、リリースモードにおけるエンベロープのリリースレートの更新値が設定される。ウェーブサンプリングレートレジスタには、ウェーブデータをＤ／Ａ変換する周波数を指定する値が設定される。エンベロープサンプリングレートレジスタには、アンプリチュードデータ（エンベロープデータに左右のゲインを乗算したもの）をＳＰＵローカルＲＡＭ４０２から読出しＤ／Ａ変換する際の周波数を指定する値が設定される。クロストーク低減回路制御レジスタには、オーディオＤＡＣブロック３８６内でカスケード接続されたＤＡＣ間の伝達遅延に起因する、サウンドチャンネル間のクロストークノイズを低減するためのパラメータが設定される。これらのレジスタの内、ウェーブ周波数アップデートレジスタ、エンベロープリリースレートアップデートレジスタ、ゲインアップデートレジスタ、エンベロープモードアップデートレジスタに設定されるパラメータは、コマンドＵＰＤＡＴＥが発行されると、データ処理ブロック４３８によりＳＰＵローカルＲＡＭ４０２内の対応する記憶部に転記される。
【０１１９】
ＤＭＡリクエスタ４３４は、コマンド処理ステートマシン４３０からの指示に従い、ウェーブデータ及びエンベロープデータを外部メモリ３６４から取得するために、ＤＭＡＣ３８２に対してＤＭＡ転送要求を発行する。また、ＤＭＡ転送によって取得したデータをデータ処理ブロック４３８に出力する。
【０１２０】
データ処理ブロック４３８は、ウェーブデータの取得及び再生、エンベロープデータの取得及びデコード、アンプリチュードデータの生成、エコー処理、並びにマイクエコー処理を行なう。
【０１２１】
そして、データ処理ブロック４３８は、左チャンネルに対する複数の論理サウンドチャンネルのウェーブデータを時分割多重化し、左チャンネルウェーブデータＭＷＬとして、クロストーク低減回路４４２に出力する。また、データ処理ブロック４３８は、右チャンネルに対する複数の論理サウンドチャンネルのウェーブデータを時分割多重化し、右チャンネルウェーブデータＭＷＲとして、クロストーク低減回路４４２に出力する。
【０１２２】
さらに、データ処理ブロック４３８は、左チャンネルに対する複数の論理サウンドチャンネルのアンプリチュードデータを時分割多重化し、左チャンネルアンプリチュードデータＭＡＭＬとして、クロストーク低減回路４４２に出力する。また、データ処理ブロック４３８は、右チャンネルに対する複数の論理サウンドチャンネルのアンプリチュードデータを時分割多重化し、右チャンネルアンプリチュードデータＭＡＭＲとして、クロストーク低減回路４４２に出力する。
【０１２３】
このように、物理サウンドチャンネル毎に時分割多重化を行なうことにより、物理サウンドチャンネル毎に複数の論理サウンドチャンネルのウェーブデータのミキシング、及び、物理サウンドチャンネル毎に複数の論理サウンドチャンネルのアンプリチュードデータのミキシングを行なう。これは、時分割多重化されてデジタル／アナログ変換された音声出力が、聴覚上ミキシングされて聞こえることを利用している。
【０１２４】
ＳＰＵローカルＲＡＭ４０２には、複数の論理サウンドチャンネルに対応して複数の記憶領域が設けられる。各記憶領域には、対応する論理サウンドチャンネルの再生に必要なパラメータが格納される。従って、ＳＰＵローカルＲＡＭ４０２に設けられている記憶領域の総数は６４であり、この内、多重チャンネル数（＝再生する論理サウンドチャンネル数）に等しい数の記憶領域が用いられる。また、各記憶領域に格納されるパラメータにはウェーブデータのアドレス情報も含まれ、これによって、論理サウンドチャンネルに割当てるウェーブデータが設定される。
【０１２５】
これらのパラメータは、基本的には各チャンネルに対するＳＰＵ４００の処理開始前にＣＰＵ３９２により設定される。しかし、ＳＰＵ４００の処理が開始された後には、処理途中の任意の時点でパラメータを変化させると再生される音声に悪影響が及ぶ。そのため、ＣＰＵ３９２は、制御レジスタセット４３２内に制御用のパラメータを設定し、コマンドＵＰＤＡＴＥを発行する。このコマンドに応答し、ＳＰＵ４００が、処理に悪影響の及ばないタイミングで制御レジスタセット４３２内のデータをＳＰＵローカルＲＡＭ４０２内に転送し、新たなパラメータで動作を開始する。
【０１２６】
図１６に戻って、メインＲＡＭインタフェース４３６は、データ処理ブロック４３８のメインＲＡＭ３８８へのアクセスを仲介する。メインＲＡＭ３８８へのアクセスは、（１）ＤＭＡ転送によって取得したウェーブデータ及びエンベロープデータのメインＲＡＭ３８８への書込み、（２）論理サウンドチャンネルの再生のためのウェーブデータ及びエンベロープデータのメインＲＡＭ３８８からの読出し、（３）エコー処理及びマイクエコー処理のためのメインＲＡＭ３８８へのエコー成分たるウェーブデータ及びマイクエコー成分たるウェーブデータの読書きにおいて行なわれる。
【０１２７】
ＳＰＵローカルＲＡＭインタフェース４４０は、データ処理ブロック４３８のＳＰＵローカルＲＡＭ４０２へのアクセスを仲介する。ＳＰＵローカルＲＡＭ４０２へのアクセスは、ウェーブデータ再生のためのパラメータ、並びに、エンベロープデータ及びアンプリチュードデータ生成のためのパラメータの読書きにおいて行なわれる。また、ＳＰＵローカルＲＡＭインタフェース４４０は、ＣＰＵ３９２がＩ／Ｏバス４１０を通じてＳＰＵローカルＲＡＭ４０２へアクセスする際の仲介も行なう。
【０１２８】
ウェーブデータは、８ビット単位のデータストリームであり、通常、予め外部メモリ３６４に格納される。論理サウンドチャンネルの再生が開始されると、ＳＰＵ４００は、ＤＭＡＣ３８２にウェーブデータの取得要求を開始する。ＤＭＡＣ３８２は、ＳＰＵ４００からの要求に応じて、ウェーブデータを外部メモリ３６４からメインＲＡＭ３８８上に確保されたウェーブバッファへと転送する。
【０１２９】
但し、ウェーブデータが圧縮されており、伸張処理が必要な場合もある。その場合には、ＣＰＵ３９２による圧縮ウェーブデータの伸張処理が行なわれ、ＤＭＡＣ３８２によるウェーブデータの取得は行なわない。この場合は、ＣＰＵ３９２が直接メインＲＡＭ３８８上のウェーブバッファにウェーブデータを書込む。いずれの処理を選択するかはＣＰＵ３９２により実行されるプログラムがデータの内容により判定する。
【０１３０】
図１７に、データ処理ブロック４３８の詳細なブロック図を示す。なお、図１７には、図の簡略化のため、ウェーブデータの再生（特にウェーブデータの補間処理とエンベロープ処理）に関連する部分のみを図示し、コマンドＵＰＤＡＴＥによるパラメータ更新処理にかかわる部分、及びエコー処理を行なう部分については図示していない。また、図１７のデータ処理ブロック４３８内に示される機能は全て、コマンド処理ステートマシン４３０からの指示を受けて、データ処理ブロック内部のステートマシンにより制御されるが、この部分についても図示していない。
【０１３１】
図１７を参照して、データ処理ブロック４３８は、ウェーブデータリードバッファ４６０、ウェーブ補間フィルタ４６２、マルチプレクサ（ＭＵＸ）４６４、エンベロープアドレス算出部４６７、エンベロープデータリードバッファ４６８、エンベロープ算出部４７０、乗算器４７２Ｌ、乗算器４７２Ｒ、及びサウンドチャンネルデータ出力部４５８を含む。
【０１３２】
ウェーブデータリードバッファ４６０及びエンベロープデータリードバッファ４６８は、メインＲＡＭ３８８から読出されたウェーブデータ及びエンベロープデータをそれぞれ格納するデータバッファである。ウェーブデータリードバッファ４６０は、６４ビット単位でメインＲＡＭから読み出されたウェーブデータを８ビット単位で出力する。エンベロープデータリードバッファ４６８は、６４ビット単位でメインＲＡＭから読み出されたエンベロープデータを３２ビット単位で出力する。ウェーブ補間フィルタ４６２は、前述したウェーブデータの補間処理を行う。ウェーブ補間フィルタ４６２は、図７に示す補間回路１１４と同様の構成を持つ。
【０１３３】
マルチプレクサ４６４は、制御レジスタセット４３２に含まれるウェーブ補間モード設定レジスタに設定されている値に従って、ウェーブ補間フィルタ４６２の出力及びウェーブデータリードバッファ４６０の出力のいずれかを選択して出力する。マルチプレクサ４６４から出力されたデータは、ＳＰＵローカルＲＡＭ４０２の当該論理チャンネルの領域に書出される。ウェーブアドレス算出部４６６は、メインＲＡＭ３８８からのウェーブデータ読出しのためのアドレス計算を実行し、ＤＭＡリクエスタ４３４及びメインＲＡＭインタフェース４３６に算出したアドレスの整数部を出力するとともに、アドレスの小数部をＷＰＨＡＳＥとしてウェーブ補間フィルタ４６２に与える。このアドレスはＳＰＵローカルＲＡＭ４０２に格納され、次のアドレス計算に用いられる。
【０１３４】
エンベロープアドレス算出部４６７は、メインＲＡＭ３８８からのエンベロープデータ読出しのためのアドレス計算を実行し、ＤＭＡリクエスタ４３４及びメインＲＡＭインタフェース４３６に算出したアドレスを出力する。エンベロープ算出部４７０は、ＳＰＵローカルＲＡＭの当該サウンドチャンネルの領域に格納されているエンベロープモードに従って、シーケンシャルモード又はリリースモードでのエンベロープのサンプル値の算出を行う。シーケンシャルモードでは、エンベロープ処理の開始、及び新たなエンベロープの読出処理の開始時に、エンベロープデータリードバッファ４６８から出力されたエンベロープデータを取得し、エンベロープデータに対するデコード処理を実行してエンベロープのサンプル値を算出し、算出したエンベロープのサンプル値をＳＰＵローカルＲＡＭ４０２の当該サウンドチャネルの領域に格納する。リリースモードでは、ＳＰＵローカルＲＡＭ４０２の当該サウンドチャネルの領域にに格納されたエンベロープの現在のサンプル値に対し、エンベロープリリースレートを乗算することにより、リリースモードにおける次のサイクルのエンベロープサンプル値を算出し、算出したエンベロープのサンプル値をＳＰＵローカルＲＡＭ４０２の当該サウンドチャンネルの領域に格納する。
【０１３５】
乗算器４７２Ｌ及び乗算器４７２Ｒは、ＳＰＵローカルＲＡＭ４０２から読出された現在のエンベロープサンプルの値に対し、左チャンネル用のゲイン及び右チャンネル用のゲインをそれぞれ乗算して左右チャンネル用のアンプリチュードを算出し、算出したアンプリチュードデータをＳＰＵローカルＲＡＭ４０２に格納する。サウンドチャンネルデータ出力部４５８は、制御レジスタセット４３２に含まれるウェーブサンプリングレートと現在処理中の論理サウンドチャンネルのナンバにしたがって、ＳＰＵローカルＲＡＭ４０２の当該サウンドチャンネルの領域から、ウェーブデータ及びアンプリチュードデータを読出し、クロストーク低減回路４４２へ出力する。論理サウンドチャンネルの処理は順次的かつ巡回的に行われるので、結果としてクロストーク低減回路４４２へのデータ出力は時分割多重化される。ここで、エンベロープデータはエンベロープサンプリングレートの値により定まる周波数で更新されているが、サウンドチャンネルデータ出力部４５８が出力するアンプリチュードデータが更新されるのはウェーブ補間フィルタ４６２のステータスレジスタ１２８（図７参照）からのゼロステータス信号の値によってウェーブデータの値がゼロであるか又はその符号が変化したタイミングである。ＳＰＵローカルＲＡＭ４０２の当該サウンドチャンネルの領域には、常に現在のアンプリチュードデータと次に用いられるアンプリチュードデータとの両方が格納されている。
【０１３６】
＜動作＞
以上構成について説明したマルチメディアプロセッサ３６０は以下のように動作する。なお、以下の説明はサウンド処理について行ない、その他の制御についての説明は必要なときを除き行なわない。
【０１３７】
図１５を参照して、予め、処理に必要なデータ（ＰＣＭウェーブデータ及びエンベロープデータ）は外部メモリ３６４に格納されている。ＳＰＵ４００によるサウンド処理を実行する必要が生じた場合、ＣＰＵ３９２はＳＰＵローカルＲＡＭ４０２に対して、対象データのアドレス等のサウンド処理に必要なパラメータを設定した後、Ｉ／Ｏバス４１０を介してＳＰＵ４００に対してコマンドＳＴＡＲＴを与える。ＣＰＵ３９２はこの後、サウンド処理については基本的にＳＰＵ４００に任せ、他の処理を実行する。ただし、再生中のサウンドチャンネルに対し、音声の大きさを変えたり、エンベロープ処理の動作モードを変更したりする必要が生じた場合、ＣＰＵ３９２はそのためのパラメータをＳＰＵ４００の制御レジスタセット４３２（図１６参照）に設定し、コマンドＵＰＤＡＴＥを発行する。
【０１３８】
ＣＰＵ３９２がＳＰＵローカルＲＡＭ４０２に設定するパラメータとして、補間をするか否か（補間モード）を示す補間モード、音高を制御するためのウェーブ周波数（図６のウェーブ周波数記憶部９２の小数部１１２）、各論理サウンドチャンネルの先頭音声の読出アドレス、エンベロープデータのサンプリングレート等がある。なお、本実施の形態では、処理の最初では、エンベロープモードはシーケンシャルモードに設定される。
【０１３９】
−シーケンシャルモード−
シーケンシャルモードでは、図１７に示すエンベロープ算出部４７０は現在のエンベロープサンプルの値に対しエンベロープリリースレートを乗算した値を算出する。
【０１４０】
コマンドＳＴＡＲＴを受けると、ＳＰＵ４００のＤＭＡリクエスタ４３４（図１６参照）は、ＤＭＡＣ３８２に対し、ＣＰＵ３９２によって指定された論理サウンドチャンネルのデータをメインＲＡＭ３８８に転送するようにＤＭＡＣリクエストを発行する。ＤＭＡＣ３８２は、指定されたアドレスのデータを外部メモリ３６４から読出し、メインＲＡＭ３８８上のウェーブバッファに格納する。
【０１４１】
ＤＭＡＣ転送が終了すると、ＳＰＵ４００はＣＰＵ３９２により指定された論理サウンドチャンネルのウェーブデータの再生を開始する。ウェーブデータの再生には、前述のように補間を使用するか否かという二つの動作モードがある。
【０１４２】
補間を使用しない場合、マルチプレクサ４６４は、直接にウェーブデータリードバッファ４６０の内容を選択するように切替えられる。補間を使用する場合、マルチプレクサ４６４はウェーブ補間フィルタ４６２の出力を選択するように切替えられる。
【０１４３】
ウェーブアドレス算出部４６６は、一定の時間間隔でＳＰＵローカルＲＡＭ４０２中のウェーブデータアドレス記憶部９０に記憶された値に、同じくＳＰＵローカルＲＡＭ４０２内のウェーブ周波数記憶部９２に記憶された値を加算する。加算後の値は、ウェーブデータアドレス記憶部９０に書戻される。ウェーブアドレス算出部４６６は、この加算によりウェーブデータアドレス記憶部９０の小数部から整数部への桁上がりが発生したことに応答して、メインＲＡＭ３８８からウェーブデータを読出し、ウェーブデータリードバッファ４６０に格納する。この際のアドレスにはウェーブデータアドレス記憶部９０の整数部が用いられる。
【０１４４】
ウェーブ周波数記憶部９２に記憶された値は０より大きく１より小さい。この値が大きくなると、加算の結果桁上がりが生ずる頻度が高くなり、結果としてウェーブデータをメインＲＡＭ３８８から読出す頻度が高くなる。ウェーブ周波数記憶部９２に記憶された値を小さくすると、ウェーブデータをメインＲＡＭ３８８から読出す頻度が低くなる。
【０１４５】
このようにＳＰＵ４００がメインＲＡＭ３８８からの読出し速度を変えることで、ピッチ変換が行なわれる。補間をすることが指定されている場合、ウェーブデータの補間がウェーブ補間フィルタ４６２により行なわれ、補間後のウェーブデータが後段に送出される。一方、補間を行なわない場合は、マルチプレクサ４６４がウェーブデータリードバッファ４６０の出力に直接短絡され、補間なしのウェーブデータがサウンドチャンネルデータ出力部４５８に送出される。
【０１４６】
マルチプレクサ４６４からのウェーブデータは、複数の論理サウンドチャンネルに対し、左チャンネルと右チャンネル（左右の物理サウンドチャンネル）との両方の時分割多重化処理を行なうサウンドチャンネルデータ出力部４５８に出力される。
【０１４７】
シーケンシャルモードでは、デジタルブロック４５６は以下のように動作する。ＤＭＡＣ３８２がＳＰＵ４００からの要求に応じて外部メモリ３６４からメインＲＡＭ３８８上に確保されたエンベロープバッファにエンベロープデータ列を転送する。エンベロープ処理の開始時、又は新たに適用されるエンベロープが変更されると、このエンベロープデータからエンベロープデータが読出され、図１７に示すエンベロープデータリードバッファ４６８に格納される。エンベロープ算出部４７０がこのエンベロープデータをデコードしてエンベロープサンプルを算出する。算出されたエンベロープサンプルがＳＰＵローカルＲＡＭ４０２に格納される。
【０１４８】
左乗算器４７２Ｌ及び右乗算器４７２Ｒが、ＳＰＵローカルＲＡＭ４０２中のエンベロープサンプルに対し、ゲインを乗算してアンプリチュードデータを算出し、ＳＰＵローカルＲＡＭ４０２に格納する。
【０１４９】
サウンドチャンネルデータ出力部４５８は、制御レジスタセット４３２に含まれるウェーブサンプリングレートと現在処理中の論理サウンドチャンネルのナンバとにしたがって、ＳＰＵローカルＲＡＭ４０２の当該サウンドチャンネルの領域から、左右両チャンネルに対するウェーブデータ及びアンプリチュードデータを読出し、クロストーク低減回路４４２へ出力する。論理サウンドチャンネルの処理は順次的かつ巡回的に行われるので、結果としてクロストーク低減回路４４２へのデータ出力は時分割多重化される。なお、エンベロープデータはエンベロープサンプリングレートの値により定まる周波数で更新されているが、サウンドチャンネルデータ出力部４５８が出力するアンプリチュードデータが更新されるのはウェーブ補間フィルタ４６２のステータスレジスタ１２８（図７参照）からのゼロステータス信号の値によってウェーブデータの値がゼロであるか又はその符号が変化したタイミングである。
【０１５０】
以上の動作がデータ処理ブロック４３８で繰返されることにより、シーケンシャルモードでの各論理サウンドチャンネルにおけるウェーブデータの生成が行なわれる。
【０１５１】
ＣＰＵ３９２が何らかの条件の充足により制御レジスタセット４３２内のエンベロープモードレジスタ（図示せず）にリリースモードを示す値を設定し、コマンドＵＰＤＡＴＥをＳＰＵ４００に対し発行することにより、ＳＰＵ４００の動作モードはリリースモードに移る。
【０１５２】
−リリースモード−
リリースモードでは、エンベロープ算出部４７０はＳＰＵローカルＲＡＭ４０２に格納された現在のエンベロープサンプルの値にエンベロープリリースレートを乗算して新たなエンベロープサンプルの値を算出する。したがって、前回のエンベロープサンプルに、指定されたエンベロープリリースレートを乗じた値のエンベロープサンプルが生成され、ＳＰＵローカルＲＡＭ４０２に格納される。
【０１５３】
データ処理ブロック４３８でのこれ以後の動作はシーケンシャルモードと同様である。ただし、リリースモードでは、ウェーブデータの値がゼロとなった論理サウンドチャンネルの動作は停止する。
【０１５４】
図１５のオーディオＤＡＣブロック３８６は、カスケード接続されたＤＡＣ（図示せず）を含む。上記のように、複数の論理サウンドチャンネルのミキシングは、ＤＡＣへの入力データを時分割多重化することによって行なわれる。また、複数のパラメータ間のアナログ乗算（例えば、ウェーブデータとアンプリチュードデータとの乗算）は、カスケード接続されたＤＡＣにより行われる。このように時分割多重化されたデータをそのままオーディオＤＡＣブロック３８６に入力すると、カスケード接続されたＤＡＣ間における伝播遅延が、論理サウンドチャンネル間のクロストークを引き起こす可能性がある。
【０１５５】
図１６のクロストーク低減回路４４２は、このような論理サウンドチャンネル間のクロストークの発生を防止する機能を持つ。このクロストーク低減回路４４２は、各論理サウンドチャンネルのデータをカスケード接続されたＤＡＣに出力する際に、論理サウンドチャンネル間に予め設定された長さの無音期間を挿入する。これにより、カスケード接続されたＤＡＣ間を、ある論理サウンドチャンネルの信号が伝播する際に、前後の論理サウンドチャンネルの信号と干渉が発生することを防止する。無音期間の長さは、ＣＰＵ３９２がＩ／Ｏバス４１０を通じて、制御レジスタセット４３２内の対応する制御レジスタ（図示せず）に設定する。
【０１５６】
詳細には、クロストーク低減回路４４２は、左チャンネルウェーブデータＭＷＬの論理サウンドチャンネル間に無音期間を挿入して、左チャンネルウェーブデータＭＷＬＣとして、オーディオＤＡＣブロック３８６に出力する。また、クロストーク低減回路４４２は、右チャンネルウェーブデータＭＷＲの論理サウンドチャンネル間に無音期間を挿入して、右チャンネルウェーブデータＭＷＲＣとして、オーディオＤＡＣブロック３８６に出力する。
【０１５７】
さらに、クロストーク低減回路４４２は、左チャンネルアンプリチュードデータＭＡＭＬの論理サウンドチャンネル間に無音期間を挿入して、左チャンネルアンプリチュードデータＭＡＬＣとして、オーディオＤＡＣブロック３８６に出力する。また、クロストーク低減回路４４２は、右チャンネルアンプリチュードデータＭＡＭＲの論理サウンドチャンネル間に無音期間を挿入して、右チャンネルアンプリチュードデータＭＡＲＣとして、オーディオＤＡＣブロック３８６に出力する。
【０１５８】
さらに、クロストーク低減回路４４２は、制御レジスタセット４３２の対応する制御レジスタ（図示せず）から入力されたメインボリュームデータＭＶを、そのままメインボリュームデータＭＶＣとして、オーディオＤＡＣブロック３８６に出力する。
【０１５９】
詳細は図示しないが、オーディオＤＡＣブロック３８６は、左チャンネルウェーブデータＭＷＬＣに左チャンネルアンプリチュードデータＭＡＬＣを乗算し、さらにメインボリュームＭＶＣを乗算することにより最終的な左音声信号を生成する。同様に、オーディオＤＡＣブロック３８６は、右チャンネルウェーブデータＭＷＲＣに右チャンネルアンプリチュードデータＭＡＲＣを乗算し、さらにメインボリュームＭＶＣを乗算することにより最終的な右音声信号を生成する。
【０１６０】
以上のように本実施の形態に係るマルチメディアプロセッサ３６０では、各機能ユニットで共有するメインＲＡＭ３８８を設けている。したがって、各機能ユニットに個別の専用メモリを設ける場合に発生する無駄な記憶容量を削減でき、マルチメディアプロセッサ３６０全体として必要なメモリの容量を削減できる。ＣＰＵ３９２だけでなく、ＳＰＵ４００もメインＲＡＭ３８８へのアクセスのためのメインＲＡＭアクセスアービタ３９０のバスマスタとなることができるため、ＣＰＵ３９２からの最小限の指示でサウンド処理を実行することができる。そのため、ＣＰＵ３９２に係る負荷を小さくすることができ、ＣＰＵ３９２としてそれほど性能の高いものを用いる必要がない。その結果、マルチメディアプロセッサ３６０のコストを下げることができる。又は、同じ性能のＣＰＵ３９２を用いる場合、より高度な処理を実行することができる。
【０１６１】
さらに、マルチメディアプロセッサ３６０のＳＰＵ４００では、ＰＣＭウェーブデータのピッチ変換を行なう際に、単にウェーブデータの読出速度を調整するだけでなく、ウェーブデータの読出アドレスの小数部まで考慮して補間を行なう。そのため、従来のように単純に読出速度をあげる場合と比較してエイリアスノイズの発生を抑えることができ、高品質の音声を出力できる。また、補間をするか否かをプログラムにより選択できるため、場面にあわせて音質とメインＲＡＭへのバス帯域の負荷とのどちらかを重視した形の処理を選択的に行なうことができる。
【０１６２】
またこのピッチ変換におけるＰＣＭウェーブデータの読出速度は、オーディオＤＡＣブロック３８６への音声信号の出力速度とは全く無関係に設定できる。したがって、この装置を用いたプログラミングでは、音声信号の出力レートによる影響を考慮する必要がない。音声信号出力部のハードウェアの仕様に影響されず、音質の劣化の無いピッチ変換回路を実現できる。
【０１６３】
また、ＳＰＵ４００では、エンベロープデータを従来のようにサンプルデータそのものの形ではなく、勾配とその持続時間の形で準備する。これらはいずれもデジタルデータであり、そのデータ量は少ない。その結果、サンプルデータをそのまま利用する場合と比較してエンベロープデータを記憶するために必要なメモリ容量を削減することができる。さらに、エンベロープ処理の動作モードとしてシーケンシャルモードとリリースモードとを用意し、両者を簡単に切替えることができる。その結果、音声の出力を停止したりする際に、音声信号に悪影響を及ぼすことなく、簡単に処理できる。また、どのようなエンベロープデータに対してもこのリリースモードを適用できるため、使用中のエンベロープについて確認する必要がなく、容易に音声の出力を停止できる。
【０１６４】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【０１６５】
（１）上記実施の形態では、物理サウンドチャンネル数を複数にしたが、単数であっても、本発明は適用できる。また、上記実施の形態では、論理サウンドチャンネル数の最大値を６４としているが、設計仕様と使用するハードウェアの性能とにより、この数を任意に増減することができる。
【０１６６】
（２）上記実施の形態では、ＰＣＭウェーブデータの読出アドレスに、ウェーブ周波数記憶部９２に記憶されたＷＰＨＡＳＥデータ（ウェーブ周波数）を加算した後の、ウェーブデータアドレス記憶部９０に記憶されたデータの整数部を用いている。これは、このようにすれば処理が最も簡単でかつ高速だからである。しかし本発明はそのような実施の形態には限定されない。例えば、この整数部の値に対して所定の関数を適用することによりウェーブデータの読出アドレスを算出するようにしてもよい。また、上記実施の形態ではウェーブデータアドレス記憶部９０の整数部と小数部とでそれぞれウェーブデータのアドレスと補間量とを算出しているが、これらを全く別個の記憶領域に記憶するようにしてもよい。
【０１６７】
（３）上記実施の形態では、補間のための関数として図５に示すような関数を用いている。しかし本発明はそのような実施の形態には限定されない。例えば、ｆ（ｘ）とｆ（ｘ＋１）間が直線補間される関数ｆ（ｘ）を用いても、ある程度の効果が期待できる。
【０１６８】
（４）上記実施の形態では、複数の論理サウンドチャンネルの音声信号を時分割多重化することにより、物理サウンドチャンネルの信号を作成している。これは、そのような時分割多重化された音声信号で発生された音声について、人間には同時に発生された音声として感じられるという人間の聴覚特性に基づいている。しかし、本発明はそのような時分割多重化を行なう装置のみに適用可能なわけではなく、通常の方法により音声信号を混合する装置にも適用できる。
【０１６９】
（５）上記実施の形態では、エンベロープデータとして勾配データと持続時間データとの双方を用いている。しかし、本発明はそのような実施の形態には限定されない。例えば、持続時間としてどの勾配データについても一定の持続時間を予め定めておくことにより、勾配データのみでエンベロープデータを定義することもできる。同じ勾配が長く続くときには、同じ値を持つ勾配データを連続して準備しておけばよい。この場合、同じ勾配のデータが続く個数が、その持続時間を表すことになる。
【０１７０】
（６）上記実施の形態では、ピッチ変換のために、ウェーブデータアドレス記憶部９０に記憶されたアドレスデータに、ウェーブ周波数記憶部９２に記憶された値を加算している。しかし、本発明は加算を用いるような実施の形態のみには限定されない。例えば、減算を用いても全く同様の処理を実現することができることは明らかである。減算は実質的には加算と同じ処理であるから、当然である。
【０１７１】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【図面の簡単な説明】
【０１７２】
【図１】従来の技術におけるＰＣＭウェーブデータの再生原理を示す図である。
【図２】従来の技術におけるウェーブデータに対するエンベロープ処理の原理を説明するための図である。
【図３】本発明の一実施の形態におけるＰＣＭウェーブデータの補間結果を例示する図である。
【図４】本発明の一実施の形態におけるＰＣＭウェーブデータの補間原理を説明するための図である。
【図５】本発明の一実施の形態の補間において使用される関数のグラフを示す図である。
【図６】本発明の一実施の形態におけるＰＣＭウェーブデータのピッチ変換におけるアドレス計算の原理を説明するための図である。
【図７】本発明の一実施の形態におけるウェーブデータの補間回路１１４の構成例を示す図である。
【図８】本発明の一実施の形態におけるエンベロープ処理の原理を説明するための図である。
【図９】本発明の一実施の形態におけるエンベロープデータの構成例を示す図である。
【図１０】本発明の一実施の形態におけるエンベロープサンプルの算出原理を説明するための図である。
【図１１】本発明の一実施の形態におけるエンベロープの適用タイミングを説明するための図である。
【図１２】本発明の一実施の形態における本発明の一実施の形態における、シーケンシャルモードのためのエンベロープ処理回路３００の例を示すブロック図である。
【図１３】本発明の一実施の形態における、リリースモードのためのエンベロープ処理回路３３０の例を示すブロック図である。
【図１４】本発明の一実施の形態において、シーケンシャルモードとリリースモードとを切替えて実行可能なエンベロープ処理回路３５２の構成例を示すブロック図である。
【図１５】本発明の一実施の形態に係るマルチメディアプロセッサ３６０のブロック図である。
【図１６】マルチメディアプロセッサ３６０に含まれるＳＰＵ４００のブロック図である。
【図１７】図１６に示すデータ処理ブロック４３８のブロック図である。
【符号の説明】
【０１７３】
７２…補間ポイント、８０…アドレス算出回路、１１０…補間回路、１２０…シフトレジスタ、１２２…係数算出部、１２４…乗算処理部、２００…エンベロープ、２４０…エンベロープデータ、３００，３３０，３５２…エンベロープ処理回路、３１２…持続時間ダウンカウンタ、３２０…勾配記憶部、３６０…マルチメディアプロセッサ、３８４…ビデオＤＡＣ、３８６…オーディオＤＡＣブロック、３８２…ＤＭＡＣ、３８８…メインＲＡＭ、３９０…メインＲＡＭアクセスアービタ、３９２…ＣＰＵ、３９６…ＲＰＵ、４００…ＳＰＵ、４０４…ＧＥ、４０６…ＹＳＵ、４１０…Ｉ／Ｏバス、４３０…コマンド処理ステートマシン、４３２…制御レジスタセット、４３４…ＤＭＡリクエスタ、４３６…メインＲＡＭインタフェース、４３８…データ処理ブロック、４４２…クロストーク低減回路、４５０…コマンドレジスタ、４６０…ウェーブデータリードバッファ、４６２…ウェーブ補間フィルタ、４６４…マルチプレクサ、４６６…ウェーブアドレス算出部、４６７…エンベロープアドレス算出部、４６８…エンベロープデータリードバッファ、４７０…エンベロープ算出部、４７２Ｌ，４７２Ｒ…乗算器
【図１】
2007132961.tif 000008
【図２】
2007132961.tif 000009
【図３】
2007132961.tif 000010
【図４】
2007132961.tif 000011
【図５】
2007132961.tif 000012
【図６】
2007132961.tif 000013
【図７】
2007132961.tif 000014
【図８】
2007132961.tif 000015
【図９】
2007132961.tif 000016
【図１０】
2007132961.tif 000017
【図１１】
2007132961.tif 000018
【図１２】
2007132961.tif 000019
【図１３】
2007132961.tif 000020
【図１４】
2007132961.tif 000021
【図１５】
2007132961.tif 000022
【図１６】
2007132961.tif 000023
【図１７】
2007132961.tif 000024