(57)【要約】【課題】処理を効率化する。【解決手段】ＣＰＵ３０は、ボイス単位で表現されたメッセージデータＭＳＧを、順番に解析して、アサイナ処理を行い、ボイス単位のパラメータデータＰＲＭとして出力する。ＤＳＰ３２は、パラメータデータＰＲＭに応じて、ボイスごとのウェーブ波形を生成し、合成して出力する。第１演算処理部４２は、パラメータデータに応じた音色のデータをウェーブメモリ４４から読み出し、波形を構築する。第２演算処理部４８は、第１演算処理部４２から出力されるデータに対して、所定の第２処理を実行する。ミキサ部５０は、第２演算処理部４８から出力されるデータをすべてのボイスについて合成し、サンプル時間単位で出力する。第１演算処理部４２、第２演算処理部４８は、デュアルポートの作業用メモリ４６を共有してボイス単位のパイプライン処理を実行する。【選択図】図３
2008009033.tif 000002
【特許請求の範囲】
【請求項１】
入力されたメッセージデータにもとづいて、再生すべき音声波形データを生成して出力する音源処理装置であって、
ボイス単位で表現されたメッセージデータを、順番に解析処理し、ボイス単位のパラメータデータとして出力する中央演算処理装置と、
前記パラメータデータに応じて、ボイスごとのウェーブ波形を生成し、合成して出力するデジタル信号処理装置と、
を備え、
前記デジタル信号処理装置は、
音色ごとの波形データが保存される波形メモリと、
前記パラメータデータに応じた音色のデータを前記波形メモリから読み出し、波形を構築する第１処理を実行する第１演算処理部と、
前記第１演算処理部から出力されるデータに対して、所定の第２処理を実行する第２演算処理部と、
前記第２演算処理部から出力されるデータをすべてのボイスについて合成し、サンプル時間単位で出力するミキサ部と、
前記第１、第２演算処理部により共有されるデュアルポートの作業用メモリと、
を含み、
前記第１演算処理部および前記第２演算処理部は、前記作業用メモリを利用してボイス単位のパイプライン処理を実行することを特徴とする音源処理装置。
【請求項２】
前記作業用メモリは、処理すべき最大ボイス数分のメモリ領域を含み、
前記第１演算処理部は、前記第１処理の結果得られたデータを、ボイスごとに割り当てられたアドレスに書き込むことを特徴とする請求項１に記載の音源処理装置。
【請求項３】
前記第１演算処理部は、前記第１処理として、少なくとも波形を構築するとともに、ピッチエンベロープ処理を行い、
前記第２演算処理部は、前記第２処理として、少なくともフィルタエンベロープ処理およびアンプエンベロープ処理を行うことを特徴とする請求項１または２に記載の音源処理装置。
【請求項４】
ひとつの半導体基板上に一体集積化されたことを特徴とする請求項１または２に記載の音源処理装置。
【請求項５】
請求項１または２に記載の音源処理装置と、
前記音源処理装置に対して、再生すべき音声波形を記述するメッセージデータを出力するホストプロセッサと、
を備えることを特徴とする電子機器。
【請求項６】
入力データに基づいて、再生すべき音波形データを生成する音処理装置であって、
前記入力データを解析して所定単位の音出力制御データを生成する中央演算処理装置と、
前記音出力制御データに応じて、第１のタイミングごとの音出力波形を生成して出力するデジタル信号処理装置と、
を備え、
前記デジタル信号処理装置は、予め決められた波形データを記憶する波形メモリと、
前記音出力制御データに応じたデータを前記波形メモリから読み出し、第１のタイミングよりも短い第２のタイミングで信号処理を行う第１演算処理部と、
前記音出力制御データに応じたデータまたは前記第１演算処理部から出力されるデータに対して、第２のタイミングで第２の信号処理を行う第２演算処理部と、
前記第２演算処理部から出力されるデータを合成し、第１のタイミングで出力するミキサ部と、
前記第１、第２演算処理部との間でデータの入出力を行う作業用のメモリと、
を含み、
前記作業用メモリを利用して前記第１演算処理部の信号処理を行い、その結果を用いた第２演算処理部の信号処理を次の第２のタイミングで行うことを特徴とする音処理装置。
【請求項７】
請求項６に記載の音処理装置と、
前記音処理装置に対して、再生すべき音に対応した音源データを供給する音源部と、
前記音処理装置からの信号に応じて音出力を行う音出力部と、
を備えることを特徴とする電子機器。
【請求項８】
入力されたメッセージデータにもとづいて、再生すべき音声波形データを生成して出力する音源処理方法であって、
ボイス単位で表現されたメッセージデータを、順番に解析処理し、ボイス単位のパラメータデータとして出力する第１ステップと、
前記パラメータデータに応じて、ボイスごとのウェーブ波形を生成し、合成して出力する第２ステップと、
を備え、
前記第２ステップは、
前記パラメータデータに応じた音色のデータを波形メモリから読み出し、波形を構築する第１処理を行うステップと、
前記第１処理の結果得られたデータに対して、所定の第２処理を実行するステップと、
前記第２処理の結果得られたデータをすべてのボイスについて合成するステップと、
を含み、
前記第１、第２処理を、共有のデュアルポートメモリを利用して、ボイス単位のパイプライン処理を行うことを特徴とする音源処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）規格等により記述されたデータにもとづき、音声データを生成する音源処理技術に関する。
【背景技術】
【０００２】
あらかじめサンプリングされた音の波形データにもとづいて、さまざま音声信号を生成する電子楽器を制御する方法として、ＭＩＤＩ規格による制御が知られている。ＭＩＤＩ規格では、音の波形データが用意されるのではなく、ボイスとよばれる単位ごとに、ノートオン、ノートオフなどを指示するチャンネルメッセージが用意され、このチャンネルメッセージに従って、波形データを読み出し、ＭＩＤＩデータの作成者の意図した音声を再現する。たとえば、特許文献１、２には、関連技術が記載されている。
【特許文献１】特開２００１−２６５３５２号公報
【特許文献２】特開平９−２３７０９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
こうしたＭＩＤＩ音源を利用した音声再生が、近年、携帯電話端末などの電子機器においても行われている。携帯電話端末などでは、消費電力やスペース上の制約から、専用のＭＩＤＩ音源などを用いた場合のように、高いクロック数を使用できず、また使用できる演算処理用のプロセッサの個数も制限されてしまう。したがって、携帯電話端末上において、高音質な音源処理を行う場合、効率よく処理を行う必要がある。
【０００４】
本発明はこうした課題に鑑みてなされたものであり、その目的は、効率よい信号処理が可能な音源処理技術の提供にある。
【課題を解決するための手段】
【０００５】
本発明のある態様の音源処理装置は、入力されたメッセージデータにもとづいて、再生すべき音声波形データを生成して出力する音源処理装置に関する。この音源処理装置は、ボイス単位で表現されたメッセージデータを、順番に解析処理し、ボイス単位のパラメータデータとして出力する中央演算処理装置と、パラメータデータに応じて、ボイスごとのウェーブ波形を生成し、合成して出力するデジタル信号処理装置と、を備える。デジタル信号処理装置は、音色ごとの波形データが保存される波形メモリと、パラメータデータに応じた音色のデータを波形メモリから読み出し、波形を構築する第１処理を実行する第１演算処理部と、第１演算処理部から出力されるデータに対して、所定の第２処理を実行する第２演算処理部と、第２演算処理部から出力されるデータをすべてのボイスについて合成し、サンプル時間単位で出力するミキサ部と、第１、第２演算処理部により共有されるデュアルポートの作業用メモリと、を含む。第１演算処理部および第２演算処理部は、作業用メモリを利用してボイス単位のパイプライン処理を実行する。
【０００６】
この態様によると、デジタル信号処理装置において実行する処理を２つに分割し、それぞれを処理する第１、第２演算処理部を設け、ボイスを単位としたパイプライン処理を行うことにより、信号処理を効率化することができる。
【０００７】
作業用メモリは、処理すべき最大ボイス数分のメモリ領域を含んでもよい。第１演算処理部は、第１処理の結果得られたデータを、ボイスごとに割り当てられたアドレスに書き込んでもよい。
【０００８】
第１演算処理部は、第１処理として、少なくとも波形を構築するとともに、ピッチエンベロープ処理を行い、第２演算処理部は、第２処理として、少なくともフィルタエンベロープ処理およびアンプエンベロープ処理を行ってもよい。
【０００９】
上述の音源処理装置は、ひとつの半導体基板上に一体集積化されてもよい。「一体集積化」とは、回路の構成要素のすべてが半導体基板上に形成される場合や、回路の主要構成要素が一体集積化される場合が含まれ、回路定数の調節用に一部の抵抗やキャパシタなどが半導体基板の外部に設けられていてもよい。
【００１０】
本発明の別の態様は、電子機器である。この電子機器は、上述の音源処理装置と、音源処理装置に対して、再生すべき音声波形を記述するメッセージデータを出力するホストプロセッサと、を備える。
【００１１】
本発明の別の態様は、入力データに基づいて、再生すべき音波形データを生成する音処理装置に関する。この音処理装置は、入力データを解析して所定単位の音出力制御データを生成する中央演算処理装置と、音出力制御データに応じて、第１のタイミングごとの音出力波形を生成して出力するデジタル信号処理装置と、を備える。デジタル信号処理装置は、予め決められた波形データを記憶する波形メモリと、音出力制御データに応じたデータを波形メモリから読み出し、第１のタイミングよりも短い第２のタイミングで信号処理を行う第１演算処理部と、音出力制御データに応じたデータまたは第１演算処理部から出力されるデータに対して、第２のタイミングで第２の信号処理を行う第２演算処理部と、第２演算処理部から出力されるデータを合成し、第１のタイミングで出力するミキサ部と、第１、第２演算処理部との間でデータの入出力を行う作業用のメモリと、を含む。作業用メモリを利用して第１演算処理部の信号処理を行い、その結果を用いた第２演算処理部の信号処理を次の第２のタイミングで行う。
【００１２】
本発明の別の態様は、上述の音処理装置と、音処理装置に対して、再生すべき音に対応した音源データを供給する音源部と、音処理装置からの信号に応じて音出力を行う音出力部と、を備える。
【００１３】
本発明のさらに別の態様は、音源処理方法である。この方法は、入力されたメッセージデータにもとづいて、再生すべき音声波形データを生成して出力する音源処理方法であって、ボイス単位で表現されたメッセージデータを、順番に解析処理し、ボイス単位のパラメータデータとして出力する第１ステップと、パラメータデータに応じて、ボイスごとのウェーブ波形を生成し、合成して出力する第２ステップと、を備える。第２ステップは、パラメータデータに応じた音色のデータを波形メモリから読み出し、波形を構築する第１処理を行うステップと、第１処理の結果得られたデータに対して、所定の第２処理を実行するステップと、第２処理の結果得られたデータをすべてのボイスについて合成するステップと、を含む。第１、第２処理を、共有のデュアルポートメモリを利用して、ボイス単位のパイプライン処理を行う。
【００１４】
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明に係る音源処理技術によれば、効率よい信号処理が可能となる。
【発明を実施するための最良の形態】
【００１６】
以下本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合せは、必ずしも発明の本質的なものであるとは限らない。
【００１７】
図１は、実施の形態に係る音源ＬＳＩ１００の構成を示すブロック図である。本実施の形態に係る音源ＬＳＩ１００は、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）音源を含み、外部から入力されるＭＩＤＩメッセージに応じた音声信号を生成し、外部へと出力する機能を有する。たとえば、音源ＬＳＩ１００は、携帯電話端末などの電子機器に搭載され、着信用メロディなどを演奏するために利用される。
【００１８】
まず、音源ＬＳＩ１００を含む周辺の回路とのデータの送受信について説明する。図２は、音源ＬＳＩ１００が搭載される電子機器２００の構成を示すブロック図である。電子機器２００は、携帯電話端末であり、操作部２、ホストプロセッサ４、メモリ５、ＬＣＤモニタ６、通信処理部８、音声出力部１０、音源ＬＳＩ１００を含む。
【００１９】
操作部２は、ユーザが電話番号等を入力するためのボタンを含む。通信処理部８は、通信に必要な処理を実行する通信ユニットであって、具体的には外部の電話機やサーバからの着信を検出し、または外部の電話機またはサーバに対して発信する。なお、ここでいう着信は、電話の着呼だけでなく、ネットワーク経由のサーバからのパケット通信の着呼も含む。なお、発信についても同様である。
【００２０】
通信処理部８は、ネットワーク経由で着信メロディを外部サーバからダウンロードする。このとき、データ伝送量を軽減するべく、通信処理部８は、楽曲データが記述された楽曲ファイルをダウンロードする。楽曲データを記述した楽曲ファイルとしてはＭＩＤＩファイルが代表的であり、現在、事実上の業界標準となっているＧＭ規格により構成されるものであってもよい。なお、他の規格で記述した楽曲ファイルであってもよく、いずれの場合であっても、楽曲の波形データをダウンロードする場合と比較して、データ量が少ないという利点がある。ダウンロードされた楽曲ファイルは、メモリ５に格納される。以下では、代表して、着信音データがＭＩＤＩ規格により記述されている場合について説明する。なお、楽曲ファイルは、ネットワーク経由ではなく、その他の記憶媒体を介して、メモリ５に保存されてもよい。
【００２１】
ホストプロセッサ４は、電子機器２００の処理全体を統括的に制御するユニットであり、たとえばベースバンドＩＣに相当する。メモリ５は、ホストプロセッサ４とバスを介して接続されており、さまざまなデータが格納される。ホストプロセッサ４は、着信があった場合に、メモリ５に格納された楽曲ファイルを読み出し、ＭＩＤＩメッセージを、音源ＬＳＩ１００に対して出力する。音源ＬＳＩ１００は、受信したＭＩＤＩメッセージにもとづき、音声の波形データを生成し、音声出力部１０から出力する。音声出力部１０は、入力された信号を増幅する増幅器や、スピーカやイヤホンを含んで構成される。
【００２２】
まず、実施の形態について詳細に説明する前に、いくつかの用語の定義、説明を行う。本実施の形態において、「ボイス」とは、たとえば、ひとつの音を表現するための単位をいう。また、チャンネルとは、しばしば楽器の演奏者にたとえられる概念であって、ひとつのチャンネルが一つの楽器を表現する。チャンネル数には上限があり、同時に発音可能な楽器の数は制約を受ける。「ボイス」は、アサイナ処理によって、音色毎に複数の「チャンネル」のいずれかに割り当てられる。たとえば、ある「ボイス」が、ピアノの音色を有するとき、アサイナ処理により、このボイスは、チャンネル１番に割り当てられ、「ボイス」がトランペットの音色を有するとき、このボイスは、チャンネル１番とは別の、たとえばチャンネル２番に割り当てられる。「パラメータデータ」は、音源処理装置の内部で使用されるデータであって、たとえば、後段の波形メモリにおいて、そのボイスにより指示された音色が、どのアドレスに記憶されているかを記述するデータを含む。
【００２３】
本実施の形態において、楽曲ファイルは、たとえば、ＳＭＦ（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ）の形式で記述されている。ＳＭＦは、デルタタイムと呼ばれるイベント間の時間を指定するデータと、ＭＩＤＩメッセージを含んだデータ（以下、メッセージデータＭＳと称す）を一つの単位としてボイスごとに構成される。「ボイス」は、ノートとも呼ばれ、ひとつの音を表現するための単位をいう。「ボイス」ごとに、音色、音程、強さ、長さ等を記述することにより、ある音を表現することができる。音源ＬＳＩ１００は、ホストプロセッサ４から順次入力されるＭＩＤＩメッセージを解析し、再生すべき音声信号を生成する。
【００２４】
図１に戻り、入力されたメッセージデータにもとづいて、再生すべき音声波形データを生成して出力する音源ＬＳＩ１００の構成について説明する。
音源ＬＳＩ１００は、インターフェース（以下、Ｉ／Ｆと略す）２０、音源ブロック２２、デジタルアナログ変換器（以下、ＤＡＣと略す）２４を含み、一つの半導体基板上に機能ＩＣとして集積化されている。
Ｉ／Ｆ２０は、図２のホストプロセッサ４と音源ブロック２２の通信を制御するインターフェース回路であり、Ｉ／Ｆ２０に、ホストプロセッサ４からのメッセージデータＭＳＧが入力される。
音源ブロック２２は、メッセージデータＭＳＧを解析し、発音波形を生成する。たとえば、６４音（ボイス）の同時発音が可能となっている。後述のように、音源ブロック２２の内部のＲＯＭ（Ｒｏａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）には、ＰＣＭ圧縮されたウェーブデータが格納されている。また、音源ブロック２２はアサイナ機能、メッセージデータＭＳＧの解析、変換制御および音源へのアクセスの時間管理を行い、所望のタイミングで演奏に必要なデータ設定を行う。
【００２５】
音源ブロック２２は、ＣＰＵ（中央演算処理装置）３０、ＤＳＰ（デジタル信号処理装置）３２、エフェクタ部３４を含む。
ＣＰＵ３０は、ボイス単位で表現されたメッセージデータＭＳＧを、順番に解析して、メッセージの種類、パラメータを特定し、アサイナ処理を行い、解析した結果得られた情報（以下、単にパラメータデータＰＲＭという）を、ＤＳＰ３２へと出力する。
【００２６】
ＤＳＰ３２は、ＣＰＵ３０から出力されたパラメータデータＰＲＭにもとづき、内部のＲＯＭからウェーブデータを読み出し、ピッチエンベロープ処理、フィルタエンベロープ処理、アンプエンベロープ処理を行ってボイスごとのウェーブ波形を生成する。「ピッチエンベロープ処理」、「フィルタエンベロープ処理」、「アンプエンベロープ処理」は、それぞれ、音のピッチ（音程）、フィルタのカットオフ周波数、音の強弱を、時間とともに変化させることにより、実際の楽器の音色に近づけるための処理をいう。さらに、ＤＳＰ３２は、最大６４ボイスの音声信号を合成するミキシング処理を行い、後段のエフェクタ部３４に出力する。エフェクタ部３４は、コーラスやリバーブその他の音響効果を付加するブロックである。エフェクタ部３４から出力されたデータは、ＤＡＣ２４によってアナログ信号に変換され、音声出力部１０に出力される。
【００２７】
本実施の形態に係る音源ＬＳＩ１００は、ＣＰＵ３０とＤＳＰ３２という２つの信号処理ブロックを備えることを特徴としている。以下、この２つの信号処理ブロックにおけるデータ処理について詳細に説明する。
図３は、ＣＰＵ３０およびＤＳＰ３２の詳細な構成を示すブロック図である。ＣＰＵ３０およびＤＳＰ３２は、パラメータバンク３６を介して接続される。
【００２８】
ここで、音源ＬＳＩ１００における演算処理の単位について説明する。ＭＩＤＩデータによって再生されるウェーブ波形は、サンプリング時間Ｔｓでサンプリングされている。音源ＬＳＩ１００は、このサンプリング時間Ｔｓの間に、最大６４ボイス分のデータを処理することになる。また、サンプリング時間ＴｓをＮ倍（Ｎは整数であって、たとえば、１２８、２５６、５１２、１０２４など）した時間をフレーム時間Ｔｆと呼ぶ。本実施の形態において、ＣＰＵ３０は、１フレームを処理の単位とし、メッセージデータＭＳＧを解析して生成したパラメータデータＰＲＭを、１フレームごとに、パラメータバンク３６へと出力する。
【００２９】
まず、ＣＰＵ３０とＤＳＰ３２の間のデータの送受信について説明する。本実施の形態において、ＣＰＵ３０とＤＳＰ３２は、フレーム単位のパイプライン処理を実行する。パラメータバンク３６は、メモリ空間が第０バンクＢＡＮＫ０、第１バンクＢＡＮＫ１の２つの領域（バンク）に分割されたデュアルバンク構成のメモリであり、ＣＰＵ３０は、パラメータバンク３６へのパラメータデータＰＲＭの書き込みに際して、フレームごとに、第１バンクと第２バンクを切り換える。
【００３０】
ＤＳＰ３２は、ＣＰＵ３０により使用されるバンクと反対側のバンクに格納されたデータを読み出して処理する。すなわち、ＤＳＰ３２内部では、ＣＰＵ３０によって第０バンクＢＡＮＫ０が使用される期間においては、第１バンクＢＡＮＫ１に格納されたパラメータデータＰＲＭを読み出し、ＣＰＵ３０によって第１バンクＢＡＮＫ０が使用される期間においては、第１バンクＢＡＮＫ１に格納されたパラメータデータＰＲＭを読み出す。
【００３１】
図４は、ＣＰＵ３０およびＤＳＰ３２によるフレーム処理のタイムチャートである。ＣＰＵ３０は、期間Ｔｎに、第ｎフレームのデータを第０バンクＢＡＮＫ０に書き込み、次の期間Ｔｎ＋１に、第（ｎ＋１）フレームのデータを、第１バンクＢＡＮＫ１に書き込み、次の期間Ｔｎ＋２に、第（ｎ＋２）フレームのデータを第０バンクＢＡＮＫ０に順番に書き込んでいく。一方で、ＤＳＰ３２は、期間Ｔｎにパラメータバンク４０の第１バンクＢＡＮＫ１に格納された第（ｎ−１）フレームのデータを、期間Ｔｎ＋１に、第０バンクＢＡＮＫ０に格納された第ｎフレームのデータを、期間Ｔｎ＋２に、第０バンクＢＡＮＫ０に格納された第（ｎ＋１）フレームのデータを、順に読み出していく。
【００３２】
このように、ＣＰＵ３０とＤＳＰ３２の間に、メモリ空間が分割されたデュアルバンクのパラメータバンク３６を配置し、書き込みと読み出しを、それぞれ反対のバンクを利用して交互に行うことにより、ＣＰＵ３０とＤＳＰ３２間で、フレーム単位のパイプライン処理が実現される。このパイプライン処理により、ＣＰＵ３０とＤＳＰ３２の独立性が高まり、効率的な処理が可能となり、各ブロック内の設計の自由度を高めることができる。
【００３３】
図３に戻り、ＤＳＰ３２の内部構成およびその機能について説明する。ＤＳＰ３２は、パラメータバンクインターフェース（以下、単にＩ／Ｆという）４０、第１演算処理部４２、ウェーブメモリ４４、作業用メモリ４６、第２演算処理部４８、ミキサ部５０、タイミングコントローラ５２を備える。
【００３４】
Ｉ／Ｆ４０は、フレームごとに、パラメータバンク３６のアクセス先のバンクを切り換えて、データを読み出す。第１演算処理部４２および第２演算処理部４８は、パラメータバンク３６に書き込まれたパラメータデータＰＲＭを、サンプリング時間Ｔｓごとに、ボイス単位で順次読み出してパイプライン処理を行う。以下、このパイプライン処理について説明する。なお、ボイス単位のパラメータをボイスパラメータＶＰと称す。
【００３５】
ウェーブメモリ４４には、ＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）により符号化されたさまざまな音色のウェーブデータが格納されている。第１演算処理部４２は、パラメータバンク４０から１ボイス分のパラメータＶＰを読み出し、読み出したデータに指定されたアドレスに格納されたウェーブ波形を、ウェーブメモリ４４から読み出す。さらに、第１演算処理部４２は、読み出したウェーブ波形に対して、ピッチエンベロープ処理を施す。第１演算処理部４２は、作業用メモリ４６に、演算中のデータを一時的に格納するとともに、演算終了後のデータを格納する。第１演算処理部４２は、１ボイス分のデータ処理を、所定の時間内（以下、ボイス時間Ｔｖと呼ぶ）に完了する。第１演算処理部４２は、ボイス時間ごとに、順次、ボイスパラメータを読み出し、パラメータに応じた演算処理を実行する。なお、ウェーブメモリ４４は、ＡＤＰＣＭ（Ａｄａｐｔｉｖｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  ＰＣＭ）により符号化されたデータが格納されていてもよい。
【００３６】
第１演算処理部４２による演算処理の結果得られたデータは、作業用メモリ４６内に、異なるアドレスに順に書き込まれていく。ここで、作業用メモリ４６は、デュアルポートを有しており、第１ポートは、第１演算処理部４２に接続され、第２ポートは第２演算処理部４８に接続される。このような構成とすることにより、作業用メモリ４６は、２つのブロックから同時にデータアクセスが可能となっている。第２演算処理部４８は、パラメータバンク３６から、ボイスパラメータＶＰを読み出すとともに、ひとつ前のボイス時間に、第１演算処理部４２によって処理されたデータを作業用メモリ４６から読み出す。第２演算処理部４８は、作業用メモリ４６から読み出したデータに対して、ボイスパラメータに応じて、フィルタエンベロープ処理、アンプエンベロープ処理を施し、後段のミキサ部５０へと出力する。第２演算処理部４８は、１ボイス分のデータ処理を、ボイス時間内に完了する。
【００３７】
ミキサ部５０は、第２演算処理部４８から順に出力されるボイスデータを合成するミキシング処理を実行し、１サンプルすなわち６４ボイス分の合成が終了すると、サンプリング時間Ｔｓを単位として出力する。
【００３８】
図５は、ＤＳＰ３２内部におけるボイス単位のパイプライン処理のフローを示す図である。第１演算処理部４２は、１ボイスづつ順に処理をしていく。第２演算処理部４８は、第１演算処理部４２よりも１ボイス時間遅れて、所定の処理を実行していく。ミキサ部５０は、さらに１ボイス時間遅れて所定の処理を実行していく。第１演算処理部４２、第２演算処理部４８によるボイス単位のパイプライン処理は、タイミングコントローラ５２により時間管理される。
【００３９】
図６は、ボイス単位のパイプライン処理の際のＤＳＰ３２によるメモリアクセスの様子を示す図である。期間Ｔｖ１では、第１演算処理部４２は、パラメータバンク３６のアドレスＰｅ１を参照し、ボイスＶ１に関連するパラメータを読み出し、作業用メモリ４６のアドレスＷ１を利用して演算処理を実行する。続く期間Ｔｖ２では、第１演算処理部４２は、パラメータバンク３６のアドレスＰｏ２を参照し、ボイスＶ２に関連するパラメータを読み出し、作業用メモリ４６のアドレスＷ２を利用して演算処理を実行する。
【００４０】
一方、第２演算処理部４８は、期間Ｔｖ２では、パラメータバンク３６のアドレスＰｏ２を参照し、ボイスＶ２に関連するパラメータを読み出す。この期間Ｔｖ２において、パラメータバンク３６は、第１演算処理部４２および第２演算処理部４８からアクセスされることになる。ここで、パラメータバンク３６のアドレスは、奇数（ｏｄｄ）と偶数（ｅｖｅｎ）で区別されており、処理が続けて行われるボイス（たとえば、Ｖ１とＶ２）に関するデータは、奇数と偶数のアドレスが異なるように格納される。これは、第１演算処理部４２と第２演算処理部４８が、同じアドレスにアクセスするのを防止するためである。期間Ｔｖ２において、第２演算処理部４８は、期間Ｔｖ１において第１演算処理部４２により処理されたデータが格納される作業用メモリ４６のアドレスＷ２を利用して、所定の処理を実行する。第２演算処理部４８は、続く期間Ｔ３においては、次のボイスＶ２について同様の処理を実行する。
【００４１】
このように、本実施の形態において、ＤＳＰ３２の内部では、ボイス単位のパイプライン処理を実行する。
本実施の形態では、１ボイス時間Ｔｖで所定の処理が完了するように、第１演算処理部４２と第２演算処理部４８に処理内容を割り振っている。ウェーブデータがＡＤＰＣＭにより符号化がされている場合には、復号処理に多くの演算処理が必要とされるため、復号処理とアンプエンベロープ処理を第１演算処理部４２に割り振り、残りの処理を第２演算処理部４８に割り振るのが好ましい。もっとも、第１演算処理部４２、第２演算処理部４８による処理の割り当てはこれに限定されるものではなく、処理量やクロック数、バス幅などに応じて設定すればよい。
【００４２】
また、本実施の形態に係る音源ＬＳＩ１００のＤＳＰ３２には、第１演算処理部４２および第２演算処理部４８の両方から同時にアクセス可能なデュアルポートメモリが設けられている。その結果、１ボイスごとにメモリのアクセス領域を順に切り換えていくことにより、パイプライン処理を適切に行うことができる。これは、単にＦＩＦＯなどのバッファなどを設ける場合に比べて、確実な処理を提供するものである。
【００４３】
次に、ＤＳＰ３２におけるパイプライン処理の変形例を説明する。この変形例に係る処理は、ＤＳＰ３２における消費電力を平滑化する技術である。ここでは、この処理をボイススクランブル処理と呼ぶ。一般に、ＭＩＤＩデータを再生すると、すべての６４個のすべてのボイスが使用されることはまれであり、楽曲に応じては、その半分の３２個あるいはもっと少ないボイスしか使用されない場合もある。こうした場合に、ＤＳＰ３２は、処理すべきボイスが存在しない期間、クロックを停止し、低消費電力化を図っている。その結果、ＤＳＰ３２にはボイスが使用される期間のみ電流が流れ、ボイスが存在しない期間は、電流が流れない。いま、図６に示すボイス単位のパイプライン処理を、ボイス番号順に実行すると、有効なボイスが存在する前半部分に消費電流が集中し、有効なボイスが存在しない後半部分に消費電流が流れないことになる。図７（ａ）、（ｂ）は、ＤＳＰ３２に流れる電流波形を示す図である。図７（ａ）は、ボイス番号順のパイプライン処理を行った場合の電流波形を示す。この場合、サンプリング時間Ｔｓの中で、有効なボイスが存在する期間のみ、消費電流が流れ、その他の期間は電流が流れないかもしくは低下する。このような電流の起伏は、ノイズとして他の回路に影響を及ぼすおそれがある。
【００４４】
これに対して、ボイススクランブル処理は、ＤＳＰ３２の内部におけるボイスの処理の順番を、ボイス番号順そのままではなく、ボイス番号と異なる順番に変更する。別の観点から言えば、ＣＰＵ３０から出力されるボイスの番号と、ＤＳＰ３２における処理の順番を、ＤＳＰ３２におけるボイスの処理が時間的に拡散するように対応付ける。この処理は、図８のテーブルに対応付けて処理してもよい。図８は、ボイス番号とＤＳＰ３２における処理番号の対応を示す図である。なお、図８の対応表において、処理番号の０は、先頭に処理され、６３は最後に処理されることを示す。図８の対応表は、ボイス番号を６ビットのバイナリで表記し、上位２ビットと、下位２ビットとを入れ替えるという規則のもと作成したものである。すなわち、ボイス番号１は、バイナリ表記で“０００００１”であり、これは規則に従い、“０１００００”に変換され、その結果、処理番号は３２になる。また、ボイス番号１５は、バイナリ表記で“００１１１１”であり、これは規則に従うと、“１１１１００”となり、処理番号は６０となる。
【００４５】
なお、ボイス番号と処理番号を対応付ける規則は、図８に限定されるものではなく、別のビットを入れ替えてもよい。ビットの入れ替えによる処理番号の決定は、ＤＳＰ３２内部のごく簡単な信号処理により実現できるため、テーブル等を用意する必要もなく、また、処理量が増加することもない。また、ボイス番号と処理番号とは、あらかじめ用意したテーブルに従って対応付けられてもよい。また、ボイス番号と処理番号とは、所定の規則に基づかずに、ランダムに決定されてもよい。すなわち、ＤＳＰ３２におけるボイスの処理の順序が、ボイス番号の順序とは異なるように決定されていればよい。
【００４６】
このようなボイススクランブル処理は、ＣＰＵ３０からＤＳＰ３２へのデータの引き渡し時に、アドレスを変換することにより行うことができる。たとえば、ＣＰＵ３０からパラメータバンク３６へのパラメータデータ書き込みを、ボイス番号を参照して規則に従うようにアドレス変換してもよいし、ＤＳＰ３２によりパラメータバンク３６からパラメータデータを読み出すときに、参照先のアドレスを規則にしたがって変更して行ってもよい。
【００４７】
図９は、ボイススクランブル処理を実行したときの、ＤＳＰ３２内部におけるボイス単位のパイプライン処理のフローを示す図である。図９では、ボイス番号０〜５のみが有効であって、その他のボイスは使用されていない場合を示す。図９に示すように、ボイス番号０が、最初に処理され、一旦処理が停止し、次いでボイス番号４が処理され、処理が停止し、次いでボイス番号２、１、５、３の順に処理されていく。図７（ｂ）はこのときのＤＳＰ３２の消費電流の時間波形を示す。ボイススクランブル処理を実行した結果、消費電流の総量は、図７（ａ）に示すボイススクランブル処理を実行しない場合と変わらないが、電流がサンプリング時間Ｔｓ全体にわたり流れるため、電流の起伏が平坦化される。その結果、ノイズとして他の回路に及ぼす影響を低減することができる。
【００４８】
すなわち、本実施の形態では、パイプライン処理におけるボイス処理が、時間的に連続的に行われるのではなく、サンプリング時間全体にわたってなるべく均等に配置されるように分配している。その結果、消費電流の時間波形が平滑化される。
【００４９】
次に、実施の形態に係る音源ＬＳＩ１００におけるエラー処理技術について説明する。
本実施の形態において、ＣＰＵ３０は、処理すべきボイス数に応じて、クロック周波数を変化させる。この場合、ＣＰＵ３０は、ボイス数が少ない場合に、クロック周波数を低下させることにより低消費電力化を図るが、ボイス数の見積もりを誤ると、クロック周波数が低いため、１フレーム分の処理が、フレーム時間内に終了しない場合がある。上述のように、ＣＰＵ３０とＤＳＰ３２は、フレーム単位のパイプライン処理を実行しており、ＤＳＰ３２により処理すべきあるフレームのデータは、処理が開始される前に、パラメータバンク３６に書き込まれていなければならない。ところが、ＣＰＵ３０によるパラメータバンク３６の更新が間に合わないと、パラメータバンク３６における処理が破綻をきたすことになる。そこで本実施の形態に係る音源ＬＳＩ１００は、以下のエラー処理を実行する。
【００５０】
ＣＰＵ３０は、Ｉ／Ｆ２０に入力されたメッセージデータＭＳＧを順番に解析し、パラメータバンク３６に渡すべきパラメータデータＰＲＭを生成する。そして、１フレーム分のパラメータデータＰＲＭを生成し終わると、１フレーム分のパラメータデータＰＲＭを、パラメータバンク３６に書き込む。
【００５１】
ＣＰＵ３０は、１フレーム分のメッセージデータＭＳＧの解析が完了し、すべてのメッセージデータＭＳＧに対するパラメータデータＰＲＭの生成が完了すると、アップデートフラグＦＬＧを立てる。逆にいえば、パラメータデータＰＲＭの生成が完了しないとフラグＦＬＧは立てられない。
ＣＰＵ３０は、フレーム時間おきに、たとえば、フレームが切り替わるフレームタイミングごとに、フラグＦＬＧをチェックし、もしフラグＦＬＧが立っていれば、パラメータバンク３６のバンクを切り換える。もしフラグＦＬＧが立っていなければバンク切り替えは行わない。
【００５２】
図１０は、実施の形態に係るクロック制御と、エラー処理のタイムチャートを示す。
先にエラー処理を説明する。図１０に示すように、ＣＰＵ３０では、メッセージデータＭＳＧの解析（アサイナ処理）と、パラメータデータＰＲＭの生成を行っている。第１フレームにおいて、パラメータデータＰＲＭの生成が完了すると、パラメータバンク３６の第０バンクに、生成されたパラメータデータＰＲＭ１が書き込まれるとともに、フラグＦＬＧ１が立てられる。フレームタイミングＴ２におけるフラグチェックの結果、フラグＦＬＧ１が立っているため、第０バンクＢＡＮＫ０から第１バンクＢＡＮＫ１に着替わる。
【００５３】
次に、メッセージデータＭＳＧ２がアサイナ処理され、パラメータデータＰＲＭ２が生成される。パラメータデータＰＲＭ２は、パラメータバンク３６の第１バンクＢＡＮＫ１に書き込まれ、フラグＦＬＧ２が立てられる。フレームタイミングＴ３におけるフラグチェックの結果、第０バンクＢＡＮＫ０に切り替わる。
【００５４】
次に、メッセージデータＭＳＧ３がアサイナ処理され、パラメータデータＰＲＭ３が生成される。図１０では、パラメータデータＰＲＭ３の生成は、何らかの要因によって、第４フレームに入ってから完了する。これは、ＣＰＵ３０における処理が破綻していることを示している。この場合、フレームタイミングＴ４におけるフラグチェック時にはフラグＦＬＧ３が立っておらず、バンク切り替えは行われない。その結果、パラメータデータＰＲＭ３は再度、第０バンクＢＡＮＫ０に書き込まれる。
【００５５】
フレームタイミングＴ５におけるフラグチェックの結果、フラグＦＬＧ３によって、バンクが切り換えられる。パラメータデータＰＲＭ４は、パラメータバンク３６の第１バンクＢＡＮＫ１に書き込まれる。
【００５６】
一方で、ＤＳＰ３２は、ＣＰＵ３０と反対側のバンクに格納されたパラメータデータを順次読み出して音声波形を生成する。すなわち、フレームタイミングＴ１〜Ｔ２の期間においては、第０バンクＢＡＮＫ０を参照し、格納されたパラメータデータＰＲＭに従い、データ処理を行う。フレームタイミングＴ２〜Ｔ３の期間においては、第０バンクＢＡＮＫ０に格納されたパラメータデータＰＲＭ１を参照し、フレームタイミングＴ３〜Ｔ４の期間においては、第１バンクＢＡＮＫ１に格納されたパラメータデータＰＲＭ２を参照する。
【００５７】
フレームタイミングＴ４においてはバンク切り替えが行われないため、フレームタイミングＴ４〜Ｔ５の期間では、第１バンクＢＡＮＫ１に格納されたパラメータデータＰＲＭ２を参照する。すなわち、ＤＳＰ３２においては、ＣＰＵ３０において処理が破綻した場合、前回と同じパラメータデータＰＲＭ２を参照することになる。ＤＳＰ３２において、ＡＤＰＣＭ方式等により圧縮されたデータであって、前回のデータとの差分を利用して圧縮されたデータを扱う場合には、差分値を０として処理する。
【００５８】
フレームタイミングＴ５以降、ＤＳＰ３２は、第０バンクＢＡＮＫ０に格納されたパラメータデータＰＲＭ３を参照してデータ処理を行う。
【００５９】
このように、本実施の形態に係る音源ＬＳＩ１００では、ＣＰＵ３０において処理が破綻し、ＤＳＰ３２において必要なデータが、所定のタイミングでパラメータバンク３６に書き込まれない場合には、バンク切り替えを行わない。ＭＩＤＩデータの特性に鑑みて、２つのフレームで同じパラメータデータを利用しても、人間の聴感上、それほど不快には聞こえない。したがって、ＤＳＰ３２が、前回のフレームと同じパラメータデータを利用して信号処理を行うことにより、出力される音声波形が乱れるのを防止することができる。
【００６０】
次に、図１０および図１１を参照しつつ、ボイス数に応じたクロック周波数の制御について説明する。図１１は、ボイス数とクロック周波数の対応関係を示す図である。
【００６１】
ＣＰＵ３０は、処理すべきボイス数に応じて、クロック周波数を変化させる。ボイス数は、ＣＰＵ３０におけるアサイナ処理により、メッセージデータＭＳＧを解析することにより判定される。ＣＰＵ３０は、アサイナ処理が完了するごとに、次のフレームのボイス数を予測し、ボイス数を更新する。図１０は、メッセージデータＭＳＧ２に含まれるボイス数は１６であり、メッセージデータＭＳＧ３に含まれるボイス数は９であり、メッセージデータＭＳＧ４に含まれるボイス数は８であることを示す。
【００６２】
ＣＰＵ３０は、図中破線で示されるフレームタイミングごとに、ボイス数に応じてクロック周波数を切り換える。ボイス数にもとづくクロック周波数の決定は、図１１の実線（Ｉ）に示す関係に従って行われる。図１１の実線（Ｉ）は、最大ボイス数６４において、最大クロック周波数ｆｍａｘとなり、ボイス数が減少するにしたがって、周波数が低下するように規定される。クロック周波数とボイス数の関係は直線である必要はない。
【００６３】
たとえば、フレームタイミングＴ１では、ボイス数ＶＯＩＣＥ９に応じてクロック周波数ＣＬＫ９に設定する。同様に、フレームタイミングＴ５では、ボイス数ＶＯＩＣＥ９に応じたクロック周波数ＣＬＫ９に設定する。ボイス数ＶＯＩＣＥ８に応じたクロック周波数ＣＬＫ８に設定する。
【００６４】
また、メッセージデータＭＳＧの解析（アサイナ処理）が、２つのフレームを跨ぐ場合、クロック周波数を、図１１の実線（Ｉ）により規定される周波数よりも高く設定するのが好ましい。たとえば、第１フレームにおいて、メッセージデータＭＳＧ２のアサイナ処理は、第１フレーム内では完了せずに、第２フレームにまたがっている。この場合、第２フレームにおけるクロック周波数は、ボイス数ＶＯＩＣＥ９に対応するクロック周波数ＣＬＫ９より高い、ＣＬＫ１０に設定する。
【００６５】
たとえば、第３フレームにおいて、メッセージデータＭＳＧ３のアサイナ処理は、第２、第３フレームにまたがっており、この場合、第３フレームにおけるクロック周波数は、ボイス数ＶＯＩＣＥ１７に対応するクロック周波数ＣＬＫ１６より高い、ＣＬＫ１７に設定する。アサイナ処理が２つのフレームにまたがる場合は、処理が遅れている可能性があるため、クロック数を図１１の実線（Ｉ）よりも高く設定することにより、処理を破綻しにくくすることができる。たとえば、図１１に破線（ＩＩ）で示すように、図１１の直線の傾きを小さくしてクロック周波数の低下率を下げてもよい。
【００６６】
さらに、パラメータデータＰＲＭの生成が、フレームタイミングに間に合わなかった場合、すなわち処理が破綻した場合には、ボイス数に応じたクロック周波数の制御を停止し、クロック周波数を、前回のフレームと同じ値に固定して使用してもよい。図１０では、フレームタイミングＴ４において、ＣＰＵ３０の処理が破綻しており、第４フレームのクロック周波数が、第３フレームのそれと同じ値に設定されている。
【００６７】
このように、本実施の形態に係る音源ＬＳＩ１００によれば、クロック周波数をボイス数に応じて適応的に変化させることにより、消費電力を低減することができる。さらに、仮にクロック周波数を低下させたことにより、ＣＰＵ３０の処理が破綻したとしても、上述のエラー処理によって、音声再生にはほとんど影響を及ぼさないため、図１１に示す周波数とボイス数の関係を、比較的自由に設計することができる。すなわち、エラー処理を行わなければ、ボイス数に応じて周波数をそれほど下げることができないが、破綻処理を行うことにより、周波数を下げることができるため、より低消費電力化を図ることができる。
【００６８】
また、アサイナ処理が２つのフレームにまたがった場合に、周波数の低下率を小さくすることにより、処理を破綻しにくくすることができる。
【００６９】
以上は、クロック周波数を制御する場合について説明したが、ファームウェアの更新などによって、設計時に想定されていなかった処理が行われる場合にも、ＣＰＵ３０による処理が間に合わないことが起こりうる。この場合にも、上述のエラー処理は有効である。
【００７０】
このエラー処理を実行することにより、ＣＰＵ３０における処理が所定のタイミングに間に合わなかった場合にも、破綻することなく、後段のＤＳＰ３２において、処理が継続される。
【００７１】
実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７２】
実施の形態では、音源ＬＳＩ１００は携帯電話端末に搭載される場合について説明したが、本発明の用途はこれに限定されるものではなく、ＭＩＤＩ音源専用装置などに使用することも当然に可能である。
【００７３】
また、実施の形態では、ＭＩＤＩ音源を例に説明したが、過去において存在し、あるいは将来にわたって開発されるであろう、これに変わる同等の音源についても、本発明は適用することができる。
【００７４】
実施の形態にもとづき、本発明を説明したが、実施の形態は、本発明の原理、応用を示しているにすぎないことはいうまでもなく、実施の形態には、請求の範囲に規定された本発明の思想を離脱しない範囲において、多くの変形例や配置の変更が可能であることはいうまでもない。
【図面の簡単な説明】
【００７５】
【図１】実施の形態に係る音源ＬＳＩの構成を示すブロック図である。
【図２】音源ＬＳＩが搭載される電子機器の構成を示すブロック図である。
【図３】ＣＰＵおよびＤＳＰの詳細な構成を示すブロック図である。
【図４】ＣＰＵおよびＤＳＰによるフレーム処理のタイムチャートである。
【図５】ＤＳＰ内部におけるボイス単位のパイプライン処理のフローを示す図である。
【図６】ボイス単位のパイプライン処理の際のＤＳＰによるメモリアクセスの様子を示す図である。
【図７】図７（ａ）、（ｂ）は、ＤＳＰに流れる電流波形を示す図である。
【図８】ボイス番号とＤＳＰにおける処理番号の対応を示す図である。
【図９】ボイススクランブル処理を実行したときの、ＤＳＰ内部におけるボイス単位のパイプライン処理のフローを示す図である。
【図１０】実施の形態に係るクロック制御と、エラー処理のタイムチャートを示す図である。
【図１１】ボイス数とクロック周波数の対応関係を示す図である。
【符号の説明】
【００７６】
２  操作部、  ４  ホストプロセッサ、  ５  メモリ、  ６  ＬＣＤモニタ、  ８  通信処理部、  １０  音声出力部、  ２０  Ｉ／Ｆ、  ２２  音源ブロック、  ２４  ＤＡＣ、  ３０  ＣＰＵ、  ３２  ＤＳＰ、  ３４  エフェクタ部、  ３６  パラメータバンク、  ４０  Ｉ／Ｆ、  ４２  第１演算処理部、  ４４  ウェーブメモリ、  ４６  作業用メモリ、  ４８  第２演算処理部、  ５０  ミキサ部、  ５２  タイミングコントローラ、  １００  音源ＬＳＩ、  ２００  電子機器、  ＢＡＮＫ０  第０バンク、  ＢＡＮＫ１  第１バンク。
【図１】
2008009033.tif 000003
【図２】
2008009033.tif 000004
【図３】
2008009033.tif 000005
【図４】
2008009033.tif 000006
【図５】
2008009033.tif 000007
【図６】
2008009033.tif 000008
【図７】
2008009033.tif 000009
【図８】
2008009033.tif 000010
【図９】
2008009033.tif 000011
【図１０】
2008009033.tif 000012
【図１１】
2008009033.tif 000013