(57)【要約】  この開示は望ましい利得および望ましい周波数を有する３角波を形成する１セットのデータポイントを発生するための技術を記述する。１つの例では、この方法は３角波の望ましい周波数および望ましい利得に基づいて増分値を決定するステップ（ａ）を含む。この方法はさらに次のデータポイントを発生するために現在のデータポイントにこの増分値を加算するステップ（ｂ）を含み、現在のデータポイントおよび次のデータポイントは１セットのデータポイントのサブセットを形成する。この方法はさらに３角波を形成するセットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行するステップを含む。
2010522502.tif 000002
【特許請求の範囲】
【請求項１】
望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための方法、該方法は下記を具備する：
（ａ）該３角波の該望ましい周波数および該望ましい利得に基づいて増分値を決定する；
（ｂ）次のデータポイントを発生するために現在のデータポイントに該増分値を加算する、該現在のデータポイントおよび該次のデータポイントは該セットのデータポイントのサブセットを形成する；および
該３角波を形成する該セットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行する。
【請求項２】
ここにおいて（ａ）および（ｂ）を反復して実行することに関する該ステップが下記を含む請求項１記載の方法：
第３のデータポイントを発生するために該次のデータポイントに該増分値を加算する、該現在のデータポイント、該次のデータポイント、および該第３のデータポイントは該セットのデータポイントの新しいサブセットを形成する。
【請求項３】
ここにおいて該増分値が１セットのレシオから選択される、該レシオは該３角波の望ましい正の利得、望ましい負の利得、および該望ましい周波数に対応する、請求項１記載の方法。
【請求項４】
ここにおいて該望ましい正の利得および該望ましい負の利得が互いに等しい請求項３記載の方法。
【請求項５】
さらに下記を具備する、請求項３記載の方法：
該３角波の該望ましい周波数に基づいて位相増加量を決定する；
次の位相データポイントを発生するために現在の位相データポイントに該位相増加量を加算する；および
該次の位相データポイントの該値に基づいて該増分値を選択する。
【請求項６】
ここにおいて該セットのレシオが４つのレシオを含むおよび該増分値の該選択が該次の位相データポイントの該２つの最上位ビットに基づいている請求項５記載の方法。
【請求項７】
ここにおいて該位相増加量の該選択が位相累算器内の該ビット数および該３角波の望ましい周波数に基づいている請求項５記載の方法。
【請求項８】
さらに下記を具備する、請求項５記載の方法：
該現在のデータポイントが負であるおよび該現在のデータポイントおよび該増分値の該合計が正である時に該次のデータポイントをゼロにすることを強いる。
【請求項９】
さらに下記を具備する、請求項５記載の方法：
該現在の位相データポイントの該最上位ビットが１であるおよび該次の位相データポイントの該最上位ビットがゼロである時に該次のデータポイントをゼロにすることを強いる。
【請求項１０】
ここにおいて該３角波が低周波数発振器の該出力である、請求項１記載の方法。
【請求項１１】
ここにおいて該低周波数発振器がミディ（ＭＩＤＩ）ハードウェア実施の形態内において使用される、請求項１０記載の方法。
【請求項１２】
望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための装置、該装置は下記を具備する：
該３角波の該望ましい周波数および該望ましい利得に基づいて増分値を決定する電気回路；および
次のデータポイントを発生するために現在のデータポイントに該増分値を加算する加算器、該現在のデータポイントおよび該次のデータポイントは該セットのデータポイントのサブセットを形成する
ここにおいて該３角波を形成する該セットのデータポイントを発生するために該電気回路は増分値を反復して決定するおよび該加算器は該増分値を連続するデータポイントに反復して加算する。
【請求項１３】
ここにおいて該加算器が第３のデータポイントを発生するために該次のデータポイントに該増分値を加算する、該現在のデータポイント、該次のデータポイント、および該第３のデータポイントが該セットのデータポイントの新しいサブセットを形成する、請求項１２記載の装置。
【請求項１４】
ここにおいて該電気回路が１セットのレシオから該増分値を選択する選択ユニットを具備する、該レシオは該３角波の望ましい正の利得、望ましい負の利得、および該望ましい周波数に対応する、請求項１２記載の装置。
【請求項１５】
ここにおいて該望ましい正の利得および該望ましい負の利得が互いに等しい請求項１４記載の装置。
【請求項１６】
ここにおいて該電気回路がさらに下記を具備する、請求項１４記載の装置：
該３角波の該望ましい周波数に基づいて位相増加量を決定する位相計算ユニット；および
次の位相データポイントを発生するために該位相増加量を現在の位相データポイントに加算する第２の加算器；
ここにおいて該選択ユニットが該次の位相データポイントの該値に基づいて該増分値を選択する。
【請求項１７】
ここにおいて該セットのレシオが４つのレシオを含むおよび該選択ユニットが該次の位相データポイントの該２つの最上位ビットに基づいて該増分値を選択する請求項１６記載の装置。
【請求項１８】
ここにおいて該位相計算ユニットが位相累算器内の該ビット数および該３角波の該望ましい周波数に基づいて該位相増加量を決定する請求項１６記載の装置。
【請求項１９】
さらに下記を具備する、請求項１６記載の装置：
該現在のデータポイントが負であるおよび該現在のデータポイントおよび該増分値の該合計が正である時に該次のデータポイントをゼロにすることを強いるゼロ強制論理ブロック。
【請求項２０】
さらに下記を具備する、請求項１６記載の装置：
該現在の位相データポイントの該最上位ビットが１であるおよび該次の位相データポイントの該最上位ビットがゼロである時に該次のデータポイントを強いてゼロにさせるゼロ強制論理ブロック。
【請求項２１】
該３角波を形成する該セットのデータポイントをプロセッサに出力する低周波数発振器をさらに具備する、請求項１２記載の装置。
【請求項２２】
ここにおいて該低周波数発振器がミディ（ＭＩＤＩ）ハードウェア実施の形態内において使用される、請求項２１記載の装置。
【請求項２３】
望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための装置、該装置は下記を具備する：
該３角波の該望ましい周波数および該望ましい利得に基づいて増分値を決定するための第１の手段；および
次のデータポイントを発生するために現在のデータポイントに該増分値を加算するための第２の手段、該現在のデータポイントおよび該次のデータポイントは該セットのデータポイントのサブセットを形成する；
ここにおいて該３角波を形成する該セットのデータポイントを発生するために該第１の手段は増分値を反復して決定するおよび該第２の手段は該増分値を連続するデータポイントに反復して加算する。
【請求項２４】
さらに下記を具備する、請求項２３記載の装置：
第３のデータポイントを発生するために該次のデータポイントに該増分値を加算するための手段、該現在のデータポイント、該次のデータポイント、および該第３のデータポイントは該セットのデータポイントのサブセットを形成する。
【請求項２５】
さらに下記を具備する、請求項２２記載の装置：
該増分値を１セットのレシオから選択するための手段、該レシオは該３角波の望ましい正の利得、望ましい負の利得、および該望ましい周波数に対応する。
【請求項２６】
ここにおいて該望ましい正の利得および該望ましい負の利得が互いに等しい請求項２５記載の装置。
【請求項２７】
さらに下記を具備する、請求項２５記載の装置：
該３角波の該望ましい周波数に基づいて位相増加量を決定するための手段；
次の位相データポイントを発生するために現在の位相データポイントに該位相増加量を加算するための手段；および
該次の位相データポイントの該値に基づいて該増分値を選択するための手段。
【請求項２８】
ここにおいて該セットのレシオが４つのレシオを含むおよび該増分値の該選択が該次の位相データポイントの該２つの最上位ビットに基礎を置いている請求項２７記載の装置。
【請求項２９】
ここにおいて該位相増加量の該選択が位相累算器内の該ビット数および該３角波の該望ましい周波数に基づいている請求項２７記載の装置。
【請求項３０】
さらに下記を具備する、請求項２７記載の装置：
該現在のデータポイントが負であるおよび該現在のデータポイントおよび該増分値の該合計が正である時に該次のデータポイントをゼロにすることを強いるための手段。
【請求項３１】
さらに下記を具備する、請求項２７記載の装置：
該現在の位相データポイントの該最上位ビットが１であるおよび該次の位相データポイントの該最上位ビットがゼロである時に該次のデータポイントをゼロにすることを強いるための手段。
【請求項３２】
ここにおいて該３角波が低周波数発振器の該出力である、請求項２３記載の装置。
【請求項３３】
ここにおいて該低周波数発振器がミディ（ＭＩＤＩ）ハードウェア実施の形態内において使用される、請求項３２記載の装置。
【請求項３４】
１つまたはそれ以上のプロセッサによる実行上で該プロセッサに望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生させる命令を具備するコンピュータ可読媒体、ここにおいて該命令は該１つまたはそれ以上のプロセッサに下記をさせる：
（ａ）該３角波の該望ましい周波数および該望ましい利得に基づいて増分値を決定する；
（ｂ）次のデータポイントを発生するために現在のデータポイントに該増分値を加算する、該現在のデータポイントおよび該次のデータポイントは該セットのデータポイントのサブセットを形成する；および
該３角波を形成する該セットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行する。
【請求項３５】
ここにおいて（ａ）および（ｂ）を反復して実行することが下記を含む、請求項３４記載のコンピュータ可読媒体：
第３のデータポイントを発生するために該次のデータポイントに該増分値を加算する、該現在のデータポイント、該次のデータポイント、および該第３のデータポイントは該セットのデータポイントの新しいサブセットを形成する。
【請求項３６】
ここにおいて該増分値が１セットのレシオから選択される、該レシオは該３角波の望ましい正の利得、望ましい負の利得、および該望ましい周波数に対応する、請求項３４記載のコンピュータ可読媒体。
【請求項３７】
ここにおいて該望ましい正の利得および該望ましい負の利得が互いに等しい、請求項３６記載のコンピュータ可読媒体。
【請求項３８】
ここにおいて該命令が該１つまたはそれ以上のプロセッサに下記をさせる、請求項３６記載のコンピュータ可読媒体：
該３角波の該望ましい周波数に基づいて位相増加量を決定する；
次の位相データポイントを発生するために現在の位相データポイントに該位相増加量を加算する；および
該次の位相データポイントの該値に基づいて該増分値を選択する。
【請求項３９】
ここにおいて該セットのレシオが４つのレシオを含むおよび該増分値の該選択が該次の位相データポイントの該２つの最上位ビットに基づいている、請求項３８記載のコンピュータ可読媒体。
【請求項４０】
ここにおいて該位相増加量の該選択が位相累算器内の該ビット数および該３角波の該望ましい周波数に基づいている、請求項３８記載のコンピュータ可読媒体。
【請求項４１】
ここにおいて該命令が該１つまたはそれ以上のプロセッサに下記をさせる、請求項３８記載のコンピュータ可読媒体：
該現在のデータポイントが負であるおよび該現在のデータポイントおよび該増分値の該合計が正である時に該次のデータポイントをゼロにすることを強いる。
【請求項４２】
ここにおいて該命令が該１つまたはそれ以上のプロセッサに下記をさせる、請求項３８記載のコンピュータ可読媒体：
該現在の位相データポイントの該最上位ビットが１であるおよび該次の位相データポイントの該最上位ビットがゼロである時に該次のデータポイントをゼロにすることを強いる。
【請求項４３】
ここにおいて該３角波が低周波数発振器の該出力である、請求項３４記載のコンピュータ可読媒体。
【請求項４４】
ここにおいて該低周波数発振器がミディ（ＭＩＤＩ）実施の形態内において使用される、請求項４３記載のコンピュータ可読媒体。
【請求項４５】
望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための回路、ここにおいて該回路は下記を適用される：
（ａ）該３角波の該望ましい周波数および該望ましい利得に基づいて増分値を決定する；
（ｂ）次のデータポイントを発生するために現在のデータポイントに該増分値を加算する、該現在のデータポイントおよび該次のデータポイントは該セットのデータポイントのサブセットを形成する；および
該３角波を形成する該セットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行する。
【請求項４６】
ここにおいて（ａ）および（ｂ）を反復して実行することが下記を含む、請求項４５記載の回路：
第３のデータポイントを発生するために該次のデータポイントに該増分値を加算する、該現在のデータポイント、該次のデータポイント、および該第３のデータポイントは該セットのデータポイントの新しいサブセットを形成する。
【請求項４７】
ここにおいて該増分値が１セットのレシオから選択される、該レシオは該３角波の望ましい正の利得、望ましい負の利得、および該望ましい周波数に対応する、請求項４５記載の回路。
【請求項４８】
ここにおいて該望ましい正の利得および該望ましい負の利得が互いに等しい、請求項４７記載の回路。
【請求項４９】
ここにおいて該回路が下記を適用される、請求項４７記載の回路：
該３角波の該望ましい周波数に基づいて位相増加量を決定する；
次の位相データポイントを発生するために現在の位相データポイントに該位相増加量を加算する；および
該次の位相データポイントの該値に基づいて該増分値を選択する。
【請求項５０】
ここにおいて該セットのレシオが４つのレシオを含むおよび該増分値の該選択が該次の位相データポイントの該２つの最上位ビットに基づいている、請求項４９記載の回路。
【請求項５１】
ここにおいて該位相増加量の該選択が位相累算器内の該ビット数および該３角波の該望ましい周波数に基づいている、請求項４９記載の回路。
【請求項５２】
ここにおいて該回路が下記を適用される、請求項４９記載の回路：
該現在のデータポイントが負であるおよび該現在のデータポイントおよび該増分値の該合計が正である時に該次のデータポイントをゼロにすることを強いる。
【請求項５３】
ここにおいて該回路が下記を適用される、請求項４９記載の回路：
該現在の位相データポイントの該最上位ビットが１であるおよび該次の位相データポイントの該最上位ビットがゼロである時に該次のデータポイントをゼロにすることを強いる。
【請求項５４】
ここにおいて該３角波が低周波数発振器の該出力である、請求項４５記載の回路。
【請求項５５】
ここにおいて該低周波数発振器がミディ（ＭＩＤＩ）実施の形態内において使用される、請求項５４記載の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
［米国特許法１１９条に基づく優先権の主張］
本発明についての出願は２００７年３月２２日提出の、そしてこれに関して譲受人に譲渡され、そして引用によってこの中に完全に組み込まれた、仮出願番号第６０／８９６，４６３号、タイトル“３角波を発生するための方法と装置（ＭＥＴＨＯＤ  ＡＮＤ  ＤＥＶＩＣＥ  ＦＯＲ  ＧＥＮＥＲＡＴＩＮＧ  ＴＲＩＡＮＧＵＬＡＲ  ＷＡＶＥＳ）”への優先権を主張する。
【背景技術】
【０００２】
［技術分野］
この発明は電子装置、そして特に３角波（triangular wave）を発生することができる電子装置に関する。
【０００３】
［背景］
ミディ（ＭＩＤＩ）は音楽、音声、楽音、アラート、および同種類のもののような、可聴音の創作、通信およびプレーバックのためのフォーマットである。ＭＩＤＩフォーマットをサポートする装置はいろいろな“ボイス（ｖｏｉｃｅｓ）”を作り出すために使用されうる複数セットのオーディオ情報を蓄積できる。各ボイスは特定の楽器による音符のような、特定の音に対応できる。例えば、第１のボイスはピアノによって演奏されるような中央ハに対応でき、第２のボイスはトロンボーンによって演奏されるような中央ハに対応でき、第３のボイスはトロンボーンによって演奏されるようなＤ＃に対応できるなどである。いろいろな楽器によって演奏された音を再現するために、ＭＩＤＩ準拠装置は、低周波数発振器の動作のような、いろいろなオーディオ特性、ビブラートのような効果、および種々の音の認知に影響を及ぼすことができる多数の他のオーディオ特性を指定するボイスのための１セットの情報を含んでもよい。ほとんどどの音もＭＩＤＩファイル内で定義され、伝達されることができ、そしてこのＭＩＤＩフォーマットをサポートする装置によって再現されることができる。
【０００４】
ＭＩＤＩフォーマットをサポートする装置は、この装置が楽譜を作り始めねばならないことを示すイベントが発生するとすぐに音符（または他の音）を作ることができる。同様に、この装置が楽譜を作ることを止めねばならないことを示すイベントが発生するとすぐに装置は音符を作ることを止めねばならない。全体の音楽作曲はあるボイスが開始および停止せねばならない時を示すイベントを指定することによってＭＩＤＩフォーマットに従って符号化されることができる。この方法では、作曲はＭＩＤＩフォーマットに従ってコンパクトファイルフォーマット内に蓄積され、そして送られることができる。
【０００５】
ＭＩＤＩは種々様々な装置内でサポートされる。例えば、無線電話機のような、無線通信装置はダウンロード可能な呼出音または他のオーディオ出力のためのＭＩＤＩファイルをサポートできる。Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ社によって販売された“ｉＰｏｄ”装置およびＭｉｃｒｏｓｏｆｔ社によって販売された“Ｚｕｎｅ”装置のような、ディジタル音楽プレーヤもＭＩＤＩファイルフォーマットをサポートできる。ＭＩＤＩフォーマットをサポートする他の装置はキーボード、シーケンサ、音声符号器（ボコーダ）、およびリズムマシンのようないろいろな音楽シンセサイザを含むことができる。さらに、種々様々な装置もまた、移動無線装置、ダイレクト双方向通信装置（時々ウォーキートーキーと呼ばれる）、網電話機、パソコン、デスクトップおよびラップトップコンピュータ、ワークステーション、衛星無線装置、インターコム装置、無線放送装置、手持ち式ゲーム機、装置内設置の回路板、インフォーメーションキヨスク、ビデオゲームコンソール、お子様用の各種コンピュータ化された玩具、車内使用のオンボードコンピュータ、船舶と航空機、そして種々様々な他の装置を含む種々様々な装置もＭＩＤＩファイルまたはトラックのプレーバックをサポートすることができる。
【０００６】
多数の他タイプのオーディオフォーマット、標準および技術も開発された。他の実例は映画専門家グループ（ＭＰＥＧ）によって定義された標準、ウインドウズメディアオーディオ（ＷＭＡ）標準、ドルビーラボラトリ社による標準、少しは名のあるＴＨＸ社によって開発された品質保証技術を含む。さらに、多くのオーディオ符号化標準および技術は、“ｉＰｏｄ”装置内で使用された先行オーディオ符号化（ＡＡＣ）標準のような、ディジタルＭＰ３標準およびＭＰ３標準の変形を含んで、出現し続ける。いろいろなビデオ符号化標準も、例えば、オーディオおよびビデオ情報を含むマルチメディアフレームを符号化するために使用されることができる。
【０００７】
ＭＩＤＩフォーマットの１つの重要な特徴は特定の音符の調音に関連したデータを蓄積するためのそれの能力である。調音データは、音響器具の音をまねるのを手助けできる、ビブラートまたはトレモロのような、音響効果についての情報を含む。ＭＩＤＩを使用する装置は低周波数発振器およびエンベロープジェネレータの組合せを使用してこれらの効果を実施できる。典型的に、低周波数発振器（ＬＦＯ）は特定の音符のピッチ、振幅、および周波数を変調するために周期的な低周波数波を発生するのに使用されることができる。受入れ可能な許容範囲内で動作する低周波数波を発生するために、多数のそして複雑な計算が必要とされ、それは多数のパラメータの蓄積および大量のチップエリアの使用を必要とすることがありうる。
【発明の概要】
【０００８】
［概要］
一般に、この開示は３角波を発生するための技術を記述する。この技術は他のオーディオフォーマット、技術または標準とともに有用であるが、特にミディ（ＭＩＤＩ）フォーマットに従うオーディオファイルのプレーバックのために有用であることができる。
【０００９】
１つの局面では、この開示は望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための方法を提供する。この方法は３角波の望ましい周波数および望ましい利得に基づいて増分値(increment value)を決定するステップ（ａ）を含む。この方法はさらに次のデータポイントを発生するために現在のデータポイントにこの増分値を加算するステップ（ｂ）を含み、現在のデータポイントおよび次のデータポイントはこのセットのデータポイントのサブセットを形成する。この方法はさらに３角波を形成するセットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行するステップを含む。
【００１０】
もう１つの局面では、この開示は望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための装置を提供する。この装置は３角波の望ましい周波数および望ましい利得に基づいて増分値を決定する電気回路を含む。この装置はさらに次のデータポイントを発生するために現在のデータポイントにこの増分値を加算する加算器を含み、現在のデータポイントおよび次のデータポイントはこのセットのデータポイントのサブセットを形成し、ここにおいて電気回路は増分値を反復して決定し、そして加算器は３角波を形成するデータポイントのセットを発生するために連続するデータポイントにこの増分値を反復して加算する。
【００１１】
もう１つの局面では、この開示は望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための装置を提供する。この装置は３角波の望ましい周波数および望ましい利得に基づいて増分値を決定するための第１の手段を含む。この装置はさらに次のデータポイントを発生するために現在のデータポイントにこの増分値を加算するための第２の手段を含み、現在のデータポイントおよび次のデータポイントはこのセットのデータポイントのサブセットを形成し、ここにおいて第１の手段は増分値を反復して決定し、そして第２の手段は３角波を形成するセットのデータポイントを発生するために連続するデータポイントにこの増分値を反復して加算する。
【００１２】
この開示内に記述された技術のいろいろな局面はハードウェア、ソフトウェア、ファームウェア、またはそれの任意の組合せにおいて実施されることができる。もしソフトウェア内で実施されれば、このソフトウェアはマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはディジタル信号プロセッサ（ＤＳＰ）のような、１つまたはそれ以上のプロセッサ内で実行されることができる。この技術を実行するソフトウェアは最初にコンピュータ可読媒体内に蓄積され、そしてプロセッサ内にロードされて実行されることができる。
【００１３】
よって、この開示はまた１つまたはそれ以上のプロセッサによる実行上でこのプロセッサに望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生させる命令を具備するコンピュータ可読媒体をも期待し、ここにおいてこの命令は１つまたはそれ以上のプロセッサに（ａ）３角波の望ましい周波数および望ましい利得に基づいて増分値を決定させ、（ｂ）次のデータポイントを発生するために現在のデータポイントにこの増分値を加算させ、現在のデータポイントおよび次のデータポイントはこのデータポイントのセットのサブセットを形成し、そして３角波を形成するこのセットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行する。
【００１４】
いくつかの事例では、コンピュータ可読媒体はコンピュータプログラム製品の部分を形成することができ、それは製作者に販売され、そして／またはビデオ符号化装置内で使用されることができる。コンピュータプログラム製品はコンピュータ可読媒体を含んでもよく、そしていくつかの事例では、実装材を含んでもよい。
【００１５】
他の事例では、この開示は、集積回路、チップセット、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理、あるいはこの中に記述された１つまたはそれ以上の技術を実行するように構成されたまたは適用されたそれのいろいろな組合せのような、回路に向けられることができる。
【００１６】
よって、この開示はまた望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための回路をも期待し、ここにおいてこの回路は（ａ）３角波の望ましい周波数および望ましい利得に基づいて増分値を決定する、（ｂ）次のデータポイントを発生するために現在のデータポイントにこの増分値を加算する、現在のデータポイントおよび次のデータポイントはこのセットのデータポイントのサブセットを形成し、そして３角波を形成するこのセットのデータポイントを発生するために（ａ）および（ｂ）を反復して実行する：ことを適用する。
【００１７】
この発明の１つまたはそれ以上の実施形態の詳細は添付図面および下記の明細書内に述べられる。この発明の他の特徴、目的、および利点は明細書および図面から、そしてクレームから明白であるだろう。
【図面の簡単な説明】
【００１８】
【図１】この開示に従ってオーディオファイルを処理するための技術を実施できる例示的なオーディオ装置を示すブロック図。
【図２】この開示に従って合成パラメータを処理するためのハードウェアユニットの１例を示すブロック図。
【図３】この開示に従って望ましい利得および周波数を有する３角波を形成する１セットのデータポイントを発生するための例示的な３角波発生器を示す回路図。
【図４】この開示に従って望ましい利得および望ましい周波数を有する３角波を形成する１セットのデータポイントを発生するための例示的な方法を示すフローチャート。
【図５】それぞれ図３および図４に示された３角波発生器および方法によって発生された例示的な３角波の１周期を示すグラフ図。
【発明を実施するための形態】
【００１９】
［詳細な説明］
この開示は３角波を発生するための技術を記述する。この技術は３角波の使用の原因となる他のオーディオフォーマット、技術、または標準とともに有用となることができるが、この技術は特にミディ（ＭＩＤＩ）フォーマットに従うオーディオファイルのプレーバックのために有用となることができる。この中に使用されたように、術語ＭＩＤＩファイルはＭＩＤＩフォーマットに従う少なくとも１つのオーディオトラックを含む任意のオーディオデータまたはファイルを指す。ＭＩＤＩトラックを含むことができるいろいろなファイルフォーマットの例は、少しは名のあるＣＭＸ，ＳＭＡＦ，ＸＭＦ，ＳＰ−ＭＩＤＩを含む。ＣＭＸはＱｕａｌｃｏｍｍ社によって開発された、Ｃｏｍｐａｃｔ  Ｍｅｄｉａ  Ｅｘｔｅｎｓｉｏｎｓを表わす。ＳＭＡＦはＹａｍａｈａ社によって開発された、Ｓｙｎｔｈｅｔｉｃ  Ｍｕｓｉｃ  Ｍｏｂｉｌｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｆｏｒｍａｔを表わす。ＸＭＦはｅＸｔｅｎｓｉｂｌｅ  Ｍｕｓｉｃ  Ｆｏｒｍａｔを表わし、そしてＳＰ−ＭＩＤＩはＳｃａｌａｂｌｅ  Ｐｏｌｙｐｈｏｎｙ  ＭＩＤＩを表わす。
【００２０】
ＭＩＤＩファイル、あるいは他のオーディオファイルはオーディオ情報またはオーディオ・ビデオ（マルチメディア）情報を含むことができる、オーディオフレーム内の装置間を伝達されることができる。オーディオフレームは単一のオーディオファイル、複数のオーディオファイル、あるいは多分１つまたはそれ以上のオーディオファイルおよび符号化されたビデオフレームのような他の情報を具備してもよい。１オーディオフレーム内の任意のオーディオデータは、ストリーミングオーディオデータまたは上に記録された１つまたはそれ以上のオーディオファイルフォーマットを含み、この中で使用されたような、オーディオファイルと呼ばれることができる。同時に動作する複数のハードウェアエレメントは、ＭＩＤＩファイルのような、１つまたはそれ以上のオーディオファイルから発生されたいろいろな合成パラメータを提供するために使用されることができる。
【００２１】
汎用プロセッサはＭＩＤＩファイルを分析してこのＭＩＤＩファイルに関連するＭＩＤＩイベントをスケジュールするようにソフトウェアを実行できる。スケジュールされたイベントはその後、このＭＩＤＩファイル内のタイミングパラメータによって指定されたような、同期法内のＤＳＰによって提供されることができる。汎用プロセッサは時間同期法内のＤＳＰにＭＩＤＩイベントを発送し、そしてＤＳＰはＭＩＤＩ合成パラメータを発生するために時間同期スケジュールに従ってＭＩＤＩイベントを処理する。ＤＳＰはその後ハードウェア内の合成パラメータの処理をスケジュールし、そしてハードウェアユニットはこの合成パラメータに基づいてオーディオサンプルを発生することができる。
【００２２】
汎用プロセッサは第１のフレーム（フレームＮ）のためのＭＩＤＩファイルを提供でき、そして第１のフレーム（フレームＮ）がＤＳＰによって提供されるとすぐに、第２のフレーム（フレームＮ＋１）は汎用プロセッサによって同時に提供されることができる。さらに、第１のフレーム（フレームＮ）がハードウェアによって提供されるとすぐに、第３のフレーム（フレームＮ＋２）が汎用プロセッサによって提供される一方で第２のフレーム（フレームＮ＋１）はＤＳＰによって同時に提供される。この方法では、ＭＩＤＩファイル処理は同時に処理されることができるパイプラインドステージに分離され、それは効率を改善することができ、そして多分、ＤＳＰに関連するそれらのような、与えられたステージのために必要な計算資源を減らすことができる。各フレームは汎用プロセッサから、ＤＳＰへの、そしてその後このハードウェアへの、いろいろなパイプラインステージを通過する。ある場合には、ハードウェアによって発生されたオーディオサンプルは、任意の後処理が行われうるように、例えば、割込み駆動技術により、ＤＳＰに送り返されることができる。オーディオサンプルはその後、スピーカをドライブし、そしてオーディオ音をユーザに出力するために使用されうる、アナログ信号に変換されることができる。
【００２３】
あるいは、ＭＩＤＩファイル処理に関連するタスクはＤＳＰの２つの異なるスレッドと専用のハードウェアとの間に委託されることができる。すなわち、（この中に記述されたように）汎用プロセッサに関連するタスクは、その代わりにマルチスレッドのＤＳＰの第１スレッドによって実行されることができる。このケースでは、ＤＳＰの第１のスレッドはスケジューリングを実行し、ＤＳＰの第２のスレッドは合成パラメータを発生し、そしてハードウェアユニットはこの合成パラメータに基づいてオーディオサンプルを発生する。この代替の実例はまたスケジューリングのために汎用プロセッサを使用する実例と同様の手法でパイプラインされることもできる。
【００２４】
図１は例示的なオーディオ装置４を示すブロック図である。１例のように、オーディオ装置４はＭＩＤＩファイル、例えば、少なくとも１つのＭＩＤＩトラックを含むファイルを処理できる任意の装置を具備することができる。しかしながら、再びこの開示の技術は他のオーディオフォーマット、技術または標準を有するアプリケーションを見つけ出すことができる。オーディオ装置４の実例は無線電話機、網電話機、ディジタルミュージックプレーヤ、ミュージックシンセサイザ、移動無線装置、ダイレクト双方向通信装置（時々ウォーキートーキーと呼ばれる）、パソコン、デスクトップまたはラップトップコンピュータ、ワークステーション、衛星無線装置、インターコム装置、無線放送装置、手持ち式ゲーム機、装置内設置のオーディオ回路板、キヨスク装置、ビデオゲームコンソール、お子様用の各種のコンピュータ化された玩具、自動車、船舶および航空機内使用のオンボードコンピュータ、あるいはオーディオを処理して出力する種々様々な装置のような無線通信装置を含む。
【００２５】
図１内に示されたいろいろなコンポーネントはこの開示の局面を説明するために提供される。しかしながら、他のコンポーネントが存在してもよく、図示されたコンポーネントのいくつかはいくつかの実施の形態内には含まれないかもしれない。例えば、もしオーディオ装置４が無線電話機であれば、その時アンテナ、送信機、受信機およびモデム（変調器・復調器）はオーディオファイルの無線通信を容易とするために含まれることができる。
【００２６】
図１の例に示されたように、オーディオ装置４はＭＩＤＩファイルのような、オーディオファイルを蓄積するためにオーディオ蓄積ユニット６を含む。再び、ＭＩＤＩファイルはＭＩＤＩフォーマット内で符号化された少なくとも１つのトラックを含む任意のオーディオファイルを指す。オーディオ蓄積ユニット６は任意の揮発性または不揮発性メモリまたは蓄積装置を具備することができる。この開示のために、オーディオ蓄積ユニット６はプロセッサ８にオーディオファイルを順方向転送する蓄積ユニットとして見られることができ、あるいはプロセッサ８は、処理されるべきファイルのために、オーディオ蓄積ユニット６からＭＩＤＩファイルを検索する。オーディオ蓄積ユニット６はまたディジタルミュージックプレーヤと関連する蓄積ユニットあるいはもう１つの装置からの情報転送に関連する一次蓄積ユニットであることができる。例えば、オーディオ蓄積ユニット６はサーバまたは放送源から得られたストリーミングオーディオをバッファに入れることができる。オーディオ蓄積ユニット６はデータバスまたは他の接続によってプロセッサ８に連結された別個の揮発性メモリチップまたは不揮発性蓄積装置であってもよい。オーディオ蓄積ユニット６からの情報の転送を容易とするためにメモリまたは記憶装置コントローラ（図示せず）が含まれてもよい。
【００２７】
装置４はソフトウェア、ハードウェアおよびファームウェア間でオーディオ処理タスクを分離する構造を実施できる。図１に示されたように、装置４はプロセッサ８、ディジタル信号プロセッサ（ＤＳＰ）１２およびオーディオハードウェアユニット１４を含む。これらのコンポーネントのおのおのは、例えば、直接にまたはバスを介して、ローカルメモリユニット１０に連結されてもよい。プロセッサ８はオーディオファイルを分析して、このオーディオファイルと関連するオーディオイベントをスケジュールするようにソフトウェアを実行する汎用プロセッサを具備してもよい。スケジュールされたイベントは時間同期法内のＤＳＰ１２に発送されることができ、そしてそれによって、オーディオファイル内のタイミングパラメータによって指定されたように、同期法内のＤＳＰ１２によって取り扱われることができる。ＤＳＰ１２は合成パラメータを発生するために汎用プロセッサ８によって作り出された時間同期スケジュールに従ってオーディオイベントを処理するファームウェアを備えることができる。ＤＳＰ１２はまたオーディオハードウェアユニット１４によって同期パラメータの次の処理をスケジュールすることもできる。
【００２８】
一度ＤＳＰ１２が合成パラメータを発生すると、これらの合成パラメータはメモリユニット１０内に蓄積される。メモリユニット１０は揮発性または不揮発性蓄積を具備してもよい。急速なデータ転送をサポートするために、メモリ１０はランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ＦＬＡＳＨメモリ、または同種類のものを具備してもよい。メモリユニット１０内に蓄積された同期パラメータはオーディオサンプルを発生するためにオーディオハードウェアユニット１４によって提供されることができる。
【００２９】
オーディオハードウェアユニット１４はこの合成パラメータを提供するためのいくつかの処理エレメントを含むことができる。この処理エレメントは乗算する、加算するおよび累算するような、演算をサポートする算術論理ユニット（ＡＬＵ）を具備することができる。さらに、各処理エレメントはまた他のハードウェアコンポーネントにロードするおよび／または蓄積するためのハードウェア特有の動作をサポートすることもできる。オーディオハードウェアユニット１４の他のハードウェアコンポーネントは、例えば、低周波数発振器（ＬＦＯ）、ウエーブフェッチユニット（ＷＦＵ）、およびサミングバッファ（ＳＢ）を具備することができる。このように、オーディオハードウェアユニット１４内の処理エレメントはオーディオ処理におけるこれらの他のハードウェアコンポーネントと相互作用しそしてこれらを使用するための命令をサポートして実行することができる。この開示に従って、処理エレメントはビブラートまたはトレモロのような特定の調音の音響効果を発生するために低周波数発振器と相互作用することができる。低周波数発振器は、処理エレメントによってＬＦＯに供給された特定のパラメータに応じて、３角波のような、周期的波形を供給できる。例えば、処理エレメントは低周波数発振器への命令内の３角波の望ましい利得および望ましい周波数を指定することができる。これに応じて、ＬＦＯは処理エレメントによって要求された３角波に対応する一連のデータポイントを供給することができる。オーディオハードウェアユニット１４の一例の追加詳細は図２を参照して下文でより詳細に提供される。
【００３０】
いくつかの事例では、装置４によるオーディオファイルの処理はパイプラインされることができる。例えば、プロセッサ８、ＤＳＰ１２およびオーディオハードウェアユニット１４は連続するオーディオフレームに関して同時に動作することができる。各オーディオフレームは１ブロックの時間、例えば、多くの符号化されたオーディオサンプルを含む１０ミリ秒（ｍｓ）インターバルに相当することができる。例えば、ハードウェアユニット１４のディジタル出力は、その多くのものはオーディオフレーム当たり４８０ディジタルオーディオサンプルを含み、それはディジタル・ツー・アナログ変換器１６によってアナログオーディオ信号に変換されることができる。多くの異なる音または音符がＭＩＤＩフォーマットまたは同種のオーディオフォーマットによる１インスタンスの時間内に含まれることができるように、多くのイベントは１インスタンスの時間に対応できる。もちろん、任意のオーディオフレームに委託された時間量および１フレーム内で定義されたオーディオサンプルの数は異なる実施の形態内で変動するかもしれない。
【００３１】
いくつかの事例では、オーディオハードウェアユニット１４によって発生されたオーディオサンプルは、例えば、割込み駆動技術により、ＤＳＰ１２に送り返される。この事例では、ＤＳＰ１２はまたオーディオサンプル上で後処理技術を実行することもできる。後処理技術はフィルタリング、スケーリング、ボリューム調整、あるいは最終的に音響出力を高めることができる種々様々なオーディオ後処理を含んでもよい。ディジタル・ツー・アナログ変換器（ＤＡＣ）１６はその後このオーディオサンプルをアナログ信号に変換し、それはユーザへの可聴音の出力のためにスピーカ１９Ａおよび１９Ｂを駆動するように駆動回路によって使用されることができる。
【００３２】
ローカルメモリ１０は、プロセッサ８，ＤＳＰ１２およびＭＩＤＩハードウェア１４がこれらの種々のコンポーネントに委託されたいろいろなタスクを実行するのに必要な任意の情報をアクセスできるように構成されることができる。いくつかの事例では、ローカルメモリ１０内のＭＩＤＩ情報の蓄積レイアウトは種々のコンポーネント８，１２および１４からの効率的なアクセスを可能とするように配列されることができる。再び、ローカルメモリ１０は（特に）１つまたはそれ以上のオーディオファイルに関連する合成パラメータを蓄積するために使用される。一度ＤＳＰ１２がこれらの合成パラメータを発生すると、それらはオーディオサンプルを発生するようにハードウェアユニット１４によって処理されることができる。オーディオハードウェアユニット１４によって発生されたオーディオサンプルはパルス符号変調（ＰＣＭ）サンプルを具備することができ、それはアナログ信号が正規の間隔でサンプルされるアナログ信号のディジタル表示である。オーディオハードウェアユニット１４による例示的なオーディオ発生の追加詳細は図２を参照して下文でより詳細に検討される。
【００３３】
図２は例示的なオーディオハードウェアユニット２０を図示するブロック図であり、それはオーディオ装置４のオーディオハードウェアユニット１４に相当することができる。図２に示された実施の形態は、他のハードウェア実施の形態もこの開示の教えと矛盾なく定義されうるように、単に例示的である。図２の例に図示されたように、オーディオハードウェアユニット２０はデータを送受信するためにバスインターフェイス３０を含む。例えば、バスインターフェイス３０はＡＭＢＡ高性能バス（ＡＨＢ）マスタインターフェイス、ＡＨＢスレーブインターフェイス、およびメモリバスインターフェイスを含むことができる。ＡＭＢＡは先行マイクロプロセッサバス構造を表わす。あるいは、バスインターフェイス３０はＡＸＩバスインターフェイス、またはもう１つのタイプのバスインターフェイスを含むことができる。ＡＸＩは先行拡大インターフェイスを表わす。
【００３４】
さらに、オーディオハードウェアユニット２０は配位モジュール３２を含むことができる。配位モジュール３２はオーディオハードウェアユニット２０内でデータフローを調整する。オーディオハードウェアユニット２０がオーディオサンプルを合成し始めるためにＤＳＰ１２（図１）から命令を受信するとすぐに、配位モジュール３２はＤＳＰ１２（図１）によって発生された、オーディオフレームのための合成パラメータをメモリ１０から読みとる。これらの合成パラメータはオーディオフレームを復元するために使用されることができる。ＭＩＤＩフォーマットに関して、合成パラメータは与えられたフレーム内の１つまたはそれ以上のＭＩＤＩボイスのいろいろな音響特性を記述する。例えば、１セットのＭＩＤＩ合成パラメータは共鳴、残響、音量のレベル、および／または１つまたはそれ以上のボイスに影響しうる他の特性を指定することができる。
【００３５】
配位モジュール３２の指示で、合成パラメータはメモリ１０（図１）からそれぞれ処理エレメント３４Ａまたは３４Ｎと関連するボイスパラメータセット（ＶＰＳ）ＲＡＭ４６Ａまたは４６Ｎ内にロードされることができる。ＤＳＰ１２（図１）の指示で、プログラム命令はメモリ１０からそれぞれの処理エレメント３４Ａまたは３４Ｎと関連するプログラムＲＡＭユニット４４Ａまたは４４Ｎ内にロードされる。
【００３６】
プログラムＲＡＭユニット４４Ａまたは４４Ｎ内にロードされた命令はＶＰＳ  ＲＡＭユニット４６Ａまたは４６Ｎ内の合成パラメータのリスト内に示されたボイスの１つを合成することを関連する処理エレメント３４Ａまたは３４Ｎに命令する。任意数の処理エレメント３４Ａ〜３４Ｎ（一まとめにして“処理エレメント３４”）があってもよく、そしておのおのは、データを読み取りおよび書き込むための１つまたはそれ以上のユニットと同様に、数学演算を実行できる１つまたはそれ以上のＡＬＵを備えてもよい。２つの処理エレメント３４Ａおよび３４Ｎのみが簡単のために図示されるが、しかしより多くのものがハードウェアユニット２０内に含まれてもよい。処理エレメント３４は互いに並列にボイスを合成できる。特に、複数の異なる処理エレメント３４は異なる合成パラメータを処理するために並列に動作する。この手法では、オーディオハードウェアユニット２０内の複数の処理エレメント３４はオーディオサンプルの発生を促進することができ、そして多分改善することができる。
【００３７】
配位モジュール３２が処理エレメント３４の１つにボイスを合成するように指示するとすぐ、それぞれの処理エレメントはこの合成パラメータと関連する１つまたはそれ以上の命令を実行することができる。再び、これらの命令はプログラムＲＡＭユニット４４Ａまたは４４Ｎ内にロードされることができる。プログラムＲＡＭユニット４４Ａまたは４４Ｎ内にロードされた命令はそれぞれ処理エレメント３４の１つにボイス合成を実行させる。例えば、処理エレメント３４は要求をこの合成パラメータ内に指定された波形に関する波形フェッチユニット（ＷＦＵ）３６に送ることができる。処理エレメント３４の各々はＷＦＵ３６を使用できる。もし２つまたはそれ以上の処理エレメント３４が同時にＷＦＵ３６の使用を要求すれば、調停スキームはいずれかの競合を解決するために使用されることができる。
【００３８】
処理エレメント３４の１つからの要求に応じて、ＷＦＵ３６は１つまたはそれ以上の波形サンプルを要求している処理エレメントに返す。しかしながら、１波動は例えば、波動の１サイクルまで、１サンプル内でフェーズシフトされることができるので、ＷＦＵ３６は補間を使用しているフェーズシフトを補償するために２サンプルを返せばよい。さらに、１ステレオ信号は２ステレオチャネルに関する２つの別個の波動を含むことができるので、ＷＦＵ３６は、例えば、ステレオ出力について４つの別個のサンプルまでという結果になる、異なるチャネルについて別個のサンプルを返せばよい。
【００３９】
ＷＦＵ３６がオーディオサンプルを処理エレメント３４の１つに返した後に、それぞれの処理エレメントはこの合成パラメータに基づいて追加のプログラム命令を実行できる。特に、命令は処理エレメント３４の１つにオーディオハードウェアユニット２０内の低周波数発振器（ＬＦＯ）３８からの非対称３角波を要求させる。ＷＦＵ３６によって返された波をＬＦＯ３８によって返された３角波と掛算することによって、それぞれの処理エレメントは望ましいオーディオアフェクト（ａｕｄｉｏ  ａｆｆｅｃｔ）を達成するようにこの波のいろいろな音響特性を処理できる。例えば、１つの波を３角波によって掛算することは望ましい楽器ともっと似ているように思われる波という結果をもたらす。
【００４０】
合成パラメータに基づいて実行された他の命令は処理エレメント３４のそれぞれ１つに波形を特定の回数ループさせ、波形の振幅を調整させ、残響を加えさせ、ビブラート効果を加えさせ、または他の効果を引き起こす。この方法では、処理エレメント３４は１つのＭＩＤＩフレームを継続するボイスの間に１波形を計算することができる。結局、それぞれの処理エレメントは出力命令に出会うことができる。処理エレメント３４の１つが出力命令に出会うとすぐに、この処理エレメントはボイス合成の終わりを配位モジュール３２に信号する。計算されたボイス波形はプログラム命令の実行の間中もう１つの蓄積命令の指示で加算バッファ４０に供給されることができる。これは加算バッファ４０にその計算されたボイス波形を蓄積させる。
【００４１】
加算バッファ４０が計算された波を処理エレメント３４の１つから受信するとすぐに、加算バッファ４０はＭＩＤＩフレームについて全体の波と関連する妥当なインスタンスの時間にこの計算された波を加算する。このように、加算バッファ４０は複数の処理エレメント３４の出力を組み合わせる。例えば、加算バッファ４０は初めにフラットウェーブ（即ち、全ディジタルサンプルがゼロである波）を蓄積できる。加算バッファ４０が処理エレメント３４の１つから計算された波のようなオーディオ情報を受信するとすぐに、加算バッファ４０は計算された波の各ディジタルサンプルを加算バッファ４０内に蓄積された波のそれぞれのサンプルに加算することができる。この方法では、加算バッファ４０は全部のオーディオフレームに関する波の全体のディジタル表示を累算して蓄積する。
【００４２】
加算バッファ４０は本質的に処理エレメント３４の異なるものからの異なるオーディオ情報を合計する。異なるオーディオ情報は種々の発生されたボイスと関連する時間の種々のインスタンスを表示する。この手法では、加算バッファ４０は与えられたオーディオフレーム内の全体のオーディオ編集を表示するオーディオサンプルを作り出す。
【００４３】
処理エレメント３４は互いに並列に、さらに独立して動作できる。すなわち、処理エレメント３４のおのおのは合成パラメータを処理し、そしてその後第１の合成パラメータのために発生されたオーディオ情報が一度加算バッファ４０に加算されると次の合成パラメータに進む。従って、処理エレメント３４のおのおのは１つの合成パラメータについてのそれの処理タスクを他の処理エレメント３４についてのものと独立して実行し、そしてその時合成パラメータのための処理は、それぞれの処理エレメントがもう１つの合成パラメータの次の処理のために直ちに使用できることを完了する。
【００４４】
結局、配位モジュール３２は処理エレメント３４が現在のオーディオフレームのために必要とされるすべてのボイスを合成することを完了し、そしてこれらのボイスを加算バッファ４０に供給したことを決定することができる。この点で、加算バッファ４０は現在のオーディオフレームに関する完成された波を表示するディジタルサンプルを含む。配位モジュール３２がこの決定をするとすぐに、配位モジュール３２は割込みをＤＳＰ１２（図１）に送る。この割込みに応じて、ＤＳＰ１２は加算バッファ４０の内容を受信するためにダイレクトメモリ交換（ＤＭＥ）を介して加算バッファ４０（図示せず）内の制御ユニットに要求を送ることができる。あるいは、ＤＳＰ１２はまたＤＭＥを実行するように事前にプログラムされてもよい。ＤＳＰ１２はその後、アナログ領域への変換のためのＤＡＣ１６にディジタルオーディオサンプルを供給する前に、このディジタルオーディオサンプル上で任意の後処理を行うことができる。いくつかの事例では、フレームＮ＋２に関してオーディオハードウェアユニット２０によって実行された処理は、フレームＮ＋１に関するＤＳＰ１２（図１）による合成パラメータ発生、およびフレームＮに関するプロセッサ８（図１）によるスケジューリング演算と同時に発生する。
【００４５】
キャッシュメモリ４８、ＷＦＵ／ＬＦＯメモリ３９およびリンクドリストメモリ４２もまた図２内に示される。キャッシュメモリ４８は急速な且つ効率的な手法で基礎波形をフェッチするためにＷＦＵ３６によって使用されることができる。ＷＦＵ／ＬＦＯメモリ３９はボイスパラメータセットのボイスパラメータを蓄積するために配位モジュール３２によって使用されることができる。この方法では、ＷＦＵ／ＬＦＯメモリ３９は波形フェッチユニット３６およびＬＦＯ３８の動作に専用のメモリとみなされることができる。リンクドリストメモリ４２はＤＳＰ１２によって発生されたボイスインジケータのリストを蓄積するために使用されたメモリを具備してもよい。ボイスインジケータはメモリ１０内に蓄積された１つまたはそれ以上の合成パラメータへのポインタを備えてもよい。このリスト内の各ボイスインジケータはそれぞれのＭＩＤＩボイスのためのボイスパラメータセットを蓄積するメモリロケーションを指定できる。いろいろなメモリおよび図２内に示されたメモリの配列は純粋に例示的である。この中に記述された技術は種々様々な他のメモリ配列で実施されることができる。
【００４６】
任意数の処理エレメント３４は、複数の処理エレメント３４がメモリ１０（図１）またはメモリ４２（図２）内に蓄積された種々の合成パラメータに関して同時に動作することを規定された自動ハードウェアユニット２０内に含まれてもよい。第１の自動オーディオ処理エレメント３４Ａは、例えば、もう１つのオーディオ処理エレメント３４Ｎが第２のオーディオ情報を発生するために第２のオーディオ合成パラメータを処理する一方で、第１のオーディオ情報を発生するために第１のオーディオ合成パラメータを処理する。加算バッファ４０はその後１つまたはそれ以上のオーディオサンプルの生成において第１および第２のオーディオ情報を結合することができる。同様に、第３のオーディオ処理エレメント（図示せず）および第４の処理エレメント（図示せず）は第３および第４のオーディオ情報を発生するために第３および第４の合成パラメータを処理することができ、それはまたオーディオサンプルの生成において加算バッファ４０内に蓄積されることもできる。
【００４７】
処理エレメント３４はオーディオフレームに関する合成パラメータのすべてを処理することができる。おのおのがそれぞれの合成パラメータを処理した後に、処理エレメント３４のそれぞれ１つはその処理されたオーディオ情報を加算バッファ４０での累算に算入し、そしてその後次の合成パラメータに進む。この方法で、処理エレメント３４はオーディオフレームの１つまたはそれ以上のオーディオファイルのために発生された合成パラメータのすべてを処理するように集合的に働く。その後、オーディオフレームが処理されて、加算バッファ内のサンプルが後処理のためのＤＳＰ１２に送られると、処理エレメント３４は次のオーディオフレームのオーディオファイルに関する合成パラメータを処理し始めることができる。
【００４８】
図３はオーディオハードウェアユニット２０の低周波数発振器３８に相当することができる、例示的な３角波発生器４４を示す回路図である。３角波発生器４４は望ましい周波数および利得を有する３角波を形成する１セットのデータポイントを発生することができる。この装置は累算器レジスタ５０、位相累算器５２、乗算器５４，５６、加算器５８，６０、ゼロ強制論理６２、およびライン６４，６６，６８，７０，７２，７４，７６，７８，８０，８２，８４，８６，８８，９０，９２，９４を含む。
【００４９】
累算器レジスタ５０は３角波を形成するセットのデータポイントからの単一のデータポイントを蓄積することができる。累算器レジスタ５０は加算器５８におよび乗算器５６の出力に電気的に連結される。累算器レジスタ５０はライン６６によって現在のデータポイントを出力する。シングルクロックサイクルの間、累算器レジスタ５０は、ライン６４を介して、乗算器５６の出力次第で次のデータポイントまたはゼロ値のどちらかを受信する。次のクロックサイクルの間、累算器レジスタ５０はライン６６によって以前のクロックサイクルから受信された値を現在のデータポイントとして出力する。与えられたクロックサイクルの間、現在のデータポイントはライン６６によって累算器レジスタの出力と定められ、そして次のデータポイントはライン６８によって加算器５８の出力と定められる。
【００５０】
位相累算器５２は３角波の時間軸に対応する単一の位相データポイントを蓄積することができる。一般に、この位相データは４レシオ（ratio）７２，７４，７６，７８のどれが増分値７０であるように選択されるかを決定する。位相累算器５２はライン８０および８２によって加算器６０に、そしてライン８４によってゼロ強制論理６２に電気的に連結される。特定のクロックサイクルの間、位相累算器５２は、ライン８０を介して、次の位相データポイントを受信し、そしてライン８２を介して現在の位相データポイントを出力する。次のクロックサイクルの間、位相累算器５２はライン８０を介して以前のクロックサイクルから受信された値を現在の位相データポイントとして出力する。与えられたクロックサイクルに関して、現在の位相データポイントはライン８２によって位相累積器５２の出力と定められ、そして次の位相データポイントはライン８０によって加算器６０の出力と定められる。累算器レジスタ５０および位相累算器５２はフリップフロップ、ラッチ、ＲＡＭセル、または同種類のもののような任意の逐次蓄積エレメントを使用して実施されることができる。
【００５１】
乗算器５４は入力ライン７２，７４，７６，７８上に供給された４レシオの１つの選択に基づいてライン７０上に増分値を出力する。この選択は制御ライン８６に基づいており、それは次の位相データポイントの２最上位ビットを含む。２最上位ビットが“００”である時は、乗算器５４はレシオＲPを増分値として選択する。同様に、２最上位ビットが“０１”である時は、乗算器５４はレシオ−ＲPを増分値として選択する。この最上位ビットが“１０”である時は、乗算器５４はレシオ−ＲNを増分値として選択する。最後に、この最上位ビットが“１１”である時は、乗算器５４はレシオＲNを増分値として選択する。増分値は乗算器５４の出力上に配置され、それはライン７０を介して加算器５８に送信される。乗算器５４は論理ゲート、ＦＰＧＡ、ＲＡＭ、または同種類のもののような任意のディジタル選択回路を使用して実施されることができる。ここに示された乗算器５４は４つのレシオ値を有し、そしてその選択は次の位相データポイントの２最上位ビットに基づいているが、この中に記述された技術の他の例が多少の入力および追加のまたはより少ない選択ビットを有する乗算器５４を使用してもよいことは認められねばならない。さらに、この中に記述された技術の他の例は、ライン８２を介した位相累算器５２の出力である、現在の位相データポイントに基づく増分値を選択する乗算器を使用してもよい。
【００５２】
加算器５８は現在のデータポイントおよび増分値の合計を発生することができる。加算器５８はライン６６を介して累算器レジスタ５０から現在のデータポイントを受信し、そしてライン７０を介して乗算器５４から増分値を受信する。その合計は次のデータポイントと定義されることができ、そして出力としてライン６８上に配置される。
【００５３】
加算器６０は現在の位相データポイントおよび位相増加量（phase increment）の合計を発生することができる。加算器６０はライン８２を介して位相累算器５２から現在の位相データポイントを受信し、そしてライン９０を介して位相増加量を受信する。この合計は次の位相データポイントと定められることができ、そして出力としてライン８０上に配置される。両加算器５８，６０はこの分野において知られるような任意の従来のディジタル加算回路を使用して実施されることができる。
【００５４】
この開示の１例に従って、レシオＲPとＲNおよび位相増加量は以下の式に従って計算されることができる：
【数１】
2010522502.tif 000003
【００５５】
正の利得は３角波の正のピークまたは最高点の値である。負の利得は３角波の負のピークまたは最低点の値である。位相増加量は位相累算器５２内の値が望ましい３角波の１周期内の位相累算器５２の全範囲を横断するであろうように計算される。値Ｂは位相累算器内のビット数を示す。正規化された望ましい周波数はハードウェアのクロッキングレートによって分割された望ましい周波数である。
【００５６】
図２内に示された例示的なオーディオハードウェアユニット２０では、正の利得、負の利得、および正規化された望ましい周波数は、ビブラートまたはトレモロのような、特定の調音が特定の処理エレメントによって必要とされる時に種々の処理エレメント３４Ａ〜３４Ｎによって低周波数発振器３８に供給されることができる。
【００５７】
この中に記述された技術の１つの利点は、正および負のレシオが結果としての３角波の望ましい利得および周波数の両者に関する情報を含むということである。これらのレシオは３角波発生器４４に各クロックサイクルの間利得について修正するために乗算器を使用する必要性無しに連続する増分値を加算することによって連続するデータポイントを計算させる。ハードウェア乗算器は高価なチップを費やし、そして一般に大量の処理時間を必要とするので、乗算器についての必要性の除去はハードウェアの複雑性を減らし、そして３角波発生器のより効率的な動作を可能とする。
【００５８】
ゼロ強制論理ブロック６２は位相累算器ロールオーバ状態を検出して、３角波の新周期を開始するために累算器レジスタ５０をゼロ値にリセットする。ロールオーバ状態は次の位相データポイントの最上位ビットが論理ゼロであり、そして現在の位相データポイントの最上位ビットが論理１である時に検出される。位相累算器５２内のロールオーバ状態は累算器レジスタ５０において負から正への移行と同時に起こることができる。従って、他の例において、ゼロ強制論理ブロック６２は現在のデータポイントが負であり、次のデータポイントが正である時を検出することによって実施されることができることは注目されねばならない。
【００５９】
乗算器５６は累算器レジスタ５０によって受信された次のデータポイントに、ゼロ強制論理ブロック６２の出力に基づいてゼロ値であることを強いることができる。乗算器５６はライン６８からの次のデータポイントおよびライン９２上のゼロ値のどちらかを選択できる。この選択はライン９４を介して乗算器に送信される、ゼロ強制論理ブロック６２の出力に基づくことができる。非ロールオーバ状態での正規動作の間、制御ライン９４は不活性のままであり、そして乗算器５６は３角波発生器４４の出力として、そして累算器レジスタ５０への入力として次のデータポイントをライン６４上に配置する。ロールオーバ状態が発生するとすぐ、ゼロ強制論理ブロック６２は制御ライン９４を活性化し、そして乗算器５６はゼロ値をライン６４上に配置する。本発明の他の実施形態において、３角波発生器４４の出力はまたライン６８を介して累算器レジスタ５０の出力に接続されうることは注目されねばならない。
【００６０】
この中に記述された技術のもう１つの利点は、ゼロ強制論理６２は位相累算器５２の限られた精度および位相増加量によって３角波の次の周期内で正および負のバイアスが発生するのを防ぐことである。例えば、３角波形の単一周期内のデータポイント数が４の偶数倍でない場合を想定されたい。ロールオーバ状態が起こると、累算器レジスタ５０内の値はゼロではないかもしれない。もし訂正が起こらなければ、非ゼロオフセットは連続する３角波内で正または負のバイアスを作り出すためにこのポテンシャルを有する連続するクロックサイクル上で累算し続けることができる。正または負のバイアスの導入はまた数周期に亘って３角波の周波数内に変異を引き起こすためにこのポテンシャルを有することもできる。ゼロ強制論理６２を使用することによって、ゼロ強制論理６２はロールオーバ状態が発生する時はいつも次のデータポイントにゼロであることを強いるのでロールオーバオフセット値に関連するバイアスおよび周波数問題は取り除かれることができる。
【００６１】
図４はこの開示の１例に従って望ましい周波数および望ましい利得を有する３角波を形成する１セットのデータポイントを発生するための例示的な方法１００を示すフローチャートである。図４に示された方法は図３における例示的な３角波発生器４４を使用してもよい。
【００６２】
ステップ１０２では、波形パラメータは３角波発生器４４によって受信される。波形パラメータはオーディオハードウェアユニット２０内の処理エレメント３４によって３角波発生器４４に送信されることができる。波形パラメータは発生されるべき３角波の望ましい正の利得、望ましい負の利得、および望ましい周波数に関する情報を含んでもよい。他の実施形態では、３角波発生器４４によって受信される波形パラメータは望ましい３角波の正のレシオ、負のレシオ、および位相増加量に関する情報を含んでもよい。
【００６３】
ステップ１０４では、３角波発生器４４は式（１）〜（３）に従って正のレシオ、負のレシオ、および位相増加量を計算する。このステップはオプションであり、そして正のレシオ、負のレシオ、および位相増加量はステップ１０２において処理エレメントに既に供給されているかもしれないので、破線によって示される。
【００６４】
ステップ１０６では、３角波発生器４４は３角波形の発生を始めるために累算器レジスタ５０および位相累算器５２をゼロにリセットする。ステップ１０８では、３角波発生器４４は次の位相データポイントを発生するために位相増加量を位相累算器５２の現在値に加算する。位相累算器５２の現在値は現在の位相データポイントに対応する。
【００６５】
ステップ１１０では、３角波発生器４４は１セットのレシオから１増分値を選択する。このセットのレシオは正のレシオ、負のレシオ、および正負両レシオの加法逆数を含むことができる。増分値の選択はステップ１０８において発生された合計の２最上位ビットに基づくことができる。他の例では、増加量の選択は現在の位相データポイントの２最上位ビットに基づくことができる。
【００６６】
ステップ１１２では、３角波発生器４４はステップ１１０において選択された増分値を累算器レジスタ５０の現在値に加算する。累算器レジスタ５０の現在値は現在のデータポイントに対応する。
【００６７】
ステップ１１４では、３角波発生器４４はロールオーバ状態が位相累積器５２内で発生したかどうかを検出する。ロールオーバ状態は位相累算器５２の現在値の最上位ビットおよびステップ１０８において発生された合計の最上位ビットを試験することによって検出されることができる。もし位相累算器５２の現在値の最上位ビットが論理１であり、そしてステップ１０８において発生された合計の最上位ビットが論理０であれば、ロールオーバ状態が発生し、そして３角波発生器はステップ１１８に進む。もし任意の他の組合せが発生すれば、ロールオーバ状態は発生せず、そして３角波発生器はステップ１１６に進む。
【００６８】
他の例では、ロールオーバ状態は累算器レジスタ５０の現在値の出力およびステップ１１２において発生された合計を試験することによって検出されることができる。もし累算器レジスタ５０の現在値が負であり、そしてステップ１１２において発生された合計が正であれば、ロールオーバ状態が発生して、３角波発生器４４はステップ１１８に進む。もし任意の他の組合せが発生すれば、ロールオーバ状態は発生せず、そして３角波発生器はステップ１１６に進む。
【００６９】
ステップ１１６では、３角波発生器４４はステップ１１２において発生された合計を累算器レジスタ５０内に蓄積する。このステップは現在のクロックサイクルの次のデータポイントが次のクロックサイクルにおいて現在のデータポイントにならせる。ステップ１１８では、３角波発生器４４は累算器レジスタ５０をゼロにすることを強いる。このステップは現在のデータポイントを次クロックサイクルにおいてゼロにさせる。
【００７０】
ステップ１２０では、３角波発生器４４はステップ１０８において発生された合計を位相累算器５２内に蓄積する。このステップは現在のクロックサイクルにおける次の位相データポイントが次のクロックサイクルにおいて現在の位相データポイントにならせる。
【００７１】
ステップ１２０の後で、３角波発生器４４はステップ１０８にループバックする。３角波発生器４４は３角波を形成する１セットのデータポイントを反復して発生するために必要な回数ループすることができる。
【００７２】
図５は図４内に示された方法１００を使用している図３内に示された３角波発生器４４によるような３角波発生器によって発生された１周期の例示的な３角波を示す図１４０である。実線１４２は望ましい正の利得、望ましい負の利得、および望ましい周波数を有している望ましい３角波を表わす。破線１４４は方法１００を使用している３角波発生器４４によって発生された３角波を表わす。位相累算器５２内に蓄積される、現在の位相データポイントは、時間軸１４６上に配置された特定の時間値に対応する。位相累算器５２内の値が増加するにつれて、現在の位相データポイントは時間軸１４６を左から右に横断する。位相累算器５２の２最上位ビットに基づいて、４つの領域１５２，１５４，１５６，１５８がこの時間軸に沿って定められる。
【００７３】
累算器レジスタ５０内に蓄積される現在のデータポイントは、軸１４８に関連する出力値に対応する。時間軸１４６が横断されるにつれて、種々のレシオが３角波発生器４４の動作の領域１５２，１５４，１５６，１５８に基づいた増分値として選択される。例えば、領域１５２では次の位相データポイントの２最上位ビットは“００”であり、そして累算器レジスタ５０に加算されたレシオはＲPである。これは３角波発生器４４の出力データポイントを望ましい正の利得でのまたは近くの値に増加させる。同様に、領域１５４では、次の位相データポイントの２最上位ビットは“０１”であり、そしてレシオＲPの加法逆数が累算器レジスタ５０に加算される。これは出力データポイントをゼロでのまたは近くの値に減少させる。領域１５６では、次の位相データポイントの２最上位ビットは“１０”であり、そしてレシオＲNの加法逆数が累算器レジスタ５０に加算される。これは出力データポイントをＲNの加法逆数でのまたは近くの値に減少させる。最後に、領域１５８では、次の位相データポイントの２最上位ビットは“１１”であり、そしてレシオＲNが累算器レジスタ５０に加算される。これは出力データポイントをゼロでのまたは近くの値に増加させる。この波が領域１５８を横断した後に、ロールオーバ状態が検出され、そして累算器レジスタ５０は、３角波の新しい周期を開始するために強いてゼロにされる１６０。
【００７４】
いろいろな例がこの開示の中に記述された。例えば、乗算器の使用を必要としない３角波発生器が開示された。乗算器の必要性の除去はハードウェアの複雑性を減少させることができ、そして３角波発生器のより効率的な動作を可能とする。さらに、ロールオーバ状態中、任意のオフセットについて補正する３角波発生器も記述された。ロールオーバ状態中に発生する任意のオフセットを補正することはロールオーバオフセットと関連するバイアス問題の多くを軽減することができ、そしてまた結果としての３角波の周波数上でのよりよい制御をも可能とする。にもかかわらず、いろいろな修正が上述の技術になされることができる。例えば、他のタイプの装置もこの中に記述された３角波発生技術を実施することができる。また、累算器レジスタの出力を試験するとか、または累算器を３角波の正のスロープよりもむしろ負のスロープ上でゼロにさせるような、他のアプローチもロールオーバオフセット値を検出して修正するために使用されることができる。
【００７５】
この中に記述された技術はハードウェア、ソフトウェア、ファームウェア、またはそれの任意の組合せで実施されることができる。モジュールまたはコンポーネントとして記述されたいずれかの特徴は統合された論理装置内で一緒に、あるいはディスクリートであるが相互動作可能な論理装置として別々に実施されることができる。もしソフトウェアで実施されれば、この技術は、実行時に、１つまたはそれ以上の上述された方法を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実施されることができる。コンピュータ可読データ蓄積媒体はコンピュータプログラム製品の部分を形成し、それはパッケージング材を含むことができる。コンピュータ可読媒体はシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読出し専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能プログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）、ＦＬＡＳＨメモリ、磁気的または光学的データ蓄積媒体、およびその他同種類のもののようなランダムアクセスメモリ（ＲＡＭ）を具備できる。そのうえ、または代わりに、この技術は、命令またはデータ構造の形式で符号を搬送または通信し、そしてコンピュータによってアクセスされ、読み出され、および／または実行されうる、コンピュータ可読通信媒体によって少なくとも部分的に実施されることができる。
【００７６】
符号は１つまたはそれ以上のディジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の同等の集積化されたまたはディスクリートな論理回路のような、１つまたはそれ以上のプロセッサによって実行されることができる。よって、この中で使用されたような、術語“プロセッサ”は、上述の構成のいくつかあるいはこの中に記述された技術の実施に適したいくつかの他の構成を指すことができる。さらに、ある局面では、この中に記述された機能性は専用のソフトウェアモジュールまたはこの開示の技術を実行するように構成あるいは適用されたハードウェアモジュール内に供給されることができる。
【００７７】
もしハードウェアで実施されれば、この開示は集積回路、チップセット、ＡＳＩＣ、ＦＰＧＡ、論理、あるいはこの中に記述された１つまたはそれ以上の技術を実行するように構成または適用されたそれのいろいろな組合せに向けられることができる。
【００７８】
この分野における通常の技術を有する人は１回路が上述された機能のいくつかまたは全部を実施できると認めるであろうことも注目されねばならない。全機能を実施する１つの回路がありうるし、あるいはこの機能を実施する複数セクションの回路もありうる。現在のモバイルプラットフォームテクノロジーとともに、１集積回路が少なくとも１つのＤＳＰを具備することができ、そしてＤＳＰまたはＤＳＰｓを制御し、および／またはそれに通信するために少なくとも１つのＡｄｖａｎｃｅｄ  Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（ＲＩＳＣ）  Ｍａｃｈｉｎｅ（ＡＲＭ）プロセッサを具備することができる。さらに、１回路は数セクション内で設計または実施されることができ、そしてある事例では、複数のセクションはこの開示内に記述された種々の機能を実行するために再使用されることができる。
【００７９】
これらのおよび他の実施形態は以下のクレームの範囲内にある。
【図１】
2010522502.tif 000004
【図２】
2010522502.tif 000005
【図３】
2010522502.tif 000006
【図４】
2010522502.tif 000007
【図５】
2010522502.tif 000008
【国際調査報告】
2010522502.tif 000009
2010522502.tif 000010
2010522502.tif 000011