(57)【特許請求の範囲】
【請求項１】
ネットワークを介して送信側装置から受信側装置へオーディオサンプルデータを伝送するデータ伝送方式であって、
（ａ）送信側において、
第１の周期の時系列的な配列を持つ複数のオーディオサンプルデータを供給するステップと、ここで前記第１の周期は可変であり、
２以上の所定数の前記オーディオサンプルデータ毎に１つのオーディオサンプルデータを特定し、該特定されたオーディオサンプルデータの時間位置を示す時間情報を付加するステップと、
所定数の前記オーディオサンプルデータ及び該オーディオサンプルデータの中のいずれかに対して付加された前記時間情報を１パケットとして、前記第１の周期に非同期の前記ネットワークにおけるパケット送信サービス区間の周期である第２の周期の所定タイミングにおいて、前記ネットワークに送出するステップと
を具備し、
（ｂ）受信側において、
前記ネットワークを介して前記パケットを受信するステップと、
受信したパケットに含まれる前記オーディオサンプルデータを一時記憶するステップと、
前記一時記憶したオーディオサンプルデータを順次再生読出しするためのステップであって、前記受信したパケットに含まれる前記時間情報に基づき前記一時記憶したオーディオサンプルデータのサンプリング周期を更新しこの読出しを制御することにより、前記第１の周期に対応する周期で再生が行われるようにするステップと
を具備することを特徴とするデータ伝送方式。
【請求項２】
送信側装置と受信側装置との間でネットワークを介してオーディオサンプルデータを伝送するためのシステムであって、
（ａ）前記送信側装置は、
第１の周期の時系列的な配列を持つ複数のオーディオサンプルデータを供給する装置と、ここで前記第１の周期は可変であり、
２以上の所定数の前記オーディオサンプルデータ毎に１つのオーディオサンプルデータを特定し、該特定されたオーディオサンプルデータの時間位置を示す時間情報を付加する装置と、
所定数の前記オーディオサンプルデータ及び該オーディオサンプルデータの中のいずれかに対して付加された前記時間情報を１パケットとして、前記第１の周期に非同期の前記ネットワークにおけるパケット送信サービス区間の周期である第２の周期の所定タイミングにおいて、前記ネットワークに送出する装置と
を含み、
（ｂ）前記受信側装置は、
前記ネットワークを介して前記パケットを受信する装置と、
受信したパケットに含まれる前記オーディオサンプルデータを一時記憶する装置と、
前記一時記憶したオーディオサンプルデータを順次再生読出しするための装置であって、前記受信したパケットに含まれる前記時間情報に基づき前記一時記憶したオーディオサンプルデータのサンプリング周期を更新しこの読出しを制御することにより、前記第１の周期に対応する周期で再生が行われるようにするものと
を含む。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ディジタルオーディオデータのような、所定周期の時系列的な配列を持つ複数のオーディオサンプルデータを、ネットワークを介して伝送するデータ伝送方式に関し、特に、受信側においてその正確な時間関係を再現しうるような形で、送信側においてデータ形式を構成し、伝送するようにしたデータ伝送方式に関する。
【０００２】
【従来の技術】
ネットワークを介したデータの伝送方式には、大別すると、同期方式と非同期方式とがある。同期方式では送信側と受信側とが同期して動作するので、受信側における情報の時間的位置の正確な再現が要求されるオーディオデータの伝送に適している。しかし、同期信号線を別途設けるなどの、送受信間での同期をとらせるための構成が必要となり、かつ、同期をとらせることにより通信帯域を静的に確保することになるため、通信方式としての汎用性に欠けるという欠点があった。すなわち、同期通信が必要ない場合であっても不要な帯域を確保したままになり、他の情報を伝送することができないという問題点がある。
【０００３】
これに対して、非同期方式では、通信帯域を動的に確保することにより、上記のような欠点を回避することができるが、通信のオーバーヘッドを減らすためには、或る程度の情報をまとめた上で非同期パケットを発行するようにしないと、データ通信効率が低下してしまう。しかし、或る程度の情報をまとめたパケットの送信では、データ本来の時間的な位置の情報が欠落してしまうことになる。そこで、パケットによるデータ伝送方式においては、データと共に該データの時間的位置を示す時間情報も一緒に伝送することが考えられている。すなわち、個々のデータ毎にその時間的位置を示す「タイムスタンプ」といわれる時間情報を付加し、これらを１パケットに含めて伝送するものである。
【０００４】
【発明が解決しようとする課題】
しかし、個々のデータ毎にその時間的位置を示す時間情報を付加して１パケットを構成したのでは、データ量が増大してしまうので、得策とはいえない。
この発明は上述の点に鑑みてなされたもので、ディジタルオーディオデータのような、一定周期の時系列的な配列を持つ複数のオーディオサンプルデータを、受信側においてその時間関係を再現できるような形態で、送信側からネットワークを介して伝送する場合において、非同期パケットを採用してその利点を享受できるようにすると共に、パケットに含めて送信する時間情報をできるだけ少ないデータ量で表現して１パケット当りの送信データ量を減少させることができるようにしたデータ伝送方式を提供しようとするものである。
また、送受信間の時間遅れをできるだけ少なくしたデータ伝送方式を提供しようとするものである。
更に、少ないデータ量で時間情報を表現した場合において、受信側での時間情報の再生演算処理をできるだけ簡略化できるようにしたデータ伝送方式を提供しようとするものである。
【０００５】
【課題を解決するための手段】
この発明に係るデータ伝送方式は、ネットワークを介して送信側装置から受信側装置へオーディオサンプルデータを伝送するデータ伝送方式であって、（ａ）送信側において、第１の周期の時系列的な配列を持つ複数のオーディオサンプルデータを供給するステップと、ここで前記第１の周期は可変であり、２以上の所定数の前記オーディオサンプルデータ毎に１つのオーディオサンプルデータを特定し、該特定されたオーディオサンプルデータの時間位置を示す時間情報を付加するステップと、所定数の前記オーディオサンプルデータ及び該オーディオサンプルデータの中のいずれかに対して付加された前記時間情報を１パケットとして、前記第１の周期に非同期の前記ネットワークにおけるパケット送信サービス区間の周期である第２の周期の所定タイミングにおいて、前記ネットワークに送出するステップとを具備し、（ｂ）受信側において、前記ネットワークを介して前記パケットを受信するステップと、受信したパケットに含まれる前記オーディオサンプルデータを一時記憶するステップと、前記一時記憶したオーディオサンプルデータを順次再生読出しするためのステップであって、前記受信したパケットに含まれる前記時間情報に基づき前記一時記憶したオーディオサンプルデータのサンプリング周期を更新しこの読出しを制御することにより、前記第１の周期に対応する周期で再生が行われるようにするステップとを具備することを特徴とする。
【０００６】
これによれば、種々のサンプリング周期を任意に取りうるオーディオサンプルデータ（つまり可変の第１の周期の配列を持つオーディオサンプルデータ）を送信するに際して、この第１の周期に非同期の前記ネットワークにおけるパケット送信サービス区間の周期である第２の周期の所定タイミングにおいて、該オーディオサンプルデータのパケットが送信される。その際、時間情報をすべてのオーディオサンプルデータに対して付加することをせずに、２以上の所定数の前記オーディオサンプルデータ毎に１つのオーディオサンプルデータを特定し、該特定されたオーディオサンプルデータに対して時間情報を付加するようにしている。そして、１パケットを所定数のオーディオサンプルデータによって構成し、かつ該オーディオサンプルデータの中のいずれかに対して付加された前記時間情報を該１パケットに含めて、該パケットをネットワークを介して送信する。受信側では、ネットワークを介して受信したパケットに含まれる前記オーディオサンプルデータを一時記憶し、この一時記憶したオーディオサンプルデータの順次読み出しを、該受信したパケットに含まれる前記時間情報に基づき前記一時記憶したオーディオサンプルデータのサンプリング周期を更新して制御することにより、元の所定の周期に対応する周期で再生が行われるようにする。従って、非同期パケットを採用してその利点を享受することができると共に、１パケットにつき１つの時間情報を含むだけであるから、時間情報をできるだけ少ないデータ量で表現して１パケット当りの送信データ量を減少させることができる。
【０００８】
なお、ここで述べている非同期パケットの意味は、パケットの送信周期が、送信すべきオリジナルのサンプルデータに対して、そのサンプリング周期から独立して設定されている、という意味合いである。パケットそのもの送受信については、一定周期で行われているので、同期通信となっている。
【０００９】
【発明の実施の形態】
以下、添付図面を参照してこの発明の実施の形態を詳細に説明しよう。
まず、理解を容易にするために、実施例に従うデータ伝送方式のいくつかの具体例をイラスト的に図示すると図１のようである。図１の（ａ）は第１の観点に従うデータ伝送方式の一例をイラスト的に図示するものであり、（ｂ）と（ｃ）は第２の観点に従うデータ伝送方式の異なる二例をイラスト的に図示するものである。
図１（ａ），（ｂ），（ｃ）の各１段目には、送信側で供給される、所定の周期（第１の周期）Ｔの時系列的な配列を持つ複数のオーディオサンプルデータの時系列配列の一例を示しており、数字０，１，２，３，…は、各データの時系列順序を示す序数である。１段目における特定のオーディオサンプルデータの上に示された数字（１，１３，１７，２１，２９，３３等）は、該オーディオサンプルデータに付加されるタイムスタンプすなわち時間情報を例示している。ＳＦはパケット送信のサービス区間の１周期を示し、送信するデータの周期Ｔは適宜可変であるのに対して、非同期パケットにおいては、該サービス区間ＳＦの１周期は、所定値に固定されている。従って、ＳＦとＴの時間関係は図示のものに限らず、任意の時間関係をとりうるものであり、一般的には両者の周期は非整数倍関係となる（勿論、たまたま整数倍関係となることがあるかもしれない）。
図１（ａ），（ｂ），（ｃ）の各２段目には、ネットワークを介して送信されるパケットの状態を示しており、タイムスロット枠内に記した数字が該パケットに含まれるオーディオサンプルデータを識別する序数であり、その下側に記された数字（１，１３，１７，２１，２９，３３等）が該パケットに含まれるタイムスタンプすなわち時間情報を示す。図１（ａ），（ｂ），（ｃ）の各３段目には、受信側におけるオーディオサンプルデータの再生状態を示している。
【００１０】
第１の観点に従う図１（ａ）の例について説明すると、送信に際して、１パケットを所定数Ｎ（図の例ではＮ＝４）のオーディオサンプルデータで構成し、かつ１パケットのデータ数Ｎ（＝４）と同数のデータ毎に、該パケットの先頭のオーディオサンプルデータを特定し、該特定された先頭のオーディオサンプルデータの時間位置を示すタイムスタンプを付加するようにしている。例えば、最初のパケットは、序数０，１，２，３の４つのオーディオサンプルデータからなり、その先頭の序数０のデータの時間位置を示すタイムスタンプ「１」が付加される。この場合、送信側で４つのデータが供給されるにはサービス区間ＳＦの２サイクル周期が必要であるから、最初のデータ（序数０）が供給されたときから、２サービス区間ＳＦの経過後に、最初のパケットが送信される。従って、パケット送信の立上り時間遅れは、サービス区間ＳＦの２サイクル周期である。２番目のパケットは、序数４，５，６，７の４つのデータからなり、その先頭の序数４のデータの時間位置を示すタイムスタンプ「１７」が付加される。この場合、２番目のパケットに含まれる最後の序数７のデータが供給されるサービス区間ＳＦ（これをＳＦ４で示す）の次のサービス区間ＳＦ（これをＳＦ５で示す）で該２番目のパケットが送信されることになるから、最初のパケット送信時から２サービス区間後に該２番目のパケットが送信される。
【００１１】
受信側においては、順次与えられる各パケットに含まれるタイムスタンプの変化若しくは関数に基づき、送信側における元の所定周期Ｔを推定することができる。タイムスタンプに基づく元の周期Ｔの推定方法には種々ありうるが、最も典型的な方法は、相前後する２つのパケットに含まれるタイムスタンプの差から次のような演算を行うことである。すなわち、今回送信されてきたパケットのタイムスタンプ値をＴＳ(i) とし、その前に送信されてきたパケットのタイムスタンプ値をＴＳ(i-1) とすると、その間にＮ個のデータが存在しているのであるから、下記式の演算を行うことにより、元の周期Ｔを推定することができる。
Ｔ＝｛ＴＳ(i) −ＴＳ(i-1)｝／Ｎ     …（式１）
受信側においては、こうして推定した元の周期Ｔに対応する周期で、受信したパケットに含まれるデータを順次再生読出しする。かくして、元の周期Ｔでのデータ再生を確実にすることができる。図１（ａ）の場合、上記推定演算のために、２つのパケットの送信がなされるまで待機しなければならないため、受信側でデータ再生が開始するのは、送信側で最初のデータ（序数０）が供給されたときから、サービス区間ＳＦが５サイクル経過したとき、すなわち図１の６番目のサービス区間ＳＦ６のときとなる。
【００１２】
上記のように、第１の観点に従う伝送方式のように、１パケット当りのデータ数を所定の固定数Ｎとすると、パケット送信の立上り遅れと、受信側におけるデータ再生開始の遅れとが、問題となる。上記第２の観点に従う伝送方式は、この点を改善し、そのような遅れの問題をできるだけ回避することができるものである。
図１（ｂ）及び（ｃ）に例示された上記第２の観点に従う伝送方式が第１の観点に従う伝送方式と異なる点は、該第２の観点に従う伝送方式では、所定数のデータが溜るまでパケット送信を待たずに、所定の第２の周期毎に規則的にパケット送信を行うようになっている点であり、これに伴い、１パケットを構成するデータ数が可変となるという点である。すなわち、送信すべきデータのオリジナル周期である第１の周期Ｔよりも長い所定の第２の周期毎に、該第２の周期の１周期内で供給された前記データによって１パケットを構成するので、該第２の周期毎にパケット送信が行われることとなり、また、一般に第１及び第２の周期の関係は非整数倍的になるため（勿論、たまたま整数倍関係となることがあるかもしれないが）、該第２の周期の各周期毎に該１周期内に含まれるデータの数が可変的に（±１の範囲で）変動することになる。図１（ｂ）及び（ｃ）の例においては、パケット送信を行う第２の周期として、１サービス区間ＳＦ毎の周期で行うことが示されている。
【００１３】
図１（ｂ）の例について説明すると、各サービス区間毎に、その区間で供給されたデータを１パケットに含めて、次のサービス区間においてネットワークに送信する。１パケットに含まれるデータの数ｘは可変であり、図の例では、３個又は２個である。図１（ｂ）の例では、１パケットのデータ数ｘ（可変）と同数のデータ毎に、該パケットの先頭のデータを特定し、該特定された先頭のデータの時間位置を示すタイムスタンプを付加するようにしている。従って、タイムスタンプを２以上の所定数のデータ毎に付加するようになっているが、この所定数とは可変の１パケット構成データ数ｘに連動する可変数である。例えば、最初のパケットは、序数０，１，２の３つのデータからなり、その先頭の序数０のデータの時間位置を示すタイムスタンプ「１」が付加される。この場合、最初のデータ（序数０）が供給されたときから、１サービス区間ＳＦの経過後に、すなわち２番目のサービス区間ＳＦ２のときに、最初のパケットが送信される。従って、パケット送信の立上り時間遅れは、１サービス区間ＳＦのみである。２番目のパケットは、序数３，４の２つのデータからなり、その先頭の序数３のデータの時間位置を示すタイムスタンプ「１３」が付加される。この場合、２番目のパケットに含まれる最後の序数４のデータが供給されたサービス区間（ＳＦ２）の次のサービス区間（ＳＦ３）で該２番目のパケットが送信されることになるから、最初のパケット送信時から１サービス区間後に該２番目のパケットが送信される。
【００１４】
この場合も、受信側においては、順次与えられる各パケットに含まれるタイムスタンプの変化若しくは関数に基づき、送信側における元の所定周期Ｔを推定することができる。前述の通り、タイムスタンプに基づく元の周期Ｔの推定方法には種々ありうるが、最も典型的な方法は、相前後する２つのパケットに含まれるタイムスタンプの差から次のような演算を行うことであるので、この場合についての演算式を示すと下記のようである。
Ｔ＝｛ＴＳ(i) −ＴＳ(i-1)｝／ｘ     …（式２）
ここで、ＴＳ(i)とＴＳ(i-1)は、前述と同様に、今回送信されてきたパケットのタイムスタンプ値と、前回に送信されてきたパケットのタイムスタンプ値である。ｘは、前回に送信されてきたパケットに含まれるデータ数であり、前述の通りの可変数である。
受信側においては、こうして推定した元の周期Ｔに対応する周期で、受信したパケットに含まれるデータを順次再生読出しする。かくして、元の周期Ｔでのデータ再生を確実にすることができる。図１（ｂ）の場合、送信側で最初のデータ（序数０）が供給されたときから数えて３番目のサービス区間ＳＦ３のときに該２番目のパケットが送信されるので、受信側でデータ再生が開始するのは、送信側で最初のデータ（序数０）が供給されたときから、サービス区間ＳＦの３サイクル経過後、すなわち４番目のサービス区間ＳＦ４のときとなる。このように、図１（ｂ）の場合では、図１（ａ）の場合に比べて、パケット送信の立上りと受信側におけるデータ再生開始とが早くなっており、遅れの問題が改善されていることが理解できる。一方、受信側での時間情報の再生処理について考慮すると、上記式２に示されるように、可変数ｘで割算を行う構成となっており、上記式１のように固定数Ｎで割算を行う構成に比べて、その都度、除数ｘを変更しなければならないので、演算処理の構成が複雑となってしまうという問題がある。
【００１５】
図１（ｃ）の例は、図１（ｂ）の例に対して更に改良を加え、受信側での演算処理を簡単化できるようにしたものである。図１（ｃ）の例について説明すると、各サービス区間ＳＦ毎に、その区間で供給されたデータを１パケットに含めて、次のサービス区間においてネットワークに送信する。（ｂ）と同様に、１パケットに含まれるデータの数ｘは可変であり、図の例では、３個又は２個である。（ｃ）の例では、時間情報の付加の仕方が（ｂ）とは異なっている。すなわち、図１（ｃ）の例では、２以上の所定の定数Ｍからなるデータ毎に１つのデータを特定し、該特定されたデータの時間位置を示すタイムスタンプすなわち時間情報を付加するようにしている。図示の例では、Ｍは４であり、４個のデータグループ毎に、そのグループの先頭のデータの時間位置を示すタイムスタンプを付加するようにしている。従って、タイムスタンプを２以上の所定数のデータ毎に付加するようになっているが、この所定数とは（ｂ）の例とは異なり、可変の１パケット構成データ数ｘとは関係のない、定数Ｍ（図では「４」）である。
図１（ｃ）の例では、最初のパケットは、序数０，１，２の３つのデータからなり、最初のＭ＝４個のデータのグループの先頭である序数０のデータの時間位置を示すタイムスタンプ「１」が付加される。この場合、最初のデータ（序数０）が供給されたときから、１サービス区間ＳＦの経過後に、最初のパケットが送信される。従って、パケット送信の立上り時間遅れは、図１（ｂ）と同様に、１サービス区間ＳＦのみである。２番目のパケットは、序数３，４の２つのデータからなり、そこには次のＭ＝４個のデータのグループの先頭である序数４のデータが含まれているので、その序数４のデータの時間位置を示すタイムスタンプ「１７」が付加される。この場合も、２番目のパケットに含まれる最後の序数４のデータが供給されたサービス区間（ＳＦ２）の次のサービス区間（ＳＦ３）で該２番目のパケットが送信されることになるから、最初のパケット送信時から１サービス区間ＳＦ後に該２番目のパケットが送信される。
【００１６】
なお、１パケットのデータ数が可変であるのに対して、１つのタイムスタンプを付加する１グループ内のデータ数Ｍは定数であるので、パケットによっては、タイムスタンプすなわち時間情報を伴わないものが出てくる。図１（ｃ）における４番目のサービス区間ＳＦ４において送信される序数５，６のデータを含むパケットがそれに該当しており、そのようなパケットにおいては、有効なタイムスタンプ値を示すデータの代わりに、タイムスタンプ無を表示する所定のデータ“ｖｏｉｄ”を送信するものとしている。勿論、必ずしもこの種のデータ“ｖｏｉｄ”を送信しなければならないわけではなく、そのパケットにタイムスタンプが存在してないことをもって、タイムスタンプすなわち時間情報を伴わないことが認識されるようになっていてもよい。
図１（ｃ）の場合も、受信側においては、順次与えられる各パケットに含まれるタイムスタンプの変化若しくは関数に基づき、送信側における元の所定周期Ｔを推定することができる。前述の通り、タイムスタンプに基づく元の周期Ｔの推定方法には種々ありうるが、最も典型的な方法は、相前後する２つのパケットに含まれるタイムスタンプの差から次のような演算を行うことであるので、この場合についての演算式を示すと下記のようである。
Ｔ＝｛ＴＳ(i) −ＴＳ(i-1')｝／Ｍ     …（式３）
ここで、ＴＳ(i)は、前述と同様に、今回送信されてきたパケットのタイムスタンプ値であり、ＴＳ(i-1')は、その前に送信されてきた有効なタイムスタンプ値である。従って、今回送信されてきたパケットにおいて、タイムスタンプの代わりに上記“ｖｏｉｄ”が含まれている場合は、この演算は行われない。また、前回送信されてきたパケットのタイムスタンプ値が“ｖｏｉｄ”以外の有効な値を持っている場合は、ＴＳ(i-1')は、前回送信されてきたパケットのタイムスタンプ値ＴＳ(i-1)に相当するが、前回送信されてきたパケットにおいてタイムスタンプの代わりに上記“ｖｏｉｄ”が含まれていた場合は、ＴＳ(i-1')は、前々回送信されてきたパケットのタイムスタンプ値ＴＳ(i-2)に相当するものである。Ｍは、前述の通り、１つのタイムスタンプを付加するデータグループ内のデータ数を示す定数である。
【００１７】
受信側においては、こうして推定した元の（オリジナル）周期Ｔに対応する周期で、受信したパケットに含まれるデータを順次再生読出しする。かくして、オリジナル周期Ｔでのデータ再生を確実にすることができる。図１（ｃ）の場合も、送信側で最初のデータ（序数０）が供給されたときから数えて３番目のサービス区間ＳＦ３のときに該２番目のパケットが送信されるので、受信側でデータ再生が開始するのは、送信側で最初のデータ（序数０）が供給されたときから、サービス区間ＳＦの３サイクル経過後の、４番目のサービス区間ＳＦ４のときとなる。従って、図１（ｃ）の場合も、図１（ａ）の場合に比べて、パケット送信の立上りと受信側におけるデータ再生開始とが早くなっており、遅れの問題が改善されていることが理解できる。更に、図１（ｃ）の場合は、受信側での時間情報の再生処理について考慮すると、上記式３に示されるように、固定数Ｍで割算を行う構成となっており、上記式２のように可変数ｘで割算を行う構成に比べて、演算処理の構成が簡単である、という利点がある。ここで、固定数Ｍを、４や８のような、２のべき乗の数値とすれば、式３のディジタル割算を簡単なデータシフト処理によって行うことができるで、有利である。従って、図１（ｃ）の例に従えば、少ないデータ量で時間情報を表現した場合において、受信側での時間情報の再生演算処理をできるだけ簡略化できるようにした非同期パケットによるデータ伝送方式を提供することができる、という利点がある。
【００１８】
上記のように、第２の観点における図１（ｃ）の例に従えば、最も好ましいデータ伝送方式を提供することができることが理解できる。そこで、送信側において、そのような最も好ましい形式で非同期パケット伝送を行う、という観点に立って、この発明を実施することもできる。すなわち、そのような送信方式の観点に立てば、この発明に係るデータ伝送方式は、第１の周期の時系列的な配列を持つ複数のデータを供給するステップと、２以上の所定の定数からなる前記データのグループ毎に該グループ内の１つのデータを特定し、該特定されたデータの時間位置を示す時間情報を付加するステップと、前記第１の周期よりも長い所定の第２の周期毎に、該第２の周期の１周期内で供給された複数の前記データを１パケットとして、かつ、該パケット内のデータの中に前記時間情報が付加されたデータがあれば該時間情報を該パケットに含めて、ネットワークを介して送信するステップとを具備することを特徴とするものである。この作用、効果は、図１（ｃ）の例に従って上述した通りである。勿論、図１（ａ）や（ｂ）の例においても、送信方式のみの観点に立って発明を把握することが可能である。
【００１９】
次に、最も好ましい実施の形態として、上記第２の観点における図１（ｃ）の例に従う実施の形態について更にその詳細実施例を説明する。
図２は、この発明に係るデータ伝送方式の一実施例の全体構成を示す概略ブロック図である。送信側１０において、データ生成部１１は、所定のサンプリング周期Ｔの時系列的な配列を持つ複数のデータを順次生成し、出力するもので、例えば、ディジタルオーディオ信号の順次サンプルデータを出力する。例えば、データ生成部１１は、ＣＤ（コンパクトディスク）プレイヤーのようなオーディオ再生装置を含んでいてもよいし、あるいは楽音サンプルデータをリアルタイムで合成する楽音合成装置のようなものを含んでいてもよい。データ生成部１１から出力されるオーディオサンプルデータのサンプリング周期Ｔは、そのデータソースに応じて、適宜可変されるようになっていてよい。
【００２０】
データ生成部１１から出力されたオーディオサンプルデータは、その時系列順にデータバッファ１２に一時記憶される。データバッファ１２には入出力非同期のバッファレジスタを用いる。タイマ１３は、タイムスタンプデータすなわち時間情報を作成するものであり、所定のクロックをカウントするランニングカウンタのようなものを含んでいてよい。ネットワーク処理部１４は、所定の送信割込み周期毎に、データバッファ１２に一時記憶したオーディオサンプルデータを基にして１パケットを構成する複数ｘのオーディオサンプルデータを送信バッファＴＢＦ内に１まとめに揃える処理と、所定数Ｍのオーディオサンプルデータ毎に１つのオーディオサンプルデータを特定し、該特定されたオーディオサンプルデータの時間位置を示すタイムスタンプデータを付加する処理と、送信バッファＴＢＦ内に揃えられた複数ｘのオーディオサンプルデータと該オーディオサンプルデータの中のいずれかに対して付加されたタイムスタンプデータとを１パケットとして、ネットワーク３０を介して受信側２０に送信する処理とを行う。送信割込み周期は、パケットのサービス区間ＳＦに対応しており、オーディオサンプルデータのサンプリング周期Ｔより長く設定され、複数ｘのオーディオサンプルデータを１パケットに含ませることができる。しかし、前述の理由で、１パケット中のオーディオサンプルデータ数ｘは可変である。
【００２１】
受信側２０では、ネットワーク処理部２４においてネットワーク３０を介して送信されてきたパケットを受信し、受信したパケットに含まれる複数ｘのオーディオサンプルデータをその時系列順にデータバッファ２２に一時記憶する。データバッファ２２には、複数記憶ステージを有するＦＩＦＯのような入出力非同期のバッファレジスタを使用するとよい。クロック生成部２３は、受信したパケットに含まれるタイムスタンプデータに基づき、送信側１０におけるデータ生成部１１から供給されたオーディオサンプルデータのオリジナルのサンプリング周期Ｔを再現するものである。例えば、前記式３のような演算を行って、オリジナルのサンプリング周期Ｔを推定的に算出し、算出した周期Ｔに対応するクロック信号を生成する。データ利用部２１は、クロック生成部２３から与えられる再現されたサンプリング周期Ｔに従い、データバッファ２２に一時記憶されたオーディオサンプルデータを順次再生読出し、これを適宜利用する。再生読出ししたオーディオサンプルデータを如何なる形態で利用するかは、適宜であってよい。例えば、そのままＤ−Ａ変換してからスピーカ等から発音するようにしてもよいし、あるいは、エフェクト等の処理を施してからスピーカ等から発音する若しくは処理済みのオーディオサンプルデータを外部に送出する等、任意であってよい。
【００２２】
送信側１０及び受信側２０では、マイクロコンピュータ等の制御の下でソフトウェアプログラムを実行することにより、上記各部での処理を制御するようになっている。そのための処理フローの例を次に示す。
図３は、送信側１０で行われる「送信準備処理」の一例を略示するものである。この「送信準備処理」は、主に、ネットワーク処理部１４が受け持つ処理であり、データ生成部１１の処理とデータバッファ１２への入力処理は含まれていない。例えば、この「送信準備処理」は、送信側１０でのメインルーチンの過程で実行される。
まず、ステップＳ１では、データバッファ１２の記憶内容をスキャンし、新たなデータがデータバッファ１２に入力されたかどうかを調べる。新たなデータがデータバッファ１２に入力されたならば、ＹＥＳであり、次のステップＳ２に行く。ＮＯならば、リターンする。
【００２３】
ステップＳ２では、序数レジスタＯＲＤＲの内容を、所定数Ｍで割って、その余りが０であるかを調べる。序数レジスタＯＲＤＲは、前ステップＳ１でデータバッファ１２に入力されたことが検出されたデータの序数を示すデータをストアするものであり、最初は、図示しない初期設定処理により、序数０にセットされており、以後、データバッファ１２に新データが入力される毎に、後出のステップＳ５の処理によって、インクリメントされる。所定数Ｍは、前述の通り、１つのタイムスタンプを付加すべき１データグループのデータ数を示す定数であり、４又は８等の２のべき乗の値とすれば、割算を簡略化できるので好ましい。
序数レジスタＯＲＤＲの内容を、所定数Ｍで割った、その余りが０であるということ、つまり、ステップＳ２の判定がＹＥＳであるということは、序数レジスタＯＲＤＲの内容に対応する現データ（データバッファ１２に今入力されたばかりの新データ）が、タイムスタンプを付加すべきデータであることを示している。
【００２４】
そこで、ステップＳ２がＹＥＳであれば、ステップＳ３に行き、タイマ１３の現在値（これは、データ生成部１１からの１サンプルデータがデータバッファ１２に到着／入力した時刻を略示している）を送信側タイムスタンプレジスタＴＳｔにストアし、その後ステップＳ４に行く。
こうして、ステップＳ２の処理によってタイムスタンプを付加すべき１つのデータが特定され、ステップＳ３の処理によって該特定データに付加するタイムスタンプデータすなわち時間情報が決定／生成され、レジスタＴＳｔにレジストされる。
一方、ステップＳ２がＮＯであれば、ステップＳ４にジャンプし、タイムスタンプデータのレジストは行われない。
【００２５】
ステップＳ４では、データバッファ１２に入力された新データ（すなわち、序数レジスタＯＲＤＲの内容に対応する現データ）を該バッファ１２から取り出して、所定の送信バッファＴＢＦに格納する。
次のステップＳ５では、序数レジスタＯＲＤＲの内容を１だけインクリメントする。
その後、メインルーチンにリターンする。そして、メインルーチンの過程で再び図３の「送信準備処理」を行う。こうして、図３の「送信準備処理」が繰り返される。この「送信準備処理」を繰り返す過程で、順次供給されたいくつかのデータが、前記送信バッファＴＢＦに順次格納される。この送信バッファＴＢＦに格納されたいくつか（一般的には複数ｘ）のデータは、次に述べる「送信割込処理」によって１パケットとして送信される。
【００２６】
図４は、送信側１０で行われる「送信割込処理」の一例を略示するものであり、図３の処理に対する割込み処理として実行される。この「送信割込処理」は、所定の送信割込み周期に従って規則的な割込み間隔で実行される。この送信割込み周期は、例えば、パケットの１サービス区間ＳＦに対応しており、一般に、送信するデータのサンプリング周期Ｔより長い。
送信割込みがかかると、まず、ステップＳ６では、送信側タイムスタンプレジスタＴＳｔにレジストされているタイムスタンプデータを、タイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”として送信セットし、かつ、前記送信バッファＴＢＦに格納されているデータの数ｘを数えてこれをサンプル数ｘ“ＳＡＭＰＬＥ  ｘ”として送信セットし、かつ、序数レジスタＯＲＤＲの内容から上記サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”を引いた値（ＯＲＤＲ−“ＳＡＭＰＬＥ  ｘ”）をパケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”として送信セットする。このパケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”は、送信する１パケットに含まれる複数のデータのうち時系列順序が先頭のデータのサンプル序数を示す。序数レジスタＯＲＤＲの現内容が、送信する１パケットに含まれる複数のデータのうち時系列順序が最後のデータの次のサンプル序数を示しているので、これから該パケットに含まれるデータのサンプル数“ＳＡＭＰＬＥ  ｘ”を引いたものが、該パケットにおける先頭のデータのサンプル序数を示すことになる。
【００２７】
次のステップＳ７では、前記送信バッファＴＢＦに格納されている複数ｘのデータと、前ステップＳ６で送信セットした各情報、すなわちタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”、サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”、パケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”とを、１パケットとしてパケット作成し、該パケットをネットワーク３０を介して送信する。なお、ネットワーク３０を介した受信側２０との間の実際の具体的な通信作業は、通信インタフェースを介して行われることになるので、このステップＳ７では図示しない通信インタフェースに対してパケットを送出することからなる。なお、送信バッファＴＢＦの格納データを送出した後に該バッファＴＢＦをクリアするものとする。
次のステップＳ８で、送信側タイムスタンプレジスタＴＳｔに空データ“ｖｏｉｄ”をセットし、その後リターンする。次のパケットが有効なタイムスタンプを伴う場合は、図３のステップＳ３の処理を経由することによって該レジスタＴＳｔの内容が有効なタイムスタンプ値によって更新される。他方、次のパケットが有効なタイムスタンプを伴わない場合は、図３のステップＳ３の処理を経由することがなく、よって、該レジスタＴＳｔの内容は更新されないまま空データ“ｖｏｉｄ”を保持して、次の「送信割込み処理」を迎える。そのような場合は、図４のステップＳ６において、タイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”として空データ“ｖｏｉｄ”が送信セットされることになる。
【００２８】
例えば、Ｍ＝４であるとして、図１（ｃ）の１段目及び２段目を参照しながら、図３及び図４の動作例について説明する。
最初に、序数０のデータがデータバッファ１２に取り込まれたとき、レジスタＯＲＤＲの内容が０であるから、ステップＳ２がＹＥＳとなり、ステップＳ３に行き、タイマ１３の現在値（図１では便宜上最初は「１」としているが、これに限らないのは勿論である）を送信側タイムスタンプレジスタＴＳｔにストアする。この序数０のデータは送信バッファＴＢＦに格納され（Ｓ４）、序数レジスタＯＲＤＲの値が増数されて１となる（Ｓ５）。
次に序数１のデータがデータバッファ１２に取り込まれたとき、レジスタＯＲＤＲの内容は１であるから、ステップＳ２がＮＯとなり、ステップＳ３をジャンプしてステップＳ４，Ｓ５を行い、この序数１のデータは送信バッファＴＢＦに格納され、序数レジスタＯＲＤＲの値が増数されて２となる。
次に序数２のデータがデータバッファ１２に取り込まれたときも同様であり、ステップＳ３をジャンプしてステップＳ４，Ｓ５を行い、この序数２のデータが送信バッファＴＢＦに格納され、序数レジスタＯＲＤＲの値が増数されて３となる。
【００２９】
こうして、最初のサービス区間ＳＦ１の間に序数０，１，２の３つのデータが供給され、これらのデータが送信バッファＴＢＦに格納される。該サービス区間ＳＦ１の終わりで（又は次のサービス区間ＳＦ２の始まりで）、図４の「送信割込処理」が行われる。ステップＳ６の処理によって、タイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”としてレジスタＴＳｔの「１」が送信セットされ、サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”として「３」が送信セットされ、パケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”として「０」（３−３＝０）が送信セットされる。そして、ステップＳ７の処理に基づき、２番目のサービス区間ＳＦ２における適宜の時点で、これらの情報と送信バッファＴＢＦ内の序数０，１，２の３つのデータとが１パケットとして送信されることになる。
【００３０】
２番目のサービス区間ＳＦ２においては、序数３，４の２つのデータが供給される。序数３のデータが供給されたときは、ステップＳ２はＮＯであり、序数３のデータが送信バッファＴＢＦに格納され（Ｓ４）、序数レジスタＯＲＤＲの値が増数されて４となる（Ｓ５）。次に序数４のデータが供給されたときは、ステップＳ２はＹＥＳとなり、ステップＳ３に行き、タイマ１３の現在値（図１では「１７」）を送信側タイムスタンプレジスタＴＳｔにストアする。また、この序数４のデータが送信バッファＴＢＦに格納され（Ｓ４）、序数レジスタＯＲＤＲの値が増数されて５となる（Ｓ５）。
２番目のサービス区間ＳＦ２が終わって、図４の「送信割込処理」が行われると、ステップＳ６の処理によって、タイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”としてレジスタＴＳｔの「１７」が送信セットされ、サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”として「２」が送信セットされ、パケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”として「３」（５−２＝３）が送信セットされる。そして、ステップＳ７の処理に基づき、３番目のサービス区間ＳＦ３における適宜の時点で、これらの情報と送信バッファＴＢＦ内の序数３，４の２つのデータとが１パケットとして送信されることになる。また、ステップＳ８では、レジスタＴＳｔに空データ“ｖｏｉｄ”がセットされる。
【００３１】
３番目のサービス区間ＳＦ３においては、序数５，６の２つのデータが供給される。序数５のデータが供給されたときは、ステップＳ２はＮＯであり、序数５のデータが送信バッファＴＢＦに格納され（Ｓ４）、序数レジスタＯＲＤＲの値が増数されて６となる（Ｓ５）。次に序数６のデータが供給されたときも、ステップＳ２はＮＯであり、序数６のデータが送信バッファＴＢＦに格納され、序数レジスタＯＲＤＲの値が増数されて７となるだけである。結局、この３番目のサービス区間ＳＦにおいては、ステップＳ３を経由することなく、レジスタＴＳｔには空データ“ｖｏｉｄ”を保持したままとなる。
従って、次の「送信割込処理」においては、タイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”として空データ“ｖｏｉｄ”が送信セットされ、サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”として「２」が送信セットされ、パケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”として「５」（７−２＝５）が送信セットされることになる。そして、これらの情報と送信バッファＴＢＦ内の序数５，６の２つのデータとが１パケットとして送信されることになる。
以下、同様に動作し、図１（ｃ）の１段目に示すような時系列的データに応じて２段目に示すような内容のパケットが送信されることになる。
【００３２】
図５は、受信側２０で行われる「受信処理」の一例を略示するものである。この「受信処理」は、主に、ネットワーク処理部２４とクロック生成部２３が受け持つ処理について示されている。
この「受信処理」は、ネットワーク３０から与えられる１パケット情報を受信側２０が受信する毎に実行される。
まず、ステップＳ１１では、ネットワーク３０を介して受信した１パケットに含まれる各情報のうち、パケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”をレジスタｊに格納し、サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”をレジスタＸに格納する。また、アップデートクロックレジスタｕｐｄａｔｅＣＬＯＣＫに偽値ＦＡＬＳＥをセットする。このアップデートクロックレジスタｕｐｄａｔｅＣＬＯＣＫに、真値ＴＲＵＥがセットされているとき、クロック周波数の更新を指示し、偽値ＦＡＬＳＥをセットされているときはクロック周波数の更新を指示しない。
次に、ステップＳ１２では、変数レジスタｉを初期値０にセットする。
次のステップＳ１３では、ネットワーク３０を介して受信した１パケットに含まれる複数ｘのデータのうち変数レジスタｉによって指示される順位の１つのデータＤＡＴＡ(i) をデータバッファ２２に転送する。
【００３３】
次のステップＳ１４では、レジスタｊの内容（すなわちパケット先頭サンプル序数“ＳＡＭＰＬＥ  ＯＲＤＥＲ”）に変数レジスタｉの現在値を加算した値を、前記所定数Ｍで割って、その余りが０であるかを調べる。すなわち、前ステップＳ１３でデータバッファ２２に書き込んだデータ（この序数は「ｊ＋ｉ」である）が、タイムスタンプを付加した前記特定のデータに該当するか否かを調べる。前ステップＳ１３でデータバッファ２２に書き込んだデータが、前記特定のデータに該当する場合は、該データの序数ｊ＋ｉが所定数Ｍで割り切れるため、余りが０となり、ステップＳ１４ではＹＥＳと判定される。その場合は、ステップＳ１５〜Ｓ１８のルートを経由してからステップＳ１９に行く。ＮＯの場合は、ステップＳ１５〜Ｓ１８のルートをジャンプしてステップＳ１９に行く。
ステップＳ１５では、受信側タイムスタンプレジスタＴＳｒの内容が空データ“ｖｏｉｄ”であるか否かを調べる。図示していない初期設定処理により、該レジスタＴＳｒの内容が空データ“ｖｏｉｄ”に初期設定されるようになっており、その後に、次のステップＳ１６を行うことにより、受信した１パケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”を該レジスタＴＳｒにロードする。従って、このステップＳ１６は、最初のタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”をレジスタＴＳｒにロードするための処理である。以後は、ステップＳ１５はＮＯと判定され、専らステップＳ１７，Ｓ１８のルートを通って処理される。
【００３４】
ステップＳ１７では、前記式３に相当する演算を行って、オリジナルのサンプリング周期Ｔを算出／推定する。すなわち、今回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”（前記式３のＴＳ(i) に対応）から受信側タイムスタンプレジスタＴＳｒの内容（前回又は前々回受信したパケットに含まれていたタイムスタンプ情報であって、前記式３のＴＳ(i-1') に対応）を引き算し、１つのタイムスタンプを付加するデータグループ内のデータ数を示す定数Ｍ（例えば４）で割算する。その商が、オリジナルのサンプリング周期Ｔを推定するデータとしてレジストされる。
次のステップＳ１８では、今回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”を受信側タイムスタンプレジスタＴＳｒにロードし、該レジスタＴＳｒの内容を更新し、かつ、アップデートクロックレジスタｕｐｄａｔｅＣＬＯＣＫに、真値ＴＲＵＥをセットする。
【００３５】
ステップＳ１９では、変数レジスタｉの値を１だけ増数する。次のステップＳ２０では、増数された変数レジスタｉの値がレジスタＸに格納されている当該パケット中のデータ数ｘに等しくなったか否かを調べる。ＮＯであれば、ステップＳ１３に戻り、増数された変数レジスタｉの値に関して、前記ステップＳ１３〜Ｓ１８の処理を繰り返す。
ステップＳ２０がＹＥＳとなると、ステップＳ２１に行き、アップデートクロックレジスタｕｐｄａｔｅＣＬＯＣＫの内容が真値ＴＲＵＥであることを条件に、前記ステップＳ１７で算出されたオリジナルのサンプリング周期Ｔに従って、受信側２０におけるサンプリングクロック周波数を、この周期Ｔに従って、設定するクロック同期化処理を行う。すなわち、受信側２０におけるサンプリングクロック周波数がステップＳ１７での演算結果Ｔに応じて設定若しくは更新されることになる。その後、リターンして、この「受信処理」を終了する。なお、１パケットには１個のタイムスタンプ情報しか含まないようにしているので、一旦、ステップＳ１７，Ｓ１８のルートを通った後は、ステップＳ１３〜Ｓ２０の処理を繰り返すことは不要である。従って、ステップＳ１８の後はステップＳ２１にジャンプさせるようにフローを変更してもよい。
【００３６】
次に、Ｍ＝４であるとして、図１（ｃ）の２段目及び３段目を参照しながら、図５の動作例について説明する。
２番目のサービス区間ＳＦ２で、序数０，１，２のデータを含む最初のパケットの情報を受信すると、ステップＳ１１では、ｊ＝０、Ｘ＝３にセットされる。この場合、ｊ＝０、ｉ＝０のとき、ステップＳ１４がＹＥＳとなる。ＴＳｒには“ｖｏｉｄ”が初期設定されているので、次のステップＳ１５がＹＥＳとなり、ステップＳ１６で、今回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”＝「１」が、レジスタＴＳｒにセットされる。やがて、ステップＳ１３〜Ｓ２０の処理を繰り返した後、ステップＳ２１に行く。この場合は、アップデートクロックレジスタｕｐｄａｔｅＣＬＯＣＫの内容が偽値ＦＡＬＳＥにセットされたままなので、受信側２０におけるサンプリングクロック周波数の設定は行われない。従って、データバッファ２２に記憶したデータの再生読み出しは、まだスタートされない。
【００３７】
３番目のサービス区間ＳＦ３で、序数３，４のデータを含む２番目のパケットの情報を受信すると、ステップＳ１１では、ｊ＝３、Ｘ＝２にセットされる。この場合、ｊ＝３、ｉ＝１のとき、ステップＳ１４がＹＥＳとなる。レジスタＴＳｒには前回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”＝「１」がセットされているので、次のステップＳ１５はＮＯと判断され、ステップＳ１７に行く。この場合、今回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”は「１７」であるから、ステップＳ１７の演算では、Ｔ＝（１７−１）／４＝４が得られる。次のステップＳ１８では、“ＴＩＭＥ  ＳＴＡＭＰ”の「１７」をレジスタＴＳｒにセットし、かつ、ｕｐｄａｔｅＣＬＯＣＫに真値ＴＲＵＥをセットする。従って、その後のステップＳ２１では上記周期Ｔに従って受信側２０におけるサンプリングクロック周波数の設定を行なう。これにより、データバッファ２２に記憶したデータの再生読み出しが可能となる。図１（ｃ）では、次のサービス区間ＳＦ４の始まりから、周期Ｔに従うデータの再生読み出しが行われるように図示されている。しかし、これに限らず、サービス区間ＳＦ３の途中であっても、ステップＳ２１での処理を終了し次第、データバッファ２２に記憶したデータの再生読み出しを開始するようにしてもよい。
【００３８】
４番目のサービス区間ＳＦ４で、序数５，６のデータを含む３番目のパケットの情報を受信すると、ステップＳ１１では、ｊ＝５、Ｘ＝２にセットされる。この場合、変数レジスタｉの値は、最初は０、その次は１にセットされる。従って、ステップＳ１４では、ｊ＋ｉ＝５＋０＝５の場合と、ｊ＋ｉ＝５＋１＝６の場合の両方について、判定を行うが、そのいずれの場合も判定結果はＮＯであり、ステップＳ１７，Ｓ１８のルートは通らない。従って、ステップＳ１７でのオリジナル周期Ｔの算出演算は行われず、レジスタＴＳｒには前回受信したパケットに含まれていたタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”の「１７」が保持される。従って、ステップＳ２１におけるサンプリングクロック周波数の更新処理も行われず、前回計算した周期Ｔに従うクロック周波数を維持して、データバッファ２２に記憶したデータの再生読み出しが続行される。このように、パケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”が空データ“ｖｏｉｄ”の場合は、サンプリングクロック周波数の更新処理は行われないようになっている。
【００３９】
５番目のサービス区間ＳＦ５で、序数７，８のデータを含む４番目のパケットの情報を受信すると、ステップＳ１１では、ｊ＝７、Ｘ＝２にセットされる。この場合も、変数レジスタｉの値は、最初は０、その次は１にセットされる。ステップＳ１４では、ｊ＋ｉ＝７＋１＝８の場合、ＹＥＳと判定する。そして、ステップＳ１７に行き、今回受信したパケットに含まれるタイムスタンプ情報“ＴＩＭＥ  ＳＴＡＭＰ”の「３３」と、レジスタＴＳｒにストアされている前々回受信したパケットに含まれていたタイムスタンプ情報の「１７」とを使用して、Ｔ＝（３３−１７）／４＝４の演算がなされる。次のステップＳ１８では、“ＴＩＭＥ  ＳＴＡＭＰ”の「３３」をレジスタＴＳｒにセットし、かつ、ｕｐｄａｔｅＣＬＯＣＫに真値ＴＲＵＥをセットする。従って、その後のステップＳ２１では上記周期Ｔに従って受信側２０におけるサンプリングクロック周波数の更新を行なう。
以下、同様に動作し、図１（ｃ）の２段目に示すような内容のパケットの受信に応じて、３段目に示すようなオリジナル周期Ｔでの時系列的データの再生読み出しが行われる。
【００４０】
なお、上記の設例では、タイムスタンプ情報の数値を単純化して示しているので、演算の結果得られる周期Ｔは一定の数値４であるが、通常は、各数値の分解能の設定に応じて演算結果値Ｔはもっと複雑な値をとる。受信側２０においては、この演算結果値Ｔに応じて、そのサンプリングクロック周波数を絶えず調整するよう同期化制御される。このようにして、所定のデータグループ毎に送信されるタイムスタンプ情報によって、送信側１０と受信側２０のサンプリングクロック周波数が絶えず同期化されるように制御される。
なお、上記実施例における所定の定数Ｍは、１つのパケット生成周期（つまり１サービス区間ＳＦ）において、２以上のデータにタイムスタンプを付加することのないような値、つまり１パケット生成周期内に供給されるデータ数の最大値（図１の例では「３」）よりも大きな値、であることが望ましく、また、受信側におけるサンプリング周期Ｔの再現分解能を高めるためには、そのような値の中の最小値であることが望ましい。更に、Ｍを２のべき乗の値とすれば、割算演算を簡単化できるので、好ましい。
【００４１】
ところで、送信側と受信側のサンプリングクロック周波数を同期させるためには、最も単純には、データ送信の冒頭において送信側から受信側に対してサンプリングクロック周波数を指示する情報を与え、受信側において該情報に対応するサンプリングクロック周波数を発振するようにクロック分周比を設定するようにすればよいはずである。しかし、発振源として使用する水晶発振子の個体差によって、送信側と受信側の実際のサンプリングクロック周波数に微妙なずれが生じることがあるので、長時間にわたる再生処理においては不都合が生じて来るという問題がある。すなわち、クロック発振出力に基づくデータ再生読み出し技術においては、発振源として使用する水晶発振子の発振出力を分周して所望の周期のサンプリングクロックを作成することになるが、送信側のデータ読み出しに使用する水晶発振子と、受信側のデータ読み出しに使用する水晶発振子との個体差によって、送受信間で同じ分周比に設定したとしても、送信側と受信側の実際のサンプリングクロック周波数に微妙なずれが生じることがある。この微妙なずれは、長時間にわたる連続的なオーディオ再生処理等においては累積されてしまい、遂には再生タイミングの顕著なずれをもたらすことになる。
【００４２】
例えば、一般に、異なるシステム間で情報を送受信する場合は、受信側にバッファを設け、データ転送のタイミングずれを吸収するようにしているが、上記のように送受信間のサンプリングクロック周波数に微妙なずれがある場合は、受信側バッファがオーバーフローしたり（受信側のクロック周波数が相対的に遅くなった場合）、アンダーフローしたり（受信側のクロック周波数が相対的に速くなった場合）することがある。そのような場合は、正常なデータ送受信を行うことができなくなるので、好ましくない。これに対して、この発明のように、送信するデータに時間情報を付加することにより、送信側と受信側のサンプリングクロック周波数が絶えず同期化されるように制御する方式では、そのような問題が起こらないので、より好ましいものである。
【００４３】
なお、上記実施例では、受信側２０において、ステップＳ１７で演算した周期Ｔに基づき、データバッファ２２の再生読み出し制御用のサンプリングクロック周波数を設定するようにしているが、時間情報に基づく再生読み出し制御の態様はこれに限らず、適宜に設計してよい。例えば、タイムスタンプ情報が付加されていないデータに対して、それぞれ固有の時間情報を付加する処理を行い、各データ毎の固有の時間情報を参照して再生読み出しを行うようにしてもよい。
また、データ伝送に先立ち、基本的なサンプリング周期Ｔを示すデータを送信し、受信側２０では、最初は、この送信されてきたデータに対応するサンプリング周期Ｔでデータ再生読み出しを開始するようにしてもよい。そのようにすれば、受信側２０におけるデータ再生読み出しの立上りを上記実施例に比べて１サービス区間だけ早めることができる。
また、本来のデータの送信に先立って、いくつかのダミーデータをタイムスタンプの初期値を伴って送信するようにしてもよい。その場合、受信側２０におけるデータ再生読み出しの開始は、ダミーデータをカットして、実際のデータから開始するようにする。例えば、図１（ｃ）の場合、序数０，１，２のデータがダミーデータであるとすると、その３段目に示された受信側再生読み出しにおいては、序数３のデータ（実際のデータの先頭）から読み出し開始するようにする。そのようにしても、受信側２０における実際のデータの再生読み出し開始を上記実施例に比べて１サービス区間だけ早めることができる。
【００４４】
なお、図１（ｂ）に示したようなデータ伝送方式を実施する場合は、概ね、図３のステップＳ２，Ｓ３を省略し、図４のステップＳ６において「ＴＩＭＥ  ＳＴＡＭＰ  ←  ＴＳｔ」の代わりに、「ＴＩＭＥ  ＳＴＡＭＰ  ←  タイマ１３の現在値」を行い、かつ、図５のステップＳ１４，Ｓ１７の所定の定数Ｍの代わりに、可変の所定数ｘ（レジスタＸの値）を使用すればよい。
また、図１（ａ）に示したようなデータ伝送方式を実施する場合は、概ね、図３のステップＳ２、図５のステップＳ１４，Ｓ１７の所定の定数Ｍの代わりに、１パケット当りのデータ数を示す固定数Ｎを使用し、かつ、図４の「送信割込処理」の開始時に、送信バッファＴＢＦ内のデータ数ｘがＮ以上であるかをチェックするステップを設け、ＮＯであれば割込処理を終了し、ＹＥＳであれば割込処理を続行するようにする。そして、続行時においては、ステップＳ６において「サンプル数ｘ“ＳＡＭＰＬＥ  ｘ”」として所定数Ｎを送信セットし、ステップＳ７において送信バッファＴＢＦのデータのうち先行するＮ個のデータを１パケットとして形成し、残りのデータがあればそれらは送信バッファＴＢＦに残しておくようにする。
【００４５】
【発明の効果】
以上の通り、この発明によれば、一定周期の時系列的な配列を持つ複数のオーディオサンプルデータを、ネットワークを介して伝送する場合において、非同期パケットを使用してその利点を享受できるようにすると共に、パケットに含めて送信する時間情報をできるだけ少ないデータ量で表現して１パケット当りの送信データ量を減少させることができるようになる、という優れた効果を奏する。
また、送受信間の時間遅れをできるだけ少なくしたデータ伝送方式を提供することがてきる。更に、少ないデータ量で時間情報を表現した場合において、受信側での時間情報の再生演算処理をできるだけ簡略化できるようにすることができる。
【図面の簡単な説明】
【図１】  この発明に従うデータ伝送方式のいくつかの具体例をイラスト的に図示するタイミングチャート。
【図２】  この発明に係るデータ伝送方式の一実施例の全体構成を示す概略ブロック図。
【図３】  図２の送信側で行われる「送信準備処理」の一例を略示するフロー図。
【図４】  図２の送信側で行われる「送信割込処理」の一例を略示するフロー図。
【図５】  図２の受信側で行われる「受信処理」の一例を略示するフロー図。
【符号の説明】
１０  送信側
２０  受信側
３０  ネットワーク
１１  データ生成部
１２，２２  データバッファ
１３  タイマ
１４，２４  ネットワーク処理部
２３  クロック生成部
２１  データ利用部
【図１】
0003977124.tif 000002
【図２】
0003977124.tif 000003
【図３】
0003977124.tif 000004
【図４】
0003977124.tif 000005
【図５】
0003977124.tif 000006