(57)【要約】本開示では、オーディオ処理要素から波形サンプルを受け取り、所与のフレームの波形総和を総和して記憶する総和バッファを利用する技法について述べている。一例では、方法は、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することと、複数のメモリブロックに論理的に区分されたメモリ中に波形総和を記憶することと、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックすることと、外部プロセッサにロックされたメモリブロックの内容を転送することと、メモリブロックの内容が外部プロセッサに転送された後、当該メモリブロックをアンロックすることと、第１のオーディオフレームに関連する残っているロックされたメモリブロックの内容を転送するのと同時に、アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶することと、を備える。
2010522361.tif 000002
【特許請求の範囲】
【請求項１】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することと、
複数のメモリブロックに論理的に区画されたメモリ中に前記第１のオーディオフレームに関連する前記波形総和を記憶することと、
前記第１のオーディオフレームに関連する前記波形総和を含むメモリブロックをロックすることと、
ブロックごとに外部プロセッサに前記ロックされたメモリブロックの内容を転送することと、
メモリブロックの内容が前記外部プロセッサに転送された後、当該メモリブロックをアンロックすることと、
前記第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、前記アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶することと、
を備える方法。
【請求項２】
前記メモリブロックをロックすることは、前記ロックされたメモリブロックがアクセスされるのを防止することを含む、請求項１の方法。
【請求項３】
前記アンロックされたメモリブロック内に前記第２のオーディオフレームに関連する前記波形総和を記憶するよりも前に、前記アンロックされたメモリブロックをクリアすることをさらに備える、請求項１の方法。
【請求項４】
前記第１のオーディオフレームに関連する前記波形総和が記憶されるべき前記メモリ内のターゲットメモリブロックのアドレスを示すサンプル番号を受け取ることと、
前記示されたアドレスに関連するメモリブロックが現在ロックされているかどうかを判断するために、ロックされたメモリブロックのメモリ内の位置を表す値と前記サンプル番号を比較することと、
をさらに備え、
前記メモリは、前記ターゲットメモリブロックが現在ロックされていない場合、前記第１のオーディオフレームに関連する前記波形総和を記憶する、
請求項１の方法。
【請求項５】
前記示されたアドレスに関連する前記メモリブロックが現在ロックされている場合、前記第１のオーディオフレームに関連する前記波形総和が記憶されるのを妨げることをさらに備える、請求項４の方法。
【請求項６】
複数のオーディオ処理要素から複数の波形サンプルを受け取ることをさらに備え、
前記波形サンプルを総和することは、前記第１のオーディオフレーム内の時間のそれぞれのインスタンス（respective instances of time）において前記複数のオーディオ処理要素から受け取った前記波形サンプルの各々を総和することを含む、
請求項１の方法。
【請求項７】
内容を転送することは、前記第１のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを出力することを含む、請求項１の方法。
【請求項８】
前記メモリブロックをロックすることは、前記メモリの前記内容を転送するために前記外部プロセッサから受け取った要求に応答して前記メモリブロックをロックすることを含む、請求項１の方法。
【請求項９】
複数のオーディオ処理要素から受け取った波形サンプルを総和するために、要求を総当たり調停に従って調停することをさらに備える、請求項１の方法。
【請求項１０】
前記波形サンプルを総和することは、２の補数の累算を使用して前記波形サンプルを累算することを含む、請求項１の方法。
【請求項１１】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することは、第１の電子楽器デジタルインターフェース（ＭＩＤＩ）フレームに関連するＭＩＤＩ波形総和を生成するためにＭＩＤＩ処理要素から受け取ったＭＩＤＩ波形サンプルを総和することを含む、請求項１の方法。
【請求項１２】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和するアキュムレータと、
複数のメモリブロックに論理的に区画され、前記第１のオーディオフレームに関連する前記波形総和を記憶するメモリと、
前記第１のオーディオフレームに関連する前記波形総和を含むメモリブロックをロックする制御ユニットであって、ブロックごとに外部プロセッサに前記ロックされたメモリブロックの内容を転送し、前記外部プロセッサにメモリブロックの内容が転送された後に当該メモリブロックをアンロックする、制御ユニットと、
を備え、
前記メモリは、前記第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を、前記制御ユニットが転送するのと同時に、前記アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶する、装置。
【請求項１３】
前記制御ユニットによって前記メモリブロックをロックすることは、前記ロックされたメモリブロックがアクセスされるのを防止する、請求項１２の装置。
【請求項１４】
前記制御ユニットは、前記アンロックされたメモリブロック内に前記第２のオーディオフレームに関連する前記波形総和を記憶するよりも前に、前記アンロックされたメモリブロックをクリアする、請求項１２の装置。
【請求項１５】
前記装置は、前記第１のオーディオフレームに関連する前記波形総和が記憶されるべき前記メモリ内のターゲットメモリブロックのアドレスを示すサンプル番号を受け取り、
前記制御ユニットは、前記示されたアドレスに関連するメモリブロックが現在ロックされているかどうかを判断するために、メモリブロックが現在ロックされているメモリ内の位置を表す値と前記サンプル番号を比較し、
前記メモリは、前記ターゲットメモリブロックが現在ロックされていない場合、前記第１のオーディオフレームに関連する前記波形総和を記憶する、
請求項１２の装置。
【請求項１６】
前記制御ユニットは、前記示されたアドレスに関連する前記メモリブロックが現在ロックされている場合、前記メモリが前記第１のオーディオフレームに関連する前記波形総和を記憶するのを妨げる、請求項１５の装置。
【請求項１７】
前記装置は、複数のオーディオ処理要素から複数の波形サンプルを受け取り、前記アキュムレータは、前記第１のオーディオフレーム内の時間のそれぞれのインスタンスにおいて前記複数のオーディオ処理要素から受け取った前記波形サンプルの各々を総和する、請求項１２の装置。
【請求項１８】
前記制御ユニットは、前記第１のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを出力する、請求項１２の装置。
【請求項１９】
前記制御ユニットは、前記メモリの前記内容を転送するために前記外部プロセッサから受け取った要求に応答して前記メモリブロックをロックする、請求項１２の装置。
【請求項２０】
複数のオーディオ処理要素から受け取った波形サンプルを総和するために要求を総当たり調停に従って調停するアービタをさらに備える、請求項１２の装置。
【請求項２１】
前記アキュムレータは、２の補数の累算を使用して前記波形サンプルを累算する、請求項１２の装置。
【請求項２２】
前記波形サンプルは、電子楽器デジタルインターフェース（ＭＩＤＩ）波形サンプルを含み、前記波形総和は、ＭＩＤＩ波形総和を含み、前記第１および第２のオーディオフレームは、第１および第２のＭＩＤＩフレームを含む、請求項１２の装置。
【請求項２３】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和するための手段と、
複数のメモリブロックに論理的に区画され、前記第１のオーディオフレームに関連する前記波形総和を記憶するための手段と、
前記第１のオーディオフレームに関連する前記波形総和を含むブロックをロックするための手段と、
ブロックごとに外部プロセッサに前記ロックされたメモリブロックの内容を転送するための手段と、
前記外部プロセッサにメモリブロックの内容が転送された後に当該メモリブロックをアンロックするための手段と、
を備え、
前記第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容が、前記転送するための手段によって前記外部プロセッサに転送されるのと同時に、第２のオーディオフレームに関連する波形総和が、前記記憶するための手段によって前記アンロックされたメモリブロック内に記憶される、装置。
【請求項２４】
前記ロックするための手段は、前記ロックされたメモリブロックがアクセスされるのを防止する、請求項２３の装置。
【請求項２５】
前記アンロックされたメモリブロック内に前記第２のオーディオフレームに関連する前記波形総和を記憶するよりも前に、前記アンロックされたメモリブロックをクリアするための手段をさらに備える、請求項２３の装置。
【請求項２６】
前記第１のオーディオフレームに関連する前記波形総和が記憶されるべき前記記憶するための手段内のターゲットメモリブロックのアドレスを示すサンプル番号を受け取るための手段と、
前記示されたアドレスに関連するメモリブロックが現在ロックされているかどうかを判断するために、メモリブロックが現在ロックされている前記記憶するための手段内の位置を表す値と前記サンプル番号を比較するための手段と、
をさらに備え、
前記記憶するための手段は、前記ターゲットメモリブロックが現在ロックされていない場合、前記第１のオーディオフレームに関連する前記波形総和を記憶する、
請求項２３の装置。
【請求項２７】
前記示されたアドレスに関連する前記メモリブロックが現在ロックされている場合、前記メモリが前記第１のオーディオフレームに関連する前記波形総和を記憶するのを妨げるための手段をさらに備える、請求項２６の装置。
【請求項２８】
複数のオーディオ処理要素から複数の波形サンプルを受け取るための手段をさらに備え、
前記総和するための手段は、前記第１のオーディオフレーム内の時間のそれぞれのインスタンスにおいて前記複数のオーディオ処理要素から受け取った前記波形サンプルの各々を総和する、
請求項２３の装置。
【請求項２９】
前記ロックするための手段は、前記記憶するための手段の前記内容を転送するために前記外部プロセッサから受け取った要求に応答して前記メモリブロックをロックする、請求項２３の装置。
【請求項３０】
複数のオーディオ処理要素から受け取った波形サンプルを総和するために要求を総当たり調停に従って調停するための手段をさらに備える、請求項２３の装置。
【請求項３１】
前記総和するための手段は、２の補数の累算を使用して前記波形サンプルを累算する、請求項２３の装置。
【請求項３２】
前記波形サンプルは、電子楽器デジタルインターフェース（ＭＩＤＩ）波形サンプルを含み、前記波形総和は、ＭＩＤＩ波形総和を含み、前記第１および第２のオーディオフレームは、第１および第２のＭＩＤＩフレームを含む、請求項２３の装置。
【請求項３３】
実行時に１つまたは複数のプロセッサに、
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することと、
複数のメモリブロックに論理的に区画されたメモリ中に前記第１のオーディオフレームに関連する前記波形総和を記憶することと、
前記第１のオーディオフレームに関連する前記波形総和を含むメモリブロックをロックすることと、
ブロックごとに外部プロセッサに前記ロックされたメモリブロックの内容を転送することと、
メモリブロックの内容が前記外部プロセッサに転送された後、当該メモリブロックをアンロックすることと、
前記第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、前記アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶することと、
を行わせる命令を備えるコンピュータ可読媒体。
【請求項３４】
前記メモリブロックをロックすることは、前記ロックされたメモリブロックがアクセスされるのを防止することを含む、請求項３３のコンピュータ可読媒体。
【請求項３５】
実行時に前記１つまたは複数のプロセッサに、前記アンロックされたメモリブロック内に前記第２のオーディオフレームに関連する前記波形総和を記憶するよりも前に、前記アンロックされたメモリブロックをクリアすることを行わせる命令をさらに備える、請求項３３のコンピュータ可読媒体。
【請求項３６】
実行時に前記１つまたは複数のプロセッサに、
前記第１のオーディオフレームに関連する前記波形総和が記憶されるべき前記メモリ内のターゲットメモリブロックのアドレスを示すサンプル番号を受け取ることと、
前記示されたアドレスに関連するメモリブロックが現在ロックされているかどうかを判断するために、ロックされたメモリブロックのメモリ内の位置を表す値と前記サンプル番号を比較することと、
を行わせる命令をさらに備え、
前記メモリ中に前記第１のオーディオフレームに関連する前記波形総和を記憶することは、前記ターゲットメモリブロックが現在ロックされていない場合、前記波形総和を記憶することを含む、
請求項３３のコンピュータ可読媒体。
【請求項３７】
実行時に前記１つまたは複数のプロセッサに、前記示されたアドレスに関連する前記メモリブロックが現在ロックされている場合、前記第１のオーディオフレームに関連する前記波形総和が記憶されるのを妨げることを行わせる命令をさらに備える、請求項３６のコンピュータ可読媒体。
【請求項３８】
実行時に前記１つまたは複数のプロセッサに、
複数のオーディオ処理要素から複数の波形サンプルを受け取ることを行わせる命令をさらに備え、
前記波形サンプルを総和することは、前記第１のオーディオフレーム内の時間のそれぞれのインスタンスにおいて前記複数のオーディオ処理要素から受け取った前記波形サンプルの各々を総和することを含む、
請求項３３のコンピュータ可読媒体。
【請求項３９】
内容を転送することは、前記第１のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを出力することを含む、請求項３３のコンピュータ可読媒体。
【請求項４０】
前記メモリブロックをロックすることは、前記メモリの前記内容を転送するために前記外部プロセッサから受け取った要求に応答して前記メモリブロックをロックすることを含む、請求項３３のコンピュータ可読媒体。
【請求項４１】
実行時に前記１つまたは複数のプロセッサに、複数のオーディオ処理要素から受け取った波形サンプルを総和する要求を総当たり調停に従って調停することを行わせる命令をさらに備える、請求項３３のコンピュータ可読媒体。
【請求項４２】
前記波形サンプルを総和することは、２の補数の累算を使用して前記波形サンプルを累算することを含む、請求項３３のコンピュータ可読媒体。
【請求項４３】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することは、第１の電子楽器デジタルインターフェース（ＭＩＤＩ）フレームに関連するＭＩＤＩ波形総和を生成するためにＭＩＤＩ処理要素から受け取ったＭＩＤＩ波形サンプルを総和することを含む、請求項３３のコンピュータ可読媒体。
【請求項４４】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和し、
複数のメモリブロックに論理的に区画されたメモリ中に前記第１のオーディオフレームに関連する前記波形総和を記憶し、
前記第１のオーディオフレームに関連する前記波形総和を含むメモリブロックをロックし、
ブロックごとに外部プロセッサに前記ロックされたメモリブロックの内容を転送し、
メモリブロックの内容が前記外部プロセッサに転送された後、当該メモリブロックをアンロックし、
前記第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、前記アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶する、
ように構成された回路。
【請求項４５】
前記メモリブロックをロックすることは、前記ロックされたメモリブロックがアクセスされるのを防止することを含む、請求項４４の回路。
【請求項４６】
前記回路は、前記アンロックされたメモリブロック内に前記第２のオーディオフレームに関連する前記波形総和を記憶するよりも前に、前記回路が前記アンロックされたメモリブロックをクリアするように構成される、請求項４４の回路。
【請求項４７】
前記回路は、
前記第１のオーディオフレームに関連する前記波形総和が記憶されるべき前記メモリ内のターゲットメモリブロックのアドレスを示すサンプル番号を受け取り、
前記示されたアドレスに関連するメモリブロックが現在ロックされているかどうかを判断するために、ロックされたメモリブロックのメモリ内の位置を表す値と前記サンプル番号を比較する、
ように構成され、
前記メモリ中に前記第１のオーディオフレームに関連する前記波形総和を記憶することは、前記ターゲットメモリブロックが現在ロックされていない場合、前記波形総和を記憶することを含む、
請求項４４の回路。
【請求項４８】
前記回路は、前記示されたアドレスに関連する前記メモリブロックが現在ロックされている場合、前記第１のオーディオフレームに関連する前記波形総和が記憶されるのを妨げるように構成される、請求項４７の回路。
【請求項４９】
前記回路は、
複数のオーディオ処理要素から複数の波形サンプルを受け取るように構成され、
前記波形サンプルを総和することは、前記第１のオーディオフレーム内の時間のそれぞれのインスタンスにおいて前記複数のオーディオ処理要素から受け取った前記波形サンプルの各々を総和することを含む、
請求項４４の回路。
【請求項５０】
内容を転送することは、前記第１のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを出力することを含む、請求項４４の回路。
【請求項５１】
前記メモリブロックをロックすることは、前記メモリの前記内容を転送するために前記外部プロセッサから受け取った要求に応答して前記メモリブロックをロックすることを含む、請求項４４の回路。
【請求項５２】
前記回路は、複数のオーディオ処理要素から受け取った波形サンプルを総和する要求を総当たり調停に従って調停するように構成される、請求項４４の回路。
【請求項５３】
前記波形サンプルを総和することは、２の補数の累算を使用して前記波形サンプルを累算することを含む、請求項４４の回路。
【請求項５４】
第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することは、第１の電子楽器デジタルインターフェース（ＭＩＤＩ）フレームに関連するＭＩＤＩ波形総和を生成するためにＭＩＤＩ処理要素から受け取ったＭＩＤＩ波形サンプルを総和することを含む、請求項４４の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
米国特許法第１１９条における優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により明確に本明細書に組み込まれる、２００７年３月２２日に出願された「SHARED BUFFER MANAGEMENT FOR PROCESSING AUDIO FILES」と題する仮出願第６０／８９６，４２５号の優先権を主張するものである。
【０００２】
本開示は、オーディオ装置に関し、より詳細には、電子楽器デジタルインターフェース（ＭＩＤＩ）や同様のフォーマットなどオーディオフォーマットに基づいてオーディオ出力を生成するオーディオ装置に関する。
【背景技術】
【０００３】
電子楽器デジタルインターフェース（ＭＩＤＩ）は、ミュージック、スピーチ、トーン、アラートなどオーディオサウンドの作成、通信および／または再生に使用されるフォーマットである。ＭＩＤＩフォーマットの再生をサポートする装置は、様々な「ボイス」を作成するために使用できるオーディオ情報の組を記憶することができる。各ボイスは、特定の楽器によるミュージカルノート（musical note）など、１つまたは複数のサウンドに対応する。例えば、第１のボイスは、ピアノによって演奏される中央Ｃに対応し、第２のボイスは、トロンボーンによって演奏される中央Ｃに対応し、第３のボイスは、トロンボーンによって演奏されるＤ＃に対応するなどである。特定の楽器によって演奏されるミュージカルノートを再現するために、ＭＩＤＩ準拠装置は、低周波発振器の挙動など様々なオーディオ特性、ビブラートなどの効果、およびサウンドの認識に影響を及ぼすいくつかの他のオーディオ特性を指定する、ボイス用の情報の組を含むことができる。ほとんどどんなサウンドでも、定義されＭＩＤＩファイルで伝達されて、ＭＩＤＩフォーマットをサポートする装置によって再生されることができる。
【０００４】
ＭＩＤＩフォーマットをサポートする装置は、当該装置がミュージカルノート（または他のサウンド）の生成を開始すべきであることを示すイベントが発生すると、該ノートを生成することができる。同様に、該装置は、ミュージカルノートの生成を停止すべきであることを示すイベントが発生すると、該ノートの生成を停止する。楽曲全体は、いくつかのボイスがいつ開始し停止すべきかを示すイベントを指定することによって、ＭＩＤＩフォーマットに従って符号化できる。このようにして、楽曲は、ＭＩＤＩフォーマットに従ってコンパクトなファイルフォーマットで記憶および送信できる。
【０００５】
ＭＩＤＩは多種多様な装置でサポートされている。例えば、無線電話機など無線通信装置は、呼出音や他のオーディオ出力などダウンロード可能なサウンド用のＭＩＤＩファイルをサポートすることができる。アップルコンピュータ・インコーポレイテッドが販売している「ｉＰｏｄ」装置やマイクロソフト社が販売している「Ｚｕｎｅ」装置などのデジタルミュージックプレーヤも、ＭＩＤＩファイルフォーマットをサポートすることができる。ＭＩＤＩフォーマットをサポートする他の装置は、様々なミュージックシンセサイザ、無線モバイル装置、直接双方向通信装置（ウォーキートーキーと呼ばれることがある）、ネットワーク電話、パーソナルコンピュータ、デスクトップおよびラップトップコンピュータ、ワークステーション、衛星ラジオ装置、インターホン、ラジオ放送受信機、携帯ゲーム機、装置に取り付けられた回路基板、情報キオスク、児童用の様々なコンピュータ化された玩具、自動車や船舶や航空機で使用されるオンボードコンピュータ、ならびに多種多様な他の装置を含む。
【発明の概要】
【０００６】
概して、本開示ではオーディオファイルを処理するための技法について説明する。本技法は、電子楽器デジタルインターフェース（ＭＩＤＩ）フォーマットに準拠するオーディオファイルの再生に特に有用であるが、本技法は、他のオーディオフォーマット、技法、または規格にも有用である。本明細書で使用するＭＩＤＩファイルという用語は、ＭＩＤＩフォーマットに適合する少なくとも１つのオーディオトラックを含むどのようなファイルをも指す。本開示によれば、本技法は、複数のオーディオ処理ハードウェア要素から波形サンプルを受け取るように動作する総和バッファ（summing buffer）を利用する。総和バッファは、処理要素の１つから計算波形（calculated waveform）を受け取ると、その計算波形を、ＭＩＤＩフレームの全体的な波形に関連する時間の適切なインスタンス（proper instance of time）に加算する。したがって、総和バッファは複数の処理要素の出力を組み合わせる。このようにして、総和バッファは、全ＭＩＤＩフレームの波形の全体的なデジタル表現を累算記憶する。総和バッファは、本質的に、所与のオーディオフレーム内の全体的なオーディオ編集物（overall audio compilation）を表すオーディオサンプルを作成するために、処理要素の様々な要素からの様々な生成されたボイスに関連する時間の様々なインスタンス（different instances of time）を総和する。
【０００７】
総和バッファは、第１のオーディオフレーム用のオーディオサンプルをデジタル信号プロセッサ（ＤＳＰ）など外部プロセッサに転送する。総和バッファは、総和バッファによって独立して、すなわちブロックごとにロックおよびアンロックできる複数のメモリブロックに論理的に区分できるメモリモジュールを含む。メモリモジュール内の所与のメモリブロックについてＤＳＰへの転送が完了すると、総和バッファはメモリブロックをアンロックする。第１のフレームについてＤＳＰへのメモリモジュールのすべてのメモリブロックの転送が完了するのを待たずに、総和バッファは、アンロックされたメモリブロックの内容をクリアし始め、クリアされたメモリブロックに書き込まれる第２のフレーム（すなわち、次のフレーム）について波形総和（wave sums）を可能にする。
【０００８】
これらの技法により、先行フレームについてデジタル信号プロセッサ（ＤＳＰ）への波形総和の転送がまだ進行している間でも、総和バッファは、オーディオ処理ハードウェア要素から波形サンプルを受け取り、得られた波形総和をメモリに記憶することができる。このようにして、総和バッファは、オーディオ処理要素からの波形サンプルを効率的に総和し、各フレームの得られた波形総和をＤＳＰに与えるように設計されている。その上、オーディオ処理ハードウェア要素からのメモリ管理機能を総和バッファにオフロードすることにより、オーディオ処理ハードウェア要素の処理能力を高めることができる。
【０００９】
一態様では、本開示は、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することと、複数のメモリブロックに論理的に区分されたメモリ中に第１のオーディオフレームに関連する波形総和を記憶することと、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックすることと、を備える方法を提供する。本方法は、ブロックごとに外部プロセッサにロックされたメモリブロックの内容を転送することと、メモリブロックの内容が外部プロセッサに転送された後、当該メモリブロックをアンロックすることと、第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶することと、をさらに備える。
【００１０】
別の態様では、本開示は、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和するアキュムレータと、複数のメモリブロックに論理的に区画され、第１のオーディオフレームに関連する波形総和を記憶するメモリと、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックする制御ユニットと、を備える装置を提供する。制御ユニットは、ブロックごとに外部プロセッサにロックされたメモリブロックの内容を転送し、外部プロセッサにメモリブロックの内容が転送された後に当該メモリブロックをアンロックする。メモリは、第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を制御ユニットが転送するのと同時に、アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶する。
【００１１】
別の態様では、本開示は、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和するための手段と、複数のメモリブロックに論理的に区画され、第１のオーディオフレームに関連する波形総和を記憶するための手段と、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックするための手段と、を備える装置を提供する。本装置はまた、ブロックごとに外部プロセッサにロックされたメモリブロックの内容を転送するための手段と、外部プロセッサにメモリブロックの内容が転送された後に当該メモリブロックをアンロックするための手段と、を備え、第２のオーディオフレームに関連する波形総和が、第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容が、上記転送するための手段によって外部プロセッサに転送されるのと同時に、上記記憶するための手段によって、上記アンロックされたメモリブロック内に記憶される。
【００１２】
別の態様では、本開示は、実行時に１つまたは複数のプロセッサに、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和することと、複数のメモリブロックに論理的に区画されたメモリ中に第１のオーディオフレームに関連する波形総和を記憶することと、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックすることと、ブロックごとに外部プロセッサにロックされたメモリブロックの内容を転送することと、メモリブロックの内容が外部プロセッサに転送された後、当該メモリブロックをアンロックすることと、第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶することと、を行わせる命令を備えるコンピュータ可読媒体を提供する。
【００１３】
別の態様では、本開示は、第１のオーディオフレームに関連する波形総和を生成するためにオーディオ処理要素から受け取った波形サンプルを総和し、複数のメモリブロックに論理的に区画されたメモリ中に第１のオーディオフレームに関連する波形総和を記憶し、第１のオーディオフレームに関連する波形総和を含むメモリブロックをロックし、ブロックごとに外部プロセッサにロックされたメモリブロックの内容を転送し、メモリブロックの内容が外部プロセッサに転送された後、当該メモリブロックをアンロックし、第１のオーディオフレームに関連する波形総和を含む、残っているロックされたメモリブロックの内容を転送するのと同時に、アンロックされたメモリブロック内に第２のオーディオフレームに関連する波形総和を記憶する、ように構成された回路を提供する。
【００１４】
本開示の１つまたは複数の態様の詳細について添付の図面および以下の説明において述べる。本発明の他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】図１は、本開示によるオーディオファイルを処理するための技法を実施することができる例示的なオーディオ装置を示すブロック図である。
【図２】図２は、本開示によるオーディオ合成パラメータを処理するためのハードウェアユニットの一例を示すブロック図である。
【図３】図３は、本開示の教示に合致する例示的な技法を示す流れ図である。
【図４】図４は、本開示による総和バッファの例示的なアーキテクチャを示すブロック図である。
【図５】図５は、総和バッファによって整備される（maintained）例示的なメモリモジュールを示すブロック図である。
【図６】図６は、本開示の教示に合致する例示的な技法を示す流れ図である。
【発明を実施するための形態】
【００１６】
本開示では、オーディオファイルを処理するための技法について説明する。本技法は、電子楽器デジタルインターフェース（ＭＩＤＩ）フォーマットに準拠するオーディオファイルの再生に特に有用であるが、本技法は、合成パラメータを利用する他のオーディオフォーマット、技法、または規格にも有用である。本明細書で使用するＭＩＤＩファイルという用語は、ＭＩＤＩフォーマットに適合する少なくとも１つのオーディオトラックを含むいかなるオーディオデータまたはファイルをも指す。ＭＩＤＩトラックを含み得る様々なファイルフォーマットの例としては、いくつか挙げると、ＣＭＸ、ＳＭＡＦ、ＸＭＦ、ＳＰ−ＭＩＤＩがある。ＣＭＸは、クゥアルコム・インコーポレイテッドによって開発されたCompact Media Extensionsの略である。ＳＭＡＦは、ヤマハ株式会社によって開発されたSynthetic Music Mobile Application Formatの略である。ＸＭＦはeXtensible Music Formatの略であり、ＳＰ−ＭＩＤＩはScalable Polyphony MIDIの略である。
【００１７】
ＭＩＤＩファイルまたは他のオーディオファイルは、オーディオ情報またはオーディオ・ビデオ（マルチメディア）情報を含み得る複数オーディオフレームに入れて装置間で伝達できる。１つのオーディオフレームは、単一のオーディオファイルを備えても良いし、複数のオーディオファイルを備えても良く、場合によっては１つまたは複数のオーディオファイルと符号化ビデオフレームなど他の情報とを備えることもできる。１つのオーディオフレーム内のどのようなオーディオデータも、本明細書で使用する場合、ストリーミングオーディオデータあるいは上記した１つまたは複数のオーディオファイルフォーマットを含めて、オーディオファイルと呼ぶことがある。本開示によれば、本技法は、（例えば、専用ＭＩＤＩハードウェア内の）複数の処理要素の各々から波形サンプルを受け取り、波形総和を生成してこの波形総和をデジタル信号プロセッサ（ＤＳＰ）に転送するためにそれら波形サンプルを累算する、総和バッファを利用する。
【００１８】
記載の技法はＭＩＤＩファイルなどのオーディオファイルの処理を改善することができる。本技法は、様々なタスクをソフトウェア、ファームウェアおよびハードウェアに振り分けることができる。汎用プロセッサは、オーディオフレームのオーディオファイルを解析（parse）し、それによってタイミングパラメータを識別するため、およびそのオーディオファイルに関連するイベントをスケジュールするためのソフトウェアを実行することができる。次いで、スケジュールされたイベントを、オーディオファイル中のタイミングパラメータによって指定されたように、同期方式でＤＳＰによって処理することができる。汎用プロセッサは時間同期方式でこれらのイベントをＤＳＰにディスパッチ（dispatch）し、ＤＳＰは合成パラメータを生成するためにこれらのイベントを時間同期スケジュールに従って処理する。次いで、ＤＳＰはハードウェアユニットにおける合成パラメータの処理をスケジュールし、ハードウェアユニットは合成パラメータに基づいてオーディオサンプルを生成することができる。
【００１９】
本開示によれば、総和バッファは、処理要素の１つから計算波形を受け取ると、その計算波形を、ＭＩＤＩフレームの全体的な波形に関連する時間の適切なインスタンスに追加する。したがって、総和バッファは複数の処理要素の出力を組み合わせる。このようにして、総和バッファは、完全なＭＩＤＩフレームの波形の全体的なデジタル表現を累算記憶する。総和バッファは、本質的に、所与のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを作成するために、処理要素の様々な要素からの様々な生成されたボイスに関連する時間の様々なインスタンスを総和する。
【００２０】
図１は、例示的なオーディオ装置４を示すブロック図である。オーディオ装置４は、ＭＩＤＩファイル、例えば、少なくとも１つのＭＩＤＩトラックを含むファイルを処理することが可能な任意の装置を備えることができる。オーディオ装置４の例としては、無線電話機などの無線通信装置、ネットワーク電話、デジタルミュージックプレーヤ、ミュージックシンセサイザ、無線モバイル装置、直接双方向通信装置（ウォーキートーキーと呼ばれることがある）、パーソナルコンピュータ、デスクトップまたはラップトップコンピュータ、ワークステーション、衛星ラジオ装置、相互通信方式装置、ラジオ放送受信機、携帯ゲーム機、装置に取り付けられた回路基板、キオスク装置、テレビゲームコンソール、児童用の様々なコンピュータ化された玩具、自動車や船舶や航空機で使用されるオンボードコンピュータ、あるいは多種多様な他の装置がある。
【００２１】
図１に示される様々な構成要素は、本開示の諸態様を説明するために与えるものである。ただし、実装形態によっては、他の構成要素が存在することがあり、図示の構成要素のいくつかが含まれないことがある。例えば、オーディオ装置４が無線電話機である場合、オーディオファイルの無線通信を可能にするために、アンテナ、送信機、受信機およびモデム（変調復調器）を含めることができる。
【００２２】
図１の例に示すように、オーディオ装置４は、ＭＩＤＩファイルを記憶するためのオーディオ記憶ユニット６を含む。ここでも、ＭＩＤＩファイルは、概して、ＭＩＤＩフォーマットで符号化された少なくとも１つのトラックを含むどのようなオーディオファイルをも指す。オーディオ記憶ユニット６は任意の揮発性または不揮発性のメモリあるいは記憶装置を備えることができる。本開示の目的のために、オーディオ記憶ユニット６は、ＭＩＤＩファイルをプロセッサ８に転送する記憶ユニットとみなすことができ、すなわち、プロセッサ８は、処理すべきＭＩＤＩファイルを処理するために、オーディオ記憶ユニット６からＭＩＤＩファイルを取り出す。もちろん、オーディオ記憶ユニット６は、デジタルミュージックプレーヤに関連する記憶ユニット、または別の装置からの情報転送に関連する一時記憶ユニットでもよい。オーディオ記憶ユニット６は、データバスまたは他の接続を介してプロセッサ８に結合される別体の揮発性メモリチップまたは不揮発性記憶装置でもよい。オーディオ記憶ユニット６からの情報の転送を可能にするために、メモリコントローラまたは記憶装置コントローラ（図示せず）を含めることができる。
【００２３】
本開示によれば、装置４は、ＭＩＤＩ処理タスクをソフトウェア、ハードウェアおよびファームウェア間に振り分けるアーキテクチャを実現する。具体的には、装置４は、プロセッサ８、ＤＳＰ１２およびオーディオハードウェアユニット１４を含む。これらの構成要素の各々は、例えば、直接にまたはバスを介してメモリユニット１０に結合できる。プロセッサ８は、ＭＩＤＩファイルを解析し、ＭＩＤＩファイルに関連付けられたＭＩＤＩイベントをスケジュールするためのソフトウェアを実行する汎用プロセッサを備えることができる。スケジュールされたイベントは、時間同期方式でＤＳＰ１２にディスパッチされ、それによってＭＩＤＩファイル中のタイミングパラメータによって指定されたように、同期方式でＤＳＰ１２によって処理することができる。ＤＳＰ１２は、ＭＩＤＩ合成パラメータを生成するために、汎用プロセッサ８によって作成された時間同期スケジュールに従ってＭＩＤＩイベントを処理する。ＤＳＰ１２はまた、オーディオハードウェアユニット１４によるＭＩＤＩ合成パラメータの後続処理をスケジュールすることもできる。オーディオハードウェアユニット１４は合成パラメータに基づいてオーディオサンプルを生成する。代替実施形態では、本明細書で説明する機能は、本明細書に記載の技法を実施するように構成されたソフトウェアまたは回路など、別の形で実現できる。
【００２４】
プロセッサ８は、多種多様な汎用シングルチップまたはマルチチップマイクロプロセッサのいずれかを備えることができる。プロセッサ８は、ＣＩＳＣ（複合命令セットコンピュータ）設計またはＲＩＳＣ（縮小命令セットコンピュータ）設計を実装することができる。概して、プロセッサ８は、ソフトウェアを実行する中央処理装置（ＣＰＵ）を備える。例としては、インテル社、アップルコンピュータ・インコーポレイテッド、サンマイクロシステムズ・インコーポレイテッド、アドバンストマイクロデバイセズ（ＡＭＤ）インコーポレイテッドなどの企業の１６ビット、３２ビットまたは６４ビットマイクロプロセッサがある。他の例としては、インターナショナルビジネスマシーンズ（ＩＢＭ）社、レッドハット・インコーポレイテッドなどの企業のＵｎｉｘ（登録商標）またはＬｉｎｕｘベースのマイクロプロセッサがある。汎用プロセッサは、ＡＲＭ社から市販されているＡＲＭ９を備えることができ、ＤＳＰは、クゥアルコム・インコーポレイテッドによって開発されたＱＤＳＰ４  ＤＳＰを備えることができる。
【００２５】
プロセッサ８は第１のフレーム（フレームＮ）用のＭＩＤＩファイルを処理（service）することができ、第１のフレーム（フレームＮ）がＤＳＰ１２によって処理されるとき、同時に第２のフレーム（フレームＮ＋１）をプロセッサ８によって処理することができる。第１のフレーム（フレームＮ）がオーディオハードウェア１４によって処理されるとき、同時に第２のフレーム（フレームＮ＋１）がＤＳＰ１２によって処理され、その間に第３のフレーム（フレームＮ＋２）がプロセッサ８によって処理される。このようにして、ＭＩＤＩファイル処理は、同時に処理できるパイプライン化されたステージに分けられ、これによって効率を改善し、場合によっては所与のステージに必要とされる計算（computational）リソースを低減することができる。ＤＳＰ１２は、例えば、プロセッサ８またはＭＩＤＩハードウェア１４を用いずに完全なＭＩＤＩアルゴリズムを実行する従来のＤＳＰと比較して簡略化することができる。
【００２６】
場合によっては、ＭＩＤＩハードウェア１４によって生成されたオーディオサンプルは、例えば割込み駆動型技法によってＤＳＰ１２に戻される。この場合、ＤＳＰはオーディオサンプルに対して後処理技法を実行することもできる。ＤＡＣ１６は、デジタルであるオーディオサンプルを、アナログ信号を使用してユーザへのオーディオサウンドの出力用のスピーカ１９Ａおよび１９Ｂを駆動するために、駆動回路１８に使用されることができるアナログ信号に変換する。
【００２７】
オーディオフレームごとに、プロセッサ８は、１つまたは複数のＭＩＤＩファイルを読み込み、このＭＩＤＩファイルからＭＩＤＩ命令を抽出することができる。これらのＭＩＤＩ命令に基づいて、プロセッサ８は、ＤＳＰ１２による処理用のＭＩＤＩイベントをスケジュールし、このスケジューリングに従ってＤＳＰ１２にＭＩＤＩイベントをディスパッチする。具体的には、プロセッサ８によるこのスケジューリングは、ＭＩＤＩファイル中で指定されたタイミングパラメータに基づいて識別できるＭＩＤＩイベントに関連するタイミングの同期を含むことができる。ＭＩＤＩファイル中のＭＩＤＩ命令は特定のＭＩＤＩボイスの開始または停止を指示することができる。他のＭＩＤＩ命令は、アフタータッチエフェクト（aftertouch effects）、ブレスコントロールエフェクト（breath control effects）、プログラム変更、ピッチベンドエフェクト（pitch bend effects）、パンレフト（pan left）またはパンライトなどの制御メッセージ、サスティンペダルエフェクト（sustain pedal effects）、メインボリューム制御、タイミングパラメータなどのシステムメッセージ、ライティングエフェクトキュー（lighting effect cues）などのＭＩＤＩ制御メッセージ、および／または他のサウンドアフェクトに関連することができる。ＭＩＤＩイベントをスケジュールした後、プロセッサ８は、ＤＳＰ１２がイベントを処理することができるように、このスケジューリングをメモリ１０またはＤＳＰ１２に提供することができる。代替として、プロセッサ８は、時間同期方式でＭＩＤＩイベントをＤＳＰ１２にディスパッチすることによって、このスケジューリングを達成することができる。
【００２８】
メモリ１０は、プロセッサ８、ＤＳＰ１２、およびＭＩＤＩハードウェア１４が、これらの種々の構成要素に任せられた様々なタスクを実行するために必要などのような情報にもアクセスできるように構成できる。場合によっては、メモリ１０におけるＭＩＤＩ情報の記憶配置は、種々の構成要素８、１２、および１４から効率的にアクセスできるように構成できる。
【００２９】
ＤＳＰ１２は、スケジュールされたＭＩＤＩイベントをプロセッサ８（またはメモリ１０）から受け取ると、メモリ１０に戻すことができるＭＩＤＩ合成パラメータを生成するためにＭＩＤＩイベントを処理することができる。ここでも、これらのＭＩＤＩイベントがＤＳＰによって処理されるタイミングはプロセッサ８によってスケジュールされ、これにより、ＤＳＰ１２がそのようなスケジュールタスクを実行する必要がなくなるので、効率性が生じる。したがって、プロセッサ８が次のオーディオフレーム用のＭＩＤＩイベントをスケジュールしている間、ＤＳＰ１２は第１のオーディオフレーム用のＭＩＤＩイベントを処理することができる。オーディオフレームは、いくつかのオーディオサンプルを含み得る時間のブロック、例えば１０ミリ秒（ｍｓ）の間隔を備えることができる。デジタル出力は、例えば、アナログオーディオ信号に変換可能なフレーム当たり４８０個のサンプルを生じることがある。多くのイベントは、多くのミュージカルノート又はサウンドがＭＩＤＩフォーマットに従って時間の１つのインスタンス（one instance of time）中に含まれるように時間の１つのインスタンスに対応する。もちろん、実装形態によって、任意のオーディオフレームに与えられる時間量、ならびにフレーム当たりのサンプル数は異なることがある。
【００３０】
ＤＳＰ１２がＭＩＤＩ合成パラメータを生成した後、オーディオハードウェアユニット１４はこの合成パラメータに基づいてオーディオサンプルを生成する。ＤＳＰ１２は、オーディオハードウェアユニット１４によるＭＩＤＩ合成パラメータの処理をスケジュールすることができる。オーディオハードウェアユニット１４によって生成されるオーディオサンプルは、一定の間隔をおいてサンプリングされたアナログ信号のデジタル表現であるパルス符号変調（ＰＣＭ）サンプルを備えることができる。オーディオハードウェアユニット１４による例示的なオーディオ生成の追加の詳細については、以下で図２を参照しながら説明する。
【００３１】
場合によっては、オーディオサンプルに対して後処理を実行する必要があることがある。この場合、オーディオハードウェアユニット１４は、そのような後処理を実行するようにＤＳＰ１２に指示するために、割込みコマンドをＤＳＰ１２に送信することができる。この後処理は、フィルタリング、スケーリング、音量調節、または最終的にサウンド出力を向上することができる多種多様なオーディオ後処理を含むことができる。
【００３２】
後処理の後、ＤＳＰ１２は後処理済みのオーディオサンプルをデジタル−アナログ変換器（ＤＡＣ）１６に出力することができる。ＤＡＣ１６は、デジタルオーディオ信号をアナログ信号に変換し、このアナログ信号を駆動回路１８に出力する。駆動回路１８は、可聴サウンドをつくり出すため１つまたは複数のスピーカ１９Ａおよび１９Ｂを駆動するために、この信号を増幅することができる。
【００３３】
図２は、図１のオーディオ装置４のオーディオハードウェアユニット１４に対応する例示的なオーディオハードウェアユニット２０を示すブロック図である。本開示の教示に合致する他のＭＩＤＩハードウェア実装形態を定義することもできるので、図２に示す実装形態は例にすぎない。図２の例に示すように、オーディオハードウェアユニット２０は、データを送信および受信するためのバスインターフェース３０を含む。例えば、バスインターフェース３０は、ＡＭＢＡ高性能バス（ＡＨＢ）マスターインターフェース、ＡＨＢスレーブインターフェース、およびメモリバスインターフェースを含むことができる。ＡＭＢＡはadvanced microprocessor bus architectureの略である。代替として、バスインターフェース３０は、ＡＸＩバスインターフェース、または別のタイプのバスインターフェースを含むことができる。ＡＸＩはadvanced extensible interfaceの略である。
【００３４】
さらに、オーディオハードウェアユニット２０は調整モジュール３２を含むことができる。調整モジュール３２はオーディオハードウェアユニット２０内のデータフローを調整する。オーディオハードウェアユニット２０が、オーディオサンプルの合成を開始するためＤＳＰ１２（図１）から命令を受け取ると、調整モジュール３２は、ＤＳＰ１２（図１）によって生成されたオーディオフレームの合成パラメータを読み込む。これらの合成パラメータはオーディオフレームを再構成するために使用できる。ＭＩＤＩフォーマットの場合、合成パラメータは、所与のフレーム内の１つまたは複数のＭＩＤＩボイスの様々な音響特性を記述する。例えば、ＭＩＤＩ合成パラメータの組は、共鳴、残響、音量および／または１つまたは複数のボイスに影響を及ぼし得る他の特性のレベルを指定することができる。
【００３５】
調整モジュール３２の指示で、合成パラメータを直接、メモリユニット１０（図１）から、それぞれの処理要素３４Ａまたは３４Ｎに関連するボイスパラメータセット（ＶＰＳ）ＲＡＭ４６Ａまたは４６Ｎにロードすることができる。ＤＳＰ１２（図１）の指示で、プログラム命令がメモリ１０から、それぞれの処理要素３４Ａまたは３４Ｎに関連するプログラムＲＡＭユニット４４Ａまたは４４Ｎにロードされる。
【００３６】
プログラムＲＡＭユニット４４Ａまたは４４Ｎにロードされた命令は、ＶＰＳ  ＲＡＭユニット４６Ａまたは４６Ｎにおける合成パラメータのリスト中に示されたボイスのうちの１つを合成することを、関連する処理要素３４Ａまたは３４Ｎに指示する。任意の数の処理要素３４Ａ〜３４Ｎ（集合的に「処理要素３４」）があってもよく、各処理要素は、数値演算を実行することが可能な１つまたは複数のＡＬＵ、ならびにデータの読取りおよび書込み用の１つまたは複数のユニットを備えることができる。わかりやすいように、２つの処理要素３４Ａおよび３４Ｎしか示していないが、より多くの処理要素をハードウェアユニット２０内に含めることができる。処理要素３４は、互いに並列にボイスを合成することができる。具体的には、複数の様々な処理要素３４は、様々な合成パラメータを処理するために、並列に動作する。このようにして、オーディオハードウェアユニット２０内の複数の処理要素３４は、生成されるボイスの数を促進し、場合によっては増大させ、それによってオーディオサンプルの生成を改善することができる。
【００３７】
調整モジュール３２が処理要素３４の１つにボイスを合成するように指示すると、処理要素３４の各々は、合成パラメータによって規定された１つまたは複数の命令を実行することができる。ここでも、これらの命令はプログラムＲＡＭユニット４４Ａまたは４４Ｎ中にロードできる。プログラムＲＡＭユニット４４Ａまたは４４Ｎ中にロードされた命令は、処理要素３４の各々にボイス合成を実行させる。例えば、処理要素３４は、合成パラメータで指定された波形について波形フェッチユニット（ＷＦＵ）３６に要求を送ることができる。処理要素３４の各々はＷＦＵ３６を使用することができる。処理要素３４の各々はＷＦＵ３６を使用することができる。２つ以上の処理要素３４がＷＦＵ３６の使用を同時に要求した場合、ＷＦＵ３６は、調停方式を使用して競合を解決する。
【００３８】
処理要素３４の１つからの要求に応答して、ＷＦＵ３６は１つまたは複数の波形サンプルを要求元の処理要素に返す。しかしながら、波は、例えば最大で波の１周期だけサンプル内で位相シフトできるので、ＷＦＵ３６は、補間を使用して位相シフトを補正するために２つのサンプルを返すことができる。さらに、ステレオ信号は２つのステレオチャネル用に２つの別々の波を含むことができるので、ＷＦＵ３６は、異なるチャネルに対して別々のサンプルを返すことができ、例えばステレオ出力用に最大で４つの別々のサンプルを生じる。
【００３９】
ＷＦＵ３６が処理要素３４の１つにオーディオサンプルを返した後、それぞれの処理要素は、オーディオ合成パラメータに基づいて追加のプログラム命令を実行することができる。具体的には、命令は、処理要素３４の１つに、オーディオハードウェアユニット２０中の低周波発振器（ＬＦＯ）３８に非対称三角波を要求させる。ＷＦＵ３６によって返された波形にＬＦＯ３８によって返された三角波を乗算することによって、それぞれの処理要素は、所望のオーディオアフェクトを達成するためにその波形の様々な音響特性を操作することができる。例えば、波形に三角波を乗算すると、より所望の楽器らしく聞こえる波形が生じることがある。
【００４０】
合成パラメータに基づいて実行される他の命令は、処理要素３４の各々に、波形を特定の回数ループさせたり、波形の振幅を調整させたり、残響を追加させたり、ビブラート効果を追加させたり、あるいは他の効果を生じさせたりすることができる。このようにして、処理要素３４は、１つのＭＩＤＩフレームの間持続するボイスの波形を計算することができる。最終的に、それぞれの処理要素は終了命令に遭遇する。処理要素３４の１つが終了命令に遭遇すると、その処理要素は調整モジュール３２にボイス合成の終了を信号で知らせる。計算されたボイス波形は、プログラム命令の実行中の別の記憶命令の指示で総和バッファ４０に供給できる。これにより、総和バッファ４０に、その計算されたボイス波形を記憶する。
【００４１】
総和バッファ４０は、処理要素３４の１つから計算波形を受け取ると、その計算波形を、ＭＩＤＩフレームの全体的な波形に関連する時間の適切なインスタンスに追加する。したがって、総和バッファ４０は複数の処理要素３４の出力を組み合わせる。例えば、総和バッファ４０は、最初に平坦波（すなわち、すべてのデジタルサンプルが０である波）を記憶することができる。総和バッファ４０は、処理要素３４の１つから計算波形などのオーディオ情報を受け取ると、その計算波形の各デジタルサンプルを、総和バッファ４０中に記憶された波形のそれぞれのサンプルに総和することができる。このようにして、総和バッファ４０は、完全なオーディオフレームの波形の全体的なデジタル表現を累算記憶する。
【００４２】
総和バッファ４０は、本質的に、処理要素３４の様々な要素からの様々なオーディオ情報を総和する。この様々なオーディオ情報は、様々な生成されたボイスに関連する時間の様々なインスタンスを示す。このようにして、総和バッファ４０は、所与のオーディオフレーム内の全体的なオーディオ編集物を表すオーディオサンプルを作成する。
【００４３】
最終的に、調整モジュール３２は、処理要素３４が、現在のＭＩＤＩフレームに必要とされるすべてのボイスの合成を完了し、それらのボイスを総和バッファ４０に供給したことを判断する。この時点で、総和バッファ４０は、現在のＭＩＤＩフレームの完成波形を示すデジタルサンプルを含んでいる。調整モジュール３２は、この判断を行うと、ＤＳＰ１２（図１）に割込みを送信する。この割込みに応答して、ＤＳＰ１２は、総和バッファ４０の内容を受け取るために、直接メモリ交換（ＤＭＥ）を介して総和バッファ４０中の制御ユニット（図示せず）に要求を送信することができる。代替として、ＤＳＰ１０は、ＤＭＥを実行するようにあらかじめプログラムしておくこともできる。ＤＭＥは、ＤＳＰ１２が他のことをするのにビジーである間、バックグラウンド処理における１つのメモリバンクから別のメモリバックへのデータの転送を可能にするメモリ転送手続きを指す。ＤＳＰ１２への総和バッファ４０の内容のＤＭＥの後、ＤＳＰ１２は次いで、デジタルオーディオサンプルをアナログ領域への変換のためにＤＡＣ１６に供給する前に、デジタルオーディオサンプルに対して後処理を実行することができる。重要なことには、フレームＮに関してオーディオハードウェアユニット２０によって行われる処理は、フレームＮ＋１に関してＤＳＰ１２（図１）による合成パラメータの生成およびフレームＮ＋２に関するプロセッサ８（図１）によるスケジューリング動作と同時に行われる。
【００４４】
さらに、本明細書で説明するように、総和バッファ４０は、複数のメモリブロックに論理的に区分されたメモリを含み、ブロックごとにメモリからＤＳＰ１２への記憶およびＤＭＥ転送を可能にすることによって効率的に動作する。具体的には、総和バッファ４０は、フレームＮに関して特定のメモリブロックの内容を転送し終わると、そのメモリブロックをアンロックしてクリアし、そのメモリブロックに、他のメモリブロックがフレームＮに関するＤＭＥ転送をまだ行っていたとしても、フレームＮ＋１に関するデータを記憶する。
【００４５】
図２にはキャッシュメモリ４８、ＷＦＵ／ＬＦＯメモリ３９およびリンクリストメモリ４２も示されている。キャッシュメモリ４８は、迅速かつ効率的にベース波形をフェッチするためにＷＦＵ３６によって使用されることができる。ＷＦＵ／ＬＦＯメモリ３９は、ボイスパラメータセットのボイスパラメータを記憶するために調整モジュール３２によって使用されることができる。このように、ＷＦＵ／ＬＦＯメモリ３９は、波形フェッチユニット３６およびＬＦＯ３８の動作に専用のメモリとみなすことができるリンクリストメモリ４２は、ＤＳＰ１２によって生成されたボイスインジケータのリストを記憶するために使用されるメモリを備えることができる。ボイスインジケータは、メモリ１０中に記憶された１つまたは複数の合成パラメータに対するポインタを備えることができる。リスト中の各ボイスインジケータは、それぞれのＭＩＤＩボイスのためのボイスパラメータセットを記憶するメモリ位置を指定することができる。図２に示す様々なメモリおよび構成は例にすぎない。本明細書に記載の技法は様々な他のメモリ構成を用いて実施できる。
【００４６】
図３は、本開示の教示に合致する例示的な技法を示す流れ図である。図３について、図１の装置４および図２のハードウェアユニット２０を参照しながら説明する。ただし、他の装置でも図３の技法を実施することができる。図３に示すように、メモリ１０はオーディオフレーム用のオーディオ合成パラメータを記憶する（５０）。オーディオ合成パラメータは、例えば、オーディオフレームの１つまたは複数のオーディオファイル中に指定されたスケジュールされたイベントを処理するときにＤＳＰ１２によって生成さけることができる。
【００４７】
次いで、複数の様々な処理要素３４は様々な合成パラメータを同時に処理する（５２Ａ、５２Ｂ、および５２Ｎ）。具体的には、第１の合成パラメータは第１の処理要素３４Ａにおいて処理され（５２Ａ）、第２の合成パラメータは第２の処理要素３４Ｂにおいて処理され（５２Ｂ）、第Ｎの合成パラメータは第Ｎの処理要素３４Ｎにおいて処理される（５２Ｎ）。合成パラメータは、ピッチ、共鳴、残響、音量、および／または１つまたは複数のボイスに影響を及ぼし得る他の特性を規定するパラメータを含むことができる。
【００４８】
任意の数の処理要素３４を使用することができる。処理要素３４の１つがそれぞれの処理を終えたときはいつでも、その処理要素に関連する生成されたオーディオ情報が、オーディオサンプルを生成するために総和バッファ４０に累算される（５４）。オーディオフレームに対してさらなる合成パラメータが存在する場合（５６のはいの分岐）、それぞれの処理要素３４は次の合成パラメータを処理する（５２Ａ、５２Ｂ、または５２Ｎ）。この処理は、オーディオフレームに対する合成パラメータのすべてが処理されるまで継続される（５６のいいえの分岐）。この時点で、総和バッファ４０はオーディオフレーム用のオーディオサンプルを出力する（５８）。例えば、調整モジュール３２は、オーディオサンプルが後処理のためにＤＳＰ１２に送信されるように、ＤＳＰ１２（図１）に割込みコマンドを送信することができる。
【００４９】
図４は、本開示による総和バッファ４０の例示的なアーキテクチャを示すブロック図である。総当たり（Round-robin）アービタ６０は、波形サンプルを総和するために処理要素３４Ａ〜３４Ｎから要求を受け取り、それらの要求を総当たり方式で調停する。アキュムレータ及び飽和論理（saturation logic）ユニット６２は、処理要素３４から受け取った波形サンプルを累算する。例えば、アキュムレータ及び飽和論理ユニット６２は、波形サンプルを波形総和に累算するための２の補数（２Ｃ）アキュムレータを含み、所与のビット数、例えば２４ビットで飽和する。アキュムレータ及び飽和論理ユニット６２は、（左右の）２つのオーディオチャネルについて独立したアキュムレータを有し、各チャネルを別々に総和することができる。制御ユニット６６は、メモリモジュール６４内のすべてのオーディオ・ボイス（例えばＭＩＤＩボイス）の累算を表す累算された波形サンプル（本明細書では「波形総和（waveform sums）」と呼ぶ）を記憶する。例えば、メモリモジュール６４は、１つのオーディオフレームに対応する波形総和を記憶することができる。いくつかの例では、波形総和はパルス符号変調（ＰＣＭ）形式でよい。
【００５０】
処理要素３４は、波形サンプルを総和するために総和バッファ４０に要求を送信する。この要求は、総和すべき波形サンプル（例えば、ステレオフォーマットでは、これは左サンプルおよび右サンプルを含む）と、サンプルが累算されるべき位置のアドレス、すなわち、総和された波形サンプルが記憶されるべきメモリ内のターゲットメモリブロックのアドレスを示す波形サンプルのサンプル番号と、を含むことができる。この状況では、ターゲットメモリは、波形サンプルを総和する期間中に取っておかれるどのメモリ位置でもよいことを当業者は認識されよう。各要求はまた、総和後にアキュムレータの結果を飽和させるべきかどうか、および結果を累算即ち上書きすべきかどうかを指定する２つの追加の信号を含むことができる。処理要素３４の各々は波形サンプルとともにターゲットメモリブロック位置のアドレスを送信するので、処理要素３４はそれらの実行を同期させる必要がなく、処理要素３４の各々は、様々なアドレスに対応する波形を送信することができる。総和バッファ４０が処理要素３４の１つからの要求を処理した後、総当たりアービタ６０は、その処理を行なった処理要素を最低優先順位レベルに移動する。それにより、総当たりアービタ６０は、すべての処理要素３４が総和バッファ４０に等しくアクセスできることを保証する。
【００５１】
制御ユニット６６は、メモリモジュール６４の内容の直接メモリ交換（ＤＭＥ）転送を開始するためにＤＳＰ１２から要求を受け取る。応答して、制御ユニット６６はメモリモジュール６４をロックするが、これにはメモリモジュール６４のロックされた部分に対する要求をブロックする効果がある。メモリモジュール６４は、総和バッファ４０によって独立して、すなわちブロックごとにロックおよびアンロックできる複数のメモリブロックに論理的に区画されることができる。メモリモジュール６４内の所与のメモリブロックについてＤＭＥ転送が完了すると、制御ユニット６６は、内容がＤＳＰ１２に転送されたメモリブロックをアンロックする。メモリモジュール６４のすべてのメモリブロックのＤＭＥ転送が完了するのを待たずに、制御ユニット６６は、アンロックされた（１つまたは複数の）メモリブロックの内容のクリアを開始し、次のフレームについての波形総和がクリアされたメモリブロックに書き込まれることを可能にする。
【００５２】
これらの技法の結果として、先行フレームについて波形総和のＤＭＥ転送がまだ進行している間でも、総和バッファ４０は、処理要素３４から波形サンプルを受け取り、得られた波形総和を所与のフレーム用のメモリモジュール６４に記憶することができる。このようにして、総和バッファ４０は、オーディオ処理要素３４からの波形サンプルを効率的に総和し、各フレームの得られた波形総和をＤＳＰ１２に供給するように設計されている。ＤＳＰ１２が総和バッファ４０からデータを読み込んでいる間、処理要素３４がアイドル状態ではなく、また、処理要素３４がデータを総和バッファ４０に供給している間、ＤＳＰ１２がアイドル状態ではないので、本明細書に記載の技法は、オーディオ装置４（図１）のスループットを改善することができる。総和バッファ４０は、ステレオフォーマットで波形総和をＤＳＰ１２に供給することができる。
【００５３】
アキュムレータ及び飽和論理ユニット６２は、要求と一緒に処理要素３４から受け取った信号に応答して様々なモードで動作することができる。これらの信号は飽和および累算をイネーブルおよびディセーブルにすることができる。通常モードでは、処理要素３４から受け取った信号は、飽和をディセーブルにするが、累算をイネーブルにする。このモードでは、総和バッファ４０は、メモリモジュール６４から読取りを行い、処理要素３４の１つによって供給された値を累算し、それを飽和なしでメモリに戻して記憶する。飽和および累算モードでは、処理要素３４から受け取った信号は累算と飽和の両方をイネーブルにし、総和バッファ４０は波形総和を累算し飽和するように動作する。非飽和ライトスルーモードでは、処理要素３４から受け取った信号は累算と飽和の両方をディセーブルにする。総和バッファ４０はメモリモジュール６４の読取りをスキップし、処理要素３４から受け取った波形サンプルの左および右チャネルビットがメモリモジュール６４に書き込まれる。オーバーフローを生じるオペランドは、得られた総和をロールオーバ（roll over）させる。飽和ライトスルーモードでは、処理要素３４から受け取った信号は、飽和を可能にするが、累算を不能にする。総和バッファ４０はメモリモジュール６４の読取りをスキップし、処理要素３４から受け取った波形サンプルの左および右チャネルビットがメモリモジュール６４に書き込まれる。ビット３１：２３（右チャネルでは６３：５５）がすべて１ではないかあるいはすべて０ではない場合、オーバーフローが生じていると考えられる。オーバーフローの場合、サンプルはビット３１（右チャネルではビット６３）に基づいて正または負に飽和される。
【００５４】
図５は、総和バッファ４０によって整備される例示的なメモリモジュール６４を示すブロック図である。図５の例では、メモリモジュール６４は複数のメモリブロック７０Ａ〜７０Ｎ（集合的に「メモリブロック７０」）に論理的に区画される。各メモリブロック７０は１つまたは複数のワード７２を含むことができ、ワード７２の各々は異なる波形総和に対応する。図示のように、メモリブロック７０およびメモリブロック７０内のワード７２は、メモリモジュール６４の最上部から最下部までの時間の増加するインスタンス（increasing instances of time）に対応する。メモリブロック７０は、所与のメモリブロック７０がクリアまたは書き込まれることを防止するために独立してロック可能である。一例では、メモリモジュール６４は１６個のメモリブロックを含み、各メモリブロックは３２個のワード７２から成り、各ワード７２は４８ビットのサイズを有する。
【００５５】
例示的な一実装形態では、メモリモジュール６４は１つのオーディオフレームに対応する波形総和を記憶し、１つのオーディオフレームは１０ミリ秒のオーディオデータとして定義される。４８ｋＨｚのサンプリング周波数では、フレーム当たりの波形総和の数はフレーム当たり４８０個の波形総和になる。総和バッファ４０は、１周期当たりメモリモジュール６４からデータの１波形総和分をクリアすることが可能なように設計できる。したがって、４８ｋＨｚのサンプリング周波数では、総和バッファ４０は、メモリモジュール６４の全体をクリアするために最低４８０周期を取り得る。
【００５６】
一例では、総和バッファ４０は、ビット５５：３２が２４ビットの２の補数（２Ｃ）右サンプルであり、ビット２３：０が２４ビットの２Ｃ左サンプルである６４ビットとしてオーディオ処理要素３４から波形サンプルを受け取る。アキュムレータ及び飽和論理ユニット６２は、受け取った波形サンプルを、波形サンプルとともに受け取ったサンプル番号に基づいて、ＭＩＤＩフレームの全体的な波形に関連する時間の適切なインスタンスに総和する。波形サンプル（すなわち、２Ｃ右サンプルおよび２Ｃ左サンプル）が累算されるべき位置のアドレスを示すサンプル番号。例えば、総和バッファ４０は、最初にメモリモジュール６４内にフラットな波（すなわち、すべてのデジタルサンプルが０である波）を記憶することができる。総和バッファ４０は、処理要素３４の１つから波形サンプルを受け取ると、その波形サンプルの各デジタルサンプルを、メモリモジュール６４中に記憶された波形のそれぞれのサンプルの総和に加算することができる。したがって、アキュムレータ及び飽和論理ユニット６２は、時間の所与のインスタンス（given instance of time）に対応する（したがってメモリモジュール６４内の所与の位置に対応する）処理要素３４の各々から受け取ったすべての波形サンプルを合計し、その総和をその位置に記憶する。このようにして、総和バッファ４０は、完全なＭＩＤＩフレームの波形の全体的なデジタル表現を累算記憶する。総和バッファ４０は、各ワード７２が２Ｃ右チャネル総和および２Ｃ左チャネル総和を含む４８ビットワード７２としてメモリモジュール６４内に波形総和を記憶することができる。例えば、波形総和は、２Ｃ右チャネル総和であるビット４７：２４と２Ｃ左チャネル総和であるビット２３：０とを持ってメモリモジュール６４内に記憶されることができる。
【００５７】
図６は、本開示の教示に合致する例示的な技法を示す流れ図である。総和バッファ４０の制御ユニット６６は、メモリモジュール６４の内容の直接メモリ交換（ＤＭＥ）転送を開始するためにＤＳＰ１２から要求を受け取る（７４）。応答して、制御ユニット６６はメモリモジュール６４をロックする（７６）が、これにはメモリモジュール６４のロックされた部分に対するどのような要求も妨げる効果がある。メモリモジュール６４内の所与のメモリブロックについてＤＭＥ転送が完了すると（８０）、制御ユニット６６は、内容がＤＳＰ１２に転送されたメモリブロックをアンロックする（８２）。メモリモジュール６４のすべてのメモリブロックのＤＭＥ転送が完了するのを待たずに、総和バッファ４０は、アンロックされた（１つまたは複数の）メモリブロックの内容をクリアし始める（８４）。制御ユニット６６は、調整モジュール３２（図２）による要求があればクリア動作を開始することができる。まだロックされているメモリのブロックに達すると、制御ユニット６６はクリア動作をブロックする。
【００５８】
調整モジュール３２がメモリモジュール６４のアンロックされたブロックをクリアするように総和バッファ４０に要求すると、調整モジュール３２は、次のオーディオフレーム用の波形サンプルを総和するために総和バッファ４０に要求を送信するために、オーディオ処理要素３４をイネーブルにする。調整モジュール３２は、総和バッファ４０が実際にクリア動作を実行する前に処理要素３４をイネーブルにすることができる。総和バッファ４０は処理要素３４から波形サンプルを受け取る（８６）。総和バッファ４０は、総当たりアービタ６０によって処理要素３４Ａ〜３４Ｎの各々に同様のまたは同一のインターフェースを提供することができる。総当たりアービタ６０は、処理要素３４からの要求を総当たり方式で調停し、勝った要求を順に処理する（８８）。総和バッファ４０が現在の要求を処理し終えるまで、総当たりアービタ６０は、調停に負けた処理要素３４からの要求をブロックし（９０）、その時点で総当たりアービタ６０が調停を再開する。
【００５９】
処理要素３４の１つが調停に勝つと（８８のはいの分岐）、制御ユニット６６は、波形サンプルがロックされたメモリブロックに含まれるかアンロックされたメモリブロックに含まれるかを判断するために、処理要素３４による要求とともに含められた波形サンプルのアドレスをチェックする（９２）。例えば、制御ユニット６６は、波形サンプルのアドレスを、ロックされたメモリブロックが残っているメモリモジュール６４内の場所の開始アドレスを示すロック「サーモメータ（thermometer）」値と比較することができる。波形サンプルアドレスがロックされたメモリブロック内にあることをその比較が示す場合、制御ユニット６６は要求をブロックする（９４）。
【００６０】
アドレスがアンロックされたメモリブロック内にある場合（９２のはいの分岐）、制御ユニット６６は、累算機能がイネーブルにされたとき、メモリモジュール６４に要求を転送する。累算機能がディセーブルなときには、制御ユニット６６は、メモリモジュール６４の読取りをスキップし、受け取った波形サンプルを単にメモリモジュール６４に書き込むだけである。上述のように、制御ユニット６６は、処理要素要求とともに受け取った信号によって指示されたモードに依存するこの時点で様々な動作をすることができる。制御ユニット６６は、現在の要求が処理されている間、メモリモジュール６４に転送される他の要求をブロックする。（左および右チャネル総和が同時に取り出される）現在の２Ｃチャネル総和がメモリモジュール６４から利用可能であるとき、アキュムレータ及び飽和論理ユニット６２は、２Ｃ総和を使用している処理要素から受け取ったその対応する２Ｃチャネルサンプルとの各総和を累算し、２４ビットで飽和することができる（９６）。次いで、総当たりアービタ６０は処理要素３４間の調停を再開する。制御ユニット６６は、（書き戻し機能停止（stall）がないと仮定して）累算された波形総和をメモリモジュール６４に書き込む（９８）。総和バッファ４０が、現在書込み中の同じアドレスに対して新規の要求を受け取る場合には、メモリモジュール６４は、データ変造（corruption）を防止するために書き戻し動作に優先権を与える。クリア動作が現在進行中に書き戻しが生じる場合には、メモリモジュール６４は、（例えば固定優先権アービタを使用して）書き戻し動作に優先権を与える。
【００６１】
すべてのメモリブロックが読取り中の先行フレームについてＤＭＥによってＤＳＰ１２に転送され（１００のいいえの分岐）且つ書込み中の現在フレームについてメモリモジュール６４にそれ以上書き込むべきサンプル総和が残っていない（１０２のいいえの分岐）場合には、調整モジュール３２は、現在フレームについてメモリモジュール６４の内容の新規ＤＭＥ転送を開始する割込みをＤＳＰ１２に送信する。ＤＭＥは、ＤＳＰ１２がアイドル状態のときに発生することがあり、その結果、ＤＭＥ機能停止により、次のフレームの利用可能な処理時間が減少することになる。
【００６２】
これらの技法の結果として、波形総和のＤＭＥ転送が先行フレームについてまだ進行している間でも、総和バッファ４０は、処理要素３４から波形サンプルを受け取り、所与のフレーム用のメモリモジュール６４に得られた波形総和を記憶することができる。このようにして、総和バッファ４０は、オーディオ処理要素３４からの波形サンプルを効率的に総和し、ＤＳＰ１２に各フレームの得られた波形総和を与えるように設計されている。
【００６３】
様々な例について説明した。本明細書に記載の技法の１つまたは複数の態様は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装できる。モジュールまたは構成要素として説明したいかなる特徴も、集積論理装置中に一緒に実装でき、または個別であるが相互運用可能な論理装置として別々に実装できる。ソフトウェアで実装した場合、これらの技術の１つまたは複数の態様は、実行されると、上記の方法の１つまたは複数を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現できる。コンピュータ可読データ記憶媒体は、パッケージ材（material）を含むことがあるコンピュータプログラム製品（product）の一部をなすことができる。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気または光データ記憶媒体などを含むことができる。本技法は、追加または代替として、命令またはデータ構造の形態で符号を搬送または伝達し、コンピュータによってアクセス、読込み、および／または実行できる、コンピュータ可読通信媒体によって、少なくとも部分的に実現できる。
【００６４】
命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、または他の等価な集積または個別論理回路など、１つまたは複数のプロセッサによって実行できる。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載の技法の実装に好適な他の構造のいずれかを指すことができる。さらに、いくつかの態様では、本明細書に記載の機能を、本明細書に記載の技法を実施するように構成または適合された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供することができる。
【００６５】
ハードウェアで実装した場合、本開示の１つまたは複数の態様は、本明細書に記載の技法の１つまたは複数を実施するように構成または適合された、集積回路、チップセット、ＡＳＩＣ、ＦＰＧＡ、論理回路、またはそれらの様々な組合せなどの回路を対象とすることができる。回路は、本明細書に記載のように、プロセッサと１つまたは複数のハードウェアユニットの両方を集積回路またはチップセット中に含むことができる。
【００６６】
また、回路は上記の機能の一部または全部を実装できることを、当業者は認識するであろうことに留意されたい。すべての機能を実装する１つの回路があってもよく、あるいはそれらの機能を実装する回路の複数のセクションがあってもよい。現在のモバイルプラットホーム技術を用いれば、集積回路は、少なくとも１つのＤＳＰと、１つまたは複数のＤＳＰの制御および／または１つまたは複数のＤＳＰへの通信を行うための少なくとも１つの高度縮小命令セットコンピュータ（ＲＩＳＣ）マシン（ＡＲＭ）プロセッサと、を備えることができる。さらに、回路は、いくつかのセクション中に設計または実装でき、場合によっては、セクションは、本開示に記載の異なる機能を実施するために再使用できる。
【００６７】
様々な態様および例について説明した。ただし、以下の特許請求の範囲を逸脱することなく本開示の構成または技法に改変を加えることが可能である。例えば、他のタイプの装置でも本明細書に記載のオーディオ処理技法を実装することができる。また、図２に示した例示的なハードウェアユニット２０はボイス合成にウェーブテーブルベースの手法を使用するが、周波数変調合成手法を含む他の手法も使用できる。これらおよび他の実施形態は以下の特許請求の範囲内である。
【図１】
2010522361.tif 000003
【図２】
2010522361.tif 000004
【図３】
2010522361.tif 000005
【図４】
2010522361.tif 000006
【図５】
2010522361.tif 000007
【図６】
2010522361.tif 000008
【国際調査報告】
2010522361.tif 000009
2010522361.tif 000010
2010522361.tif 000011