(57)【要約】【課題】リング型オーディオネットワークシステムにおいて、パケットを巡回させながらオーディオサンプルデータの伝送を行う場合に、ノードの位置関係にかかわりなく、絶対時間で入力される信号が全ノードから同一サンプリング時間で出力されるようにサンプルずれを補正する技術を提供することを目的とする。【解決手段】自ノードが読み出すべきｃｈのオーディオサンプルデータをパケットから読み出したとき、現サンプリング周期で読み出したサンプルデータと１サンプリング周期前に読み出したサンプルデータをバッファに格納しておく。バッファのサンプルデータを外部に出力するときには、そのｃｈのサンプルデータをパケットに乗せたノードが、自ノードより上流にある場合は１サンプリング周期前のサンプルデータを読み出して出力し、自ノードより下流にある場合は現サンプリング周期のサンプルデータを読み出して出力する。【選択図】  図８
2007267029.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードをループ伝送可能となるようにリング状に接続し、それらの複数のノード間で一方向にデータ伝送を行って任意のノード間での通信を行うオーディオネットワークシステムであって、
前記複数のノードのうちの１つだけをマスタノードとし、他のノードはスレーブノードとし、
サンプリング周期毎に、前記マスタノードからフレームデータを規則的に１パケットずつ送信し、そのサンプリング周期中に、該パケットが前記リング状に接続した複数のノードを一巡するように伝送し、
該パケットの中に、複数チャンネルのオーディオサンプルデータが入る領域が用意されており、
各ノードは、
自ノードが読み出すべきチャンネルのオーディオサンプルデータを前記パケットから読み出す手段と、
前記読み出したチャンネルのオーディオサンプルデータを格納する記憶手段であって、現サンプリング周期で読み出したオーディオサンプルデータと１サンプリング周期前に読み出したオーディオサンプルデータを格納する記憶手段と、
前記マスタノードから送信されて前記パケットがループ伝送され、再び前記マスタノードに戻るまでの流れに沿って、前記読み出したチャンネルのオーディオサンプルデータを前記パケットに乗せたノードが自ノードより上流にあるか下流にあるかについての情報を取得する手段と、
前記記憶手段に記憶されている前記チャンネルのオーディオサンプルデータを読み出して出力する出力手段であって、前記チャンネルのオーディオサンプルデータを前記パケットに乗せたノードが、自ノードより上流にある場合は、前記記憶手段から当該チャンネルの１サンプリング周期前のオーディオサンプルデータを読み出して出力し、自ノードより下流にある場合は、前記記憶手段から当該チャンネルの現サンプリング周期のオーディオサンプルデータを読み出して出力する手段と
を備えることを特徴とするオーディオネットワークシステム。
【請求項２】
複数のノードをループ伝送可能となるようにリング状に接続し、それらの複数のノード間で一方向にデータ伝送を行って任意のノード間での通信を行うオーディオネットワークシステムであって、
前記複数のノードのうちの１つだけをマスタノードとし、他のノードはスレーブノードとし、
サンプリング周期毎に、前記マスタノードからフレームデータを規則的に１パケットずつ送信し、そのサンプリング周期中に、該パケットが前記リング状に接続した複数のノードを一巡するように伝送し、
該パケットの中に、複数チャンネルのオーディオサンプルデータが入る領域が用意されており、
各ノードは、
自ノードが読み出すべきチャンネルのオーディオサンプルデータを前記パケットから読み出す手段と、
前記読み出したチャンネルのオーディオサンプルデータを格納する記憶手段であって、現サンプリング周期で読み出したオーディオサンプルデータからｎサンプリング周期前に読み出したオーディオサンプルデータまでのｎ＋１個（ｎは１以上の整数）のオーディオサンプルデータを格納する記憶手段と、
前記マスタノードから送信されて前記パケットがループ伝送され、再び前記マスタノードに戻るまでの流れに沿って、前記読み出したチャンネルのオーディオサンプルデータを前記パケットに乗せたノードが自ノードより上流にあるか下流にあるかについての情報を取得する手段と、
前記記憶手段に記憶されている前記チャンネルのオーディオサンプルデータを読み出して出力する出力手段であって、前記チャンネルのオーディオサンプルデータを前記パケットに乗せたノードが、自ノードより上流にある場合は、前記記憶手段から当該チャンネルのｎサンプリング周期前のオーディオサンプルデータを読み出して出力し、自ノードより下流にある場合は、前記記憶手段から当該チャンネルのｎ−１サンプリング周期前のオーディオサンプルデータを読み出して出力する手段と
を備えることを特徴とするオーディオネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リング型オーディオネットワークシステムにおけるノードの位置関係に基づいて各ノード間のサンプルずれを補正する技術に関する。
【背景技術】
【０００２】
従来より、コンサート、演劇などのＰＡ、音楽製作、構内放送などに使用されるオーディオネットワークシステムにおいて、音響信号の通信を行う技術として、非特許文献１に記載のCobraNet（登録商標）、非特許文献２に記載のSuperMAC（登録商標）、及び、非特許文献３に記載のEtherSound（登録商標）などが知られている。これらは、何れもイーサネット（登録商標）上で音響信号を伝送する技術である。
【０００３】
一方、電話回線用のネットワークに用いられる技術として、FDDI/TokenRingなどのリング型伝送ネットワークが知られている。この方式では、トークン（データ送信権）が、リング状に接続されたノード間を巡回しており、トークンを得たノードだけがデータの送信を実行できる。
【非特許文献１】http://www.balcom.co.jp/cobranet.htm
【非特許文献２】http://www.sonyoxford.co.uk/pub/supermac/
【非特許文献３】http://www.ethersound.com/news/getnews.php?enews_key=101
【発明の開示】
【発明が解決しようとする課題】
【０００４】
音響信号（オーディオサンプルデータ）の伝送方式として、上述の従来から知られているリング型伝送ネットワークを用いることが考えられる。図１３は、リング型のオーディオネットワークシステムの一例を示す。ノード１３０１→ノード１３０２→ノード１３０３→ノード１３０２→ノード１３０１のように往復する形式で信号が巡回する。図１４も、同様のリング型のオーディオネットワークシステムの別の例を示す。この例では、ノード１４０１〜１４０６がこの順に物理的にリング状に接続されている。マスタノード１４０１から送信されたパケットが、ノード１４０１→ノード１４０２→ノード１４０３→ノード１４０４→ノード１４０５→ノード１４０６のように、１サンプリング周期で１回巡回する。このパケットには複数チャンネル（ｃｈ）のオーディオサンプルデータの格納領域が確保されており、各ノードは適宜必要なｃｈにデータを乗せて伝送を行う。
【０００５】
しかし、このようなリング状にデータを伝送するシステムでは、例えばノード１４０４で格納したサンプルデータは、ノード１４０６では同一サンプリング時間のデータが取り出せるが、ノード１４０３では同一サンプリング時間のデータが取り出せない。ノード１４０４で格納したサンプルデータは、マスタノード１４０１に至って、次のサンプリング時間に巡回するパケットに乗せられ、そのパケットがノード１４０３に至って受信されるからである。以下、このことについて具体的に説明する。
【０００６】
図１５（ｂ）は、ノードＡ〜Ｄが、図１３に示したような信号が往復する形式で接続されたリング型のオーディオネットワークシステムを示す。ノードＢがマスタノードである。マスタノードＢは、１サンプリング時間の開始のタイミングでパケットを送信する。いま図１５（ａ）に示すように、巡回させるパケットのｃｈ１にはノードＡがデータを格納し、ｃｈ２にはノードＢがデータを格納し、ｃｈ３にはノードＣがデータを格納し、ｃｈ４にはノードＤがデータを格納するものとする。また、各ノードＡ〜Ｄは、それぞれｃｈ１〜ｃｈ４の全てのデータを取り込むものとする。１５０１は、あるサンプリング時間ｔ−１にマスタノードＢに戻っているデータであり、サンプリング時間ｔ−１における各ｃｈのデータが設定されている。新たなサンプリング時間ｔに入ったとき、ノードＢでは、パケットのｃｈ２の領域に時間ｔのデータを格納し、パケット１５０２として次のノードＣに送信する。ノードＣは、これをパケット１５０３のように受信し、そのｃｈ３の領域に時間ｔのデータを格納し、パケット１５０４として次のノードＤに送信する。ノードＤは、これをパケット１５０５のように受信し、そのｃｈ４の領域に時間ｔのデータを格納し、パケット１５０６として復路の経路に送信する。復路のノードＣとＢでは、１５０７，１５０８に示すようにパケットをそのまま通す（スルー）するだけである。次のノードＡは、これをパケット１５０９のように受信し、そのｃｈ１の領域に時間ｔのデータを格納し、パケット１５１０として次のノードＢに送信する。マスタノードＢは、これをパケット１５１１のように受信し、再び次のサンプリング時間まで待ってから、同様の処理を行う。
【０００７】
以上のようにパケットが巡回している間に、各ノードＡ〜Ｄは、それぞれ楕円で囲んだパケット１５１０，１５１１，１５０４，１５０５のｃｈ１〜ｃｈ４のデータを取り込むことになる。この場合、マスタノードＢやその直前のノードＡでは時間ｔのサンプルを得られるが、ノードＣやＤではサンプルずれ（すなわち、時間ｔ−１のサンプルと時間ｔのサンプルとが混在して取り込まれる）が発生する。これは、マスタノードから巡回を開始して１サンプリング周期でパケットが各ノードを一周巡回する場合に、ネットワーク中のノードの配置（データの格納場所と抽出場所の位置関係）によって、あるノードが時間ｔに格納したデータを別のノードが取り出す際、当該サンプリング時間ｔの間に取り出せるノードと、次のサンプリング時間になってから取り出せるノードがあるからである。
【０００８】
以上のようなサンプルずれは、通常はほとんど気にならない程度のずれである。しかし、プロ用の各種オーディオ機器では、このようなサンプルずれが許されない場合がある。
【０００９】
本発明は、リング型オーディオネットワークシステムにおいて、パケットを巡回させながらオーディオサンプルデータの伝送を行う場合に、ノードの位置関係にかかわりなく、絶対時間で入力される信号が全ノードから同一サンプリング時間で出力されるようにサンプルずれを補正する技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明は、複数のノードをループ伝送可能となるようにリング状に接続し、それらの複数のノード間で一方向にデータ伝送を行って任意のノード間での通信を行うオーディオネットワークシステムにおいて、複数のノードのうちの１つだけをマスタノードとし、他のノードはスレーブノードとする。そして、サンプリング周期毎に、マスタノードからフレームデータを規則的に１パケットずつ送信して該サンプリング周期中に一巡するようにし、該パケットの中に、複数チャンネルのオーディオサンプルデータが入る領域を用意しておき、これによりノード間のオーディオサンプルデータの伝送を実現する。各ノードは、自ノードが読み出すべきチャンネルのオーディオサンプルデータを前記パケットから読み出したとき、現サンプリング周期で読み出したオーディオサンプルデータと１サンプリング周期前に読み出したオーディオサンプルデータをバッファに格納しておく。バッファのオーディオサンプルデータを外部に出力するときには、そのチャンネルのオーディオサンプルデータをパケットに乗せたノードが、自ノードより上流にある場合は１サンプリング周期前のオーディオサンプルデータを読み出して出力し、自ノードより下流にある場合は現サンプリング周期のオーディオサンプルデータを読み出して出力する。なお、バッファをｎ＋１（ｎは１以上の整数）段構成としてもよい。
【発明の効果】
【００１１】
本発明によれば、同期リング型オーディオネットワークにおいて、データを入力するノードと出力するノードの位置関係に依存することなく、全てのノードで全てのチャンネルに対して同一サンプリング時間のデータを取り出すことができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を用いて本発明の実施の形態を説明する。
【００１３】
図１は、本発明に係るオーディオネットワークシステムのモジュール構成を示す。ノード１０１〜１０４は、パケット１５０を点線１５１に示すようにリング状に巡回させるように接続された４つのノードである。ノード１０１には、アナログディジタル変換器（ＡＤＣ）１１１経由でマイク１１２が接続されている。ノード１０１は、ＡＤＣ１１１経由で入力したオーディオデータを、巡回するパケット１５０の任意のｃｈを用いて、他のノードに伝送できる。ノード１０２には、ミキサ１２１が接続されている。ノード１０２は、巡回するパケット１５０の任意のｃｈからオーディオデータを取り込み、ミキサ１２１に送ることができる。ミキサ１２１は、入力したオーディオデータのミキシング処理、音量レベル制御処理、及び効果付与処理などの各種の信号処理を実行する。信号処理の結果のオーディオデータは、ミキサ１２１からノード１０２に入力し、ノード１０２は、入力したオーディオデータを、巡回するパケット１５０の任意のｃｈを用いて、他のノードに伝送できる。ノード１０３には、ディジタルアナログ変換器（ＤＡＣ）１３１を経由してパワーアンプ１３２とスピーカ１３３が接続されている。同様に、ノード１０４には、ＤＡＣ１４１を経由してパワーアンプ１４２とスピーカ１４３が接続されている。ノード１０３は、巡回するパケット１５０の任意のｃｈからオーディオデータを取り込み、ＤＡＣ１３１経由でパワーアンプ１３２に送り、スピーカ１３３で放音することができる。ノード１０４も同様である。
【００１４】
各ノード１０１〜１０４は、それぞれバッファＡ及びＢの２段構成のバッファを備えている。各バッファは、そのノードで取り込むべきオーディオデータを格納するバッファであり、２段構成になっているのは、各ｃｈ毎に最新のサンプルデータと１サンプリング時間前のサンプルデータとを格納するためである。記号Ａが付されたバッファ（例えば１１０Ａ）に最新の取り込みデータを格納し、記号Ｂが付されたバッファ（例えば１１０Ｂ）には１サンプリング時間前のサンプルを格納する。
【００１５】
図２は、各ノードのハードウェア構成を示す。１つのノードは、中央処理装置（ＣＰＵ）２０１、ランダムアクセスメモリ（ＲＡＭ）２０２、リードオンリメモリ（ＲＯＭ）２０３、通信インタフェース（Ｉ／Ｆ）２０４、音声Ｉ／Ｏ（入出力インタフェース）２０６、および通信バス２０８を備える。
【００１６】
ＣＰＵ２０１は、このノードの全体の動作を制御する処理装置である。ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムのロード領域や各種のバッファなどを設定するワーク領域として用いる揮発性メモリである。ＲＯＭ２０３は、ＣＰＵ２０１が実行する各種のプログラムや定数データなどを記憶した不揮発性メモリである。通信Ｉ／Ｆ２０４には、外部機器として他のノード２０５が接続される。ここでは他のノード２０５を１つのブロックで示しているが、例えばノード１０２であれば、ノード１０３および１０１の両方と接続されるので、通信Ｉ／Ｆ２０４は、それらのノードと接続できるように複数設けられている。音声Ｉ／Ｏ２０６は、ＡＤＣ、ＤＡＣ、あるいはミキサなどの外部機器と接続するインタフェースである。
【００１７】
ここで本実施形態のオーディオネットワークシステムにおけるサンプルずれの補正手法について説明する。図８は、サンプルずれの補正手法を説明するための図である。ノードＡ〜Ｄは、信号が往復する形式でリング状に接続されており、ノードＢがマスタノードとする。マスタノードＢは、１サンプリング時間の開始のタイミングでパケットを送信する。巡回させるパケットのｃｈ１にはノードＡがデータを格納し、ｃｈ２にはノードＢがデータを格納し、ｃｈ３にはノードＣがデータを格納し、ｃｈ４にはノードＤがデータを格納するものとする。また、各ノードＡ〜Ｄは、それぞれｃｈ１〜ｃｈ４の全てのデータを取り込むものとする。８０１は、あるサンプリング時間ｔ−１にマスタノードＢに戻っているデータであり、サンプリング時間ｔ−１における各ｃｈのデータが設定されている。新たなサンプリング時間ｔに入ったとき、ノードＢでは、パケットのｃｈ２の領域に時間ｔのデータを格納し、パケット８０２として次のノードＣに送信する。ノードＣは、これをパケット８０３のように受信し、そのｃｈ３の領域に時間ｔのデータを格納し、パケット８０４として次のノードＤに送信する。ノードＤは、これをパケット８０５のように受信し、そのｃｈ４の領域に時間ｔのデータを格納し、パケット８０６として復路の経路に送信する。復路のノードＣとＢでは、８０７，８０８に示すようにパケットをそのまま通す（スルー）するだけである。次のノードＡは、これをパケット８０９のように受信し、そのｃｈ１の領域に時間ｔのデータを格納し、パケット８１０として次のノードＢに送信する。マスタノードＢは、これをパケット８１１のように受信し、再び次のサンプリング時間まで待ってから、同様の処理を行う。
【００１８】
各ノードは、図１で説明したように、それぞれバッファＡとＢを備えている。例えば、マスタノードＢであれば、８２２Ａで示す１行が各ｃｈの最新のサンプルデータを格納するバッファＡであり、８２２Ｂで示す１行が各ｃｈの１サンプリング時間前のサンプルデータを格納するバッファＢである。他のノードも同様である。各ノードＡ〜Ｄでは、それぞれ、パケットを次のノードに送信するとき、その送信パケットのｃｈ１〜ｃｈ４のデータをバッファＡに格納する。このとき、それまでにバッファＡに格納されていたデータはバッファＢにコピーされ、その後、バッファＡへのデータの格納が行われるものとする。これにより、各ノードＡ〜Ｄでは、ｃｈ１〜ｃｈ４毎に、常に１サンプリング時間前のサンプルと最新のサンプルとがバッファに保持されていることになる。
【００１９】
各ノードＡ〜Ｄは、バッファＡ及びＢに格納されたサンプルデータを、サンプルずれが起こらないように出力（ノードから出力して、例えばミキサに渡したり、アンプを通して放音したりすること）する。そのためには、リング状に各ノードを流れるデータの流れに沿って、自ノードより上流のノード（マスタノードから自ノードの直前のノードまで）で書き込まれるｃｈについてはバッファＢに格納されている１サンプリング時間前のデータを出力し、自ノードより下流のノード（自ノードの直後のノードからマスタノードの直前のノードまで）で書き込まれるｃｈについてはバッファＡに格納されている現サンプリング時間のデータを出力すればよい。自ノードで書き込むｃｈについては、図８の例では、書き込むべき現サンプリング時間のデータをパケットの当該ｃｈに格納してから、他のｃｈのデータと共にバッファＡに書き込んでいるので、バッファＢの当該ｃｈのデータを出力するようにしている。（もちろん受信したパケットをバッファに格納してから、自ノードで書き込むｃｈのデータを更新してもよいので、そのような手順で処理するときには、バッファＡから出力すればよい。）図８で、楕円を付けてある各サンプルが、上述したルールに沿って各ノードから出力されるサンプルを示している。これにより、サンプルがずれることなく、時間ｔ−１のサンプルが一斉に出力できることになる。
【００２０】
なお、各ノードの接続位置や各ノードでどのｃｈに書き込むかについての情報は、予め全ノード間で共有しているものとする。例えば、本システムの立ち上げ時、ノード構成に変更があったとき、各ノードでパケットに書き込むｃｈやパケットから取り込むｃｈに変更があったときなどに、例えばマスタノードの主導で制御データをノード間でやり取りすることにより、これらの情報を共有すればよい。
【００２１】
図３は、各ノードを巡回するパケットを受信したときに、当該ノードで実行されるオーディオデータ入力ルーチンのフローチャートである。ステップ３０１で、このノードで入力するべきｃｈのオーディオデータを入力する。これは、例えば図１のノード１０１においてマイク１１２からの音響信号をＡＤＣ１１１経由で入力したり、ミキサ１２１から出力されるディジタル音響信号をノード１０２に入力するということである。ステップ３０２では、受信したパケット中の当該ｃｈのデータを、ステップ３０１で入力した最新のサンプルで上書き更新する。ステップ３０３では、１つ前のサンプリング時間（サイクル）のサンプルを格納してあるバッファＢの当該ｃｈのデータを破棄する。ステップ３０４では、バッファＢの当該ｃｈのデータを、現在のサイクル用のサンプルが格納されたバッファＡの当該ｃｈのデータで上書きする。ステップ３０５では、バッファＡの当該ｃｈのデータをパケットの当該ｃｈのデータで上書きする。複数ｃｈの入力を行うときは、以上の処理を繰り返せばよい。なお、ステップ３０３のデータの破棄は、ステップ３０４で上書きすることにより自動的に破棄したことになるものである。
【００２２】
図４は、各ノードでバッファに取り込んだサンプルデータを外部機器に出力するオーディオデータ出力ルーチンのフローチャートである。これは、例えば図１のノード１０２からミキサ１２１にサンプルデータを出力したり、ノード１０３，１０４でＤＡＣ及びアンプを経由して放音するということである。ステップ４０１で、このノードで外部に出力するべき全ｃｈの出力データを更新したか判別する。これは、出力すべきｃｈのサンプルデータが全て所定のワーク領域（出力データ）に集まったかを判別する処理である。まだであれば、ステップ４０２で、該当ｃｈのサンプルをパケットに格納したノードの位置情報を取得する。ステップ４０３で、そのノード位置が自ノードよりも前段（マスタノードから自ノードの直前のノードまで）か後段（自ノードの直後のノードからマスタノードの直前のノードまで）かを判定する。前段のノードであるときは、ステップ４０４で、１つ前のサイクル用のバッファＢから該当ｃｈのサンプルデータを取得する。後段であるときは、ステップ４０５で、現在のサイクル用のバッファＡから該当ｃｈのサンプルデータを取得する。次にステップ４０６で、取得したデータで出力データを更新し、ステップ４０１に戻る。出力すべき全ｃｈのサンプルデータが出力データとして揃ったら、ステップ４０１から４０７に進み、オーディオデータ出力時刻補正処理（後に詳述する）を行う。次に、ステップ４０８で、このノードで出力するべきｃｈのオーディオデータを、指定された外部機器へ、出力する。
【００２３】
以上により、図８で説明したサンプルずれの補正が行われ、同一のサンプリング時間のサンプルが各ノードから一斉に出力される。
【００２４】
なお、図８ではバッファを２段構成としたが、バッファをｎ＋１（ｎは１以上の整数）段構成として、現サンプリング周期で読み出したサンプルからｎサンプリング周期前に読み出したサンプルまでのｎ＋１個のオーディオサンプルデータを格納するようにし、出力時には、そのサンプルをパケットに乗せたノードが、自ノードより上流にある場合はｎサンプリング周期前のサンプルを読み出して出力し、自ノードより下流にある場合はｎ−１サンプリング周期前のサンプルを読み出して出力するようにしてもよい。
【００２５】
次に、ステップ４０７のオーディオデータ出力時刻補正処理について詳しく説明する。上記のサンプルずれの補正により、サンプル単位で出力のタイミングを合わせることはできる。しかし、上述したリング状のネットワークを巡回するパケットにデータを乗せて各ｃｈのサンプルデータを伝送するので、ノード間の伝送路による遅れが発生する。この遅れは微少であり無視できる場合もあるが、プロ用のオーディオ機器では、このような微少な遅れも許されない場合がある。オーディオデータ出力時刻補正処理は、このような伝送路による遅延を補正して、各ノードから出力されるオーディオ信号の出力のタイミングを高い精度で一致させる処理である。
【００２６】
オーディオデータ出力時刻補正処理について具体的に説明する。なお、ここでは図１３に示したように信号が往復するような接続形態のネットワークを前提として説明する。各ノードにおけるパケットへのデータの書き込みとパケットからのデータの取り込みは、往路のルート中で行うものとし、復路のルートはパケットをスルーするのみとする。まず、説明のために、図９に示すように、配線長aにおける遅延時間をt(a)、各ノード９０１，９０２ごとのフォワード側の送信／受信時刻をTFT,TFR、バックワード側の送信／受信時刻をTBT,TBRと、それぞれ表記する。また、ネットワーク全体の遅延時間をTotal Delayと、マスタノードを起点としたフォワード側／バックワード側の遅延時間をForward Delay,Backward Delayと、各ノードにおけるパケット受信時間差をNode(Name) Delayと、それぞれ表記する。Total Delayは、ネットワークを１回巡回したときの遅延時間である。Forward Delayは、マスタノードのフォワード側から送信したデータが戻ってきてフォワード側で受信されるまでの遅延時間である。Backward Delayは、マスタノードのバックワード側から送信したデータが戻ってきてバックワード側で受信されるまでの遅延時間である。
【００２７】
なお、マスタノードがサンプリング周期の開始タイミングにパケットの送信を開始する向きを「フォワード側」と呼び、その逆の向きを「バックワード側」と呼ぶ。図９では、図の右側がフォワード側であり、左側がバックワード側である（これは図１０や図１１でも同じ）。
【００２８】
図１０は、マスタノードで計算する遅延時間を示す。図１０（ａ）は、マスタノード１００１がバックワード側の末端に配置され、マスタノード１００１のバックワード側出力がマスタノード内で直接バックワード側入力に結線されている例である。図１０（ｂ）は、マスタノード１０１２がスレーブノード１０１１と１０１３の間にあり、マスタノード１０１２のフォワード側の入出力とバックワード側の入出力のそれぞれにスレーブノード１０１１，１０１３が接続されている例である。図１０（ｃ）は、マスタノード１０２３がフォワード側の末端に配置され、マスタノード１００１のフォワード側出力がマスタノード内で直接フォワード側入力に結線されている例である。これらの各例毎に、図に示すように、Total Delay,Forward Delay,Backward Delayを計算する。ここではノードが３つの場合を例としたが、さらに多くのノードが接続される場合も同様に計算すればよい。
【００２９】
図１１は、スレーブノードで計算する遅延時間を示す。各スレーブノードでは、フォワード側とバックワード側のパケットデータの受信時間差（遅延時間）を計算する。この遅延時間は、マスタノードとの位置関係で計算方法が異なる。例えば、図１１（ａ）に示すように、マスタノード１１０１に対してフォワード側にあるスレーブノード１１０２，１１０３（それぞれＳ３，Ｓ４と名前が付けてある）では、図１１（ｄ）及び（ｅ）に示すように、TFR−TBRで上記遅延時間を計算する。一方、マスタノード１１０１に対してバックワード側にあるスレーブノード１１０４，１１０５（それぞれＳ１，Ｓ２と名前が付けてある）では、図１１（ｂ）及び（ｃ）に示すように、TBR−TFRで上記遅延時間を計算する。また、図１１（ａ）の接続例で、マスタノード１１０１で計算される遅延時間は図１１（ｆ）のようになる。
【００３０】
図１２は、各ノードでサンプルデータを外部機器（ミキサやアンプなど）に出力するときに、出力時刻をどれ程遅らせるか、その補正時間の計算例を示す。図１２（ａ）の横軸は時間の経過方向を示し、縦軸に並べたＳ１，Ｓ２，Ｍ，Ｓ３，Ｓ４は図１１（ａ）のマスタノード及びスレーブノードを示す。Ｍ→Ｓ３→Ｓ４→Ｓ３→Ｍ→Ｓ２→Ｓ１→Ｓ２→Ｍの矢印は、図１１（ａ）のネットワーク構成でこの矢印に従うようにパケットデータが巡回することを示している（右下がりの向きの矢印は往路、右上がりの向きの矢印は復路を示す）。この矢印に従ってパケットデータが巡回するとき、各ノード間の遅延時間は１２０４にそれぞれ示した。また、１２０１はTotal Delay、１２０２はForward Delay、１２０３はBackward Delayを示す。
【００３１】
図１２（ａ）の１２１３は、マスタノードＭから送信されたパケットがスレーブノードＳ３で受信されたタイミングを示す。このパケットの受信により、当該ノードＳ３で上述の図４の処理が実行される。同様に、タイミング１２１４ではノードＳ４で、タイミング１２１１ではノードＳ１で、タイミング１２１２ではノードＳ２で、それぞれ図４の処理が実行される。これら各ノードにおける図４の処理で、ステップ４０７の出力時刻補正を行わないとすると、ノードＳ３はタイミング１２１３でオーディオデータを出力し、ノードＳ４はタイミング１２１４でオーディオデータを出力し、…というように処理されるため各ノードで出力タイミングがずれてしまう。そこで、本実施形態では各ノードでの上記各タイミング１２１３，１２１４，１２１１，１２１２をそれぞれタイミング１２１０まで遅延させる。タイミング１２１０はパケットがマスタノードに戻ったタイミングである。このタイミング１２１０まで待てば、全ノードで同じサンプリング時間のサンプルが揃い、一斉に出力することでオーディオ信号の出力のタイミングを高い精度で一致させることができる。各ノードにおけるパケットの受信タイミングからタイミング１２１０までの遅延時間を補正時間と呼ぶ。１２２１〜１２２４は、各ノードでの補正時間の計算方法を示す。
【００３２】
図１２（ｂ）は、フォワード側のスレーブノード用の補正時間の計算方法を示す。フォワード側のスレーブノードは、例えばノードＳ３，Ｓ４である。これらのノードでは、要するに、自ノードのバックワード側入力（TBR）にパケットが入力してから、該パケットがマスタノードに戻るまでの時間を計算すればよいと言うことであるから、Total Delay−｛（Total Delay）−（Backward Delay）−（Node(Name) Delay）｝／２で計算できる。これを整理して図１２（ｂ）の式を得ている。式１２２３と１２２４は、図１２（ｂ）の式に図１１（ｆ）を代入したものである。
【００３３】
図１２（ｃ）は、バックワード側のスレーブノード用の補正時間の計算方法を示す。バックワード側のスレーブノードは、例えばノードＳ１，Ｓ２である。これらのノードでも、要するに、自ノードのバックワード側入力（TBR）にパケットが入力してから、該パケットがマスタノードに戻るまでの時間を計算すればよいと言うことであるから、｛（Total Delay）−（Forward Delay）−（Node(Name) Delay）｝／２で計算できる。これは図１２（ｃ）の式である。式１２２１と１２２２は、図１２（ｃ）の式に図１１（ｆ）を代入したものである。
【００３４】
図５は、マスタノードの遅延時間算出ルーチンのフローチャートである。ステップ５０１で、ネットワーク全体の遅延時間（Total Delay）を算出する。ステップ５０２で、フォワード側の遅延時間（Forward Delay）を算出する。ステップ５０３で、バックワード側の遅延時間（Backward Delay）を算出する。ステップ５０４で、全ノードにこれらの情報を通知する。以上の処理により、図１０で説明した各遅延時間が算出される。
【００３５】
図６は、スレーブノードの遅延時間算出ルーチンのフローチャートである。ステップ６０１で、ネットワーク全体、フォワード側、及びバックワード側の遅延時間情報（Total Delay，Forward Delay，Backward Delay）を取得する。ステップ６０２で、自ノードの位置がフォワード側かバックワード側かを判定する。フォワード側なら、ステップ６０３で自ノードのパケット時間受信差を求め、ステップ６０４で図１２（ｂ）に示す式により補正時間を算出する。バックワード側なら、ステップ６０５で自ノードのパケット時間受信差を求め、ステップ６０６で図１２（ｃ）に示す式により補正時間を算出する。
【００３６】
上記図５及び図６の処理により、図１０及び図１１で説明した各遅延時間が算出される。図５及び図６の処理は、オーディオデータの伝送を開始する前に事前に実行しておき、各スレーブノードで補正時間を算出しておく。
【００３７】
図７は、スレーブノードのオーディオデータ出力ルーチンのフローチャートである。この処理は図４のステップ４０７で実行される。ステップ７０１でタイマをリセットし、ステップ７０２，７０３でタイマが補正時間（このノードで上記ステップ６０４または６０６で算出してあるもの）を超えるまで待つ。補正時間を超えたらリターンする。その後、図４のステップ４０８でオーディオデータが出力されるので、これにより図１２で説明したように各ノード毎の補正時間だけ遅延させて出力がなされ、全ノードで出力タイミングが合う。
【００３８】
なお、上記実施形態では、図１３のような接続関係のオーディオネットワークシステムを例として説明したが、複数のノードをリング状に接続しパケットを巡回させるようなオーディオネットワークシステムであれば、どのようなものでも本発明は適用可能である。その場合は、各ノードにおいて、ノードでパケットが受信された時点から該パケットが前記マスタノードで受信される時点までの時間を求めて補正時間とすればよい。システム立ち上げ時などに、補正時間計測用のパケットを流し、これにより各ノードにおけるパケットが受信された時点から該パケットが前記マスタノードで受信される時点までの時間を求めてもよい。
【図面の簡単な説明】
【００３９】
【図１】本発明に係るオーディオネットワークシステムのモジュール構成図
【図２】各ノードのハードウェア構成図
【図３】オーディオデータ入力ルーチンのフローチャート
【図４】オーディオデータ出力ルーチンのフローチャート
【図５】マスタノードの遅延時間算出ルーチンのフローチャート
【図６】スレーブノードの遅延時間算出ルーチンのフローチャート
【図７】スレーブノードのオーディオデータ出力ルーチンのフローチャート
【図８】サンプルずれの補正手法を説明するための図
【図９】遅延時間と送信／受信時刻の定義を示す図
【図１０】マスタノードで計算する遅延時間を示す図
【図１１】スレーブノードで計算する遅延時間を示す図
【図１２】各ノードでの補正時間の計算例を示す図
【図１３】リング型のオーディオネットワークシステムの一例を示す図
【図１４】リング型のオーディオネットワークシステムの別の例を示す図
【図１５】サンプルずれの発生例を示す図
【符号の説明】
【００４０】
１０１〜１０４…ノード、１５０…パケット、１１１…アナログディジタル変換器（ＡＤＣ）、１１２…マイク、１２１…ミキサ、１３１，１４１…ディジタルアナログ変換器（ＤＡＣ）、１３２，１４２…パワーアンプ、１３３，１４３…スピーカ。
【図１】
2007267029.tif 000003
【図２】
2007267029.tif 000004
【図３】
2007267029.tif 000005
【図４】
2007267029.tif 000006
【図５】
2007267029.tif 000007
【図６】
2007267029.tif 000008
【図７】
2007267029.tif 000009
【図８】
2007267029.tif 000010
【図９】
2007267029.tif 000011
【図１０】
2007267029.tif 000012
【図１１】
2007267029.tif 000013
【図１２】
2007267029.tif 000014
【図１３】
2007267029.tif 000015
【図１４】
2007267029.tif 000016
【図１５】
2007267029.tif 000017