(57)【要約】本開示は、１つまたは複数のオーディオファイル、例えば電子楽器デジタルインタフェース（ＭＩＤＩ）ファイル等、から生成された様々なオーディオ合成パラメータ、をサービス提供するために同時に動作する複数のハードウェア処理エレメントのそれぞれのために波形サンプルを検索するように動作する、波形フェッチ装置を利用する技術を説明する。一例においては、方法は、オーディオ処理エレメントから波形サンプルについてのリクエストを受信することと、リクエストに含まれた位相インクリメントと、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算し、波形サンプル数を使用してローカルキャッシュから波形サンプルを検索し、リクエストしているオーディオ処理エレメントに対して検索された波形サンプルを送信することによって、リクエストをサービス提供することと、を備えている。
2010522360.tif 000002
【特許請求の範囲】
【請求項１】
オーディオ処理エレメントから波形サンプルについてのリクエストを受信することと、
前記リクエストをサービス提供することと、
を備えており、前記リクエストをサービス提供することは、
前記リクエストに含まれた位相インクリメントと、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、前記のリクエストされた波形サンプルについての波形サンプル数を計算することと、
前記波形サンプル数を使用して、ローカルキャッシュから前記波形サンプルを検索することと、
前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを送信することと、
を含んでいる、
方法。
【請求項２】
波形サンプル数を計算することは、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがループされた波形サンプルであるということを示すときに、第１の方法にしたがって前記波形サンプル数を計算することと、そして、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがノンループされた波形サンプルであるということを示すときに、第２の方法にしたがって前記のリクエストされた波形サンプルについての前記波形サンプル数を計算することと、を備えている、請求項１に記載の方法。
【請求項３】
現在キャッシュされた波形サンプルを識別しているタグと前記波形サンプル数との間の差異を決定することと、
前記タグと前記波形サンプル数との前記差異が０よりも大きく且つキャッシュラインごとのサンプルの数よりも少ないときに、外部メモリから前記ローカルキャッシュまでの前記波形サンプルをフェッチすることと、
をさらに備えている請求項１に記載の方法。
【請求項４】
前記の検索された波形サンプルを前記リクエストしているオーディオ処理エレメントに対して送信することは、前記オーディオ処理エレメントに関連づけられたインタフェースに対して前記の検索された波形サンプルを送信することを備えており、また、前記インタフェースは、前記リクエストしているオーディオ処理エレメントに対して前記波形サンプルを転送する、請求項１に記載の方法。
【請求項５】
波形サンプルについてのリクエストを受信することは、複数のオーディオ処理エレメントから複数のリクエストを受信することを備えており、
前記リクエストをサービス提供することは、
デフォルトプライオリティレベルが前記オーディオ処理エレメントのそれぞれに割り当てられるラウンドロビンアービトレーションと、
前記のリクエストされた波形サンプルはすでに前記ローカルキャッシュにあるかどうかの決定と、
に少なくとも基づいたアービトレーションにしたがった順序において前記リクエストをサービス提供することを備えている、
請求項１に記載の方法。
【請求項６】
前記リクエストをサービス提供することは、前記ラウンドロビンアービトレーションが前記のリクエストしているオーディオ処理エレメントが代わりにサービス提供されるべきであることを示すときに、前記複数のリクエストのうちの１つをサービス提供することを備えている、請求項５に記載の方法。
【請求項７】
前記アービトレーションは、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータがローカルにバッファされるかどうかによって、さらに決定される、請求項５に記載の方法。
【請求項８】
前記のリクエストされた波形に関連づけられた前記オーディオ合成パラメータがローカルにバッファされないとき、
前記リクエストをスキップすることと、
最も低いプライオリティレベルまで、前記リクエストを移動させることと、
をさらに備えている請求項７に記載の方法。
【請求項９】
前記アービトレーションは、リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるかによってさらに決定され、前記リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるときには、最も低いプライオリティレベルまで、前記リクエストを移動させること、をさらに備えている、請求項５に記載の方法。
【請求項１０】
前記波形サンプルを前記のリクエストしているオーディオ処理エレメントに対して送信する前に、前記波形サンプルを再フォーマット化すること、をさらに備えている請求項１に記載の方法。
【請求項１１】
前記波形サンプルを再フォーマット化することは、１６−ビットステレオフォーマットに前記波形サンプルを変換することを備えている、請求項１０に記載の方法。
【請求項１２】
波形サンプルについてのリクエストを受信することは、電子楽器デジタルインタフェース（ＭＩＤＩ）の波形サンプルについてのリクエストを受信することを備えており、また、前記オーディオ合成パラメータ制御ワードは、ＭＩＤＩ合成パラメータ制御ワードを備えている、請求項１に記載の方法。
【請求項１３】
オーディオ処理エレメントから波形サンプルについてのリクエストを受信するオーディオ処理エレメントインタフェースと、
前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードを得る、合成パラメータインタフェースと、
前記のリクエストされた波形サンプルを保存するためのローカルキャッシュと、
前記リクエストに含まれた位相インクリメントと、前記オーディオ合成パラメータ制御ワードと、に基づいて、前記のリクエストされた波形サンプルについての波形サンプル数を計算し、そして、前記波形サンプル数を使用して前記ローカルキャッシュから前記波形サンプルを検索するフェッチ装置と、
を備えており、
前記オーディオ処理エレメントインタフェースは、前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを送信する、
デバイス。
【請求項１４】
前記フェッチ装置は、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがループされた波形サンプルであるということを示すときに、第１の方法にしたがって前記波形サンプル数を計算し、そして、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがノンループされた波形サンプルであるということを示すときに、第２の方法にしたがって前記のリクエストされた波形サンプルについての前記波形サンプル数を計算する、請求項１３に記載のデバイス。
【請求項１５】
前記フェッチ装置は、
現在キャッシュされた波形サンプルを識別しているタグと前記波形サンプル数との間の差異を決定し、
前記タグと前記波形サンプル数との間の前記差異が０よりも大きく、且つキャッシュラインごとのサンプルの数よりも少ないときに、外部メモリから前記ローカルキャッシュまでの前記波形サンプルを検索モジュールがフェッチするように命令する、請求項１３に記載のデバイス。
【請求項１６】
前記フェッチ装置は、前記オーディオ処理エレメントインタフェースに対して、前記の検索された波形サンプルを送信し、前記オーディオ処理エレメントインタフェースは、前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを転送する、請求項１３に記載のデバイス。
【請求項１７】
前記オーディオ処理エレメントインタフェースは、複数のオーディオ処理エレメントから複数のリクエストを受信し、
前記複数のリクエストが、デフォルトプライオリティレベルが前記オーディオ処理エレメントのそれぞれに割り当てられるラウンドロビンアービトレーションにしたがって前記フェッチ装置によってサービス提供されるべき順序を決定するアービター、
をさらに備えている、
請求項１３に記載のデバイス。
【請求項１８】
前記フェッチ装置は、前記アービターが、前記のリクエストしているオーディオ処理エレメントが代わりにサービス提供されるべきで、前記のリクエストされた波形サンプルがすでに前記ローカルキャッシュにあるということを示すときに、前記複数のリクエストのうちの１つをサービス提供する、請求項１７に記載のデバイス。
【請求項１９】
前記アービターは、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータがローカルにバッファされるかにさらに基づいて前記複数のリクエストがサービス提供されるべきである前記順序、を決定する、請求項１７に記載のデバイス。
【請求項２０】
前記のリクエストされた波形に関連づけられた前記オーディオ合成パラメータがローカルにバッファされないとき、前記アービターは、前記リクエストをスキップし、最も低いプライオリティレベルまで、前記リクエストを移動させる、請求項１９に記載のデバイス。
【請求項２１】
前記アービターは、前記リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるかにさらに基づいて前記複数のリクエストがサービス提供されるべき前記順序、を決定し、前記フェッチ装置は、前記リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるときには、最も低いプライオリティレベルまで前記リクエストを移動させる、請求項１７に記載のデバイス。
【請求項２２】
前記フェッチ装置は、前記波形サンプルを前記のリクエストしているオーディオ処理エレメントに送信する前に、前記波形サンプルを再フォーマット化する、請求項１３に記載のデバイス。
【請求項２３】
前記フェッチ装置は、１６−ビットステレオフォーマットに前記波形サンプルを変換することによって、前記波形サンプルを再フォーマット化する、請求項２２に記載のデバイス。
【請求項２４】
前記波形サンプルは、電子楽器デジタルインタフェース（ＭＩＤＩ）波形サンプルを備えており、また、前記オーディオ合成パラメータ制御ワードは、ＭＩＤＩ合成パラメータ制御ワードを備えている、請求項１３に記載のデバイス。
【請求項２５】
前記フェッチ装置が前記ローカルキャッシュ内に前記のリクエストされた波形サンプルが存在しないということを決定するときに、前記フェッチ装置は、外部メモリから前記のリクエストされた波形サンプルを検索するインストラクションを設置し、
前記キューから前記命令を読み取り、そして前記インストラクションにしたがって前記外部メモリから前記ローカルキャッシュまで前記のリクエストされた波形サンプルに対応するキャッシュラインを検索する検索モジュール、をさらに備えている請求項１３に記載のデバイス。
【請求項２６】
オーディオ処理エレメントから波形サンプルについてのリクエストを受信するための手段と、
前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードを得るための手段と、
前記のリクエストされた波形サンプルを保存するための手段と、
前記リクエストに含まれた位相インクリメントと、前記オーディオ合成パラメータ制御ワードと、に基づいて、前記のリクエストされた波形サンプルについての波形サンプル数を計算するための手段と、
前記波形サンプル数を使用して前記ローカルキャッシュから前記波形サンプルを検索するための手段と、
前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを送信するための手段と、
を備えているデバイス。
【請求項２７】
前記波形サンプル数を計算するための前記手段は、
前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがループされた波形サンプルであるということを示すときに、第１の方法にしたがって前記波形サンプル数を計算するための手段と、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがノンループされた波形サンプルであるということを示すときに、第２の方法にしたがって前記のリクエストされた波形サンプルについての前記波形サンプル数を計算するための手段と、
を備えている、
請求項２６に記載のデバイス。
【請求項２８】
現在キャッシュされた波形サンプルを識別しているタグと前記波形サンプル数との間の差異を決定するための手段と、
前記タグと前記波形サンプル数との前記差異が０よりも大きく、且つキャッシュラインごとのサンプルの数よりも少ないときに、外部メモリから前記ローカルキャッシュまで前記波形サンプルをフェッチするための手段と、
をさらに備えている請求項２６に記載のデバイス。
【請求項２９】
受信するための前記手段は、波形サンプルについての複数のリクエストを受信するための手段を備えており、
デフォルトプライオリティレベルが前記リクエストのそれぞれに割り当てられているラウンドロビンアービトレーションにしたがって前記複数のリクエストがサービス提供されるべきである順序を決定するための手段、
をさらに備えている、
請求項２６に記載のデバイス。
【請求項３０】
１６−ビットステレオフォーマットに前記波形サンプルを変換することによって、前記波形サンプルを再フォーマット化するための手段、をさらに備えている請求項２６に記載のデバイス。
【請求項３１】
前記波形サンプルは、電子楽器デジタルインタフェース（ＭＩＤＩ）の波形サンプルを備えており、また、前記オーディオ合成パラメータ制御ワードは、ＭＩＤＩ合成パラメータ制御ワードを備えている、請求項２６に記載のデバイス。
【請求項３２】
コンピュータ可読メディアであって、１つまたは複数のプロセッサにおいて実行するときに、前記１つまたは複数のプロセッサに、
オーディオ処理エレメントから波形サンプルについてのリクエストを受信させ、
前記リクエストをサービス提供させる、
インストラクション、を備えており、前記リクエストをサービス提供することは、
前記リクエストに含まれた位相インクリメントと、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、前記のリクエストされた波形サンプルについての波形サンプル数を計算することと、
前記波形サンプル数を使用してローカルキャッシュから前記波形サンプルを検索することと、
前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを送信することと
を含む、
コンピュータ可読メディア。
【請求項３３】
波形サンプル数を計算することは、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがループされた波形サンプルであるということを示すときに、第１の方法にしたがって前記波形サンプル数を計算することと、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがノンループされた波形サンプルであるということを示すときに、第２の方法にしたがって前記のリクエストされた波形サンプルについて前記波形サンプル数を計算することと、を備えている、請求項３２に記載のコンピュータ可読メディア。
【請求項３４】
実行するときに前記１つまたは複数のプロセッサに
現在キャッシュされた波形サンプルを識別しているタグと前記波形サンプル数との間の差異を決定させ、
前記タグと前記波形サンプル数との前記差異が０よりも大きく、且つキャッシュラインごとのサンプルの数よりも少ないときに、外部メモリから前記ローカルキャッシュまで前記波形サンプルをフェッチさせる、
インストラクション、をさらに備えている請求項３２に記載のコンピュータ可読メディア。
【請求項３５】
前記の検索された波形サンプルを前記のリクエストしているオーディオ処理エレメントに対して送信することは、前記オーディオ処理エレメントに関連づけられたインタフェースに対して前記の検索された波形サンプルを送信することを備えており、また、前記インタフェースは、前記のリクエストしているオーディオ処理エレメントに対して前記波形サンプルを転送する、請求項３２に記載のコンピュータ可読メディア。
【請求項３６】
波形サンプルについてのリクエストを受信することは、複数のオーディオ処理エレメントから複数のリクエストを受信することを備えており、
前記リクエストをサービス提供することは、
デフォルトプライオリティレベルが前記オーディオ処理エレメントのそれぞれに割り当てられるラウンドロビンアービトレーションと、
前記のリクエストされた波形サンプルはすでに前記ローカルキャッシュにあるかどうかの決定と、
に少なくとも基づいたアービトレーションにしたがった順序において前記リクエストをサービス提供することを備えている、
請求項３２に記載のコンピュータ可読メディア。
【請求項３７】
前記リクエストをサービス提供することは、前記ラウンドロビンアービトレーションが前記のリクエストしているオーディオ処理エレメントが代わりにサービス提供されるべきであることを示すときに、前記複数のリクエストのうちの１つをサービス提供することを備えている、請求項３６に記載のコンピュータ可読メディア。
【請求項３８】
前記アービトレーションは、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータがローカルにバッファされるかどうかによって、さらに決定される、請求項３６に記載のコンピュータ可読メディア。
【請求項３９】
前記のリクエストされた波形に関連づけられた前記オーディオ合成パラメータがローカルにバッファされないときには、実行するときに前記１つまたは複数のプロセッサに、
前記リクエストをスキップさせ、
最も低いプライオリティレベルまで前記リクエストを移動させる、
インストラクション、
をさらに備えている請求項３８に記載のコンピュータ可読メディア。
【請求項４０】
前記アービトレーションは、リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるかどうかによってさらに決定され、前記リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるときには、最も低いプライオリティレベルまで前記リクエストを移動させることをさらに備えている、請求項３６に記載のコンピュータ可読メディア。
【請求項４１】
前記波形サンプルを前記のリクエストしているオーディオ処理エレメントに対して送信する前に、前記１つまたは複数のプロセッサに前記波形サンプルを再フォーマット化させるインストラクション、
をさらに備えている請求項３２に記載のコンピュータ可読メディア。
【請求項４２】
前記波形サンプルを再フォーマット化することは、１６−ビットステレオフォーマットに前記波形サンプルを変換することを備えている、請求項４１に記載のコンピュータ可読メディア。
【請求項４３】
波形サンプルについてのリクエストを受信することは、電子楽器デジタルインタフェース（ＭＩＤＩ）の波形サンプルについてのリクエストを受信することを備えており、また、前記オーディオ合成パラメータ制御ワードは、ＭＩＤＩ合成パラメータ制御ワードを備えている、請求項３２に記載のコンピュータ可読メディア。
【請求項４４】
オーディオ処理エレメントから波形サンプルについてのリクエストを受信するように、
前記リクエストをサービス提供するように、
適用されており、
前記リクエストをサービス提供することは、
前記リクエストに含まれた位相インクリメントと、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、前記のリクエストされた波形サンプルについての波形サンプル数を計算することと、
前記波形サンプル数を使用してローカルキャッシュから前記波形サンプルを検索することと、
前記のリクエストしているオーディオ処理エレメントに対して、前記の検索された波形サンプルを送信することと、
を含んでいる、
回路。
【請求項４５】
波形サンプル数を計算することは、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがループされた波形サンプルであるということを示すときに、第１の方法にしたがって前記波形サンプル数を計算することと、前記オーディオ合成パラメータ制御ワードが前記のリクエストされた波形サンプルがノンループされた波形サンプルであるということを示すときに、第２の方法にしたがって前記のリクエストされた波形サンプルについての前記波形サンプル数を計算することと、を備えている、請求項４４に記載の回路。
【請求項４６】
前記回路は、
現在キャッシュされた波形サンプルを識別しているタグと前記波形サンプル数との間の差異を決定するように、
前記タグと前記波形サンプル数との前記差異が０よりも大きく、且つキャッシュラインごとのサンプルの数よりも少ないときに、外部メモリから前記ローカルキャッシュまで前記波形サンプルをフェッチするように、
適用されている、請求項４４に記載の回路。
【請求項４７】
前記の検索された波形サンプルを前記のリクエストしているオーディオ処理エレメントに対して送信することは、前記オーディオ処理エレメントに関連づけられたインタフェースに対して前記の検索された波形サンプルを送信することを備えており、また、前記インタフェースは、前記のリクエストしているオーディオ処理エレメントに対して前記波形サンプルを転送する、請求項４４に記載の回路。
【請求項４８】
波形サンプルについてのリクエストを受信することは、複数のオーディオ処理エレメントから複数のリクエストを受信することを備えており、
前記リクエストをサービス提供することは、
デフォルトプライオリティレベルが前記オーディオ処理エレメントのそれぞれに割り当てられるラウンドロビンアービトレーションと、
前記のリクエストされた波形サンプルはすでに前記ローカルキャッシュにあるかどうかの決定と、
に少なくとも基づいたアービトレーションにしたがった順序において前記リクエストをサービス提供することを備えている、
請求項４４に記載の回路。
【請求項４９】
前記リクエストをサービス提供することは、前記ラウンドロビンアービトレーションが前記のリクエストしているオーディオ処理エレメントが代わりにサービス提供されるべきであることを示すときに、前記複数のリクエストのうちの１つをサービス提供することを備えている、請求項４８に記載の回路。
【請求項５０】
前記アービトレーションは、前記のリクエストされた波形サンプルに関連づけられたオーディオ合成パラメータがローカルにバッファされるかどうかによって、さらに決定される、請求項４８に記載の回路。
【請求項５１】
前記回路は、前記のリクエストされた波形に関連づけられた前記オーディオ合成パラメータがローカルにバッファされないとき、
前記リクエストをスキップするように
最も低いプライオリティレベルまで前記リクエストを移動させるように、
適用される、請求項５０に記載の回路。
【請求項５２】
前記アービトレーションは、リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるかどうかによってさらに決定され、前記リクエストに関連づけられたオーディオ処理エレメントインタフェースがビジーであるときには、最も低いプライオリティレベルまで前記リクエストを移動させることをさらに備えている、請求項４８に記載の回路。
【請求項５３】
前記波形サンプルを前記のリクエストしているオーディオ処理エレメントに対して送信する前に、前記回路は、前記波形サンプルを再フォーマット化するように適用される、請求項４４に記載の回路。
【請求項５４】
前記波形サンプルを再フォーマット化することは、１６−ビットステレオフォーマットに前記波形サンプルを変換することを備えている、請求項５３に記載の回路。
【請求項５５】
波形サンプルについてのリクエストを受信することは、電子楽器デジタルインタフェース（ＭＩＤＩ）の波形サンプルについてのリクエストを受信することを備えており、また、前記オーディオ合成パラメータ制御ワードは、ＭＩＤＩ合成パラメータ制御ワードを備えている、請求項４４に記載の回路。
【発明の詳細な説明】
【関連出願】
【０００１】
（米国特許法第１１９条の下の優先権主張）
本願は、ここでの譲受人に譲渡され、ここに参照することによりここに明示的に組み込まれ、２００７年３月２２日に出願された「オーディオファイルを処理するための波形フェッチ装置(“Waveform fetch unit for processing audio files”)」と題された米国仮特許出願第６０／８９６，４１４号の優先権を主張する。
【技術分野】
【０００２】
本開示は、オーディオデバイス(audio devices)に関し、より具体的には、電子楽器デジタルインタフェース(musical instrument digital interface)（ＭＩＤＩ)のようなオーディオフォーマットに基づいてオーディオ出力を生成するオーディオデバイスに関する。
【背景】
【０００３】
電子楽器デジタルインタフェース（ＭＩＤＩ)は、音楽、スピーチ、音色(tones)、アラート、及び同様なもののような、オーディオサウンドの、作成(creation)、通信(communication)及び／または再生(playback)において使用されるフォーマットである。ＭＩＤＩフォーマット再生をサポートするデバイスは、様々な「ボイス(voices)」を作成するために使用されることができるオーディオ情報のセット(sets of audio information)を保存することができる。各ボイスは、例えば特定の楽器による音符(musical note)のような、１つまたは複数のサウンドに対応することができる。例えば、第１のボイスは、ピアノによって演奏されるような中央Ｃ(middle C)に対応することができ、第２のボイスはトロンボーンによって演奏されるような中央Ｃに対応することができ、第３のボイスは、トロンボーン等によって演奏されるようなＤ＃などに対応することができる。特定の楽器によって演奏されるような音符を複製する(replicate)ために、ＭＩＤＩコンプライアントデバイス(MIDI compliant device)は、例えば低周波数発振器のビヘービア、ビブラートのような効果、そしてサウンドの認知に影響を与えることができる多数の他のオーディオ特性、のような様々なオーディオ特性を指定するボイス、についての１セットの情報を含むことができる。ほとんどのどの音も、ＭＩＤＩファイルで定義され、伝達され、ＭＩＤＩフォーマットをサポートするデバイスによって再生される(reproduced)ことができる。
【０００４】
ＭＩＤＩフォーマットをサポートするデバイスは、デバイスが音符(note)を作成することを開始すべきであるということを示すイベント(event)が生じるときに、音符（あるいは他のサウンド）を作ることができる。同様に、デバイスは、デバイスが音符を作ることを停止すべきであるということを示すイベントが生じるときに、音符を作ることを止める。全体の音楽作品(entire musical composition)は、いつあるボイスが開始し停止すべきかを示すイベントを指定することによって、ＭＩＤＩフォーマットにしたがって符号化されることができる。このように、音楽作品はＭＩＤＩフォーマットにしたがってコンパクトファイルフォーマット(compact file format)で、保存され送信されることができる。
【０００５】
ＭＩＤＩは、広範囲のデバイス(devices)においてサポートされている。例えば、無線電話(radiotelephones)のような無線通信デバイスは、着信音(ringtones)あるいは他のオーディオ出力のようなダウンロード可能なサウンドについて、ＭＩＤＩファイルをサポートすることができる。アップルコンピュータ社によって販売される「ｉＰｏｄ」デバイス、また、マイクロソフト株式会社によって販売される「Ｚｕｎｅ」デバイス、のようなデジタル音楽プレイヤー(Digital music players)はまた、ＭＩＤＩファイルフォーマットをサポートすることができる。ＭＩＤＩフォーマットをサポートする他のデバイスは、様々なミュージックシンセサイザー(music synthesizers)、無線モバイルデバイス、ダイレクト双方向通信デバイス(direct two-way communication devices)（しばしばウォーキートーキーと呼ばれる）、ネットワーク電話、パーソナルコンピュータ、デスクトップ且つラップトップコンピュータ、ワークステーション(workstations)、衛星無線デバイス(satellite radio devices)、インターコムデバイス(intercom devices)、無線ブロードキャスティングデバイス(radio broadcasting devices)、ハンドヘルドゲーミングデバイス(hand-held gaming devices)、デバイスにおいてインストールされた回路基板(circuit boards installed in devices)、情報キオスク(information kiosks)、ビデオゲームコンソール(video game consoles)、子供用の様々なコンピュータ化されたおもちゃ(various computerized toys for children)、自動車、船、及び飛行機で使用されている搭載コンピュータ(on-board computers used in automobiles, watercraft and aircraft)、及び広範囲の他のデバイスを含むことができる。
【発明の概要】
【０００６】
概して、本開示は、オーディオファイルを処理するための技術を説明する。技術は、電子楽器デジタルインタフェース（ＭＩＤＩ）フォーマットに応じるオーディオファイルの再生について特に有用でありうるが、本技術が他のオーディオのフォーマット、技術、あるいは標準(other audio formats, techniques or standards)に有用でありうる。ここにおいて使用されているように、用語ＭＩＤＩファイルは、ＭＩＤＩフォーマットに合わせる少なくとも１つのオーディオトラックを含むいずれのファイルを指す。本開示によると、技術は、ＭＩＤＩファイルのような１つまたは複数のオーディオファイルから生成された様々なオーディオ合成パラメータ(audio synthesis parameters)をサービス提供するように同時に動作する複数のハードウェア処理エレメントのそれぞれの代わりに、波形サンプルを検索するように動作する波形フェッチ装置(waveform fetch unit)を活用する。
【０００７】
一態様において、本開示は、オーディオ処理エレメントから波形サンプルについてのリクエストを受信することと(receiving a request for a waveform sample from an audio processing element)、リクエストに含まれた位相インクリメントと、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算し(calculating a waveform sample number for the requested waveform sample based on a phase increment contained in the request and an audio synthesis parameter control word associated with the requested waveform sample)、波形サンプル数を使用してローカルキャッシュから波形サンプルを検索し(retrieving the waveform sample from a local cache using the waveform sample number)、そしてリクエストしているオーディオ処理エレメントに対して検索された波形サンプルを送信する(sending the retrieved waveform sample to the requesting audio processing element)ことによって、リクエストをサービス提供することと(servicing the request)、を備えている方法を提供する。
【０００８】
別の態様において、本開示は、オーディオ処理エレメントから波形サンプルについてのリクエストを受信するオーディオ処理エレメントインタフェース(an audio processing element interface that receives a request for a waveform sample from an audio processing element)と、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードを得る合成パラメータインタフェース(a synthesis parameter interface that obtains an audio synthesis parameter control word associated with the requested waveform sample)と、リクエストされた波形サンプルを保存するためのローカルキャッシュ(a local cache for storing the requested waveform sample)と、を備えているデバイスを提示する。デバイスは、リクエストに含まれた位相インクリメントと、オーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算し、そして、波形サンプル数を使用して、ローカルキャッシュから波形サンプルを検索するフェッチ装置(fetch unit)をさらに備えている。オーディオ処理エレメントインタフェースは、リクエストしているオーディオ処理エレメントに対して、検索された波形サンプルを送信する。
【０００９】
別の態様において、本開示は、オーディオ処理エレメントから波形サンプルについてのリクエストを受信するための手段(means for receiving a request for a waveform sample from an audio processing element)と、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードを得るための手段(means for obtaining an audio synthesis parameter control word associated with the requested waveform sample)と、リクエストされた波形サンプルを保存するための手段(means for storing the requested waveform sample)と、を備えているデバイスを提供する。デバイスは、リクエストに含まれた位相インクリメントと、オーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算するための手段と、波形サンプル数を使用してローカルキャッシュから波形サンプルを検索するための手段と、リクエストしているオーディオ処理エレメントに対して、検索された波形サンプルを送信するための手段と、をさらに備えている。
【００１０】
別の態様においては、本開示は、１つまたは複数のプロセッサにおいて実行するときに、１つまたは複数のプロセッサに、オーディオ処理エレメントから波形サンプルについてのリクエストを受信させ、リクエストをサービス提供させる、インストラクション(instructions)を備えているコンピュータ可読メディア(computer-readable medium)を提供する。リクエストをサービス提供することは、リクエストに含まれた位相インクリメントと、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算することと、波形サンプル数を使用してローカルキャッシュから波形サンプルを検索することと、リクエストしているオーディオ処理エレメントに対して、検索された波形サンプルを送信することと、を含むことができる。
【００１１】
別の態様において、本開示は、オーディオ処理エレメントから波形サンプルについてのリクエストを受信し、リクエストをサービス提供するように、適用された回路を提供しており、リクエストをサービス提供することは、リクエストに含まれた位相インクリメントと、リクエストされた波形サンプルに関連づけられたオーディオ合成パラメータ制御ワードと、に基づいて、リクエストされた波形サンプルについての波形サンプル数を計算することと、波形サンプル数を使用してローカルキャッシュから波形サンプルを検索することと、リクエストしているオーディオ処理エレメントに対して、検索された波形サンプルを送信することと、を含んでいる。
【００１２】
本開示の1つまたは複数の態様の詳細は、添付図面及び、下記の詳細な説明において、記載されている。本発明の他の特徴、目的、及び利点は、詳細な説明及び図面から、そして、特許請求項の範囲から、明らかであろう。
【図面の簡単な説明】
【００１３】
【図１】図1は、本開示に従った、オーディオファイルを処理するための技術をインプリメントする(implement)ことができる例示的なオーディオデバイスを図示するブロック図である。
【図２】図２は、本開示によるオーディオ合成パラメータを処理するためのハードウェア装置の一例のブロック図である。
【図３】図３は、本開示による波形フェッチ装置の例示的なアーキテクチャを図示するブロック図である。
【図４】図４は、本開示の教示に整合する例示的な技術を図示するフロー図である。
【図５】図５は、本開示の教示に整合する例示的な技術を図示するフロー図である。
【詳細な説明】
【００１４】
本開示は、オーディオファイルを処理するための技術を説明している。本技術は、合成パラメータを活用する、他のオーディオフォーマット、技術、あるいは標準に有用でありうるが、本技術は、電子楽器デジタルインタフェース（ＭＩＤＩ）フォーマットに応じるオーディオファイルの再生について特に有用でありうる。ここにおいて使用されているように、用語ＭＩＤＩファイルは、ＭＩＤＩフォーマットに合わせる少なくとも１つのオーディオトラックを含む、いずれのオーディオデータあるいはファイルを指す。ＭＩＤＩトラックを含むことができる様々なファイルフォーマットの例は、いくつかをあげると、ＣＭＸ、ＳＭＡＦ、ＸＭＦ、ＳＰ−ＭＩＤＩを含んでいる。ＣＭＸは、クァルコム社によって開発された、コンパクトメディア拡張(Compact Media Extensions)を表わす。ＳＭＡＦは、ヤマハ社によって開発された、合成音楽モバイルアプリケーションフォーマット(Synthetic Music Mobile Application Format)を表わす。ＸＭＦは、ｅＸｔｅｎｓｉｂｌｅミュージックフォーマット(eXtensible Music Format)を表わし、ＳＰ−ＭＩＤＩは、スケーラブルポリフォニーＭＩＤＩ(Scalable Polyphony MIDI)を表わす。
【００１５】
ＭＩＤＩファイルあるいは他のオーディオファイルは、オーディオフレーム内のデバイス間で伝達されることができ、オーディオ情報あるいはオーディオ−ビデオ（マルチメディア）情報を含むことができる。オーディオフレームは、単一のオーディオファイル(single audio file)、マルチプルオーディオファイル(multiple audio files)、あるいは可能であれば１つまたは複数のオーディオファイル及び符号化されたビデオフレームのような他の情報、を備えることができる。オーディオフレーム内のいずれのオーディオデータも、ここにおいて使用されているように、オーディオファイルと名づけられることができ、上記でリストされたストリーミングオーディオデータ(streaming audio data)あるいは１つまたは複数のオーディオファイルフォーマットを含んでいる。本開示にしたがって、技術は、複数の処理エレメントのそれぞれの代わりに（例、専用ＭＩＤＩハードウェア装置内で）波形サンプルを検索する波形フェッチ装置(waveform fetch unit)（ＷＦＵ）を活用する。
【００１６】
説明された技術は、ＭＩＤＩファイルのようなオーディオファイルの処理を改善することができる。本技術は、異なるタスクを、ソフトウェア、ファームウェア、及びハードウェアへと、分けることができる。汎用プロセッサは、オーディオフレームのオーディオファイルをパースするために、したがってタイミングパラメータを識別することができ、そして、オーディオファイルに関連づけられたイベントをスケジュールするために、ソフトウェアを実行することができる。スケジュールされたイベントは、そのあとで、オーディオファイルにおいてタイミングパラメータによって指定されるように、同期化された方法でＤＳＰによってサービス提供されることができる。汎用プロセッサは、時間同期化された方法(time-synchronized manner)でＤＳＰに対してイベントをディスパッチし(dispatches)、そしてＤＳＰは、合成パラメータを生成するために、時間同期化されたスケジュールにしたがってイベントを処理する。ＤＳＰは、そのあとで、ハードウェア装置のエレメントを処理することによって、合成パラメータの処理をスケジュールし、ハードウェア装置は、処理エレメント、ＷＦＵ、及び他のコンポーネントを使用して、合成パラメータに基づいたオーディオサンプルを生成することができる。
【００１７】
本開示によると、処理エレメントによるリクエストに応じて、ＷＦＵによって検索された正確な波形サンプルは、現在の位相同様、処理エレメントによって供給された、位相インクリメントに依存する。ＷＦＵは、波形サンプルがキャッシュされるかどうかをチェックし、波形サンプルを検索し、そして、リクエストしている処理エレメントに波形サンプルを戻す前に、データフォーマット化を実行することができる。波形サンプルは外部ストレージ装置に保存され、ＷＦＵは、バス混雑(bus congestion)を緩和するためにキャッシング戦略(caching strategy)を使用する。
【００１８】
図１は、例示的なオーディオデバイス４を図示するブロック図である。オーディオデバイス４は、ＭＩＤＩファイル、例えば少なくとも1つのＭＩＤＩトラックを含むファイル、を処理することができるいずれのデバイスも備えることができる。オーディオデバイス４の例は、無線電話、ネットワーク電話、デジタルミュージックプレイヤー、ミュージックシンセサイザー、無線モバイルデバイス、ダイレクト２方式通信デバイス(ウォーキートーキーとしばしば呼ばれる)、パーソナルコンピュータ、デスクトップあるいはラップトップコンピュータ、ワークステーション、衛星無線デバイス、インターコムデバイス、無線ブロードキャスティングデバイス、ハンドヘルドゲーミングデバイス、デバイスにおいてインストールされた回路基板、キオスクデバイス、ビデオゲームコンソール、子供用の様々なコンピュータ化されたおもちゃ、ビデオゲームコンソール、自動車、船、あるいは飛行機において使用される搭載コンピュータ、あるいは広範囲の他のデバイス、のような無線通信デバイスを含む。
【００１９】
図１で図示された様々なコンポーネントは、本開示の態様を説明するために提供されている。しかしながら、他のコンポーネントは存在するかもしれないし、また図示されたコンポーネントのうちのいくつかは、いくつかのインプリメンテーションにおいて含まれないかもしれない。例えば、オーディオデバイス４が、無線電話(radiotelephone)である場合、アンテナ、送信機(transmitter)、受信機、及びモデム（モジュレータ−デモジュレータ)は、オーディオファイルの無線通信を容易にするために含まれることができる。
【００２０】
図１の例で図示されているように、オーディオデバイス４は、ＭＩＤＩファイルを保存するオーディオストレージ装置６を含む。また、ＭＩＤＩファイルは一般に、ＭＩＤＩフォーマットで符号化された少なくとも１つのトラックを含む、いずれのオーディオファイルを指す。オーディオストレージ装置(audio storage unit)６はいずれの揮発性あるいは不揮発性のメモリあるいはストレージも備えていてもよい。本開示の目的のために、オーディオストレージ装置６は、プロセッサ８にＭＩＤＩファイルを転送するストレージ装置として見られることができ、あるいは、プロセッサ８は、ファイルが処理されるために、オーディオストレージ装置６からＭＩＤＩファイルを検索する。勿論、オーディオストレージ装置６はまた、デジタル音楽プレイヤーに関連づけられたストレージ装置、あるいは、別のデバイスからの情報転送に関連づけられた一時的なストレージ装置、であることができる。オーディオストレージ装置６は、データバスあるいは他の接続を介して、プロセッサ８に結合された、個別の揮発性メモリチップあるいは不揮発性ストレージデバイスであってもよい。メモリまたはストレージ装置のコントローラ（示されていない）は、オーディオストレージ装置６からの情報の転送を容易にするために含まれることができる。
【００２１】
本開示によると、デバイス４は、ソフトウェア、ハードウェア、およびファームウェアの間のＭＩＤＩ処理タスクを分離するアーキテクチャをインプリメントする。特に、デバイス４は、プロセッサ８、ＤＳＰ１２、及びオーディオハードウェア装置(audio hardware unit)１４を含む。これらのコンポーネントのそれぞれは、メモリ装置(memory unit)１０に、例えば直接にあるいはバスを介して、結合されることができる。プロセッサ８は、ＭＩＤＩファイルをパースしＭＩＤＩファイルに関連づけられたＭＩＤＩイベントをスケジュールするソフトウェアを実行する汎用プロセッサを備えることができる。スケジュールされたイベントは、ＭＩＤＩファイルにおけるタイミングパラメータによって指定されるように、時間同期化された方法でＤＳＰ１２にディスパッチされることができ、その結果、同期化された方法においてＤＳＰ１２によってサービス提供される。ＤＳＰ１２は、ＭＩＤＩ合成パラメータを生成するために、汎用プロセッサ８によって作成され時間同期化されたスケジュールにしたがって、ＭＩＤＩイベントを処理する。ＤＳＰ１２は、さらにオーディオハードウェア装置１４によってＭＩＤＩ合成パラメータの後続処理をスケジュールすることもできる。オーディオハードウェア装置１４は、合成パラメータに基づいてオーディオサンプルを生成する。
【００２２】
プロセッサ８は、いずれの広範囲の汎用の、単一のチップマイクロプロセッサあるいはマルチのチップマイクロプロセッサを備えることができる。プロセッサ８は、ＣＩＳＣ(コンプレクスインストラクションセットコンピュータ(Complex instruction Set Computer))設計あるいはＲＩＳＣ（縮小されたインストラクションコンピュータ(Reduced Instruction Set Computer))設計をインプリメントすることができる。一般に、プロセッサ８は、ソフトウェアを実行する中央処理装置(central processing unit)（ＣＰＵ）を備えている。例は、インテル社、アップルコンピュータ社、サンマイクロシステムズ社、アドバンストマイクロデバイシーズ(Advanced Micro Devices)（ＡＭＤ）社、及び同様な会社、のような企業の、１６−ビットマイクロプロセッサ、３２−ビットマイクロプロセッサ、あるいは６４−ビットマイクロプロセッサを含んでいる。他の例は、ＩＢＭ(International Business Machine)社、ＲｅｄＨａｔ社、及び同様な会社のような企業の、Ｕｎｉｘ（登録商標）ベースマイクロプロセッサまたはＬｉｎｕｘ（登録商標）ベースマイクロプロセッサを含む。汎用プロセッサは、ＡＲＭ９を備えることができ、そしてそれはＡＲＭ社から市販で入手可能であり、また、ＤＳＰは、クァルコム社によって開発されたＱＤＳＰ４ ＤＳＰを備えることができる。
【００２３】
プロセッサ８は、第１のフレーム（フレームＮ）についてＭＩＤＩファイルをサービス提供することができ、また、第１のフレーム（フレームＮ）がＤＳＰ１２によってサービス提供されるとき、第２のフレーム（フレームＮ＋１）は、プロセッサ８によって同時にサービス提供されることができる。第１のフレーム（フレームＮ）がオーディオハードウェア装置１４によってサービス提供されるときには、第２のフレーム（フレームＮ＋１）はＤＳＰ１２によって同時にサービス提供されるが、第３のフレーム（フレームＮ＋２）は、プロセッサ８によってサービス提供される。このように、ＭＩＤＩファイル処理は、同じ時に処理されることができるパイプラインステージへと分離されており、そしてそれは効率を改善し、ひょっとしたら与えられたステージについて必要とされるコンピューテーショナルリソース(computational resources)を減らす可能性がある。例えばＤＳＰ１２は、プロセッサ８あるいはＭＩＤＩハードウェア１４の援助(aid)なしに、フルＭＩＤＩアルゴリズム(full MIDI algorithm)を実行する従来のＤＳＰｓに関して単純化されることができる。
【００２４】
いくつかのケースにおいては、ＭＩＤＩハードウェア14によって生成されたオーディオサンプルは、ＤＳＰ１２に戻って、例えば割り込み駆動の技術(interrupt-driven techniques)を介して、配信される。このケースにおいては、ＤＳＰはさらに、オーディオサンプルに関するポスト処理技術(post-processing techniques)を実行することができる。ＤＡＣ１６は、ユーザに対してオーディオサウンドの出力のためにスピーカ１９Ａ及び１９Ｂを駆動する駆動回路(drive circuit)１８によって使用されることができるアナログ信号に、デジタルであるオーディオサンプルを変換する。
【００２５】
各オーディオフレームについては、プロセッサ８は、１つまたは複数のＭＩＤＩファイルを読み取り、ＭＩＤＩファイルからＭＩＤＩ命令を抽出することができる。これらのＭＩＤＩインストラクションに基づいて、プロセッサ８は、ＤＳＰ１２によって処理するためにＭＩＤＩイベントをスケジュールし、そして、このスケジューリングにしたがって、ＤＳＰ１２に対してＭＩＤＩイベントをディスパッチする。特に、プロセッサ８によるこのスケジューリングは、ＭＩＤＩイベントに関連づけられたタイミングの同期化を含むことができ、ＭＩＤＩファイルにおいて指定されたタイミングパラメータに基づいて識別されることができる。ＭＩＤＩファイルにおけるＭＩＤＩ命令は、特定のＭＩＤＩボイスに、開始するようにあるいは停止するように命令することができる。他のＭＩＤＩインストラクションは、アフタータッチ効果(aftertouch effects)、呼吸制御効果(breath control effects)、プログラム変更(program changes)、ピッチベンド効果(pitch bend effects)、パン左あるいは右のような制御メッセージ(control messages such as pan left or right)、サステインペダル効果(sustain pedal effects)、メインボリューム制御、タイミングパラメータのようなシステムメッセージ、ライトニング効果キューのようなＭＩＤＩ制御メッセージ(MIDI control messages such as lighting effect cues)、及び／または他のサウンド影響に関連していてもよい。ＭＩＤＩイベントをスケジュールした後で、プロセッサ８は、ＤＳＰ１２がイベントを処理することができるように、メモリ１０あるいはＤＳＰ１２にスケジューリングを提供することができる。代替的に、プロセッサ８は、時間同期化された方法でＤＳＰ１２にＭＩＤＩイベントをディスパッチすることによってスケジューリングを実行することができる。
【００２６】
メモリ１０は、プロセッサ８、ＤＳＰ１２、及びＭＩＤＩハードウェア１４がこれらの異なるコンポーネントにデリゲートされた(delegated to)様々なタスクを実行するために必要とされたいずれの情報にアクセスすることができるように、構造化されることができる。いくつかのケースにおいては、メモリ１０におけるＭＩＤＩ情報のストレージレイアウトは、異なるコンポーネント８、１２、及び１４からの効率的なアクセスを可能にするように配置されることができる(may be arranged)。
【００２７】
ＤＳＰ１２がプロセッサ８から（あるいはメモリ１０から）スケジュールされたＭＩＤＩイベントを受信するとき、ＤＳＰ１２は、メモリ１０に戻って保存されることができるＭＩＤＩ合成パラメータを生成するために、ＭＩＤＩイベントを処理することができる。再び、これらのＭＩＤＩイベントがＤＳＰによってサービス提供されるタイミングは、プロセッサ８によってスケジュールされ、そのようなスケジューリングのタスクを実行するためにＤＳＰ１２についての必要性を除去することによって効率性を作る。したがって、ＤＳＰ１２は、第１のオーディオフレームについてのＭＩＤＩイベントをサービス提供することができるが、プロセッサ８は、次のオーディオフレームについてのＭＩＤＩイベントをスケジューリングしている。オーディオフレームは、いくつかのオーディオサンプルを含むことができる、時間のブロック、例えば１０ミリ秒（ｍｓ）インターバル、を備えることができる。例えば、デジタル出力は、フレームあたり４８０サンプルを結果としてもたらすことができ、そしてそれは、アナログオーディオ信号へと変換されることができる。多くのイベントは、時間の１インスタントに対応することができるので、多くの音符あるいはサウンドは、ＭＩＤＩフォーマットにしたがって時間の１スタンスに含まれることができる。勿論、いずれのオーディオフレームにデリゲートされた時間の量は、フレームあたりのサンプルの数同様に、異なるインプリメンテーションにおいて異なっていてもよい。
【００２８】
いったんＤＳＰ１２がＭＩＤＩ合成パラメータを生成すると、オーディオハードウェア装置１４は、合成パラメータに基づいてオーディオサンプルを生成する。ＤＳＰ１２は、オーディオハードウェア装置１４によってＭＩＤＩ合成パラメータの処理をスケジュールすることができる。オーディオハードウェア装置１４によって生成されたオーディオサンプルは、パルス符号変調（ＰＣＭ）サンプルを備えることができ、それらはレギュラーインターバルにおいてサンプリングされるアナログ信号のデジタル表示である。オーディオハードウェア装置１４による例示的なオーディオ生成のさらなる詳細は、図２に関して下記で説明される。
【００２９】
いくつかのケースにおいては、ポスト処理(post processing)は、オーディオサンプル上で実行される必要がありうる。このケースにおいては、オーディオハードウェア装置１４は、ＤＳＰ１２にそのようなポスト処理を実行することを命令する、割り込みコマンド(interrupt command)をＤＳＰ１２に対して送信することができる。ポスト処理は、サウンド出力を最後に高めることができる、フィルタリング、スケーリング、ボリューム調節、あるいは、広範囲なオーディオポスト処理を含むことができる。
【００３０】
ポスト処理に続いて、ＤＳＰ１２は、ポスト処理されたオーディオサンプルを、デジタルアナログ変換器（ＤＡＣ）に、出力することができる。ＤＡＣ１６は、デジタルオーディオ信号をアナログ信号に変換し、そして、駆動回路１８にアナログ信号を出力する。駆動回路１８は、オーディブルサウンド(audible sound)を作成するために、１つまたは複数のスピーカ１９Ａ及び１９Ｂを駆動するために信号を増幅することができる。
【００３１】
図２は、例示的なオーディオハードウェア装置２０を図示するブロック図であり、それは、図１のオーディオデバイス４のオーディオハードウェア装置１４に対応することができる。図２で示されたインプリメンテーションは、他のＭＩＤＩハードウェアインプリメンテーションも本開示の教示と一致して定義されることができるような、単なる例示である。図２の例で図示されるように、オーディオハードウェア装置２０は、データを送信し受信するバスインタフェース３０を含む。例えば、バスインタフェース３０は、ＡＭＢＡ高機能バス(AMBA High-performance Bus)（ＡＨＢ）マスターインタフェース、ＡＨＢスレーブインタフェース(AHB slave interface)、及びメモリバスインタフェース(memory bus interface)を含むことができる。ＡＭＢＡは高度なマイクロプロセッサバスアーキテクチャ(advanced microprocessor bus architecture)を表わす。代替的に、バスインタフェース３０は、ＡＸＩバスインタフェース、あるいは別のタイプのバスインタフェースを含んでいてもよい。ＡＸＩは、高度な拡張可能なインタフェース(advanced extensible interface)を表わす。
【００３２】
さらに、オーディオハードウェア装置２０は、調整モジュール(coordination module)３２を含んでいてもよい。調整モジュール３２は、オーディオハードウェア装置２０内のデータフローを調整する。オーディオハードウェア装置２０がオーディオサンプルを合成し始めるためにＤＳＰ１２（図１）からインストラクションを受信するとき、調整モジュール３２は、ＤＳＰ１２（図１）によって生成された、オーディオフレームについての合成パラメータを読み取る。これらの合成パラメータは、オーディオフレームを再構築するために使用されることができる。ＭＩＤＩフォーマットについては、合成パラメータは、与えられたフレーム内で、１つまたは複数のＭＩＤＩボイスの様々な音波の特性(various sonic characteristics)を説明する。例えば、1セットのＭＩＤＩ合成パラメータは、共振のレベル、反響(reverberation)、ボリューム、及び／または１つまたは複数のボイスに影響を与えることができる他の特性、を指定してもよい。
【００３３】
調整モジュール３２の指図(direction)で、合成パラメータは、メモリ装置１０（図１）から、それぞれの処理エレメント３４Ａあるいは３４Ｎに関連づけられたボイスパラメータセット(voice parameter set)（ＶＰＳ）ＲＡＭ４６Ａあるいは４６Ｎへと直接ロードされることができる。ＤＳＰ１２（図1）の指図で、プログラムインストラクションは、メモリ１０から、それぞれの処理エレメント３４Ａあるいは３４Ｎに関連づけられたプログラムＲＡＭ装置４４Ａあるいは４４Ｎへとロードされる。
【００３４】
プログラムＲＡＭ装置４４Ａあるいは４４Ｎにロードされたインストラクションは、関連処理エレメント３４Ａあるいは３４Ｎに、ＶＰＳ ＲＡＭ装置４６Ａあるいは４６Ｎにおける合成パラメータのリストで示されたボイスのうちの１つを合成するように命令する。いずれの数の処理エレメント３４Ａ−３４Ｎ（集約的には「処理エレメント３４」）があってもよく、また、それぞれは、データを読み取り書き込むための１つまたは複数の装置(one or more units)同様に、数学的なオペレーションを実行することができる、１つまたは複数のＡＬＵｓを備えることができる。２つの処理エレメント３４Ａ及び３４Ｎのみが、簡略化のために図示されているが、さらに多くの処理エレメントがハードウェア装置２０に含まれていてもよい。処理エレメント３４は、互いに並列で、ボイスを合成することができる。特に、複数の異なる処理エレメント３４は、異なる合成パラメータを処理するために並列で機能する。この方法において、オーディオハードウェア装置２０内の複数処理エレメント３４は、加速させることができ、おそらく、生成されたボイスの数を増大させることができ、その結果、オーディオサンプルの生成を改善する。
【００３５】
調整モジュール３２が処理エレメント３４のうちの１つにボイスを合成させるように命令するとき、処理エレメント３４のそれぞれは、合成パラメータによって定義される１つまたは複数のインストラクションを実行することができる。再び、これらのインストラクションは、プログラムＲＡＭ装置４４Ａあるいは４４Ｎにロードされることができる。プログラムＲＡＭ装置４４Ａあるいは４４Ｎへとロードされたインストラクションは、処理エレメント３４のうちのそれぞれ１つにボイスの合成(voice synthesis)を実行させる。例えば、処理エレメント３４は、合成パラメータで指定された波形のために波形フェッチ装置(waveform fetch unit)（ＷＦＵ）に対してリクエストを送信することができる。処理エレメント３４のそれぞれはＷＦＵ３６を使用することができる。処理エレメント３４のそれぞれはＷＦＵ３６を使用することができる。２つ以上の処理エレメント３４が同じ時間においてＷＦＵ３６の使用をリクエストする場合には、ＷＦＵ３６は、いずれのコンフリクト(conflicts)も解決するためにアービトレーションスキーム(arbitration scheme)を使用する。
【００３６】
ピッチインクリメント(pitch increment)、ピッチエンベロップ(pitch envelope)、及びピッチパラメータに対するＬＦＯに基づいて、処理エレメント３４は、与えられたボイスについて与えられたサンプルについての位相インクリメントを計算し(computes)、ＷＦＵ３６に対して位相インクリメントを送信する。ＷＦＵ３６は、現在の出力サンプルの補間値(an interpolated value of the current output sample)を計算するために必要とされる、波形におけるサンプルインデクス(sample indexes)を計算する。ＷＦＵ３６はまた、補間に必要な端数位相(fractional phase)を計算し、リクエストしている処理エレメント３４にそれを送信する。ＷＦＵ３６は、メモリ装置１０に対するアクセスを最小化するためにキャッシング戦略を活用するように設計され、その結果、バスインタフェース３０の混雑を緩和する。
【００３７】
処理エレメント３４のうちの１つからのリクエストに応じて、ＷＦＵ３６は、リクエストしている処理エレメントに、１つまたは複数の波形サンプルを戻す。しかしながら、波は、例えば最高波の１サイクルまで、サンプル内で位相シフトされることができるので、ＷＦＵ３６は、補間を使用してシフトしている位相を補償するために、２つのサンプルを戻すことができる。さらに、ステレオ信号が２つのステレオチャネル(stereophonic channels)についての２つの別個の波を含むことができるので、ＷＦＵ３６は、異なるチャネルについて別個のサンプルを戻すことができ、例えばステレオ出力について最高４つの別個サンプルを結果としてもたらす。
【００３８】
インプリメンテーションの一例においては、波形は、メモリ装置１０に対してアクセスする前に、ＷＦＵ３６がより多くの数の波形サンプルを再使用することを可能にするように、メモリ装置１０内で組織されることができる。１つの基本波形サンプルは、オクターブごとに保存されており、オクターブ内のすべての音符が補間されることができる。各オクターブが選択される基本波形サンプルは、オクターブのより高い周波数のうちの１つ（いくつかのケースにおいて最高周波数）を有するオクターブの音符に対応する。結果として、オクターブの他の音符を生成するようにフェッチされなくてはならないデータの量は低減される。この技術は、サンプルの音符(sample note)がオクターブのより低い周波数帯域においておかれたケースと比べて、多数の回数ヒットされた、キャッシュされた波形サンプルを結果としてもたらすことができ、バスインタフェース３０上で減らされた帯域幅必要要件を結果としてもたらす。聴覚テストが適切な音符を選択することにおいて適用されることができ、メモリ装置１０において保存された基本波形サンプルから作られる、オクターブにおける他の音符について許容可能なサウンド品質を確実にする。
【００３９】
ＷＦＵ３６は処理エレメント３４のうちの１つにオーディオサンプルを戻したあとで、それぞれの処理エレメント(processing element)（ＰＥ）は、オーディオ合成パラメータに基づいて追加のプログラムインストラクションを実行することができる。特に、インストラクションは、処理エレメント３４のうちの１つに、オーディオハードウェア装置２０において低周波数オシレータ(low frequency oscillator)（ＬＦＯ）３８から、非対称三角波(asymmetric triangular wave)をリクエストさせる。ＬＦＯ３８によって戻された三角波で、ＷＦＵ３６によって戻された波形を乗算することによって、それぞれの処理エレメントは、望ましいオーディオ効果を達成するために、波形の様々な音響(sonic)特徴を操作する(manipulate)ことができる。例えば、三角波で波形を乗算することは、むしろ望ましい楽器(musical instrument)に近い音がする波形をもたらすことができる。
【００４０】
合成パラメータに基づいて実行された他のインストラクションは、処理エレメント３４のうちのそれぞれ１つに、特定の数の回数回、波形のループを作らせ(to loop the waveform a specific number of times)、波形の振幅を調節させ、反響(reverberation)を加えさせ、ビブラート効果を加えさせ、あるいは他の効果をもたらさせることができる。このように、処理エレメント３４は、１つのＭＩＤＩフレームが続く(lasts)ボイスについての波形を計算することができる。しだいに、それぞれの処理エレメントは、終了インストラクション(exit instruction)に出くわすことができる。処理エレメント３４のうちの１つが終了インストラクションに出くわすとき、その処理エレメントは、調整モジュール３２に対して、ボイス合成の終了を信号で送る(signals)。計算されたボイス波形は、プログラムインストラクションの実行の間に、別のストアインストラクションの指図で、サミングバッファ(summing buffer)４０に提供されることができる。このことは、サミングバッファ４０に、その計算されたボイス波形を保存させる。
【００４１】
サミングバッファ４０が処理エレメント３４のうち１つから計算された波形を受信するとき、サミングバッファ４０は、ＭＩＤＩフレームについて全体的な波形に関連づけられた適切な時間のインスタンスに対して、計算された波形を加える。したがって、サミングバッファ４０は、複数の処理エレメント３４の出力を組み合わせる。例えば、サミングバッファ４０は、平面波（すなわち、すべてのデジタルサンプルが０である波）を最初に保存することができる。サミングバッファ４０が処理エレメント３４のうちの１つから計算された波形のようなオーディオ情報を受信するとき、サミングバッファ４０は、サミングバッファにおいて保存される波形のそれぞれのサンプルに、計算された波形の各デジタルサンプルを加えることができる。このように、サミングバッファ４０は、フルオーディオフレーム(full audio frame)についての波形の全体的なデジタル表示を蓄積し保存する。
【００４２】
サミングバッファ４０は、処理エレメント３４のうち異なるものから、異なるオーディオ情報を本質的に足す。異なるオーディオ情報は、異なる生成されたボイスに関連づけられた時間の異なるインスタンスを示す。このように、サミングバッファ４０は、与えられたオーディオフレーム内で全体のオーディオコンパイル(an overall audio compilation)を表示するオーディオサンプルを作成する。
【００４３】
しだいに、調整モジュール３２は、処理エレメント３４が現在のＭＩＤＩフレームについて要求されたボイスのすべてを合成することを完了し、サミングバッファ４０に対してこれらのボイスを提供したということを決定することができる。この時点においては、サミングバッファ４０は、現在のＭＩＤＩフレームについての完了した波形を示すデジタルサンプルを含んでいる。調整モジュール３２がこの決定を行なうとき、調整モジュール３２は、ＤＳＰ１２（図１）に対して割り込みを送信する。割り込みに応じて、ＤＳＰ１２は、サミングバッファ４０のコンテンツを受信するために、ダイレクトメモリ交換(direct memory exchange)（ＤＭＥ）を介して、サミングバッファ４０（示されてはいない）における制御装置に対して、リクエストを送ることができる。代替的に、ＤＳＰ１２もまた、ＤＭＥを実行するために、あらかじめプログラムされることができる。ＤＳＰ１２は、そのあとで、アナログドメインへの変換についてＤＡＣ１６にデジタルオーディオサンプルを提供する前に、デジタルオーディオサンプルに関するいずれのポスト処理も実行することができる。重要なことには、フレームＮ＋２に関してオーディオハードウェア装置２０によって実行される処理は、フレームＮ＋１に関してＤＳＰ１２（図１）による合成パラメータ生成と、そして、フレームＮに関してプロセッサ８（図１）によるスケジューリングオペレーションと、同時に生じる。
【００４４】
キャッシュメモリ４８、ＷＦＵ／ＬＦＯメモリ３９、及びリンクされたリストメモリ４２もまた、図２において示されている。キャッシュメモリ４８は、迅速で効率的な方法で基本波形をフェッチするために、ＷＦＵ３６によって使用されることができる。ＷＦＵ／ＬＦＯメモリ３９は、ボイスパラメータセットのボイスパラメータを保存するために、調整モジュール３２によって使用されることができる。このように、ＷＦＵ／ＬＦＯメモリ３９は、波形フェッチ装置３６およびＬＦＯ３８のオペレーション専用のメモリとして見られることができる。リンクされたリストメモリ４２は、ＤＳＰ１２によって生成されたボイスインジケータのリストを保存するために、使用されるメモリを備えることができる。ボイスインジケータは、メモリ１０に保存された１つまたは複数の合成パラメータに対してポインタ(pointers)を備えることができる。リストにおける各ボイスインジケータは、それぞれのＭＩＤＩボイスについてのボイスパラメータセットを保存するメモリロケーションを指定することができる。様々なメモリ及び図２において示されたメモリの配置(arrangement)は、単に例示である。ここにおいて説明された技術は、様々な他のメモリ配置でインプリメントされることができるであろう。
【００４５】
図３は、本開示にしたがった図２のＷＦＵ３６の一例のブロック図である。図３において示されているように、ＷＦＵ３６は、アービター(arbiter)５２、合成パラメータインタフェース５４、フェッチ装置５６、およびキャッシュ５８を含むことができる。ＷＦＵ３６は、外部メモリに対するアクセスを最小化するためにキャッシング戦略を利用するように設計されており、その結果、バス混雑を緩和する。下記でさらなる詳細で説明されているように、アービター５４は、複数のオーディオ処理エレメント３４から受信されるリクエストを扱うために、修正されたラウンドロビンアービトレーションスキーム(a modified round-robin arbitration scheme)を利用することができる。
【００４６】
ＷＦＵ３６は、オーディオ処理エレメント３４のうちの１つから波形サンプルについてのリクエストを受信する。リクエストは、新しい位相値を得るために現在の位相に加えられるべき位相インクリメントを示すことができる。新しい位相値の整数部分は、フェッチされるべき波形サンプルの物理アドレスを生成するために使用される。位相値の端数部分(fractional part)は、補間に使用するオーディオ処理エレメント３４にフィードバックされる。あるオーディオ処理、例えばＭＩＤＩ合成は、次のサンプルにうつる前に、隣接サンプルを大いに使用するので、波形サンプルのキャッシングは、バスインタフェース３０上でオーディオハードウェア装置２０によって帯域幅の必要要件を減らすことを助ける。ＷＦＵ３６はまた、８−ビットモノ(8-bit mono)、８−ビットステレオ(8-bit stereo)、１６−ビットモノ、あるいは１６−ビットステレオのような、マルチプルオーディオパルスコード変調(multiple audio pulse code modulation)（ＰＣＭ）フォーマットをサポートする。ＷＦＵ３６は、オーディオ処理エレメント３４に波形サンプルを戻す前に、一定のＰＣＭフォーマットに波形サンプルを再フォーマット化することができる。例えば、ＷＦＵ３６は、１６ビットのステレオのフォーマットの波形サンプルを戻すことができる。
【００４７】
合成パラメータインタフェース５４は、例えばＷＦＵ／ＬＦＯメモリ３９（図２）内で、合成パラメータＲＡＭから波形特有合成パラメータ(Waveform-specific synthesis parameters)をフェッチするために使用されている。波形特有合成パラメータは、例えば、ループビギンインジケータ及びループエンドインジケータ(loop begin and loop end indicators)を含むことができる。別の例として、波形特有合成パラメータは、合成ボイスレジスタ(synthesis voice register)（ＳＶＲ）制御ワードを含むことができる。波形特有の合成パラメータは、どのようにＷＦＵ３６が波形サンプルリクエストをサービス提供するかに影響を与える。例えば、ＷＦＵ３６は、波形サンプルがループであるか、あるいはノンループであるか（「１−ショット限り(one-shot)」）を決定するためのＳＶＲ制御ワードを使用し、代わりに、キャッシュ５８あるいは外部メモリにおいて波形サンプルを配置することにおいて使用される波形サンプル数をどのようにＷＦＵ３６が計算するかに影響を与える。
【００４８】
合成パラメータインタフェース５４は、ＷＦＵ／ＬＦＯメモリ３９から波形特有合成パラメータを検索し、ＷＦＵ３６は、合成パラメータインタフェース５４上のアクティビティをローカルに減らすために、波形特有合成パラメータをバッファすることができる。ＷＦＵ３６がオーディオ処理エレメント３４のうちの１つからリクエストをサービス提供することが出来る前に、ＷＦＵ３６は、ローカルにバッファされたオーディオ処理エレメントによってリクエストされる波形に対応する合成パラメータを有さなくてはならない。オーディオ処理エレメント３４のうちのそれぞれが合成する別のボイスが与えられ、あるいは、合成パラメータインタフェース５４が合成パラメータを無効にする調整モジュール３２によって命令されるときのみ、合成パラメータは、無効となる。その結果、ＷＦＵ３６は、リクエストされた波形サンプルのフォーマットのみが１つのリクエストから次のリクエストへと変更したとき（例えば、モノからステレオへ、あるいは８ビットから１６ビットへ）、合成パラメータを再プログラムする必要がない。ＷＦＵ３６が、それぞれのオーディオ処理エレメントのリクエストについてバッファされた有効な合成パラメータを有さない場合には、アービター５２は、最も低いプライオリティにリクエストをバンプ(bump)させてもよく、フェッチ装置５６は、合成パラメータが有効である（すなわち、リクエストされた波形に対応する合成パラメータがバッファされる）別のオーディオ処理エレメント３４をサービス提供することができる。合成パラメータインタフェース５４が検索し、対応する合成パラメータをローカルにバッファするまで、ＷＦＵ３６は、オーディオ処理エレメントのそれぞれのリクエストをバンプさせることを継続することができる。このように、ＷＦＵ３６は、リクエストに移る前に有効となる無効合成パラメータを待機する必要がないので、不必要なストール(stalls)は回避されることができる、しかし、代わりに、無効合成パラメータを用いてリクエストをバンプさせ、そして、合成パラメータが有効な他のリクエストをサービス提供することに移ることができる。
【００４９】
合成パラメータインタフェース５４は、任意のオーディオ処理エレメント３４についての合成パラメータを無効にすることができる（消すということではない）。フェッチ装置５６及び合成パラメータインタフェース５４が異なるオーディオ処理エレメント３４に同時に作用している場合には、何も問題は生じない。しかしながら、両方の合成パラメータインタフェース５４とフェッチ装置５６が、同じオーディオ処理エレメント３４についての波形特定合成パラメータ（すなわち、フェッチ装置５６は、合成パラメータインタフェース５４がそれらに上書きをすることを試みている間に合成パラメータ値を読み取る）に作用しているケースにおいて、フェッチ装置５６は、先にたって(take precedence)、フェッチ装置５６のオペレーションが完了するまで合成パラメータインタフェース５４がブロックすることをもたらす。したがって、合成パラメータインタフェース５４からの合成パラメータ無効リクエストは、いったん、もしあるとしても、オーディオ処理エレメント３４が完了するということに関して、現在実行しているフェッチ装置５６のオペレーションが完了すると、効力を生ずるであろう。合成パラメータインタフェース５４は、合成パラメータの環状バッファリング(circular buffering)を強化することができる。
【００５０】
ＷＦＵ３６は、オーディオ処理エレメント３４のそれぞれについてキャッシュ５８内で別個のキャッシュスペースを保持することができる。結果、ＷＦＵ３６がオーディオ処理エレメント３４のうちの１つから別のものへとサービス提供することを切り替えるときには、コンテキストの切り替えはない。キャッシュ５８は、ラインのサイズ＝１６バイト、セット＝１、方法＝１として分類されることができる(may be sized)。フェッチ装置５６は、要求された波形サンプルがキャッシュ５８内にあるかどうかを決定するために、キャッシュ５８をチェックする。キャッシュミスが生じるときには、フェッチ装置５６は、基本波形に対する現在のポインタと波形サンプル数に基づいた外部メモリ内で要求されたデータの物理的なアドレスを計算することができ、キューに、外部メモリから波形サンプルをフェッチするインストラクションを置くことができる。そのインストラクションは、計算された物理アドレスを含むことができる。検索モジュール５７はキューをチェックし、外部メモリからキャッシュラインを検索するためにキューにおけるインストラクションをみるときに、検索モジュール５７は、外部メモリからのデータと、キャッシュ５８内で現在のキャッシュラインを置き換えるためにバーストリクエスト(burst request)を開始する。検索モジュール５７は、外部メモリからキャッシュラインを検索したとき、フェッチ装置５６は、リクエストを完了する。検索モジュール５７は、キャッシュ５８に対する書き込みオペレーションを扱うこと同様に、外部メモリからバーストデータを検索することに対応することができる(may be responsible for)。検索モジュール５７は、フェッチ装置５６からの別個の有限状態機械(a separate finite state machine)であってもよい。したがって、フェッチ装置５６は、オーディオ処理エレメント３４からの他のリクエストを自由に扱ってもよいが、検索モジュール５７は、キャッシュラインを検索する。結果として、キャッシュヒット及びキャッシュミスの両方において生じるリクエストは、リクエストについての合成パラメータが有効で、オーディオ処理エレメントインタフェース５０がビジー(busy)でない限り、ＷＦＵ３６によってサービス提供されることができる。インプリメンテーションに依存して、検索モジュール５７は、キャッシュメモリ４８（図２）から、あるいはメモリ装置１０（図１）から、キャッシュラインを検索することができる。
【００５１】
他の実施形態においては、アービター５２は、リクエストについての波形サンプルのうちいくつがキャッシュ内ですでに存在しているかに基づいて、オーディオ処理エレメントリクエストをフェッチ装置５６がサービス提供することを可能にする。例えば、アービター５２は、リクエストされた波形サンプルがキャッシュ５８内で現在存在しないときには、最も低いプライオリティにリクエストをバンプさせてもよく、したがって、波形サンプルがキャッシュ５８において早く存在するリクエストをサービス提供する。オーディオ処理エレメント３４をスターブされる(from being starved)ことから防ぐために（すなわち、そのリクエストは、決してサービス提供されない）、もしそのリクエストされた波形サンプルがキャッシュ内にない場合、アービター５２は、バンプされたリクエストを「スキップした」としてフラグをつけることができる。スキップされたリクエストが２回目に現れるとき、スキップされたフラグは、アービター５２を再びリクエストをバンプすることから防ぐためにオーバーライドとして作用し、波形は、外部メモリから検索されることができる。望まれる場合には、増大されているプライオリティのいくつかのフラグは、アービター５２によるマルチプルスキップを可能にするために使用されることができるであろう。
【００５２】
アービター５２は、オーディオ処理エレメント３４からの入って来るリクエストを仲裁することに対応する(is responsible)。フェッチ装置５６は、どのサンプルを戻すかを決定することに必要とされた計算を実行する。アービター５２は修正されたラウンドロビンアービトレーションスキームを使用する。リセットされたときに、ＷＦＵ３６は、オーディオ処理エレメント３４のそれぞれにデフォルトプライオリティを割り当てており、例えば、オーディオ処理エレメント３４Ａは、最も高く、オーディオ処理エレメント３４Ｎは、最も低い。リクエストは、標準ラウンドロビンアービターを使用して、最初に仲裁される。しかしながら、この初期アービトレーションの勝者(winner)は、フェッチ装置５６に対するアクセスを必ずしも与えられない。代わりに、リクエストは、そのＳＶＲデータが有効かどうか、対応するオーディオ処理エレメントインタフェース５０がビジーかどうか、についてチェックされる。これらのチェックは、「勝利(win)」条件を作成するために組み合わせられる。いくつかの実施形態においては、追加チェックは、勝利条件(win condition)に必要であるかもしれない。勝利条件が生じる場合、オーディオ処理エレメントのリクエストはサービス提供される。勝利条件は、特定のリクエストについて生じない場合には、アービター５２は、オーディオ処理エレメントのリクエストをさげてバンプさせ、次のオーディオ処理エレメントのリクエストの同様なチェックに移る。リクエストについてのＳＶＲデータが無効である、あるいはオーディオ処理エレメントインタフェース５０がビジーである、のいずれかのケースにおいて、リクエストは、リクエストについて計算がされないので、無限に(indefinitely)バンプさせられることができる。したがって、それらの合成パラメータが無効あるいはそれらのオーディオ処理エレメントインタフェースがビジーである場合には、オーディオ処理エレメントのリクエストはサービス提供されないので、ラウンドロビンアービトレーションは「修正された(modified)」に当てはまる(referred to)。
【００５３】
ＷＦＵ３６はまた、テストモードにおいて動作することができ、なお、ＷＦＵ３６は、厳密なラウンドロビン機能性を強化する。すなわち、アービター５２は、リクエストに、オーディオ処理エレメント３４Ａ、オーディオ処理エレメント３４Ｂ・・・オーディオ処理エレメント３４Ｎから順に、オーディオ処理エレメント３４Ａに戻って、等と、サービス提供させることをもたらす。このことは、オーディオ処理エレメント３４Ａがノーマルモードにおいて最も高いプライオリティを有していたとしても、ノーマルモードの機能において異なり、オーディオ処理エレメント３４Ａがリクエストを有さずオーディオ処理エレメント３４Ｂがリクエストを有している場合には、ＷＦＵ３６は、オーディオ処理エレメント３４Ｂをサービス提供する。
【００５４】
いったんオーディオ処理エレメント３４がアービトレーションを成功して勝ち取ると、リクエストは２つの部分、第１波形サンプル（Ｚ１と表示される）を検索することと、第２波形サンプル（Ｚ２と表示される）を検索することと、に分けられることができる。リクエストがＰＥから入ってくるとき、フェッチ装置５６は、現在の位相に対してリクエストで提供される位相インクリメントを加え、整数及び端数のコンポーネントを備えた最終位相(final phase)を結果としてもたらす。インプリメンテーションによって、和が飽和されてもよく、あるいはロールオーバーする(roll over)こと（すなわち、循環バッファリング）が可能にされてもよい。勝利条件がリクエストについて存在する場合、フェッチ装置５６は、リクエストしているオーディオ処理エレメント３４についてオーディオ処理エレメントインタフェース５０に対して端数位相コンポーネントを送る。整数位相コンポーネントを使用して、フェッチ装置５６は次の方法でＺ１を計算する。波形タイプが１−ショットの場合（すなわち、ＳＶＲ制御の用語によって決定されるように、ループされていない）、フェッチ装置５６は、整数位相コンポーネントと等しいＺ１を計算する。波形タイプがループされ、オバーシュートがない場合、フェッチ装置５６は、整数位相コンポーネントと等しいＺ１を計算する。波形タイプがループされ、オバーシュートがある場合には、フェッチ装置５６は、整数位相コンポーネントからループ長さを引いたものと等しいＺ１を計算する。
【００５５】
いったんフェッチ装置５６がＺ１を計算すると、フェッチ装置５６は、Ｚ１に対応する波形サンプルがキャッシュ５８に現在キャッシュされるかどうかを決定する。キャッシュヒットが生じる場合、フェッチ装置５６はキャッシュ５８から波形サンプルを検索し、リクエストしている処理エレメントのオーディオ処理エレメントインタフェース５０に対してそれを送る。キャッシュミスの場合には、フェッチ装置５６は、キューに、外部メモリから波形サンプルをフェッチするようにインストラクションを配置する。検索モジュール５７は、キューをチェックし、また、外部メモリからキャッシュラインを検索するためにキューにおけるインストラクションを見るとき、検索モジュール５７は、外部メモリのバースト読み取り(a burst read)を始め、そのあとで、バースト読み取りの間に検索されたコンテンツと、現在のキャッシュラインを置き換える。当業者は、キャッシュミスのケースの場合（タグ数は、キューにおけるタグ数のと同じ値ではない）、検索モジュール５７は、現在のキャッシュラインを置き換える前に、ＷＦＵ３６内の別のメモリにおいてバースト読み取りを実行することができるということを理解するであろう。他のメモリは、キャッシュメモリであってもよい。一例として、キャッシュ５８は、Ｌ１キャッシュであってもよく、他のメモリはＬ２キャッシュであってもよい。したがって、検索モジュール５７がバースト読み取りを実行することは、メモリのロケーション（ＷＦＵ３６の内側あるいは外側であるかどうか）と、キャッシング戦略と、に依存することができる。検索モジュール５７がキャッシュラインを検索する一方で、フェッチ装置５６は、オーディオ処理エレメント３４からの他のリクエストを自由に扱ってもよい。波形ルックアップ値(waveform look-up values)は読み取り専用なので、フェッチ装置５６は、検索モジュール５７が外部のメモリから新しいキャッシュラインを検索するときに、いずれの既存キャッシュラインを廃棄する(discard)ことができる。整数の位相コンポーネントがオーバーシュートするあるいは、波形が１−ショットであるケースにおいて、フェッチ装置５６は、オーディオ処理エレメントインタフェース５０に対して、サンプルとして０×０を送信することができる。いったんフェッチ装置３４がリクエストしているオーディオ処理エレメントインタフェース５０に対して、Ｚ１に対応する波形サンプルを送信すると、フェッチ装置５６は、波形サンプルＺ２に関する同様なオペレーションを実行し、なお、Ｚ２は、Ｚ１に基づいて計算される。
【００５６】
各リクエストについては、フェッチ装置５６は、少なくとも２つの波形サンプルを、サイクルごとに１つ(one per cycle)戻すことができる。ステレオ波形のケースにおいては、フェッチ装置５６は、４つの波形サンプルを戻すことができる。さらに、フェッチ装置５６は、オーディオ処理エレメント３４のインプリメンテーションが補間のためにそれを必要とする場合、端数位相を戻すことができる。オーディオ処理エレメントインタフェース５０は、オーディオ処理エレメント３４に対して波形サンプルを押し出す(pushes)。単独のオーディオ処理エレメントインタフェース５０として図示されているにもかかわらず、オーディオ処理エレメントインタフェース５０は、いつかのケースにおいて、オーディオ処理エレメント３４のそれぞれについての別個のインスタンスを含むことができる。オーディオ処理エレメントインタフェース５０は、オーディオ処理エレメント３４のそれぞれについて３セットのレジスタ、すなわち、端数位相を保存するための１６−ビットのレジスタ、そして第１及び第２のサンプルを保存するための２つの３２−ビットレジスタ、をそれぞれ使用することができる。オーディオ処理エレメント３４がアービトレーションに勝ち、フェッチ装置５６によってサービス提供されるときには、端数位相は、オーディオ処理エレメントインタフェース５０によって、登録される。オーディオ処理エレメントインタフェース５０は、すべてのデータが利用可能となるように待機することなく、適切なオーディオ処理エレメント３４にデータを押し出すことを始めることができ、次に必要とされるデータの一部がまだ利用可能でないときにのみ、ストールする。
【００５７】
インプリメンテーションの一例において、ＷＦＵ３６は、一緒に機能しているマルチプル有限状態機械(finite state machines)（ＦＳＭｓ）によって制御されることができる。例えば、ＷＦＵ３６は、オーディオ処理エレメントインタフェース５０のそれぞれについての個別のＦＳＭｓ（ＷＦＵ３６からオーディオ処理エレメント３４へのデータの移動(migration)を管理するための）、フェッチ装置５６（キャッシュ５８でインタフェース接続するための）、検索モジュール５７（外部メモリでインタフェース接続するための）、合成パラメータインタフェース５４（合成パラメータＲＡＭでインタフェース接続するための）、アービター５２（オーディオ処理エレメントから入ってくるリクエストを仲裁し、そしてどのサンプルを戻すかを決定するために必要とされた計算を実行するための）を含むことができる。波形サンプルをフェッチするために、及び、ＷＦＵ３６からオーディオ処理エレメント３４へのデータの転送を管理するために、個別のＦＳＭｓを使用することによって、アービター５２は、オーディオ処理エレメントインタフェース５０は波形サンプルを転送しているが他のリクエストしているオーディオ処理エレメントをサービス提供することが自由化される。フェッチ装置５６がリクエストされた波形サンプルがキャッシュ５８において存在しないということを決定するとき、フェッチ装置５６は、キューにおいて外部メモリからキャッシュラインを受信するためにインストラクションを置き、次のリクエストを自由にサービス提供する一方で、検索モジュール５７は、外部メモリからキャッシュラインを検索する。フェッチ装置５６がキャッシュ５８、内部バッファ、あるいは外部メモリからデータを受信するとき、フェッチ装置５６がリクエストしているオーディオ処理エレメントにデータを押し出すことよりもむしろ、フェッチ装置５６は、対応しているオーディオ処理エレメントにデータを押し出し、その結果、フェッチ装置５６が別のリクエストに移りサービス提供することを可能にする。このことは、オーディオ処理エレメントがすぐにデータを承認しないときには、ハンドシェークコスト(handshaking cost)及び関連の遅延を回避する。
【００５８】
図４は、本開示の教示に一貫した例示的な技術を図示しているフロー図である。アービター５２は、オーディオ処理エレメント３４からの波形サンプルについての入ってくるリクエストを仲裁するために修正されたラウンドロビンアービトレーションスキームを使用する。ＷＦＵ３６は、オーディオ処理エレメント３４のそれぞれに、デフォルトプライオリティを割り当てており、例えば、オーディオ処理エレメント３４Ａは、最も高く、オーディオ処理エレメント３４Ｎは、最も低い。リクエストがサービス提供されることを待機しているとき（６０）、アービター５２は、サービス提供されるべき次のオーディオ処理エレメントを選択するために、標準ラウンドロビンアービトレーションスキームを使用する。待機しているリクエストは、次にサービス提供されるオーディオ処理エレメントに対応する場合には（６２）、リクエストは、勝利条件についてチェックされる（６４）。例えば、リクエストは、波形サンプルについての合成パラメータデータが有効かどうか（すなわち、ローカルでバッファされる）、及び、対応するオーディオ処理エレメントインタフェース５０がビジーであるかどうか、についてチェックされることができる。これらのチェックのすべては、勝利条件を作成するために組み合わせられる。勝利条件が生じる場合（６４のＹＥＳ分岐）、フェッチ装置５６は、オーディオ処理エレメントのリクエストをサービス提供する（６６）。他の実施形態は、異なるチェックを有してもよい。
【００５９】
リクエストについての合成パラメータが無効であり、および／または、オーディオ処理エレメントインタフェース５０がビジーであるケースにおいては（６４のＮＯ分岐）、アービター５２は、リクエストについていずれの計算も行われないので、最も低いプライオリティにリクエストをバンプさせることができる（６６）。この技術を使用することによって、ＷＦＵ３６は、キャッシュヒットを結果としてもたらすリクエストと、タイムリーな方法でサービス提供されるキャッシュミスを結果としてもたらすリクエストと両方をサービス提供する。
【００６０】
図５は、本開示の教示と一貫して、例示的な技術を図示しているフロー図である。リクエストがアービトレーションに勝つときには（８０）、ＷＦＵ３６は、以下のようにリクエストをサービス提供することができる。フェッチ装置５６は、現在の位相に対してリクエストで提供された位相インクリメントを追加し、整数及び端数コンポーネントで最終位相を結果としてもたらす（８２）。フェッチ装置５６は、そのあと、補間に使用されるリクエストしているオーディオ処理エレメント３４に押し出されるべき、オーディオ処理エレメントインタフェース５０に対して端数位相コンポーネントを送信する（８４）。上述されるように、ＷＦＵ３６は、例えば位相シフト、あるいは、マルチプルチャネルを説明するために、リクエストしているオーディオ処理エレメントに対してマルチプル波形サンプルを戻すことができる。フェッチ装置５６は、整数位相コンポーネントを使用して、波形サンプルの波形サンプル数を計算する（８６）。波形タイプが１−ショットであるとき、（すなわち、ＳＶＲ制御ワードによって決定されるように、ループされていない）、フェッチ装置５６は、整数位相コンポーネントと等しい第１の波形（Ｚ１）を計算する。波形タイプがループされ、オバーシュートがない場合、フェッチ装置５６は、整数位相コンポーネントと等しいＺ１を計算する。波形タイプがループされ、オバーシュートがある場合、フェッチ装置５６は、整数位相コンポーネントからループ長さを差し引いたものと等しいＺ１を計算する。
【００６１】
いったんフェッチ装置５６がＺ１を計算すると、フェッチ装置５６は、波形サンプル数Ｚ１に対応する波形サンプルがキャッシュ５８に現在キャッシュされるかどうかを決定する（８８）。キャッシュヒットは、現在キャッシュされた波形サンプルを識別しているタグ（すなわち、キャッシュタグ）に対して、波形サンプル数をチェックすることによって、決定されることができる。このことは、リクエストされた波形サンプルの波形サンプル数（すなわち、Ｚ１あるいはＺ２）からキャッシュタグ値（すなわち、キャッシュ５８で現在保存された第１のサンプルを識別しているタグ）を差し引くことによって行われる。その結果が０よりも大きく、キャッシュラインごとのサンプルの数よりも少ない場合には、キャッシュヒットが生じる。そうでなければ、キャッシュミスが生じる。キャッシュヒットが生じる場合（９０のＹＥＳ分岐）、フェッチ装置５６は、キャッシュ５８から波形サンプルを検索し（９２）、オーディオ処理エレメントインタフェース５０に波形サンプルを送信し、そしてそれは、リクエストしている処理エレメント３４に、波形サンプルを出力する（９４）。キャッシュミスの場合（９０のＮｏ分岐）には、フェッチ装置５６は、キューに、外部メモリから波形サンプルを検索するために、インストラクションを置く（９６）。検索モジュール５７がキューをチェックし、リクエストを見るとき、検索モジュール５７は、外部メモリからのラインと現在のキャッシュラインを置き換えるために、バースト読み取りを開始する（９８）。フェッチ装置５６は、そのあとで、キャッシュ５８から波形サンプルをフェッチする（９２）。波形サンプルを送信する前に、ＷＦＵ３６は、あるケースにおいて、波形サンプルを再フォーマットすることができる（９４）。例えば、フェッチ装置５６は、波形サンプルがすでに１６−ビットのステレオフォーマットではない場合には、波形サンプルを１６−ビットのステレオフォーマットに変換することができる。このような方法で、オーディオ処理エレメント３４は、ユニフォームフォーマットにおいてＷＦＵ３６から波形サンプルを受信する。オーディオ処理エレメント３４は、再フォーマット化に関する計算サイクル(computation cycles)を費やすことなく、すぐに受信された波形サンプルを使用することができる。ＷＦＵ３６は、オーディオ処理エレメントインタフェース５０に対して、波形サンプルを送信する（９５）。フェッチ装置５６がＺ１に対応する波形サンプルを送信した後で、フェッチ装置５６は、波形サンプルＺ2、及びリクエストをサービス提供するために必要とされたいずれの追加の波形サンプルに関して同様なオペレーションを実行する（１００）。
【００６２】
様々な例が開示において説明されてきた。ここにおいて説明された技術の1つまたは複数の態様は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらの組み合わせで、インプリメントされることができる。モジュールあるいはコンポーネントとして説明されるいずれの特徴も、集積された論理デバイスにおいて一緒に、あるいは、相互運用性のある論理デバイスだがディスクリートとして別々に、インプリメントされることができる。ソフトウェアにおいてインプリメントされる場合、技術の1つまたは複数の態様は、実行されるときに上記で説明される方法の１つまたは複数を実行するインストラクションを備えているコンピュータ可読メディアによって少なくとも部分的に実現されることができる。コンピュータ可読データストレージメディアは、コンピュータプログラムプロダクトの一部を形成することができ、そしてそれは、パッケージング材料(packaging materials)を含んでいてもよい。コンピュータ可読メディアは、例えばシンクロナス動的ランダムアクセスメモリ(synchronous dynamic random access memory)（ＳＤＲＡＭ）、読み取り専用メモリ(read-only memory)（ＲＯＭ）、不揮発性ランダムアクセスメモリ(non-volatile random access memory)（ＮＶＲＡＭ）、電子的消去可能プログラマブル読み取り専用メモリ(electrically erasable programmable read-only memory)（ＥＥＰＲＯＭ）、ＦＲＡＳＨメモリ、磁気あるいは光学データストレージメディア、及び同様なもの、のようなランダムアクセスメモリ(random access memory)（ＲＡＭ）を備えていてもよい。技術は、追加的にあるいは代替的に、インストラクションあるいはデータ構造の形でコードを搬送するあるいは通信する、また、コンピュータによってアクセスされ、読み取られ、及び／または実行されることができる、コンピュータ可読通信メディアによって少なくとも一部分において実現されることができる。
【００６３】
そのインストラクションは、例えば１つまたは複数のデジタルシグナルプロセッサ(digital signal processors)（ＤＳＰｓ）、汎用マイクロプロセッサ、特定用途向け集積回路(application specific integrated circuits)（ＡＳＩＣｓ）、フィールドプログラマブルロジックアレイ(field programmable logic arrays)（ＦＰＧＡｓ）、あるいは他の均等な集積されたあるいはディスクリートなロジック回路(other equivalent integrated or discrete logic circuitry)、のような１つまたは複数のプロセッサによって実行されることができる。したがって、ここにおいて使用される用語「プロセッサ(processor)」は、いずれの前述の構造あるいは、ここにおいて説明される技術のインプリメンテーションに適切ないずれの他の構造も指していてもよい。さらに、いくつかの態様においては、ここにおいて説明された機能性は、本開示の技術を実行するように構成されたあるいは適用された、専用のソフトウェアモジュールあるいはハードウェアモジュール内で提供されることができる。
【００６４】
ハードウェアにおいてインプリメントされる場合には、本開示の１つまたは複数の態様は、集積回路、チップセット、ＡＳＩＣ、ＦＰＧＡ、論理、あるいは、ここにおいて説明された技術のうち１つまたは複数を実行するように構成されたあるいは適用されたそれらの様々な組み合わせ、のような回路に向けられうる。回路は、集積回路あるいはチップセットにおいて、ここにおいて説明されているように、両方のプロセッサと、１つまたは複数のハードウェア装置の両方を含むことができる。
【００６５】
回路は上記で説明される機能のうちのいくつかあるいはすべてをインプリメントすることができるということを当業者が認識するであろうということもまた注目すべきである。すべての機能をインプリメントする１つの回路があってもよく、あるいは、機能をインプリメントする回路の複数のセクション(multiple sections)もまたあってもよい。現在のモバイルプラットフォーム技術を用いて、集積回路は、少なくとも1つのＤＳＰと、ＤＳＰあるいはＤＳＰｓを制御し及び／または通信する少なくとも１つの高度な縮小インストラクションセットコンピュータ（ＲＩＳＣ）マシン（ＡＲＭ）プロセッサ(Advanced Reduced Instruction Set Computer (RISC) Machine (ARM) processor)と、を備えることができる。さらに、回路は、いくつかのセクションにおいて、設計されるあるいはインプリメントされることができ、また、いくつかのケースにおいては、セクションは、本開示において説明される異なる機能を実行するように再び使用されることができる。
【００６６】
様々な態様及び例が説明されてきた。しかし、修正は、以下のクレームの範囲から逸脱することなく、本開示の構造あるいは技術に対して行われることができる。例えば、他のタイプのデバイスは、ここに説明されたオーディオ処理技術をさらにインプリメントすることができる。これらおよび他の実施形態は、以下のクレームの範囲内にある。
【図１】
2010522360.tif 000003
【図２】
2010522360.tif 000004
【図３】
2010522360.tif 000005
【図４】
2010522360.tif 000006
【図５】
2010522360.tif 000007
【国際調査報告】
2010522360.tif 000008
2010522360.tif 000009
2010522360.tif 000010
2010522360.tif 000011
2010522360.tif 000012