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