(57)【要約】      （修正有）【課題】ネットワークを介して複数のユーザ同士が互いの演奏データを共有する演奏通信装置を提供する。【解決手段】サーバ１００は、クライアント２００から受信した演奏データを、イベントバッファ１０１の内、ユーザ識別番号に対応付けて割り当てたユーザポート番号ＵＰＮのバッファ領域にストアし、イベントバッファ１０１の各バッファ領域からユーザポート番号ＵＰＮ毎の演奏データを読み出してクライアント２００に返信する。クライアント２００は、サーバ１００から受領したユーザポート番号ＵＰＮ毎の演奏データの内、所望のユーザポート番号ＵＰＮの演奏データを再生し、それに合わせた演奏操作に応じて発生する演奏データをサーバ１００に送信する。【選択図】図１
2014048626.tif 000002
【特許請求の範囲】
【請求項１】
割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを送信する演奏データ送信手段と、送信されて来る演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信された演奏データを再生する再生手段と、を有する複数のユーザ端末をネットワークを介して接続された演奏通信サーバであって、
前記複数のユーザ端末毎に、前記ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、
前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、
前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、
前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段と
を具備することを特徴とする演奏通信サーバ。
【請求項２】
サーバと、当該サーバにネットワークを介して接続する複数のユーザ端末とから構成され、
前記サーバは、
ネットワークを介して接続する前記複数のユーザ端末毎に、ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、
前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、
ネットワークを介して接続する前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、
前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段とを具備し、
前記ユーザ端末は、
前記サーバが備える割り当て手段により割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、
前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段と
を具備することを特徴とする演奏通信装置。
【請求項３】
前記ユーザ端末が備える演奏データ送信手段は、演奏操作に応じて発生するＭＩＤＩイベントに、イベント発生時刻の差分時間を付加した演奏データを送信することを特徴とする請求項２記載の演奏通信装置。
【請求項４】
前記ユーザ端末が備える演奏データ送信手段は、ＭＩＤＩイベントの発生時刻の差分時間が所定時間未満の場合には、ＭＩＤＩイベントに差分時間を付加し、差分時間が所定時間の場合には、ＭＩＤＩイベントに同期キャラクタデータを付加し、差分時間が所定時間を超える場合には、ＭＩＤＩイベントに同期キャラクタデータを複数付加することを特徴とする請求項３記載の演奏通信装置。
【請求項５】
前記ユーザ端末が備える再生手段は、再生対象となる演奏データ中に含まれるイベント発生時刻の差分時間に応じて、当該演奏データの再生を遅延させることを特徴とする請求項２記載の演奏通信装置。
【請求項６】
前記ユーザ端末が備える演奏データ送信手段は、演奏に影響しない頻度で定期的に絶対時刻を表す時刻マーカを演奏データに付加する時刻マーカ付加手段を更に備え、
前記前記ユーザ端末が備える再生手段は、受信したユーザポート番号毎の演奏データにそれぞれ付加される時刻マーカの中で最も遅い時刻に同期するようにユーザポート番号毎の演奏データの再生タイミングをそれぞれ遅延調整する遅延調整手段を更に備えることを特徴とする請求項２記載の演奏通信装置。
【請求項７】
ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して送信されて来るユーザ識別番号及び演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出すとともに、当該読み出された演奏データを、前記受信手段が受信したユーザ識別番号に基づいて送信する送信手段と、を有するサーバにネットワークを介して複数接続され、夫々前記ユーザ識別番号が割り当てられたユーザ端末であって、
前記ユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、
前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段と
を具備することを特徴とするユーザ端末。
【請求項８】
前記ユーザ端末が備える演奏データ送信手段は、演奏操作に応じて発生するＭＩＤＩイベントに、イベント発生時刻の差分時間を付加した演奏データを送信することを特徴とする請求項７記載の演奏通信装置。
【請求項９】
前記ユーザ端末が備える演奏データ送信手段は、ＭＩＤＩイベントの発生時刻の差分時間が所定時間未満の場合には、ＭＩＤＩイベントに差分時間を付加し、差分時間が所定時間の場合には、ＭＩＤＩイベントに同期キャラクタデータを付加し、差分時間が所定時間を超える場合には、ＭＩＤＩイベントに同期キャラクタデータを複数付加することを特徴とする請求項８記載の演奏通信装置。
【請求項１０】
前記ユーザ端末が備える再生手段は、再生対象となる演奏データ中に含まれるイベント発生時刻の差分時間に応じて、当該演奏データの再生を遅延させることを特徴とする請求項７記載の演奏通信装置。
【請求項１１】
前記ユーザ端末が備える演奏データ送信手段は、演奏に影響しない頻度で定期的に絶対時刻を表す時刻マーカを演奏データに付加する時刻マーカ付加手段を更に備え、
前記前記ユーザ端末が備える再生手段は、受信したユーザポート番号毎の演奏データにそれぞれ付加される時刻マーカの中で最も遅い時刻に同期するようにユーザポート番号毎の演奏データの再生タイミングをそれぞれ遅延調整する遅延調整手段を更に備えることを特徴とする請求項７記載の演奏通信装置。
【請求項１２】
割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを送信する演奏データ送信手段と、送信されて来る演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信された演奏データを再生する再生手段と、を有する複数のユーザ端末を複数ネットワークを介して接続された演奏通信サーバとして用いられるコンピュータに、
前記複数のユーザ端末毎に、前記ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当てステップと、
前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信ステップと、
演奏データ記憶手段が有する前記ユーザポート番号毎の記憶領域の内、前記受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記ユーザ識別番号と共に受信された演奏データを書き込む書き込みステップと、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信されたユーザ識別番号の前記ユーザ端末に送信する送信ステップと、
を実行させることを特徴とするプログラム。
【請求項１３】
サーバと、当該サーバにネットワークを介して接続する複数のユーザ端末とから構成される演奏通信装置で実行されるプログラムであって、
前記サーバに搭載されるコンピュータに、
ネットワークを介して接続する前記複数のユーザ端末毎に、ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当てステップと、
ネットワークを介して接続する前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信ステップと、
前記割り当てステップで割り当てられたユーザポート番号毎の記憶領域を有し、これら記憶領域の内、前記受信ステップで受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信ステップにおいて当該ユーザ識別番号と共に受信した演奏データを書き込む書き込みステップと、
前記割り当てステップで割り当てられたユーザポート番号毎の記憶領域のそれぞれから読み出したユーザポート番号毎の演奏データを、前記受信ステップで受信したユーザ識別番号の前記ユーザ端末に送信する送信ステップとを実行させ、
前記ユーザ端末に搭載されるコンピュータに、
前記サーバの割り当てステップで割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信ステップと、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信ステップと、
前記演奏データ受信ステップで受信されたユーザポート番号毎の演奏データを再生する再生ステップと
を実行させることを特徴とするプログラム。
【請求項１４】
ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して送信されて来るユーザ識別番号及び演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出すとともに、当該読み出された演奏データを、前記受信手段が受信したユーザ識別番号に基づいて送信する送信手段と、を有するサーバにネットワークを介して複数接続され、夫々前記ユーザ識別番号が割り当てられたユーザ端末として用いられるコンピュータに、
前記ユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信ステップと、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信ステップと、
前記受信されたユーザポート番号毎の演奏データを再生する再生ステップと
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のユーザ同士がネットワークを介して互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりする演奏通信装置、演奏通信サーバ、ユーザ端末およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して演奏情報を授受して遠隔地間で合奏する技術が知られている。この種の技術として、例えば特許文献１には、ネットワークを介して他地点から送られてくる演奏情報に基づく楽音に合わせて自身の演奏操作を行うことで自身の演奏もそれに同期しているように錯覚し、遠隔地同士でも違和感の少ない合奏を可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１７８８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の技術では、ネットワークを介して互いに接続される一方のユーザと他方のユーザとの間において、一方のユーザ側から送信される演奏情報を他方のユーザ側が受信して再生し、それに同期して当該他方のユーザが演奏するだけなので、ネットワークを介して複数のユーザ同士が互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりすることが出来ないという問題がある。
【０００５】
本発明は、このような事情に鑑みてなされたもので、ネットワークを介して複数のユーザ同士が互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりすることができる演奏通信装置、演奏通信サーバ、ユーザ端末およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の演奏通信装置は、サーバと、当該サーバにネットワークを介して接続する複数のユーザ端末とから構成され、
前記サーバは、ネットワークを介して接続する前記複数のユーザ端末毎に、ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して接続する前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段とを具備し、
前記ユーザ端末は、前記サーバが備える割り当て手段により割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段とを具備することを特徴とする。
【０００７】
また、本発明の演奏通信サーバは、割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを送信する演奏データ送信手段と、送信されて来る演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信された演奏データを再生する再生手段と、を有する複数のユーザ端末をネットワークを介して接続された演奏通信サーバであって、前記複数のユーザ端末毎に、前記ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段とを具備することを特徴とする。
【０００８】
また、本発明のユーザ端末は、ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して送信されて来るユーザ識別番号及び演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出すとともに、当該読み出された演奏データを、前記受信手段が受信したユーザ識別番号に基づいて送信する送信手段と、を有するサーバにネットワークを介して複数接続され、夫々前記ユーザ識別番号が割り当てられたユーザ端末であって、前記ユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段とを具備することを特徴とする。
【発明の効果】
【０００９】
本発明では、ネットワークを介して複数のユーザ同士が互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりすることができる。
【図面の簡単な説明】
【００１０】
【図１】演奏通信装置１０の全体構成を示すブロック図である。
【図２】クライアント２００の構成を示すブロック図である。
【図３】ＲＡＭ２２の構成を示すメモリマップである。
【図４】サーバ１００が実行するサーバ処理の動作を示すフローチャートである。
【図５】クライアント２００が実行するクライアント処理の動作を示すフローチャートである。
【図６】記録処理の動作を示すフローチャートである。
【図７】再生処理の動作を示すフローチャートである。
【図８】演奏遅延の概念を含む具体的な動作を説明するための図である。
【図９】変形例による再生処理の動作を示すフローチャートである。
【図１０】変形例による再生処理の動作を示すフローチャートである。
【図１１】変形例による再生処理の動作の一例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．全体構成
図１は、実施の一形態による演奏通信装置１０の全体構成を示すブロック図である。この図に示す演奏通信装置１０は、例えばインターネットなどのネットワークＮＷを介してサーバ１００に接続する複数のクライアント２００−ＵＰＮ（１）〜２００−ＵＰＮ（ｎ）から構成される公知のサーバ・クライアントシステムである。なお、ネットワークＮＷは、インターネットに限定されず、ＬＡＮやＷＡＮであっても構わない。
【００１２】
サーバ１００は、ネットワークＮＷを介して接続するクライアント２００に対し、ユーザ識別番号ＵＩＤと、当該ユーザ識別番号ＵＩＤに対応付けたユーザポート番号ＵＰＮとを割り当てる。ユーザ識別番号ＵＩＤは、例えばサーバ立ち上げ時刻を開始値として連続するユニークな番号である。ユーザ識別番号ＵＩＤに対応付けて割り当てられるユーザポート番号ＵＰＮとは、「０」から最大クライアント数（接続可能なクライアントの数）の内、現在使われていない空きポート番号（資源番号）となる。
【００１３】
サーバ１００は、クライアント２００−ＵＰＮ（１）〜２００−ＵＰＮ（ｎ）の各ユーザポート番号ＵＰＮ（１）〜ＵＰＮ（ｎ）にそれぞれ対応するバッファ領域から構成されるイベントバッファ１０１を具備する。
【００１４】
サーバ１００は、ネットワークＮＷを介してクライアント２００からユーザ識別番号ＵＩＤ、要求コマンドＰＵＴＥＶＥＮＴおよび送出データを受信すると、イベントバッファ１０１の内、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮのバッファ領域にその受信した送出データをバッファデータとしてストアすると共に、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮを、要求コマンドＰＵＴＥＶＥＮＴを送信したクライアント２００へ返信する。
【００１５】
クライアント２００からサーバ１００へ送信する送出データは、イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントから構成される。一連のＭＩＤＩイベントとは、演奏操作に応じてクライアント２００側で発生するＭＩＤＩイベント（チャンネルメッセージ又はエクスクルーシブメッセージ）を指す。ＭＩＤＩイベントにイベント発生時刻の差分時間を付加する意図については追って説明する。
【００１６】
サーバ１００は、ネットワークＮＷを介してクライアント２００から要求コマンドＧＥＴＥＶＥＮＴを受信すると、イベントバッファ１０１の各バッファ領域からユーザポート番号ＵＰＮ毎のバッファデータを読み出して要求コマンドＧＥＴＥＶＥＮＴを送信したクライアント２００へ返信する。これにより、サーバ１００が各クライアント２００−ＵＰＮ（１）〜２００−ＵＰＮ（ｎ）の共通の記憶手段として機能することよって各クライアント２００同士で互いのイベントバッファＥＢの内容を共有可能としている。
【００１７】
クライアント２００−ＵＰＮ（１）〜２００−ＵＰＮ（ｎ）は、ネットワークＮＷを介してサーバ１００に接続するユーザ端末であり、その構成については後述する。クライアント２００では、演奏操作に応じて発生するＭＩＤＩイベント（チャンネルメッセージ又はエクスクルーシブメッセージ）に、イベント発生時刻の差分時間を付加してイベントバッファＥＢにストアする。
【００１８】
具体的には、ＭＩＤＩイベントの発生時刻の差分時間が所定時間（例えば２５５ティック）未満の場合には、イベントバイトの次に差分時間を付加してイベントバッファＥＢにストアする。差分時間が所定時間の場合には、イベントバイトの次に同期キャラクタとして扱われるデータ「０ｘＦＦ」、データ「０ｘＦＦ」を連続付加してイベントバッファＥＢにストアする。差分時間が所定時間（例えば２５５ティック）を超える場合には、イベントバイトの次に同期キャラクタとして扱われるデータ「０ｘＦＦ」、データ「０ｘＦＦ」を複数回繰り返し付加してイベントバッファＥＢにストアする。
【００１９】
クライアント２００では、ユーザ識別番号ＵＩＤおよび要求コマンドＰＵＴＥＶＥＮＴをサーバ１００に送信すると共に、イベントバッファＥＢの内容を送出データ（イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベント）として送信する。サーバ１００では、上述したように、イベントバッファ１０１の内、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮのバッファ領域にその受信した送出データをバッファデータとしてストアすると共に、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮを、要求コマンドＰＵＴＥＶＥＮＴを送信したクライアント２００へ返信する。
【００２０】
クライアント２００では、要求コマンドＧＥＴＥＶＥＮＴをサーバ１００に送信すると、その要求コマンドＧＥＴＥＶＥＮＴに応じてサーバ１００が送信するユーザポート番号ＵＰＮ毎のバッファデータを受信してイベントバッファＥＢにストアする。クライアント２００では、イベントバッファＥＢにストアしたユーザポート番号ＵＰＮ毎のバッファデータを読み出して再生（自動演奏）する。この動作の詳細については追って詳述する。
【００２１】
Ｂ．クライアント２００の構成
次に、図２〜図３を参照してクライアント２００の構成を説明する。図２は、クライアント２００の構成を示すブロック図である。ユーザ端末であるクライアント２００は、具体的にはネットワーク通信機能を備えたＤＴＭ装置であり、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、操作部２３、表示部２４、通信制御部２５、ＭＩＤＩインタフェース部２６、音源２７およびサウンドシステム２８から構成される。
【００２２】
ＣＰＵ２０は、操作部２３が発生する操作イベントに応じて各部を制御すると共に、ネットワークＮＷを介して接続したサーバ１００に対し、ユーザ識別番号ＵＩＤ、要求コマンドＰＵＴＥＶＥＮＴおよびＲＡＭ２２の記録用イベントバッファＥＢ１の内容（イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントからなる送出データ）を送信したり、要求コマンドＧＥＴＥＶＥＮＴに応じてサーバ１００から受信したユーザポート番号ＵＰＮ毎のバッファデータをＲＡＭ２２の再生用イベントバッファＥＢ２にストアするクライアント処理を実行する。このクライアント処理の詳細については追って詳述する。
【００２３】
ＲＯＭ２１には、ＣＰＵ２０にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述するクライアント処理、当該クライアント処理からコールされる記録処理および再生処理を含む。ＲＡＭ２２は、図３に図示するように、ワークエリアＷＥおよびイベントバッファＥＢを備える。ＲＡＭ２２のワークエリアＷＥには、ＣＰＵ２０の処理に使用される各種レジスタ・フラグデータが一時記憶される他、サーバ１００から割り当てられるユーザ識別番号ＵＩＤおよびユーザポート番号ＵＰＮを一時記憶する。
【００２４】
ＲＡＭ２２のイベントバッファＥＢは、記録用イベントバッファＥＢ１と再生用イベントバッファＥＢ２とから構成される。記録用イベントバッファＥＢ１には、イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントがストアされる。一連のＭＩＤＩイベントとは、ユーザが外部のＭＩＤＩ楽器３０を演奏した場合に、そのＭＩＤＩ楽器３０から出力されるＭＩＤＩイベントを、ＭＩＤＩインタフェース２６を介して取り込んだものを指す。また、ＭＩＤＩインタフェース２６を介して取り込んだＭＩＤＩイベントには、ＣＰＵ２０がイベント発生時刻の差分時間を付加する。
【００２５】
すなわち、前述したように、イベント発生時刻の差分時間が所定時間（例えば２５５ティック）未満であれば、イベントバイトの次に差分時間を付加し、差分時間が所定時間ならば、イベントバイトの次に同期キャラクタとして扱われるデータ「０ｘＦＦ」、データ「０ｘＦＦ」を連続付加し、差分時間が所定時間（例えば２５５ティック）を超えるならば、イベントバイトの次に同期キャラクタとして扱われるデータ「０ｘＦＦ」、データ「０ｘＦＦ」を複数回繰り返し付加するようになっている。
【００２６】
再生用イベントバッファＥＢ２には、要求コマンドＧＥＴＥＶＥＮＴに応じてサーバ１００から受信したユーザポート番号ＵＰＮ毎のバッファデータがストアされる。言い換えれば、再生用イベントバッファＥＢ２には、自己を含む全てのクライアント２００が各々発生した送出データ（イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベント）がストアされる。これにより、各クライアント２００同士で互いのイベントバッファＥＢの内容を共有可能にしている。
【００２７】
操作部２３は、操作されるスイッチ種に対応した操作イベントを発生する。表示部２４は、ＬＣＤパネル等から構成され、ＣＰＵ２０から供給される表示制御信号に応じて、各部の動作状態や設定状態などを画面表示する。通信制御部２５は、ＣＰＵ２０の制御の下に、所定のプロトコルに従ってネットワークＮＷを介して接続されるサーバ１００とデータ授受する。
【００２８】
ＭＩＤＩインタフェース部２６は、ＣＰＵ２０の制御の下に、外部のＭＩＤＩ楽器３０から出力されるＭＩＤＩイベントを取り込む。なお、ＭＩＤＩ楽器３０は、ユーザの演奏操作に応じたＭＩＤＩイベント（チャンネルメッセージ又はエクスクルーシブメッセージ）を出力する。ＭＩＤＩインタフェース部２６により取り込まれたＭＩＤＩイベントは、ＲＡＭ２２の記録用イベントバッファＥＢ１（図３参照）にストアされる。
【００２９】
なお、ＭＩＤＩインタフェース部２６は、ＣＰＵ２０の制御の下に、ＲＡＭ２２の再生用イベントバッファＥＢ２（図３参照）から読み出されるバッファデータ中のＭＩＤＩイベントから形成されるＭＩＤＩシーケンスデータを外部のＭＩＤＩ楽器３０へ出力する機能も備える。この機能によりＭＩＤＩ楽器３０は、受信したＭＩＤＩシーケンスデータに基づき自動演奏する。
【００３０】
音源２７は、周知の波形メモリ読み出し方式によって構成され、サーバ１００に接続可能なクライアント２００の数を超える同時発音チャンネルを備える。音源２７では、ＣＰＵ２０がＲＡＭ２２の再生用イベントバッファＥＢ２（図３参照）から読み出すＭＩＤＩイベントに応じた楽音データを生成して出力したり、ＭＩＤＩインタフェース部２６を介して外部のＭＩＤＩ楽器３０から入力されるＭＩＤＩイベントに応じた楽音データを生成して出力したりする。サウンドシステム２８は、音源２７から出力される楽音データをアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。
【００３１】
Ｂ．動作
次に、図４〜図８を参照して上記構成による演奏通信装置１０の動作を説明する。以下では、サーバ１００が実行するサーバ処理と、クライアント２００のＣＰＵ２０が実行するクラインアント処理とに分けて動作の説明を進める。なお、クライアント処理は、記録処理および再生処理を含む。
【００３２】
（１）サーバ処理の動作
図４は、演奏通信装置１０を構成するサーバ１００が実行するサーバ処理の動作を示すフローチャートである。サーバ１００では、先ずステップＳＡ１において、ネットワークＮＷを介して接続したクライアント２００から送信されるユーザ識別番号ＵＩＤおよびメッセージを取得する。メッセージとは、後述するように、クライアント２００が送信する要求コマンドＰＵＴＥＶＥＮＴおよびＲＡＭ２２の記録用イベントバッファＥＢ１の内容（イベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントからなる送出データ）である。
【００３３】
続いて、ステップＳＡ２では、上記ステップＳＡ１にて取得したユーザ識別番号ＵＩＤが既にサーバ１００側に登録済みの場合、その取得したユーザ識別番号ＵＩＤに対応付けて割り当て済みのユーザポート番号ＵＰＮを取得する。次いで、ステップＳＡ３では、取得したユーザ識別番号ＵＩＤが未定義であるか否かを判断する。
【００３４】
ユーザ識別番号ＵＩＤが未定義であると、上記ステップＳＡ３の判断結果は「ＹＥＳ」となり、ステップＳＡ４に進み、新規のユーザ識別番号ＵＩＤと、その新規のユーザ識別番号ＵＩＤに対応付けたユーザポート番号ＵＰＮとの割り当てを試みる。
【００３５】
次いで、ステップＳＡ５では、新規割り当てを試みてもまだ未定義であるか否か、すなわち上記ステップＳＡ４で行われた新規割り当てにおいて接続可能なクライアントの数を超え、ユーザ識別番号ＵＩＤが売り切れの状態であるかどうかを判断する。ユーザ識別番号ＵＩＤの売り切れにより新規割り当て出来ずに未定義のままであると、判断結果は「ＹＥＳ」となり、ステップＳＡ６に進み、ユーザ識別番号ＵＩＤが未定義なクライアント２００との通信を切断してセッションを終了させる切断処理を実行して本処理を終える。
【００３６】
一方、上記ステップＳＡ２で取得したユーザ識別番号ＵＩＤが未定義でない場合や、上記ステップＳＡ４で新規割り当てされたユーザ識別番号ＵＩＤが未定義でない場合には、上記ステップＳＡ３あるいは上記ステップＳＡ５の判断結果が「ＮＯ」になり、ステップＳＡ７に進む。ステップＳＡ７では、クライアント２００から要求コマンドＰＵＴＥＶＥＮＴと共に受信した送出データ（クライアント２００のＲＡＭ２２の記録用イベントバッファＥＢ１の内容）を、イベントバッファ１０１の内、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮのバッファ領域にバッファデータとしてストアする。
【００３７】
続いて、ステップＳＡ８では、クライアント２００から要求コマンドＧＥＴＥＶＥＮＴを受信したか否かを判断する。要求コマンドＧＥＴＥＶＥＮＴを受信していなければ、要求コマンドＰＵＴＥＶＥＮＴを送信したクライアント２００に対し、ユーザ識別番号ＵＩＤと当該ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮとを返信して本処理を終える。
【００３８】
これに対し、クライアント２００から要求コマンドＧＥＴＥＶＥＮＴを受信すると、上記ステップＳＡ８の判断結果は「ＹＥＳ」になり、ステップＳＡ１０に進み、イベントバッファ１０１の各バッファ領域からユーザポート番号ＵＰＮ毎のバッファデータを読み出して要求コマンドＧＥＴＥＶＥＮＴを送信したクライアント２００へ返信して本処理を終える。
【００３９】
（２）クライアント処理の動作
次に、図５を参照してクライアント処理の動作を説明する。クライアント２００のＣＰＵ２０は、ネットワークＮＷを介してサーバ１００に接続する為の通信制御を終えると、本処理を実行してステップＳＢ１に進み、ユーザ識別番号ＵＩＤを初期化して未定義状態にする。
【００４０】
続いて、ステップＳＢ２では、記録処理を実行する。記録処理では、後述するように、現在時刻と最後にデータ出力した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になる迄、同期キャラクタデータ「０ｘＦＦ」、「０ｘＦＦ」をサーバ１００へ出力し続け、現在時刻と最後にデータ出力した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になると、外部のＭＩＤＩ楽器３０からＭＩＤＩ  ＩＮイベントが入力されなくなる迄の間、取り込んだＭＩＤＩイベント毎に前イベント発生からの経過時間（差分時間）を付加してＲＡＭ２２の記録用イベントバッファＥＢ１に記録する処理を続ける。
【００４１】
そして、ＭＩＤＩ  ＩＮイベントの入力が途絶えると、ユーザ識別番号ＵＩＤおよび要求コマンドＰＵＴＥＶＥＮＴをサーバ１００へ送信すると共に、ＲＡＭ２２の記録用イベントバッファＥＢ１からイベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントを読み出し、これを送出データとしてサーバ１００へ送信し、これに応じてサーバ１００から返信されるユーザ識別番号ＵＩＤおよびユーザポート番号ＵＰＮを取得する。
【００４２】
次いで、ステップＳＢ３では、ユーザ識別番号ＵＩＤが定義されたか否か、すなわち上記ステップＳＢ２の記録処理において、サーバ１００からユーザ識別番号ＵＩＤを受領したかどうかを判断する。サーバ１００からユーザ識別番号ＵＩＤを受領していない未定義状態であると、判断結果は「ＮＯ」になり、ステップＳＢ１０に進み、一定時間待機した後、再び上述のステップＳＢ２に処理を戻して記録処理を実行する。
【００４３】
一方、サーバ１００からユーザ識別番号ＵＩＤを受領した場合には、上記ステップＳＢ３の判断結果が「ＹＥＳ」になり、ステップＳＢ４に進み、サーバ１００に要求コマンドＧＥＴＥＶＥＮＴを送信する。なお、要求コマンドＧＥＴＥＶＥＮＴを受信したサーバ１００は、前述したように、イベントバッファ１０１の各バッファ領域からユーザポート番号ＵＰＮ毎のバッファデータを読み出し、要求コマンドＧＥＴＥＶＥＮＴを送信したクライアント２００に返信する。
【００４４】
要求コマンドＧＥＴＥＶＥＮＴに応じて、サーバ１００からユーザポート番号ＵＰＮ毎のバッファデータを受信すると、ステップＳＢ５に進み、受信したユーザポート番号ＵＰＮ毎のバッファデータを、ＲＡＭ２２の再生用イベントバッファＥＢ２にストアし、続くステップＳＢ６では、最初のユーザポート番号ＵＰＮを指定する。
【００４５】
次に、ステップＳＢ７では、再生処理を実行する。再生処理では、後述するように、現在時刻と再生処理時刻との比較結果に基づき現在時刻が処理タイミングと判定され、かつＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの内、現在指定されているユーザポート番号ＵＰＮのバッファデータにおいて、処理タイミングに該当するデータが存在すると、その該当データを現在指定されているユーザポート番号ＵＰＮのバッファデータ中から読み出す。
【００４６】
そして、動作モードがＥＶＥＮＴモードと判別された場合には、読み出したデータ（イベントバイト）を音源２７のバッファ（不図示）に転送し、そのバッファ転送されたイベントバイトが蓄積してＭＩＤＩシーケンスデータを形成すると、音源２７が自動演奏を開始する。
【００４７】
なお、音源２７を自動演奏させず、ＭＩＤＩ楽器３０を用いて自動演奏させるケースでは、読み出したデータ（イベントバイト）をＭＩＤＩインタフェース部２６のバッファに転送し、バッファに転送されたイベントバイトが蓄積してＭＩＤＩシーケンスデータを形成すると、ＭＩＤＩインタフェース部２６を介してＭＩＤＩ楽器３０に出力する。
【００４８】
動作モードがＴＩＭＥモードと判別された場合には、読み出したデータ（イベント発生時刻の差分時間）を再生処理時刻に加算して更新し、更新された再生処理時刻が「０ｘＦＦ」になると、動作モードをＬＯＮＧモードに遷移させ、一方、更新された再生処理時刻が「０ｘＦＦ」でなければ、動作モードをＥＶＥＮＴモードに遷移させる。動作モードがＬＯＮＧモードと判別された場合には、動作モードをＴＩＭＥモードに遷移させる。
【００４９】
こうして、現在指定されているユーザポート番号ＵＰＮのバッファデータに基づく再生処理が完了すると、ステップＳＢ８に進み、指定するユーザポート番号ＵＰＮをインクリメントして歩進させる。そして、ステップＳＢ９では、歩進させたユーザポート番号ＵＰＮが最後に達したか、つまりＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの全てについて再生処理を実行し終えたかどうかを判断する。ユーザポート番号ＵＰＮ毎のバッファデータの全てについて再生処理を実行し終えていなければ、判断結果は「ＮＯ」となり、上述のステップＳＢ７に処理を戻し、次のユーザポート番号ＵＰＮのバッファデータに基づく再生処理を実行する。
【００５０】
以後、歩進させたユーザポート番号ＵＰＮが最後に達する迄、ステップＳＢ７の再生処理を繰り返し実行し、ＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの全てについて再生処理を実行し終えると、上記ステップＳＢ９の判断結果が「ＹＥＳ」となり、ステップＳＢ１０に進む。そして、ステップＳＢ１０では、一定時間待機した後、上述のステップＳＢ２に処理を戻す。
【００５１】
（３）記録処理の動作
次に、図６を参照して記録処理の動作を説明する。上述したクライアント処理のステップＳＢ２（図５参照）を介して本処理が実行されると、ＣＰＵ２０は図６に図示するステップＳＣ１に処理を進め、時刻をインクリメントして現在時刻を更新する。続いて、ステップＳＣ２では、現在時刻とサーバ１００に対して最後にデータ出力した時刻との差分時間が、一定時間ＬＯＮＧＴＩＭＥ（例えば２５５ティック）を超えているか否かを判断する。
【００５２】
現在時刻と最後にデータを記憶した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥを超えていると、判断結果は「ＹＥＳ」になり、ステップＳＣ３に進み、同期キャラクタデータ「０ｘＦＦ」、「０ｘＦＦ」を記憶して上記ステップＳＣ２に処理を戻す。以後、現在時刻と最後に記憶した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になる迄、上記ステップＳＣ２〜ＳＣ３を繰り返して同期キャラクタデータ「０ｘＦＦ」、「０ｘＦＦ」を記憶し続ける。
【００５３】
そして、現在時刻と最後にデータを記憶した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になると、上記ステップＳＣ２の判断結果が「ＮＯ」になり、ステップＳＣ４に進む。ステップＳＣ４では、ＭＩＤＩ  ＩＮイベントの有無、すなわちユーザの演奏操作に応じて外部のＭＩＤＩ楽器３０が出力するＭＩＤＩイベントを、ＭＩＤＩインタフェース部２６を介して取り込んだかどうかを判断する。
【００５４】
ＭＩＤＩ楽器３０が出力するＭＩＤＩイベントを取り込むと、判断結果は「ＹＥＳ」となり、ステップＳＣ５に進み、取り込んだＭＩＤＩイベントをＲＡＭ２２の記録用イベントバッファＥＢ１にストアする。次いで、ステップＳＣ６では、前回ＭＩＤＩイベントを取り込んだ時刻と今回ＭＩＤＩイベントを取り込んだ時刻との差分に相当するイベント発生時刻の差分時間を、今回取り込んだＭＩＤＩイベントに付加した後、上記ステップＳＣ４に処理を戻す。なお、最初に取り込んだＭＩＤＩイベントには、「０」のイベント発生時刻の差分時間を付加する。
【００５５】
以後、外部のＭＩＤＩ楽器３０から入力されるＭＩＤＩ  ＩＮイベントが無くなる迄、上記ステップＳＣ４〜ＳＣ６を繰り返し、取り込んだＭＩＤＩイベントにイベント発生時刻の差分時間を付加してＲＡＭ２２の記録用イベントバッファＥＢ１に記録する処理を続ける。そして、ユーザの演奏操作が終わり、ＭＩＤＩ  ＩＮイベントが途絶えると、上記ステップＳＣ４の判断結果が「ＮＯ」になり、ステップＳＣ７に進む。
【００５６】
そして、ステップＳＣ７では、ユーザ識別番号ＵＩＤおよび要求コマンドＰＵＴＥＶＥＮＴをサーバ１００へ送信すると共に、ＲＡＭ２２の記録用イベントバッファＥＢ１からイベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントを読み出し、これを送出データとしてサーバ１００へ送信する。次いで、ステップＳＣ８では、サーバ１００から返信されるユーザ識別番号ＵＩＤおよびユーザポート番号ＵＰＮを取得してＲＡＭ２２のワークエリアＷＥに保存して本処理を終える。
【００５７】
このように、記録処理では、現在時刻と最後にデータ出力した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になる迄、同期キャラクタデータ「０ｘＦＦ」、「０ｘＦＦ」をサーバ１００へ出力し続け、現在時刻と最後にデータ出力した時刻との差分時間が一定時間ＬＯＮＧＴＩＭＥ未満になると、外部のＭＩＤＩ楽器３０からＭＩＤＩ  ＩＮイベントが入力されなくなる迄の間、取り込んだＭＩＤＩイベント毎に前イベント発生からの経過時間（差分時間）を付加してＲＡＭ２２の記録用イベントバッファＥＢ１に記録する処理を続ける。
【００５８】
ＭＩＤＩ  ＩＮイベントの入力が途絶えると、ユーザ識別番号ＵＩＤおよび要求コマンドＰＵＴＥＶＥＮＴをサーバ１００へ送信すると共に、ＲＡＭ２２の記録用イベントバッファＥＢ１からイベント発生時刻の差分時間が付加された一連のＭＩＤＩイベントを読み出し、これを送出データとしてサーバ１００へ送信し、これに応じてサーバ１００から返信されるユーザ識別番号ＵＩＤおよびユーザポート番号ＵＰＮを取得する。
【００５９】
（４）再生処理の動作
次に、図７を参照して再生処理の動作を説明する。前述したクライアント処理のステップＳＢ６（図５参照）を介して本処理が実行されると、ＣＰＵ２０は図７に図示するステップＳＤ１に処理を進め、時刻をインクリメントして現在時刻を更新する。次いで、ステップＳＤ２では、ユーザが任意に設定可能な遅延時間を加算した再生処理時刻と、上記ステップＳＤ１で更新された現在時刻とを比較し、続くステップＳＤ３ではその比較の結果に基づき処理タイミングである否かを判断する。
【００６０】
再生処理時刻に対して現在時刻が処理タイミングでなければ、判断結果は「ＮＯ」になり、一旦本処理を終えるが、再生処理時刻に対して現在時刻が処理タイミングになると、判断結果が「ＹＥＳ」になり、ステップＳＤ４に進む。ステップＳＤ４では、ＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの内、現在指定されているユーザポート番号ＵＰＮのバッファデータにおいて、処理タイミングに該当するデータの有無を判断する。
【００６１】
処理タイミングに該当するデータが無ければ、判断結果は「ＮＯ」になり、一旦本処理を終えるが、処理タイミングに該当するデータが有ると、判断結果が「ＹＥＳ」になり、ステップＳＤ５に進む。ステップＳＤ５では、ＲＡＭ２２の再生用イベントバッファＥＢ２において、現在指定されているユーザポート番号ＵＰＮのバッファデータ中から該当するデータを読み出す。
【００６２】
次いで、ステップＳＤ６では、現在の動作モードがＥＶＥＮＴモード、ＴＩＭＥモードおよびＬＯＮＧモードの何れであるかを判別する。初回のモード判別は、読み出したデータの種別に基づき判別する。具体的には、読み出したデータ（１バイト分）がイベントバイトならばＥＶＥＮＴモード、イベント発生時刻の差分時間ならばＴＩＭＥモード、データ「０ｘＦＦ」（同期キャラクタ）ならばＬＯＮＧモードと判別する。
【００６３】
上記ステップＳＤ６においてＥＶＥＮＴモードと判別されると、ステップＳＤ７に進み、読み出したデータ（イベントバイト）を音源２７のバッファに転送し、バッファ転送されるイベントバイトを蓄積してＭＩＤＩシーケンスデータを形成する。続いて、ステップＳＤ８では、イベントバイトを蓄積して形成したＭＩＤＩシーケンスデータに基づく自動演奏を音源２７に指示する。この後、ステップＳＤ９に進み、動作モードをＴＩＭＥモードに遷移させてから上述のステップＳＤ２に処理を戻す。
【００６４】
上記ステップＳＤ６においてＴＩＭＥモードと判別されると、ステップＳＤ１０に進み、読み出したデータ（イベント発生時刻の差分時間）を再生処理時刻に加算し、当該再生処理時刻を更新する。次いで、ステップＳＤ１１では、更新された再生処理時刻が「０ｘＦＦ」であるかどうかを判断する。更新された再生処理時刻が「０ｘＦＦ」になると、判断結果は「ＹＥＳ」となり、ステップＳＤ１２に進み、動作モードをＬＯＮＧモードに遷移させてから上述のステップＳＤ２に処理を戻す。これに対し、更新された再生処理時刻が「０ｘＦＦ」でなければ、上記ステップＳＤ１１の判断結果は「ＮＯ」になり、ステップＳＤ１３に進み、動作モードをＥＶＥＮＴモードに遷移させてから上述のステップＳＤ２に処理を戻す。
【００６５】
上記ステップＳＤ６においてＬＯＮＧモードと判別されると、ステップＳＤ１４に進み、動作モードをＴＩＭＥモードに遷移させてから上述のステップＳＤ２に処理を戻す。
【００６６】
このように、再生処理では、現在時刻と再生処理時刻との比較結果に基づき現在時刻が処理タイミングと判定され、かつＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの内、現在指定されているユーザポート番号ＵＰＮのバッファデータにおいて、処理タイミングに該当するデータが存在すると、その該当データを現在指定されているユーザポート番号ＵＰＮのバッファデータ中から読み出す。
【００６７】
そして、動作モードがＥＶＥＮＴモードと判別された場合には、読み出したデータ（イベントバイト）を音源２７のバッファに転送し、バッファ転送されるイベントバイトを蓄積して形成したＭＩＤＩシーケンスデータに基づく自動演奏を音源２７に指示する。
【００６８】
動作モードがＴＩＭＥモードと判別された場合には、読み出したデータ（イベント発生時刻の差分時間）を再生処理時刻に加算して更新し、更新された再生処理時刻が「０ｘＦＦ」になると、動作モードをＬＯＮＧモードに遷移させ、一方、更新された再生処理時刻が「０ｘＦＦ」でなければ、動作モードをＥＶＥＮＴモードに遷移させる。動作モードがＬＯＮＧモードと判別された場合には、動作モードをＴＩＭＥモードに遷移させる。
【００６９】
Ｃ．具体的な動作
次に、図８を参照して演奏通信装置１０の具体的な動作を説明する。図８は、演奏遅延の概念を含む具体的な動作を説明するための図である。まず例えばクライアント２００−ＵＰＮ（１）のユーザがドラムのソロパートを演奏したとする。そうすると、その演奏に応じて発生するＭＩＤＩイベント（以下、ドラム［Ｔｄｄｄｄｄ］と記す）が前述の記録処理によりサーバ１００に送信される（図８（ａ）参照）。サーバ１００では受信したクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］を、イベントバッファ１０１におけるユーザポート番号ＵＰＮ（１）のバッファ領域にストアする。
【００７０】
そして、クライアント２００−ＵＰＮ（２）のユーザＡが、前述の再生処理によりサーバ１００から受信したクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］を自動演奏させると、図８（ｂ）に図示するように、５単位分の遅延時間（図中の「−」記号が１単位の遅延時間を示す）を経てからドラム［Ｔｄｄｄｄｄ］が再生される。
【００７１】
なお、ここで言う遅延時間とは、クライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］の遅延時間をゼロと仮定した場合に、クライアント２００−ＵＰＮ（２）がサーバ１００から受信したクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］の自動演奏開始を指示してから発音開始するまでの相対的な遅延時間を指す。
【００７２】
クライアント２００−ＵＰＮ（２）のユーザＡが、上述のように５単位分の遅延時間を経て再生されるドラム［Ｔｄｄｄｄｄ］に合わせてピアノ演奏したとする。そうすると、この場合、５単位分の遅延時間が付加されたピアノ［Ｔｐｐｐｐｐ］がサーバ１００に送信され（図８（ｂ）参照）、イベントバッファ１０１におけるユーザポート番号ＵＰＮ（２）のバッファ領域にストアされる。
【００７３】
さて一方、クライアント２００−ＵＰＮ（３）のユーザＣが、前述の再生処理によりサーバ１００から受信したクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］と、クライアント２００−ＵＰＮ（２）のピアノ［Ｔｐｐｐｐｐ］とを自動演奏させた場合、図８（ｃ）に図示するように、クライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］が２単位分の遅延時間を経て再生され、クライアント２００−ＵＰＮ（２）のピアノ［Ｔｐｐｐｐｐ］も更に２単位分の遅延時間が加わって都合７単位分の遅延時間を経て再生される。この場合、ドラム［Ｔｄｄｄｄｄ］とピアノ［Ｔｐｐｐｐｐ］が同期せず正しい演奏にはならない。
【００７４】
そこで、クライアント２００−ＵＰＮ（３）のユーザＣは、図８（ｄ）に図示するように、前述の再生処理によりクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］に５単位分の遅延時間（図中の「＋」記号が１単位の遅延時間を示す）を加算する。こうすることでクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］とクライアント２００−ＵＰＮ（２）のピアノ［Ｔｐｐｐｐｐ］とが同期した正しい演奏として再生される。
【００７５】
次に、クライアント２００−ＵＰＮ（４）のユーザＢが、前述の再生処理によりサーバ１００から受信したクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］を自動演奏させると、図８（ｅ）に図示するように、３単位分の遅延時間を経てからドラム［Ｔｄｄｄｄｄ］が再生され、これに合わせてピアノ演奏すると、３単位分の遅延時間が付加されたピアノ［Ｔｐｐｐｐｐ］がサーバ１００に送信され、イベントバッファ１０１におけるユーザポート番号ＵＰＮ（４）のバッファ領域にストアされる。
【００７６】
そして、クライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］に合わせてクライアント２００−ＵＰＮ（４）が弾いたピアノ［Ｔｐｐｐｐｐ］を、クライアント２００−ＵＰＮ（３）のユーザＣが自動演奏させたとする。そうすると、図８（ｆ）に図示するように、クライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］が２単位分の遅延時間を経て再生され、クライアント２００−ＵＰＮ（４）のピアノ［Ｔｐｐｐｐｐ］も更に２単位分の遅延時間が加わって都合５単位分の遅延時間を経て再生される。
【００７７】
この場合、ドラム［Ｔｄｄｄｄｄ］とピアノ［Ｔｐｐｐｐｐ］が同期せず正しい演奏として再生されない為、クライアント２００−ＵＰＮ（３）では、図８（ｇ）に図示するように、前述の再生処理によりクライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］に３単位分の遅延時間（図中の「＋」記号が１単位の遅延時間を示す）を加算する。
【００７８】
すると、クライアント２００−ＵＰＮ（３）のユーザＣは、クライアント２００−ＵＰＮ（１）のドラム［Ｔｄｄｄｄｄ］とクライアント２００−ＵＰＮ（４）のピアノ［Ｔｐｐｐｐｐ］とが同期した正しい演奏として聴くことが出来る。つまり、ネットワークを介して複数のユーザ同士が互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりすることができる。
【００７９】
Ｄ．変形例
次に、図９〜図１１を参照して変形例による再生処理の動作を説明する。以下では、ユーザポート番号ＵＰＮ毎の遅延を自動的に調整する変形例の再生処理について説明する。なお、この変形例による再生処理では、前述した記録処理において、各ユーザポート番号ＵＰＮ毎のクライアント２００が演奏に影響しない頻度で定期的に絶対時刻を表すＭＩＤＩイクスクルーシブメッセージを時刻マーカＳとして送信することを前提としている。
【００８０】
さて、こうした前提の下で前述した実施形態と同様、クライアント処理のステップＳＢ６（図５参照）を介して本処理が実行されると、ＣＰＵ２０は図９に図示するステップＳＥ１に処理を進め、時刻をインクリメントして現在時刻を更新する。続いて、ステップＳＥ２では、ＲＡＭ２２の再生用イベントバッファＥＢ２の内、現在指定されているユーザポート番号ＵＰＮのバッファデータの中から現在時刻近傍にある時刻マーカＳ（ＭＩＤＩイクスクルーシブメッセージ）を抽出し、抽出した時刻マーカＳから時刻Ｃを取得する。
【００８１】
次いで、ステップＳＥ３では、ＲＡＭ２２の再生用イベントバッファＥＢ２から現在時刻近傍にあるユーザポート番号ＵＰＮ毎の時刻マーカＳの各時刻を取得し、続くステップＳＥ４では、取得したユーザポート番号ＵＰＮ毎の時刻マーカＳの各時刻の中で最も遅い時刻を最遅延時刻ＣＭとする。そして、ステップＳＥ５では、上記ステップＳＥ４で取得した最遅延時刻ＣＭと、上記ステップＳＥ３で取得した現在指定されているユーザポート番号ＵＰＮの時刻Ｃとの差分を現在時刻に加算して再生処理時刻を算出する。
【００８２】
こうして、再生処理時刻が算出されると、ステップＳＥ６に進み、上記ステップＳＥ１で更新された現在時刻とを比較し、続くステップＳＥ７（図１０参照）では、その比較の結果に基づき処理タイミングである否かを判断する。再生処理時刻に対して現在時刻が処理タイミングでなければ、判断結果は「ＮＯ」になり、一旦本処理を終えるが、再生処理時刻に対して現在時刻が処理タイミングになると、判断結果が「ＹＥＳ」になり、ステップＳＥ８に進む。
【００８３】
ステップＳＥ８では、ＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの内、現在指定されているユーザポート番号ＵＰＮのバッファデータにおいて、処理タイミングに該当するデータの有無を判断する。処理タイミングに該当するデータが無ければ、判断結果は「ＮＯ」になり、一旦本処理を終えるが、処理タイミングに該当するデータが有ると、判断結果が「ＹＥＳ」になり、ステップＳＥ９に進み、ＲＡＭ２２の再生用イベントバッファＥＢ２において、現在指定されているユーザポート番号ＵＰＮのバッファデータ中から該当するデータを読み出す。
【００８４】
次いで、ステップＳＥ１０では、現在の動作モードがＥＶＥＮＴモード、ＴＩＭＥモードおよびＬＯＮＧモードの何れであるかを判別する。初回のモード判別は、読み出したデータの種別に基づき判別する。具体的には、読み出したデータ（１バイト分）が、ＭＩＤＩイクスクルーシブ以外のイベントバイトならばＥＶＥＮＴモード、イベント発生時刻の差分時間ならばＴＩＭＥモード、データ「０ｘＦＦ」（同期キャラクタ）ならばＬＯＮＧモードと判別する。
【００８５】
上記ステップＳＥ１０においてＥＶＥＮＴモードと判別されると、ステップＳＥ１１に進み、、読み出したデータ（イベントバイト）を音源２７のバッファに転送し、バッファ転送されるイベントバイトを蓄積してＭＩＤＩシーケンスデータを形成する。続いて、ステップＳＥ１２では、イベントバイトを蓄積して形成したＭＩＤＩシーケンスデータに基づく自動演奏を音源２７に指示する。この後、ステップＳＥ１３に進み、動作モードをＴＩＭＥモードに遷移させてから上述のステップＳＥ２（図９参照）に処理を戻す。
【００８６】
上記ステップＳＥ１０においてＴＩＭＥモードと判別されると、ステップＳＥ１４に進み、読み出したデータ（イベント発生時刻の差分時間）を再生処理時刻に加算し、当該再生処理時刻を更新する。次いで、ステップＳＥ１５では、更新された再生処理時刻が「０ｘＦＦ」であるかどうかを判断する。更新された再生処理時刻が「０ｘＦＦ」になると、判断結果は「ＹＥＳ」となり、ステップＳＥ１６に進み、動作モードをＬＯＮＧモードに遷移させてから上述のステップＳＥ２（図９参照）に処理を戻す。
【００８７】
これに対し、更新された再生処理時刻が「０ｘＦＦ」でなければ、上記ステップＳＥ１５の判断結果は「ＮＯ」になり、ステップＳＥ１７に進み、動作モードをＥＶＥＮＴモードに遷移させてから上述のステップＳＥ２に処理を戻す。上記ステップＳＥ１０においてＬＯＮＧモードと判別されると、ステップＳＥ１８に進み、動作モードをＴＩＭＥモードに遷移させてから上述のステップＳＥ２（図９参照）に処理を戻す。
【００８８】
このように、変形例による再生処理では、例えば図１１（ａ）に図示するように、ユーザポート番号Ａの時刻マーカＳ（ＭＩＤＩイクスクルーシブメッセージ）を受信した３クロック後（図中の「＝」は１クロックを示す）にユーザポート番号Ｂの時刻マーカＳを受信し、さらに３クロック後にユーザポート番号Ｃの時刻マーカＳを受信したとする。
【００８９】
ここで、ユーザポート番号Ａの時刻マーカＳが時刻ＴＡ、ユーザポート番号Ｂの時刻マーカＳが時刻ＴＢ、ユーザポート番号Ｃの時刻マーカＳが時刻ＴＣとすると、この中で最も遅い時刻ＴＣが最遅延時刻とるので、ユーザポート番号Ａの再生処理時刻を現在時刻＋（ＴＣ−ＴＡ）、ユーザポート番号Ｂの再生処理時刻を現在時刻＋（ＴＣ−ＴＢ）およびユーザポート番号Ｃの再生処理時刻を現在時刻とする遅延調整を行えば、図１１（ｂ）に図示するように、ユーザポート番号Ａ〜Ｃの再生処理時刻を同期させることができる。
【００９０】
こうした遅延調整が為された後、現在時刻と再生処理時刻との比較結果に基づき現在時刻が処理タイミングと判定され、かつＲＡＭ２２の再生用イベントバッファＥＢ２に記憶されるユーザポート番号ＵＰＮ毎のバッファデータの内、現在指定されているユーザポート番号ＵＰＮのバッファデータにおいて、処理タイミングに該当するデータが存在すると、その該当データを現在指定されているユーザポート番号ＵＰＮのバッファデータ中から読み出す。
【００９１】
そして、動作モードがＥＶＥＮＴモードと判別された場合には、読み出したデータ（イベントバイト）を音源２７のバッファに転送し、バッファ転送されるイベントバイトを蓄積して形成したＭＩＤＩシーケンスデータに基づく自動演奏を音源２７に指示する。
【００９２】
動作モードがＴＩＭＥモードと判別された場合には、読み出したデータ（イベント発生時刻の差分時間）を再生処理時刻に加算して更新し、更新された再生処理時刻が「０ｘＦＦ」になると、動作モードをＬＯＮＧモードに遷移させ、一方、更新された再生処理時刻が「０ｘＦＦ」でなければ、動作モードをＥＶＥＮＴモードに遷移させる。動作モードがＬＯＮＧモードと判別された場合には、動作モードをＴＩＭＥモードに遷移させる。
【００９３】
以上のように、本実施形態では、サーバ１００と、当該サーバ１００にネットワークＮＷを介して接続する複数のクライアント２００から構成される演奏通信装置１０において、演奏操作に応じて発生する演奏データを、ユーザ識別番号ＵＩＤおよび要求コマンドＰＵＴＥＶＥＮＴと共にクライアント２００からサーバ１００に送信すると、サーバ１００では受信した演奏データを、イベントバッファ１０１の内、ユーザ識別番号ＵＩＤに対応付けて割り当てたユーザポート番号ＵＰＮのバッファ領域にストアする。
【００９４】
そして、クライアント２００からサーバ１００に要求コマンドＧＥＴＥＶＥＮＴを送信すると、サーバ１００ではイベントバッファ１０１の各バッファ領域からユーザポート番号ＵＰＮ毎の演奏データを読み出してクライアント２００に返信する。そして、クライアント２００では、サーバ１００から受領したユーザポート番号ＵＰＮ毎の演奏データの内、所望のユーザポート番号ＵＰＮの演奏データを再生し、それに合わせた演奏操作に応じて演奏データを発生するので、ネットワークを介して複数のユーザ同士が互いの演奏データを共有し、他のユーザと合奏したり、その合奏を他のユーザに聴かせたりすることが可能になる。
【００９５】
以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
【００９６】
（付記）
［請求項１］
割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを送信する演奏データ送信手段と、送信されて来る演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信された演奏データを再生する再生手段と、を有する複数のユーザ端末をネットワークを介して接続された演奏通信サーバであって、
前記複数のユーザ端末毎に、前記ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、
前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、
前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、
前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段と
を具備することを特徴とする演奏通信サーバ。
【００９７】
［請求項２］
サーバと、当該サーバにネットワークを介して接続する複数のユーザ端末とから構成され、
前記サーバは、
ネットワークを介して接続する前記複数のユーザ端末毎に、ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、
前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、
ネットワークを介して接続する前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信手段と、
前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信手段が受信したユーザ識別番号の前記ユーザ端末に送信する送信手段とを具備し、
前記ユーザ端末は、
前記サーバが備える割り当て手段により割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、
前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段と
を具備することを特徴とする演奏通信装置。
【００９８】
［請求項３］
前記ユーザ端末が備える演奏データ送信手段は、演奏操作に応じて発生するＭＩＤＩイベントに、イベント発生時刻の差分時間を付加した演奏データを送信することを特徴とする請求項２記載の演奏通信装置。
【００９９】
［請求項４］
前記ユーザ端末が備える演奏データ送信手段は、ＭＩＤＩイベントの発生時刻の差分時間が所定時間未満の場合には、ＭＩＤＩイベントに差分時間を付加し、差分時間が所定時間の場合には、ＭＩＤＩイベントに同期キャラクタデータを付加し、差分時間が所定時間を超える場合には、ＭＩＤＩイベントに同期キャラクタデータを複数付加することを特徴とする請求項３記載の演奏通信装置。
【０１００】
［請求項５］
前記ユーザ端末が備える再生手段は、再生対象となる演奏データ中に含まれるイベント発生時刻の差分時間に応じて、当該演奏データの再生を遅延させることを特徴とする請求項２記載の演奏通信装置。
【０１０１】
［請求項６］
前記ユーザ端末が備える演奏データ送信手段は、演奏に影響しない頻度で定期的に絶対時刻を表す時刻マーカを演奏データに付加する時刻マーカ付加手段を更に備え、
前記前記ユーザ端末が備える再生手段は、受信したユーザポート番号毎の演奏データにそれぞれ付加される時刻マーカの中で最も遅い時刻に同期するようにユーザポート番号毎の演奏データの再生タイミングをそれぞれ遅延調整する遅延調整手段を更に備えることを特徴とする請求項２記載の演奏通信装置。
【０１０２】
［請求項７］
ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して送信されて来るユーザ識別番号及び演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出すとともに、当該読み出された演奏データを、前記受信手段が受信したユーザ識別番号に基づいて送信する送信手段と、を有するサーバにネットワークを介して複数接続され、夫々前記ユーザ識別番号が割り当てられたユーザ端末であって、
前記ユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信手段と、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信手段と、
前記演奏データ受信手段により受信されたユーザポート番号毎の演奏データを再生する再生手段と
を具備することを特徴とするユーザ端末。
【０１０３】
［請求項８］
前記ユーザ端末が備える演奏データ送信手段は、演奏操作に応じて発生するＭＩＤＩイベントに、イベント発生時刻の差分時間を付加した演奏データを送信することを特徴とする請求項７記載の演奏通信装置。
【０１０４】
［請求項９］
前記ユーザ端末が備える演奏データ送信手段は、ＭＩＤＩイベントの発生時刻の差分時間が所定時間未満の場合には、ＭＩＤＩイベントに差分時間を付加し、差分時間が所定時間の場合には、ＭＩＤＩイベントに同期キャラクタデータを付加し、差分時間が所定時間を超える場合には、ＭＩＤＩイベントに同期キャラクタデータを複数付加することを特徴とする請求項８記載の演奏通信装置。
【０１０５】
［請求項１０］
前記ユーザ端末が備える再生手段は、再生対象となる演奏データ中に含まれるイベント発生時刻の差分時間に応じて、当該演奏データの再生を遅延させることを特徴とする請求項７記載の演奏通信装置。
【０１０６】
［請求項１１］
前記ユーザ端末が備える演奏データ送信手段は、演奏に影響しない頻度で定期的に絶対時刻を表す時刻マーカを演奏データに付加する時刻マーカ付加手段を更に備え、
前記前記ユーザ端末が備える再生手段は、受信したユーザポート番号毎の演奏データにそれぞれ付加される時刻マーカの中で最も遅い時刻に同期するようにユーザポート番号毎の演奏データの再生タイミングをそれぞれ遅延調整する遅延調整手段を更に備えることを特徴とする請求項７記載の演奏通信装置。
【０１０７】
［請求項１２］
割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを送信する演奏データ送信手段と、送信されて来る演奏データを受信する演奏データ受信手段と、前記演奏データ受信手段により受信された演奏データを再生する再生手段と、を有する複数のユーザ端末を複数ネットワークを介して接続された演奏通信サーバとして用いられるコンピュータに、
前記複数のユーザ端末毎に、前記ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当てステップと、
前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信ステップと、
演奏データ記憶手段が有する前記ユーザポート番号毎の記憶領域の内、前記受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記ユーザ識別番号と共に受信された演奏データを書き込む書き込みステップと、
前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出して前記受信されたユーザ識別番号の前記ユーザ端末に送信する送信ステップと、
を実行させることを特徴とするプログラム。
【０１０８】
［請求項１３］
サーバと、当該サーバにネットワークを介して接続する複数のユーザ端末とから構成される演奏通信装置で実行されるプログラムであって、
前記サーバに搭載されるコンピュータに、
ネットワークを介して接続する前記複数のユーザ端末毎に、ユーザ識別番号および当該ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当てステップと、
ネットワークを介して接続する前記ユーザ端末からユーザ識別番号と共に送信されて来る演奏データを受信する受信ステップと、
前記割り当てステップで割り当てられたユーザポート番号毎の記憶領域を有し、これら記憶領域の内、前記受信ステップで受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信ステップにおいて当該ユーザ識別番号と共に受信した演奏データを書き込む書き込みステップと、
前記割り当てステップで割り当てられたユーザポート番号毎の記憶領域のそれぞれから読み出したユーザポート番号毎の演奏データを、前記受信ステップで受信したユーザ識別番号の前記ユーザ端末に送信する送信ステップとを実行させ、
前記ユーザ端末に搭載されるコンピュータに、
前記サーバの割り当てステップで割り当てられたユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信ステップと、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信ステップと、
前記演奏データ受信ステップで受信されたユーザポート番号毎の演奏データを再生する再生ステップと
を実行させることを特徴とするプログラム。
【０１０９】
［請求項１４］
ユーザ識別番号に対応付けたユーザポート番号を割り当てる割り当て手段と、前記割り当て手段により割り当てられたユーザポート番号毎の記憶領域を有する演奏データ記憶手段と、ネットワークを介して送信されて来るユーザ識別番号及び演奏データを受信する受信手段と、前記演奏データ記憶手段が有する記憶領域の内、前記受信手段が受信したユーザ識別番号に対応付けられたユーザポート番号の記憶領域に、前記受信手段が当該ユーザ識別番号と共に受信した演奏データを書き込む書き込み手段と、前記演奏データ記憶手段が有する各記憶領域からユーザポート番号毎の演奏データを読み出すとともに、当該読み出された演奏データを、前記受信手段が受信したユーザ識別番号に基づいて送信する送信手段と、を有するサーバにネットワークを介して複数接続され、夫々前記ユーザ識別番号が割り当てられたユーザ端末として用いられるコンピュータに、
前記ユーザ識別番号と共に、演奏操作に応じて発生する演奏データを前記サーバに送信する演奏データ送信ステップと、
前記サーバから送信されて来るユーザポート番号毎の演奏データを受信する演奏データ受信ステップと、
前記受信されたユーザポート番号毎の演奏データを再生する再生ステップと
を実行させることを特徴とするプログラム。
【符号の説明】
【０１１０】
１０  演奏通信装置
１００  サーバ
１０１  イベントバッファ
２００  クライアント
２０  ＣＰＵ
２１  ＲＯＭ
２２  ＲＡＭ
２３  操作部
２４  表示部
２５  通信制御部
２６  ＭＩＤＩインタフェース部
２７  音源
２８  サウンドシステム
３０  ＭＩＤＩ楽器
【図１】
2014048626.tif 000003
【図２】
2014048626.tif 000004
【図３】
2014048626.tif 000005
【図４】
2014048626.tif 000006
【図５】
2014048626.tif 000007
【図６】
2014048626.tif 000008
【図７】
2014048626.tif 000009
【図８】
2014048626.tif 000010
【図９】
2014048626.tif 000011
【図１０】
2014048626.tif 000012
【図１１】
2014048626.tif 000013