JP2007041174A - Concert embodying method, network concert system, and program - Google Patents
Concert embodying method, network concert system, and program Download PDFInfo
- Publication number
- JP2007041174A JP2007041174A JP2005223621A JP2005223621A JP2007041174A JP 2007041174 A JP2007041174 A JP 2007041174A JP 2005223621 A JP2005223621 A JP 2005223621A JP 2005223621 A JP2005223621 A JP 2005223621A JP 2007041174 A JP2007041174 A JP 2007041174A
- Authority
- JP
- Japan
- Prior art keywords
- data
- user
- ensemble
- value
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
Description
本発明は、ネットワークを利用して複数の演奏者による合奏を仮想的に可能とさせるための技術に関する。 The present invention relates to a technique for virtually enabling ensemble by a plurality of performers using a network.
2つ以上の楽器によって行われる合奏は、一人で演奏するときとは異なる楽しさや充実感を味わうことができ、多くの人に楽しまれている。その合奏では、それを行う全てのメンバー(演奏者)が同じ場所に集まることが望まれる。しかし、それは個々のメンバーの都合や、時間的、或いは地理的な事情によって困難なことも少なくないのが実情である。このようなことから、例えば特許文献1に記載されているように、合奏を行う音楽活動を支援できるものが創案されている。
Ensemble performed by two or more musical instruments can be enjoyed and enjoyed by many people because it allows you to enjoy the fun and fulfillment that is different from when you play alone. In the ensemble, it is desirable that all members (performers) who perform it gather in the same place. However, this is often difficult due to the circumstances of individual members, time and geographical circumstances. For this reason, as described in
特許文献1に記載された従来のネット合奏システムでは、ネットワークを介して、各メンバーが行った演奏内容を示す演奏情報をそれぞれ取得し、それらを対応付けて記録するようにしている。それにより、各メンバーがそれぞれ行った演奏を合奏の結果として確認できるようにしている。特許文献2には、音楽的な不具合の発生を回避できるように、ネットワークを介して演奏情報を送信する技術が記載されている。
In the conventional network ensemble system described in
その従来のネット合奏システムでは、演奏開始を知らせることにより、各メンバーにそれぞれ並行して演奏を行わせるようになっている。そのために、各メンバーは基本的にそれぞれ自身の考えに沿った演奏を行っていた。 In the conventional net ensemble system, each member performs in parallel by notifying the start of performance. To that end, each member basically performed according to their own ideas.
周知のように、合奏では全体的なまとまりを考慮する必要がある。そのまとまり感は、各メンバーがそれぞれ自身の考えに沿った演奏(独奏)を行っては得にくいのが実情である。合奏結果を確認することにより、各メンバーはまとまり感を考慮した演奏を行うことができる。しかし、そのためには、合奏結果の確認を随時、行わなければならないことから、演奏(合奏のための演奏)に割り当てられる時間はより短くなる。他のメンバーによる演奏内容を正確に把握するには何度も合奏結果を確認しなければならないのが普通であるから、他のメンバーによる演奏に合った演奏を行えるようになるには通常(同じ場所に集まっての合奏)よりも非常に時間がかかることになる。 As is well known, it is necessary to consider the overall unit in an ensemble. The sense of unity is difficult to obtain if each member performs a performance (single solo) according to his / her own thoughts. By confirming the ensemble results, each member can perform with a sense of unity. However, for that purpose, the confirmation of the ensemble result must be performed as needed, so that the time allocated to the performance (performance for the ensemble) becomes shorter. Since it is usually necessary to check the ensemble results many times in order to accurately grasp the performance of the performance by other members, it is normal (to be in the same place) to be able to perform according to the performance of other members. It will take much longer than an ensemble).
上記のようなことから、特許文献1に記載された従来のネット合奏システムでは、所望の合奏を実現できるように効率的な練習を行うことは困難となっていた。考え方や感性は演奏者によって異なるのが普通であり、まとまり感のある合奏を行えるようにするには、数多く合奏の練習をしなければならないのが実情である。このことから、合奏の効率的な練習を行えるようにすることも極めて重要なことであると考えられる。
本発明の課題は、ネットワークを利用して合奏の効率的な練習を行えるように支援するための技術を提供することにある。 An object of the present invention is to provide a technique for supporting so that efficient practice of ensemble can be performed using a network.
本発明の合奏実現方法は、ネットワークを利用して複数の演奏者による合奏を仮想的に可能とさせるための方法であって、合奏を所望する演奏者毎に、該合奏のために演奏者が行った演奏内容を示す演奏情報を送信すべき他の演奏者を送信対象者として予め設定し、設定により送信対象者が存在する演奏者が使用するそれぞれの端末装置に、該演奏者自身の演奏による演奏情報をネットワーク上に送信させ、設定により、送信対象者、及び自身を該送信対象者とする他の演奏者が共に存在する演奏者が使用するそれぞれの端末装置に、該他の演奏者の使用する端末装置から送信されて受信される演奏情報を更にネットワーク上に送信させ、送信対象者である各演奏者に、端末装置が受信する演奏情報による一人以上の演奏者の演奏と合わせた演奏をそれぞれ行わせて合奏を仮想的に実現させる。 The ensemble realization method of the present invention is a method for virtually enabling ensemble by a plurality of performers using a network, and for each performer who desires an ensemble, the performer performs the ensemble. Other performers who should transmit performance information indicating the performance details performed are set in advance as transmission subjects, and the performances of the performers themselves are set on the respective terminal devices used by the performers in which the transmission target exists. The performance information is transmitted to the network, and, depending on the setting, the other performers are used for each terminal device used by the performer who is the transmission target person and the other performers who are the transmission target person. The performance information transmitted and received from the terminal device used by the player is further transmitted on the network, and each performer who is the transmission target is combined with the performance of one or more performers by the performance information received by the terminal device. Kanade respectively to perform the virtually realizing the ensemble with.
本発明の第1の態様のネット合奏システムは、ネットワークを介して接続される端末装置のユーザーを対象に合奏を仮想的に実現させるシステムであって、ネットワークを介して、ユーザーが楽器に対して行なった演奏内容を示す演奏情報をリアルタイムに端末装置から受信する情報受信手段と、複数のユーザーが合奏を行う場合に、該複数のユーザー間で予め設定される演奏情報を送受信すべき関係に従って、情報受信手段が受信した演奏情報を、該演奏情報を送信させた端末装置のユーザーによって特定されるユーザーの使用する端末装置に必要に応じて送信する情報送信手段と、を具備する。 A network ensemble system according to a first aspect of the present invention is a system for virtually realizing a ensemble for a user of a terminal device connected via a network. Information receiving means for receiving performance information indicating the performance contents performed from the terminal device in real time, and when a plurality of users perform ensembles, according to the relationship in which performance information preset between the plurality of users should be transmitted and received, And information transmitting means for transmitting the performance information received by the information receiving means to the terminal device used by the user specified by the user of the terminal device that has transmitted the performance information as necessary.
本発明の第2の態様のネット合奏システムは、上記第1の態様における構成に加えて、合奏のための演奏をユーザーが行っている端末装置から情報受信手段が受信する演奏情報を保存する情報保存手段、を更に具備する。 The network ensemble system according to the second aspect of the present invention, in addition to the configuration of the first aspect, information for storing performance information received by the information receiving means from the terminal device that the user is performing for the ensemble. Storage means.
本発明のプログラムは、ネットワークを介して接続される端末装置のユーザーを対象に合奏を仮想的に実現させるネット合奏システムの構築に用いられるデータ処理装置に実行させることを前提とし、ネットワークを介して、ユーザーが楽器に対して行なった演奏内容を示す演奏情報をリアルタイムに端末装置から受信する機能と、複数のユーザーが合奏を行う場合に、該複数のユーザー間で予め設定される演奏情報を送受信すべき関係に従って、受信する機能により受信した演奏情報を、該演奏情報を送信させた端末装置のユーザーによって特定されるユーザーの使用する端末装置に必要に応じて送信する機能と、を実現させる。 The program of the present invention is based on the premise that the program is executed by a data processing apparatus used for construction of a network ensemble system that virtually realizes an ensemble for users of terminal devices connected via a network. , A function for receiving performance information indicating the performance performed by the user on the musical instrument from the terminal device in real time, and when a plurality of users perform ensembles, transmission and reception of performance information set in advance between the plurality of users According to the relationship to be performed, a function of transmitting performance information received by the receiving function to a terminal device used by the user specified by the user of the terminal device that has transmitted the performance information as necessary is realized.
本発明は、合奏を所望する演奏者毎に、その合奏のために演奏者が行った演奏内容を示す演奏情報を送信すべき他の演奏者を送信対象者として予め設定し、その送信対象者が存在する演奏者が使用するそれぞれの端末装置に、自身の演奏による演奏情報をネットワーク上に送信させ、送信対象者、及び自身を送信対象者とする他の演奏者が共に存在する演奏者が使用するそれぞれの端末装置に、その他の演奏者の使用する端末装置から送信されて受信される演奏情報を更にネットワーク上に送信させる。 In the present invention, for each performer who desires an ensemble, another performer who should transmit performance information indicating the performance performed by the performer for the ensemble is set in advance as a transmission target, and the transmission target A player who has both a performer and another performer who is the subject of transmission exist in the terminal device used by the performer who has the present Each terminal device to be used is further caused to transmit performance information transmitted and received from the terminal device used by other performers on the network.
そのような演奏情報の送受信を行うことにより、送信対象者である各演奏者には、ネットワークを介して、他の一人以上の演奏者の演奏によって得られる演奏情報が送られる。このため、送られる演奏情報によって再生可能な他の一人以上の演奏者の演奏と合わせた演奏を行える環境が提供される。その環境の提供により、送信対象者である演奏者は他の演奏者との合奏を実質的に行える形となる。その結果、よりまとまり感の得られる演奏、或いは全体としてより所望の音楽表現が実現される演奏がより容易となる。 By performing transmission / reception of such performance information, performance information obtained by the performance of one or more other performers is sent via the network to each performer who is a transmission target. For this reason, the environment which can perform the performance combined with the performance of one or more other players who can be reproduced by the performance information sent is provided. By providing the environment, a performer who is a transmission target can substantially perform an ensemble with other performers. As a result, a performance that provides a sense of unity, or a performance that realizes a desired musical expression as a whole becomes easier.
それは、合奏上、より望ましい演奏をより容易に行えるようになることを意味する。このことから、他の演奏者の演奏を聴かないで合奏の練習(演奏)を行う場合と比較して、より質の高い練習を行えるようになる。より多くの演奏者が合奏上、より質の高い演奏を行えるようになるから、合奏結果の確認もより容易、且つより短い時間で行えるようになる。それらは何れもより効率的な練習を行えるように作用する。 This means that a more desirable performance can be more easily performed on the ensemble. This makes it possible to practice with higher quality than when performing ensemble practice (performance) without listening to the performances of other performers. Since more performers can perform a higher quality performance on the ensemble, the confirmation of the ensemble result can be performed more easily and in a shorter time. They all work to make more efficient practice.
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態によるネット合奏システムを用いて構築されたネットワークシステムの構成を説明する図である。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
FIG. 1 is a diagram for explaining a configuration of a network system constructed using the net concert system according to the present embodiment.
そのネットワークシステムは、図1に示すように、ネットワーク1に対し、サーバー2、各視聴者がそれぞれ使用する端末装置である複数のパーソナルコンピュータ(PC)3、及び各演奏者がそれぞれ使用する端末装置である複数のPC4、が接続されて構築されている。
As shown in FIG. 1, the network system includes a
上記ネットワーク1は、例えばインターネット、及びPC3、或いは4をインターネットと接続する公衆網を含むものである。演奏者用のPC4にはそれぞれ、そのユーザーが演奏を行う電子楽器5が接続されている。そのPC4は、電子楽器5への演奏操作の内容を示す演奏情報をサーバー2に送信する。そのサーバー2は、PC4から送信された演奏情報を受信し、他のPC4、或いはPC3に必要に応じて自動的に送信するサービスを提供する。そのサービスにより、PC3のユーザーはPC4のユーザーによる演奏を視聴できるようになっている。本実施の形態によるネット合奏システムは、そのサーバー2上に実現されている。
The
図2は、上記サーバー2の構成を説明する図である。図2に示すように、サーバー2は、全体の制御を行うCPU21と、そのCPU21がワークに用いるRAM22と、電源投入時に実行される起動用のプログラム等を格納したROM23と、ネットワーク1を介した通信を行うためのネットワークインターフェース24と、例えばキーボードやポインティングデバイス(マウス等)、CD−ROMやDVD等の記録媒体にアクセスする媒体駆動装置、及びそれらのインターフェース等からなる入力装置25と、表示装置に画像を表示させる表示部26と、例えばハードディスク装置である補助記憶装置27と、それら各部21〜27を互いに接続するバス28と、を備えた構成となっている。
FIG. 2 is a diagram for explaining the configuration of the
電源が投入されると、CPU21はROM23に格納された起動用のプログラム読み出して実行することにより、その制御によって補助記憶装置27にアクセスする。そのアクセスにより、補助記憶装置27に格納されたOS(オペレーティングシステム)を読み出し、そのOSに制御を移す。それ以降は、OS上で動作するアプリケーション・プログラム(以降「アプリケーション」と略記)を実行する。上記サービスは、対応するアプリケーションを実行することで実現される。
When the power is turned on, the
図3は、上記PC4、及び電子楽器5の構成を説明する図である。
そのPC4は、図3に示すように、CPU41、RAM42、ROM43、ネットワークインターフェース44、入力装置45、表示部46、MIDIインターフェース(I/F)47、補助記憶装置48、及びバス49を備えた構成となっている。それにより、上記サーバー2と殆ど同じ構成となっている。サーバー2に存在しないMIDI I/F47は、電子楽器5とMIDIデータの送受信を行うためのものである。
FIG. 3 is a diagram illustrating the configuration of the
As shown in FIG. 3, the PC 4 includes a
その電子楽器5は、図3に示すように、PC4とMIDIデータの送受信を行うためのMIDI I/F51と、演奏操作の対象となるキーボード52と、放音すべき楽音の波形データを生成して放音する音源・サウンドシステム(以降「音源システム」と略記)53と、を備えた構成となっている。
As shown in FIG. 3, the electronic
電子楽器5のキーボード52は、例えばユーザーの鍵への操作を検出し、操作を検出した鍵、及びその操作内容を示す操作情報をMIDI I/F51に出力する。そのI/F51は、例えばその操作情報に対応するMIDIデータを生成して音源システム53、及びPC4のMIDI I/F47にそれぞれ出力する。そのI/F47から入力したMIDIデータも音源システム53に出力する。それにより、ユーザーのキーボード52に対する演奏操作に応じた楽音の放音、及びPC4から出力されたMIDIデータによる楽音の放音を行わせるようになっている。このことから、PC4とそれに接続された電子楽器5は、ネットワーク5を介し、ユーザーが電子楽器5に対して行った演奏内容を示す演奏情報を送受信できる演奏者用システムを構成している。本実施の形態では、その演奏情報としてMIDIデータを採用している。
The
他方のPC3は、PC4の構成と同じか、或いは音源システム53に相当するシステムを搭載しているものである。ここでは説明上、便宜的に、図3に示す構成において、MIDI I/F47の代わりに音源システム53を搭載していると想定する。その想定により、構成要素の符号としてPC4のそれを用いることにする。
The
PC3、4は、電源が投入されると、CPU41はROM43に格納された起動用のプログラム読み出して実行することにより、その制御によって補助記憶装置48にアクセスする。そのアクセスにより、補助記憶装置48に格納されたOS(オペレーティングシステム)を読み出し、そのOSに制御を移す。それ以降は、入力装置45を介したユーザーの指示に応じた制御を行う。OS上で動作するアプリケーション・プログラム(以降「アプリケーション」と略記)の起動/終了は、その制御によって実現される。
When the
図4は、仮想的な合奏の実現方法を説明する図である。その実現方法は、演奏者A〜Cの3人のメンバーによる合奏を仮想的に実現させる場合のものである。
本実施の形態では、図4に示すように、演奏者A〜Cの3人のメンバーによる仮想的な合奏は3段階でそれぞれ行う演奏によって実現させるようにしている。第1段階で演奏者Aが演奏を行って得られる演奏情報は、その次の第2段階の演奏を行う演奏者Bに送ることにより、その演奏を聴きながら演奏を行える環境(演奏者Aとの合奏を行える環境)を演奏者Bに提供する。最終の第3段階で演奏を行う演奏者Cには、演奏者Bから、自身の演奏による演奏情報と共に、演奏者Aの演奏による演奏情報を送ることにより、演奏者A、Bの演奏を聴きながら演奏を行える環境(演奏者A、Bとの合奏を行える環境)を演奏者Cに提供する。その第3段階で演奏者Cが演奏を行うことにより、全ての演奏者A〜Cによる合奏の最終結果が得られる。視聴者Dは、その結果として得られる、各演奏者A〜Cの演奏による演奏情報が送られる人であり、演奏者A〜Cの何れも視聴者Dとなることができる。
FIG. 4 is a diagram for explaining a method of realizing a virtual ensemble. The realization method is a case where an ensemble by three members of performers A to C is virtually realized.
In the present embodiment, as shown in FIG. 4, virtual ensembles by three members of performers A to C are realized by performances performed in three stages. The performance information obtained when the performer A performs in the first stage is sent to the performer B performing the next second stage performance so that the performance can be performed while listening to the performance (the performers A and A). To performer B). The performer C who performs in the final third stage listens to the performances of the performers A and B by sending performance information based on the performance of the performer A together with performance information based on the performance of the performer B. However, the player C is provided with an environment in which performance can be performed (environment in which the ensemble with the performers A and B can be performed). When the performer C performs in the third stage, the final result of the ensemble by all the performers A to C is obtained. The viewer D is a person to whom performance information obtained by the performance of each of the performers A to C is sent as a result, and any of the performers A to C can be the viewer D.
このようにして、本実施の形態では、各演奏段階で演奏を行う演奏者に対し、それよりも上流に位置する演奏段階で行われた演奏による演奏情報を提供することにより、第1段階(最上流の演奏段階)で演奏を行う演奏者A以外は、それよりも上流の演奏段階で行われた演奏を聴きながら、その演奏に合わせた演奏(合奏)を行えるようにさせている。このため、第1段階以外の演奏段階の演奏者にとっては、全体としてまとまり感のある(所望の音楽表現が実現されている)合奏結果が得られるような演奏、つまり合奏のためのより適切な演奏を容易に行うことができるようになる。それにより、合奏のための演奏はより効率的に練習できることとなる。 In this way, in the present embodiment, performance information on the performance performed in the performance stage located upstream from the performer in each performance stage is provided to the first stage ( Other than the performer A who performs at the most upstream performance stage), the performance (ensemble) according to the performance can be performed while listening to the performance performed at the upstream performance stage. For this reason, for a performer other than the first stage, a performance that gives a sense of unity (a desired musical expression is realized) as a whole, that is, a performance that is more appropriate for an ensemble. It becomes possible to perform easily. Thereby, the performance for the ensemble can be practiced more efficiently.
第1段階以外の演奏段階の演奏者が合奏上、より質の高い演奏を行えるようになると、合奏上、望ましくない演奏方法や演奏箇所はより少なくなる。このため、合奏結果の確認もより容易に行えるようになって、その確認に必要な時間はより短縮させることができる。このことからも、より効率的な練習を行えることとなる。 If a performer other than the first stage can perform a higher quality performance on the ensemble, there are fewer undesirable performance methods and performance points on the ensemble. For this reason, the confirmation of the ensemble result can be performed more easily, and the time required for the confirmation can be further shortened. This also means that you can practice more efficiently.
第1段階の演奏者Aは、その演奏を聴きながら他の演奏者が演奏を行うことから、他の演奏者が合わせるべき演奏を行う者、合奏曲のベースとなる演奏を行う者、或いは最も演奏の上手な者、とすることが望ましい。そのような者を演奏者Aとすることにより、より望ましい合奏結果がより容易に得られるようになる。 The performer A in the first stage is performed by other performers while listening to the performance. Therefore, the performer A performs a performance that other performers should perform, performs a performance as a base of the ensemble, or most. It is desirable to be a good performer. By making such a person a performer A, a more desirable ensemble result can be obtained more easily.
なお、本実施の形態では、各演奏段階の演奏者を一人のみとしているが、第1段階以外の演奏段階の演奏者は複数であっても良い。その場合、複数の演奏者全てに同じ種類の楽器、或いはパートを演奏させる必要はない。演奏段階数は、2つ以上であればあれば良く、合奏曲、演奏者数、及び演奏するパート数等を考慮して適宜、決定すれば良い。ネットワーク1上に送信される演奏情報はその送信元(演奏者)が明らかとなっているので、何れの演奏段階に複数の演奏者が存在していても、演奏者毎にその演奏情報をまとめることができる。
In this embodiment, only one performer is provided at each performance stage, but there may be a plurality of performers at performance stages other than the first stage. In that case, it is not necessary for all the plurality of players to play the same type of instrument or part. The number of performance stages may be two or more, and may be appropriately determined in consideration of the ensemble, the number of performers, the number of parts to be played, and the like. Since the performance information transmitted on the
演奏段階に分けて各演奏者に演奏を行わせる場合、各演奏者に演奏情報を送るべき相手、その演奏者から演奏情報を送るべき相手はその演奏者の演奏段階に応じて自動的に特定することができる。このことから本実施の形態では、図4に示すような実現方法を採用しているが、演奏者に演奏情報を送信すべき他の演奏者を演奏者毎に個別に設定するようにしても良い。演奏情報を送信する流れのパターン(例えば演奏位置と演奏情報が送受信される演奏位置の関係を示すもの)を幾つか用意し、そのパターン上で各演奏者の演奏位置を指定するようにしても良い。当然のことながら、別の方法を採用しても良い。 When each performer performs a performance divided into performance stages, the other party to whom performance information should be sent to each performer and the other party to whom performance information should be sent from that performer are automatically specified according to the performance stage of that performer. can do. For this reason, in the present embodiment, an implementation method as shown in FIG. 4 is adopted, but other performers who should transmit performance information to the performers may be individually set for each performer. good. Several flow patterns (for example, showing the relationship between the performance position and the performance position where performance information is transmitted and received) are prepared, and the performance position of each performer may be specified on the pattern. good. Of course, other methods may be employed.
図4に示すような合奏は、サーバー2、PC4(PC3)のCPU21、41がそれぞれ専用のアプリケーションを実行することで実現される。以降は、図5〜図16の説明図を参照して、サーバー2、PC4別に、合奏を実現させるための動作について詳細に説明する。
The ensemble as shown in FIG. 4 is realized by the
サーバー2は、PC4間に入って図4に示すような演奏情報の送受信を実現させるサービス(合奏サービス)を提供する。PC3のユーザー(視聴者D)に対しては、合奏結果として保存した演奏情報を提供するサービス(視聴サービス)を行う。それらのサービスを提供するために、図5に示すようなデータを管理している。図5(a)はサービスを提供するPC3、4のユーザーを管理するためのユーザーデータベース(DB)のデータ構成を示し、図5(b)はPC4間のデータの送受信用のリングバッファの構成を示している。
The
図5(a)に示すように、ユーザーDBには、ユーザー毎に、データiFD、cUserID、cStat、及びcUserModeが格納されている。データiFDは、ユーザー毎に異なる通信識別用番号であり、PC3、4は送信するデータにそれを付加するようになっている。データcUserIDはユーザーID、データcStatは対応するユーザーが接続(ログオン)状態か否かを管理するためのデータ、データcUserModeは対応するユーザーのモードを管理するためのデータである。そのユーザーモードとしては、ここでは演奏者A〜C、及び視聴者Dのみを考慮することとする。
As shown in FIG. 5A, the user DB stores data iFD, cUserID, cStat, and cUserMode for each user. The data iFD is a communication identification number that is different for each user, and the
上記リングバッファは、図5(b)に示すように、「buffer」を表記した部分(以降「データバッファ」と呼ぶ)、「iSize」を表記した部分(以降「サイズバッファ」と呼ぶ)、及び「iUDBid」を表記した部分(以降「ユーザーバッファ」と呼ぶ)の3つの部分から構成されている。データバッファにはPC4から受信したデータの本体(実体)が格納される。サイズバッファには、データバッファに格納されたデータのサイズが格納される。ユーザーバッファには、データバッファに格納されたデータを送信させたユーザーを示す識別情報(ここではデータiFD)が格納される。それにより、リングバッファは、データ本体、データサイズ、及びデータを送信させたユーザーのデータを格納したユーザーDB中のレコードを示すインデクス値をセットで参照できるようになっている。図5(a)において[]内に表記の「0」や「n」はそのインデクス値を表している。データのサイズ、及び識別情報は受信データ中から抽出される。
As shown in FIG. 5B, the ring buffer includes a portion indicating “buffer” (hereinafter referred to as “data buffer”), a portion indicating “iSize” (hereinafter referred to as “size buffer”), and It is composed of three parts, “iUDDBid” (hereinafter referred to as “user buffer”). The data buffer stores the main body (substance) of data received from the
上記ユーザーDBは、補助記憶装置27に保存されており、RAM22に読み出されて参照・更新される。上記リングバッファはRAM22に確保された領域である。
図7は、サーバー2が実行する全体処理のフローチャートである。その全体処理は、上記合奏サービス、及び視聴サービスを提供するためにサーバー2が実行する処理を抜粋してその流れを示したものである。それらサービス提供用のアプリケーションを補助記憶装置27からRAM22に読み出してCPU21が実行することで実現される。次に図7を参照して、その全体処理について詳細に説明する。
The user DB is stored in the
FIG. 7 is a flowchart of overall processing executed by the
先ず、ステップ101では、ユーザーDBの読み込みや、各種変数、及びリングバッファの初期化、クライアントであるPC3、4との送受信準備といった初期化を行う。その次に移行するステップ102では、並行して実行すべきスレッドを起動させる。そのスレッドの一つとして、図9にフローチャートを示す送信スレッドが存在する。その送信スレッドは、PC4間のデータの送受信を実現させるためのものである。
First, in step 101, initialization such as reading of a user DB, initialization of various variables and a ring buffer, and preparation for transmission / reception with
ステップ102に続くステップ103では、変数iContに1を代入する。その代入後はステップ104に移行して、変数iContの値は1か否か判定する。その値が1であった場合、判定はYESとなってステップ105に移行し、そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。このように変数iContは、アプリケーションの終了を管理するためのものであり、特に詳細な説明は省略するが、管理者の終了指示によって、他のアプリケーション、或いはOSが1以外の値を代入するようになっている。
In
ステップ105では、PC3、4(以降「クライアント」と総称する)からデータを受信するのを待つ。そのデータをネットワークインターフェース24が受信すると、判定がYESとなってステップ106に移行し、変数fdに0を代入する。その次に移行するステップ107では、変数fdの値が、受信データに含まれているデータiFDの値と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ109に移行する。そうでない場合には、判定はNOとなり、ステップ108で変数fdの値をインクリメントした後、再度、ステップ107の判定処理を行う。それにより、受信データに含まれているデータiFDの値の特定を行う。
In
ステップ109では、受信データがログオフを要求するものか否か判定する。そのログオフを要求するものであった場合、判定はYESとなってステップ110に移行し、ユーザーDBのログオフを要求したユーザーのレコードに格納されているデータcStatをログオフのものに更新するとともに、ログオン中のユーザーが使用するクライアントにログオフしたユーザーを通知するための情報をネットワークインターフェース24により送信させた後、上記ステップ105に戻る。そうでない場合には、判定はNOとなってステップ111に移行する。
In
ステップ111では、リングバッファを構成するデータバッファのなかで受信データを格納すべき場所を示す値(図中「リングバッファポインター」と表記)を変数bufに代入する。その受信データのデータバッファへの格納に対応して、サイズバッファ、及びユーザーバッファにそれぞれデータを格納すべき場所を示す値(図中、共に「リングバッファポインター」と表記)を変数iSizePtr、及びiUDBPtrに代入する(ステップ112、113)。その代入後はステップ114に移行して、データバッファ中の変数bufの値で指定される場所から受信データを格納し、サイズバッファ中の変数iSizePtrの値で指定される場所にそのサイズ(を示す値)を格納する。ステップ115にはその格納後に移行する。
In
ステップ115では、変数jに0を代入する。続くステップ116では、ユーザーDBの変数jの値をインデクス値として持つレコードに格納されているデータiFD(図中「udb[j].iFD」と表記。他のデータも同様の表記法を用いる)の値が上記変数fdの値と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ118に移行する。そうでない場合には、判定はNOとなり、ステップ117で変数jの値をインクリメントした後、再度ステップ116の判定処理を行う。それにより、受信データを送信させたユーザーに対応するレコードのインデクス値の特定を行う。
In
ステップ118では、ユーザーバッファ中の変数iUDBPtrの値で指定される場所に、受信データを送信させたユーザーに対応するレコードのインデクス値として変数jの値を格納する。次のステップ119では、データバッファ、サイズバッファ、及びユーザーバッファのそれぞれにおいて、次のデータを格納すべき場所を示す値(図中「リングバッファポインター」と表記)を更新する。それらの更新後はステップ120に移行する。
In step 118, the value of variable j is stored as the index value of the record corresponding to the user who sent the received data at the location specified by the value of variable iUDBPPtr in the user buffer. In the
クライアントのユーザーがサーバー2に対してログオフ以外の要求を行う場合にも、そのクライアントからその要求に応じたデータがサーバー2に送信される。ステップ120以降では、そのようなデータに対応するための処理が行われる。ここではその要求として、ログオン要求、モード変更要求、録音要求、及び再生要求のみを想定することとする。録音要求は、視聴者Dが視聴の対象とする合奏結果の録音(保存)を要求するためのものであり、再生要求はその合奏結果の再生を要求するためのものである。
When a client user makes a request other than logoff to the
先ず、ステップ120では、受信データがログオンを要求するものか否か判定する。そのログオンを要求するものであった場合、判定はYESとなってステップ121に移行し、認証処理を実行した後、上記ステップ105に戻る。そうでない場合には、判定はNOとなってステップ122に移行し、受信データがユーザーモードの変更を要求するものか否か判定する。そのモードの変更を要求するものであった場合、判定はYESとなり、ステップ123でその要求に対応するためのユーザーモード更新処理を実行した後、上記ステップ105に戻る。そうでない場合には、判定はNOとなってステップ124に移行する。
First, in
上記ステップ123のユーザーモード更新処理では、ユーザーDBのなかで変数jの値をインデクス値とするレコードに格納されているデータcUserModeを、受信データで指定されたモードを表すものに更新する。そのような更新を行うことにより、クライアントのユーザーは演奏者A〜C、視聴者Dのうちの何れかに任意に変更できるようになっている。ユーザーモードを変更したレコードは、ログオン中のユーザーが使用するクライアント全てに送信する。
In the user mode update process of
ステップ124では、受信データが録音、或いは再生を要求するものか否か判定する。その録音、或いは再生を要求するものであった場合、判定はYESとなってステップ125に移行し、要求された録音、或いは再生を開始するための処理を実行した後、上記ステップ105に戻る。そうでない場合には、判定はNOとなってそのステップ105に戻る。 In step 124, it is determined whether or not the received data is a request for recording or reproduction. If the recording or reproduction is requested, the determination is YES, the process proceeds to step 125, the requested recording or reproduction is started, and the process returns to step 105. Otherwise, the determination is no and the process returns to step 105.
図8は、上記ステップ121として実行される認証処理のフローチャートである。次に図8を参照して、その認証処理について詳細に説明する。
本実施の形態では、上述したように、サーバー2によるサービスを利用するには専用のアプリケーションをクライアントに実行させるようにしている。そのアプリケーションは、アプリケーション毎に異なるID(データcUserID)と共にCD−ROM等の記録媒体に記録して、ネットワークを利用した合奏を望む人を対象に配布している。そのアプリケーションは、ログオン要求時に自身に割り当てられたデータcUserIDを送信するようになっている。
FIG. 8 is a flowchart of the authentication process executed as
In the present embodiment, as described above, in order to use the service provided by the
ユーザーDBに格納されるデータiFDは、ログオンを要求したユーザーに、そのときの状況に応じて割り当てるようにしている。このため、受信データがログオン要求のためのものであった場合、その受信データにはデータiFDに対応するものが付加されていない。そのような受信データに対応するために、特には図示していないが、上記ステップ107では受信データにデータcUserIDが付加されていればYESと判定するようにしている。また、上記ステップ116、117で形成される処理ループでは、データが格納されていないレコードが見つかるまで、変数jの値をインデクス値とするレコードのデータiFDを順次、参照することにより、データiFDとして割り当て可能な値(例えば最小値)を特定し、その特定した値を変数fdに代入するようになっている。認証処理は、そのような値が変数fdに代入されている状況下で実行される。 The data iFD stored in the user DB is assigned to the user who requested the logon according to the situation at that time. For this reason, when the received data is for a logon request, no data corresponding to the data iFD is added to the received data. In order to cope with such received data, although not particularly shown, in step 107, if the data cUserID is added to the received data, the determination is YES. Further, in the processing loop formed in the above steps 116 and 117, the data iFD of the record having the value of the variable j as an index value is sequentially referred to until the record in which no data is stored is found, so that the data iFD is obtained. An assignable value (for example, the minimum value) is specified, and the specified value is substituted into the variable fd. The authentication process is executed under a situation where such a value is assigned to the variable fd.
先ず、ステップ201では、変数jに0を代入する。続くステップ202では、ユーザーDBの変数jの値をインデクス値とするレコードを参照し、そのレコードにデータが格納されていないか否か判定する。ユーザーDBは、データが格納されたレコードは連続するインデクス値の何れかで指定できるようにしている。つまり、ユーザー登録の抹消によりデータを消去したレコードが一つ発生すると、それよりも大きいインデクス値の各レコードのデータをそれまでより一つ小さいインデクス値のレコードにそれぞれコピーするようにしている。このことから、データが格納されている全てのレコードを参照した場合、次に変数jの値によって参照するレコードにはデータが格納されていないこととなる。その結果、判定はYESとなってステップ208に移行する。そうでない場合には、判定はNOとなってステップ203に移行する。そのYESの判定は、未登録のユーザーがログオン要求を行ったことを意味する。
First, in
ステップ203では、参照するレコードのデータcUserIDが受信データに存在するデータcUserIDと同じか否か判定する。それらが同じものであった場合、判定はYESとなってステップ205に移行する。そうでない場合には、判定はNOとなり、ステップ204で変数jの値をインクリメントした後、上記ステップ202に戻る。そのYESの判定は、登録済みのユーザーがログオン要求を行ったことを意味する。 In step 203, it is determined whether the data cUserID of the record to be referenced is the same as the data cUserID existing in the received data. If they are the same, the determination is yes and the process moves to step 205. Otherwise, the determination is no, the variable j is incremented in step 204, and the process returns to step 202. The determination of YES means that a registered user has made a logon request.
ステップ205では、ユーザーDBの変数jの値をインデクス値として持つレコードのデータiFD(図中「udb[j].iFD」と表記)として変数fdの値を格納する。続くステップ206では、そのレコードのデータcStatとして、ログオン状態であることを示す値の1を格納する。次に移行するステップ207では、そのレコードのデータcUserModeとして演奏者Aを表す値の1を格納し、ユーザーバッファ中の変数iUDBPtrのステップ119で更新する前の値で指定される場所に、受信データを送信させたユーザーに対応するレコードのインデクス値として変数jの値を格納する。その格納を行った後に、認証を行ったユーザーのクライアントにユーザーDBを送信する。そのユーザーのレコードは、ログオン中となっている他のユーザーのクライアント全てに送信する。そのような送信を行った後、一連の処理を終了する。
In
上記全体処理では、受信データを送信させたユーザーに対応するレコードのインデクス値として変数jの値をステップ118でユーザーバッファに格納するようになっている。しかし、受信データがログオン要求のためのものであった場合、受信データにはデータiFDが付加されていないことから、その変数jの値は正しいインデクス値となっていない。このことから、認証処理ではユーザーバッファに格納したインデクス値を正しいインデクス値に更新するようにしている。 In the overall process, the value of the variable j is stored in the user buffer in step 118 as the index value of the record corresponding to the user who sent the received data. However, if the received data is for a logon request, since the data iFD is not added to the received data, the value of the variable j is not a correct index value. For this reason, in the authentication process, the index value stored in the user buffer is updated to the correct index value.
上記ステップ202の判定がYESとなって移行するステップ208では、変数jに0を代入する。次のステップ209では、ユーザーDBの変数jの値をインデクス値とするレコードを参照し、それがデータの格納されていないレコード(未登録エリア)か否か判定する。参照したレコードにデータが格納されていない場合、判定はYESとなり、ステップ211でudb[j].iFDとして変数fdの値、udb[j].cUserIDとして受信データに付加されているデータcUserIDをそれぞれ格納した後、上記ステップ206に移行する。そうでない場合には、判定はNOとなり、ステップ210で変数jの値をインクリメントした後、再度、ステップ209の判定処理を行う。
In
図9は、上記送信スレッドの実行によって実現される処理のフローチャートである。その送信スレッドは、図7に示す全体処理内のステップ102で起動される。次に図9を参照して、その送信スレッドについて詳細に説明する。その送信スレッドは、上述したように、PC4間のデータの送受信を実現させるためのものである(図4)。
FIG. 9 is a flowchart of processing realized by execution of the transmission thread. The transmission thread is activated at
先ず、ステップ301では、送信スレッドの終了を管理するための変数iSendThreadに1を代入する。続くステップ302では、その変数iSendThreadの値が1か否か判定する。その値が1でなかった場合、判定はNOとなってステップ318に移行する。そうでない場合には、判定はYESとなってステップ303に移行する。特に詳細な説明は省略するが、変数iSendThreadへの1以外の値の代入は、例えばPC4からの合奏の停止要求、録音中であれば録音停止要求によって図7に示す全体処理を実現させるアプリケーションが行うようになっている。再度の1の代入は、合奏の開始要求によってそのアプリケーションが行う。
First, in
上述したように、クライアント間で送受信させるデータはリングバッファ(図5)に一時的に格納するようになっている。ステップ303では、そのリングバッファに送信の対象となるデータがないか否か判定する。そのようなデータがリングバッファに存在していない場合、判定はYESとなって上記ステップ302に戻る。そうでない場合には、判定はYESとなり、次のステップ304で変数iに0を代入した後、ステップ305に移行する。 As described above, data to be transmitted and received between clients is temporarily stored in the ring buffer (FIG. 5). In step 303, it is determined whether or not there is data to be transmitted in the ring buffer. If such data does not exist in the ring buffer, the determination is yes and the process returns to step 302 above. Otherwise, the determination is yes, and after substituting 0 for the variable i in the next step 304, the process proceeds to step 305.
ステップ305以降では、変数iの値を順次、インクリメントしながら、その値をインデクス値とするレコードにデータが格納されたユーザーに、リングバッファに格納されている送信すべき受信データを送信するための処理が行われる。
In
先ず、ステップ305では、変数iの値がユーザーDBに登録済みのユーザー数MAX_USER未満か否か判定する。変数iに初期値として代入する値は0であり、その値を順次、インクリメントして更新するようにしている。このため、受信データの送信を考慮すべきユーザーの全てに送信すべき受信データの送信を行った場合、変数iの値はユーザー数MAX_USER以上となる。その結果、判定はNOとなって上記ステップ303に戻る。そうでない場合には、判定はYESとなってステップ306に移行する。
First, in
ステップ306では、リングバッファに格納されている送信対象の受信データがユーザーモード変更要求のためのものか否か判定する。その要求のためのものであった場合、判定はYESとなり、ステップ307で受信データを、変数iの値をインデクス値とするレコードにデータが格納されているユーザー宛に送信し、更にステップ308で変数iの値をインクリメントした後、上記ステップ305に戻る。一方、そうでない場合には、判定はNOとなってステップ309に移行する。
In step 306, it is determined whether the received data to be transmitted stored in the ring buffer is for a user mode change request. If the request is for that request, the determination is YES, and in
上記ステップ307では、受信データと併せてリングバッファに格納されたインデクス値が変数iの値と一致している場合、その受信データの送信は行わない。それにより、データを受信したクライアントにそのデータを送信することを回避させている。
In
ステップ309では、送信対象の受信データが録音、或いは再生を指示するためのものか否か判定する。そのような指示のためのものであった場合、判定はYESとなって上記ステップ307に移行する。そうでない場合には、判定はNOとなってステップ310に移行する。
In
このようにして本実施の形態では、演奏情報(MIDIデータ)以外の受信データは他のユーザーに送信している。それにより、ログオンさせている他のユーザーのユーザーモード、他のユーザーが行っている要求を把握できるようにさせている。これは、合奏を行うためには他のユーザーの動きを把握する必要があるためである。録音の指示のための受信データを送信することにより、合奏を行う演奏者にとっては、録音の開始に合わせて合奏を開始させることができる。視聴者Dにとっては、そのような合奏の開始を知ることができる。 Thus, in this embodiment, received data other than performance information (MIDI data) is transmitted to other users. This makes it possible to grasp the user mode of other users who are logged on and the requests made by other users. This is because it is necessary to grasp the movements of other users in order to perform an ensemble. By transmitting the received data for recording instructions, a performer performing an ensemble can start the ensemble at the start of recording. Viewer D can know the start of such an ensemble.
ステップ310では、受信データと併せてリングバッファに格納されたインデクス値を変数iUDBfrに代入する。次のステップ311では、変数aに、ユーザーDBの変数iUDBfrの値をインデクス値とするレコードに格納されているデータcUserModeを代入する。その次のステップ312では、変数bに、ユーザーDBの変数iの値をインデクス値とするレコードに格納されているデータcUserModeを代入する。ステップ313にはその後に移行する。上記想定により、ステップ313への移行は送信対象とする受信データがMIDIデータであることを意味する。そのMIDIデータには、処理すべきタイミングを示す時間データが付加されている。
In step 310, the index value stored in the ring buffer together with the received data is substituted into the variable iUDFfr. In the
ステップ313では、変数aの値が示すユーザーモードは演奏者Aであり、且つ変数bの値が示すユーザーモードは演奏者Bであるか否か判定する。受信データが演奏者AをユーザーモードとするユーザーのPC4から送信されたMIDIデータ(を含む演奏情報)であり、且つその受信データの送信を考慮しているユーザーのユーザーモードが演奏者Bであった場合、判定はYESとなってステップ307に移行する。そうでない場合には、判定はNOとなってステップ314に移行する。
In step 313, it is determined whether or not the user mode indicated by the value of the variable a is the player A and the user mode indicated by the value of the variable b is the player B. The received data is MIDI data (including performance information) transmitted from the user's
ステップ314では、変数aの値が示すユーザーモードは演奏者Bであり、且つ変数bの値が示すユーザーモードは演奏者Cであるか否か判定する。受信データが演奏者BをユーザーモードとするユーザーのPC4から送信されたMIDIデータ(を含む演奏情報)であり、且つその受信データの送信を考慮しているユーザーのユーザーモードが演奏者Cであった場合、判定はYESとなってステップ307に移行する。そうでない場合には、判定はNOとなってステップ315に移行する。
In
ステップ315では、変数aの値が示すユーザーモードは演奏者Cであり、且つ変数bの値が示すユーザーモードは視聴者Dであるか否か判定する。受信データが演奏者CをユーザーモードとするユーザーのPC4から送信されたMIDIデータ(を含む演奏情報)であり、且つその受信データの送信を考慮しているユーザーのユーザーモードが視聴者Dであった場合、判定はYESとなってステップ316に移行する。そうでない場合には、判定はNOとなってステップ308に移行する。
In
このようにして、PC4からサーバー2に送信された演奏情報は、そのユーザーによって特定される、それを送信すべきユーザーに限定して送信する。それにより、図4に示すような演奏情報の流れが実現される。
In this way, the performance information transmitted from the
ステップ316では、録音を行っているか否か判定する。その録音を行っている場合、判定はYESとなり、ステップ317で受信データを録音用に確保したバッファに保存した後、上記ステップ307に移行する。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ307に移行する。
In
上記ステップ302の判定がNOとなって移行するステップ318でも同様に、録音を行っているか否か判定する。その録音を行っている場合、判定はYESとなり、録音用に確保したバッファに保存した受信データ(演奏情報)をステップ319でファイルとして保存した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
Similarly, in
図10は、再生スレッドの実行によって実現される処理のフローチャートである。その再生スレッドは、再生指示のためのデータを受信した場合に、図7に示す全体処理内のステップ125で起動される。次に図10を参照して、その再生スレッドについて詳細に説明する。その再生スレッドは、上述したようにファイルとして保存した演奏情報を随時、ログオン中の全てのユーザーのクライアントに送信することにより、そのクライアントに合奏結果を再生させて視聴させるためのものである。演奏情報の送信は、再生指示を行った後、再生開始を指示することで開始される。 FIG. 10 is a flowchart of processing realized by executing the playback thread. The playback thread is activated at step 125 in the overall process shown in FIG. 7 when data for playback instruction is received. Next, the playback thread will be described in detail with reference to FIG. The playback thread is for sending performance information stored as a file as described above to the clients of all logged-on users at any time so that the ensemble results can be played back and viewed. Transmission of performance information is started by instructing the start of reproduction after instructing reproduction.
その演奏情報は、MIDIデータに時間データを付加したものである。PC4は、その時間データとして、MIDIデータの発生時刻(を示す値)を付加している。その発生時刻は、MIDIデータがキーボード52への演奏操作によって生成されたものであればその演奏操作が行われた時刻であり、そのMIDIデータが受信したものであればそれを処理した時刻である。その時刻は、CPU21に搭載されたハードタイマから取得されるものである。これはPC4(PC3)でも同様である。
The performance information is obtained by adding time data to MIDI data. The
先ず、ステップ401では、再生スレッドの終了を管理するための変数iPlayThreadに1を代入する。続くステップ402では、その変数iPlayThreadの値が1か否か判定する。その値が1でなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップ403に移行する。特に詳細な説明は省略するが、変数iPlayThreadへの1以外の値の代入は、例えばクライアントからの再生の停止要求によってステップ125で行われる。
First, in
ステップ403では、変数iPlayStartの値が1か否か判定する。その値が1でなかった場合、判定はNOとなって上記ステップ402に戻る。そうでない場合には、判定はYESとなってステップ404に移行する。変数iPlayStartへの1の代入は、例えばクライアントからの再生開始要求によってステップ125で行われる。ステップ402、403で形成される処理ループを繰り返し実行することにより、その再生開始要求が行われるのを待つ。
In
ステップ404では、再生の対象とするファイルをオープンする。続くステップ405では、送信対象とする演奏情報を管理するための変数iCに0を代入し、変数iFirstDataに1を代入する。その後は、ステップ406で変数lTimeOffsetに現在時刻を示す値を代入してからステップ407に移行する。
In
録音によって得られたファイルは、例えば所定期間、保存するようにしている。そのため、再生の対象となるファイルが複数、存在している場合、その対象とするファイルを選択できるようになっている。ここでは、それらについての詳細な説明は省略する。 A file obtained by recording is stored for a predetermined period, for example. For this reason, when there are a plurality of files to be reproduced, the file to be reproduced can be selected. Here, detailed description thereof is omitted.
ステップ407では、変数iPlayStartの値が1か否か判定する。その値が1であった場合、変数iCの値で指定される演奏情報をステップ408でファイルから読み込んだ後、ステップ409に移行する。そうでない場合には、判定はNOとなって上記ステップ402に戻る。
In
ステップ409では、変数iCの値で指定される演奏情報がないか否か判定する。演奏情報の再生(送信)が終了した場合、変数iCの値で指定される演奏情報は存在しなくなることから、判定はYESとなって上記ステップ402に戻る。それにより、演奏情報の再生を先頭から再度、開始させる。一方、そうでない場合には、判定はNOとなってステップ410に移行する。 In step 409, it is determined whether there is performance information designated by the value of the variable iC. When the reproduction (transmission) of the performance information is completed, there is no performance information specified by the value of the variable iC, so the determination is YES and the process returns to step 402 above. Thereby, the reproduction of the performance information is started again from the beginning. On the other hand, if not, the determination is no and the process proceeds to step 410.
ステップ410では、ステップ408で読み込んだ演奏情報中の時間データを変数lMidiTimeに代入する。続くステップ411では、変数lTimeに、現在時刻を示す値を代入する。その次に移行するステップ412では、変数iFirstDataの値が1か否か判定する。その値が1であった場合、判定はYESとなり、変数lTimeOffsetの値から変数lMidiTimeの値を減算し、その減算結果に定数CONSTAを加算した値(=lTimeOffset−lNidiTime+CONSTA)をステップ413で変数lDivに代入し、更にステップ414で変数iFirstDataに0を代入した後、ステップ415に移行する。そうでない場合には、判定はNOとなり、次にそのステップ415に移行する。
In
MIDIデータには発生時刻を示す時間データが付加されている。このため、変数lTimeOffsetの値から変数lMidiTimeの値を減算して得られる値は、サーバー2上の現在時刻と最初のMIDIデータの発生時刻の時間差を示している。その値に加算する定数CONSTAは、ネットワーク1を介した通信に要する時間の変動を吸収するためのものである。
Time data indicating the time of occurrence is added to the MIDI data. For this reason, the value obtained by subtracting the value of the variable lMidiTime from the value of the variable lTimeOffset indicates the time difference between the current time on the
ステップ415では、変数lTimeの値から変数lDivの値を引いた値が、変数lMidiTimeの値より大きいか否か判定する。その大小関係が成立している場合、判定はYESとなり、ステップ417で変数jに0を代入した後、ステップ418に移行する。そうでない場合には、判定はNOとなって上記ステップ407に戻る。
In step 415, it is determined whether or not the value obtained by subtracting the value of the variable lDiv from the value of the variable lTime is greater than the value of the variable lMidiTime. If the magnitude relationship is established, the determination is YES, and after substituting 0 for the variable j in
変数lDivには上述したような値が代入されている。このため、上記大小関係は、ステップ408で読み込んだ演奏情報のMidiデータを処理すべきタイミングとなる前に成立することになる。それにより、本実施の形態では、通信に要する時間が変動しても、クライアントに送信したMIDIデータの処理が遅れるのを確実に回避できるように送信している。
The variable lDiv is assigned a value as described above. For this reason, the above magnitude relationship is established before the timing at which the midi data of the performance information read in
ステップ418では、変数jの値が上記ユーザー数MAX_USER未満か否か判定する。その値がユーザー数MAX_USER未満であった場合、判定はNOとなってステップ419に移行する。そうでない場合には、判定はYESとなり、ステップ416で変数iCの値をインクリメントした後、上記ステップ407に戻る。
In
ステップ419では、ユーザーDBの変数jの値をインデクス値とするレコードのデータcStatの値が1、つまりそのレコードにデータが格納されたユーザーがログオン中か否か判定する。そのユーザーがログオン中であった場合、判定はYESとなり、ステップ408で読み込んだ演奏情報をそのユーザーにステップ420で送信し、更にステップ421で変数jの値をインクリメントした後、上記ステップ418に戻る。そうでない場合には、判定はNOとなり、次にステップ421に移行する。
In
次にPC4の動作について詳細に説明する。
サーバー2は、ユーザーがログオンしたクライアントにユーザーDB(図5)を送信する。また、図6に示すように、サーバー2が随時、送信するデータは、ヘッダー、及びそれが付加されたデータ本体に分けて、RAM42、或いは補助記憶装置48に確保した領域であるバッファに格納している。ヘッダーには、データサイズ、データ本体の内容、データ本体の送信者情報、などが格納されている。
Next, the operation of the
The
上述したように本実施の形態では、サーバー2によるサービスを利用するには専用のアプリケーションをクライアントに実行させるようにしている。以降は、そのアプリケーションを実行することで実現されるPC4の動作について、図11〜図16のフローチャートを参照して詳細に説明する。そのアプリケーションは、入力装置45を構成する媒体駆動装置にそれが格納された記録媒体をセットしてインストールを指示することで補助記憶装置48に格納される。
As described above, in this embodiment, in order to use the service provided by the
図11は、PC4が実行する全体処理のフローチャートである。その全体処理は、上記アプリケーションを実行することで実現される。始めに図11を参照して、その全体処理について詳細に説明する。そのアプリケーションは、例えば補助記憶装置48からRAM42に読み出して実行される。
FIG. 11 is a flowchart of the entire process executed by the
先ず、ステップ501では、各種変数の初期化や図6に示すバッファの確保といった初期化を行う。次のステップ502では、ユーザーが入力装置45を操作して行う入力待ちを行う。その入力が行われることでステップ503に移行する。
First, in
ステップ503では、入力がサーバー2との接続要求のためのものか否か判定する。ユーザーが入力装置45に対して接続要求のための操作を行った場合、判定はYESとなり、ステップ504でサーバー2との接続を行うための接続処理を実行した後、上記ステップ502に戻る。そうでない場合には、つまり再生指示、録音指示、或いはユーザーモード変更指示といった別の目的のための操作をユーザーが行った場合には、判定はNOとなり、ステップ503でその操作に対応するためのその他の処理を実行した後、そのステップ502に戻る。
In step 503, it is determined whether or not the input is for a connection request with the
図12は、上記ステップ504として実行される接続処理のフローチャートである。次に図12を参照して、その接続処理について詳細に説明する。
先ず、ステップ601では、各種変数等の初期化を行う。続くステップ602では、サーバー2に接続するための送準備を行う。その準備により、サーバー2との接続を行ううえでの通信条件が確定され、ネットワークインターフェース44は確定された通信条件に応じて設定される。その準備後に移行するステップ603では、ネットワークインターフェース44を用いて、サーバー2に対する接続要求を行う。この接続要求により、アプリケーションに割り当てられたデータcUserIDが送信される。
FIG. 12 is a flowchart of the connection process executed as
First, in
ステップ603に続くステップ604では、サーバー2との接続が確立し、ログオンが承認されたか否か判定する。ログオンが承認された旨がサーバー2から通知された場合、判定はYESとなってステップ605に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
In step 604 following
ステップ605では、ログオンを承認したユーザーに対してサーバー2が送信するユーザーDBを受信するのを待って、それをRAM42、或いは補助記憶装置48に保存する。それ以降は、受信スレッド、送信スレッド、MIDIアウトスレッドを順次、起動させ(ステップ606〜608)、変数iOnConnectに1を代入する(ステップ609)。一連の処理はその代入を行った後に終了する。
In
上記変数iOnConnectはサーバー2との接続状態を特定するためのものであり、それに代入した1はサーバー2と接続されていることを示す値である。以降は、接続処理で起動させる各種スレッドについて詳細に説明する。
The variable iOnConnect is for specifying the connection state with the
図13は、受信スレッドの実行によって実現される処理のフローチャートである。各種スレッドの説明では、始めに図13を参照してその受信スレッドについて詳細に説明する。その受信スレッドは、サーバー2から受信するデータに対応するためのプログラムである。
FIG. 13 is a flowchart of processing realized by execution of the reception thread. In the description of various threads, first, the reception thread will be described in detail with reference to FIG. The reception thread is a program for handling data received from the
先ず、ステップ701では、変数flagに1を代入する。その変数flagは、受信スレッドの終了を管理するための変数であり、それに代入した1は、受信スレッドは実行を継続すべき状況にあることを示す値である。それに1を代入した後は、ステップ702に移行して、その値が1か否か判定する。その値が1であった場合、判定はYESとなり、ステップ703でサーバー2からデータを受信するのを待つ。一方、そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。変数flagへの1以外の値の代入は、例えばアプリケーションが実行を終了させる際に行われる。
First, in
サーバー2からデータを受信すると、ステップ703の判定がYESとなってステップ704に移行する。そのステップ704では、一時的なデータ保存用のバッファrecv_bufに受信データを保存する。次のステップ705では、変数jに0を代入する。その代入後に移行するステップ706では、ユーザーDBの変数jの値をインデクス値とするレコードのデータiFDの値が、バッファrecv_bufに保存した受信データ中の送信者情報(ここではデータiFD)の値(図中「recv_buf[SEND_USER_ID]」と表記)と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ708に移行する。そうでない場合には、判定はNOとなり、次にステップ707で変数jの値をインクリメントした後、再度ステップ706の判定処理を実行する。
When data is received from the
ステップ708では、変数iUDBidに変数jの値を代入する。続くステップ709では、受信データがMIDIデータ(演奏情報)か否か判定する。それがMIDIデータであった場合、判定はYESとなり、受信したMIDIデータに対応するためのMIDI処理をステップ710で実行した後、上記ステップ702に戻る。そうでない場合には、判定はNOとなってステップ711に移行する。
In step 708, the value of variable j is substituted into variable iUDDBid. In the
ステップ711では、受信データがユーザーモードの変更要求のためのものか否か判定する。それがその変更要求のためのものであった場合、判定はYESとなり、その変更要求を送信させたユーザーの変更後のユーザーモードを表示部46により通知するためのユーザーモード処理をステップ712で実行した後、上記ステップ702に戻る。そうでない場合には、判定はNOとなってステップ713に移行する。
In step 711, it is determined whether the received data is for a user mode change request. If it is for the change request, the determination is YES, and the user mode process for notifying the
ステップ713では、受信データがユーザーDBのレコードのデータか否か判定する。そのレコードのデータを受信した場合、判定はYESとなり、保存しているユーザーDBにそのレコードのデータを格納して更新するためのユーザーDB処理を実行した後、上記ステップ702に戻る。そうでない場合には、判定はNOとなってステップ715に移行する。
In
上述したようにサーバー2は、ユーザーDBの更新を行うと、その更新によって内容が変化したレコードのデータを各クライアントに送信する。そのため、各クライアントは、サーバー2で行われたユーザーDBに対する更新に連動させる形で自身が管理するユーザーDBを更新し、サーバー2が更新後のユーザーDBを実現させる。そのようにして、サーバー2、クライアントに同じユーザーDBを共有化させることから、そのレコードに格納するデータの設定により、クライアント間で送受信すべきデータの送受信を自動的に行わせることができる。それにより、例えば或る演奏者による音色の変更、音響効果の付加/解除、或いは付加する音響効果の変更、等の設定変更に対し、他のユーザーが使用する各クライアントに自動的に対応させることができるようになる。その結果、各クライアントのユーザーは、演奏者のより実際の演奏に近い演奏を自動的に聴くことができるから、高い利便性が得られる。
As described above, when the
上記設定変更は、再生する演奏情報に対して行うことができる。つまり、オリジナルの演奏の音色を変更させることや、種類、或いは内容がオリジナルとは異なる音響効果を付加させるといったことができる。そのような設定変更をクライアントのユーザーが行っても、各演奏者が演奏を行った際の設定内容を示すデータがユーザーDBに残っていれば、変更前の設定内容に自動的、或いはユーザーの指示により戻すことができる。 The setting change can be performed on the performance information to be reproduced. That is, it is possible to change the timbre of the original performance, or to add an acoustic effect whose type or content is different from the original. Even if the client user makes such a setting change, if the data indicating the setting contents when each performer has performed is left in the user DB, the setting contents before the change are automatically changed or the user's It can be returned by instruction.
ステップ715では、受信データが録音、或いは再生を指示するためのものか否か判定する。録音、或いは再生を指示するためのデータを受信した場合、判定はYESとなり、その指示内容を表示部46により通知するための録音・再生処理をステップ716で実行した後、上記ステップ702に戻る。そうでない場合には、判定はNOとなって次にそのステップ702に移行する。
In
図14は、上記ステップ710として実行されるMIDI処理のフローチャートである。次にそのMIDI処理について、図14に示すそのフローチャートを参照して詳細に説明する。
FIG. 14 is a flowchart of the MIDI process executed as
先ず、ステップ801では、変数iFirstMidiの値が1か否か判定する。その値が1だった場合、判定はYESとなってステップ802に移行し、そうでない場合には、判定はNOとなってステップ806に移行する。その変数iFirstMidiへの1の代入は、図12に示す接続処理内のステップ601で行われる。
First, in step 801, it is determined whether or not the value of the variable iFirstMidi is 1. If the value is 1, the determination is yes and the process proceeds to step 802, and if not, the determination is no and the process proceeds to step 806. Substitution of 1 to the variable iFirstMidi is performed in
ステップ802では、変数iFirstMidiに0を代入する。続くステップ803では、変数lStartTimeに現在時刻を示す値を代入する。それに続くステップ804では、変数ulMに、受信データに付加された時間データを代入する。その代入後はステップ805に移行する。その時間データは、MIDIデータの後に付加されて送信される。
In
ステップ805では、変数lTimeOffsetに、変数lStartTimeの値から変数ulMの値を減算した値(=lStartTime−ulM)を代入する。次のステップ806では、電子楽器5に出力すべきMIDIデータ用に確保したバッファ(MIDIアウトバッファ)の変数wPtrの値で指定される場所、及びその値をインクリメントした値で指定される場所(図中それらは「lMidiOutBuf[wPtr,wPtr+P1]」と表記)に、バッファrecv_bufに格納した受信データ中のMIDIデータ、時間データをそれぞれ格納する。その次のステップ807では、変数wPtrの値を更新、ここではそれまでの値に2を加算した値への更新を行う。その後、一連の処理を終了する。
In
その変数wPtrは、図12に示す接続処理内のステップ601で初期値(例えば0)が代入される変数である。変数lTimeOffsetに代入する、変数lStartTimeの値から変数ulMの値を減算した値(=lStartTime−ulM)は、現在時刻を基準にした場合に、最初の受信したMIDIデータに付加されている時間データが示す発生時刻の考慮すべきシフト量(時間差)を表している。
The variable wPtr is a variable to which an initial value (for example, 0) is substituted in
図15は、図12に示す接続処理内のステップ607で起動される送信スレッドの実行によって実現される処理のフローチャートである。次に図15を参照して、その送信スレッドについて詳細に説明する。 FIG. 15 is a flowchart of processing realized by the execution of the transmission thread activated in step 607 in the connection processing shown in FIG. Next, the transmission thread will be described in detail with reference to FIG.
サーバー2に送信する対象とすべきMIDIデータは時間データと共にその送信用に確保したバッファ(送信バッファ)に格納するようにしている。図15中に表記の「rPtrS」は、そのバッファからデータを読み出す場所を管理するための変数であり、図12に示す接続処理内のステップ601で初期値(例えば0)が代入される。また、表記の「iMidiSendThreadCont」は、送信スレッドの終了を管理するための変数である。
MIDI data to be transmitted to the
先ず、ステップ901では、変数iMidiSendThreadContに1を代入する。続くステップ902では、変数iMidiSendThreadContの値が1か否か判定する。その値が1でなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップ903に移行する。
First, in
その変数iMidiSendThreadContへの1以外の値の代入は、例えばユーザーがユーザーモードとして視聴者Dへの変更を要求した場合に、図11に示す全体処理内のステップ505で行われる。そのステップ505では、視聴者Dから演奏者A〜Cへのユーザーモードの変更が要求された場合に、初期化を行い送信スレッドを起動させるようになっている。
Substitution of a value other than 1 to the variable iMidiSendThreadCont is performed in
ステップ903では、送信バッファに送信すべきデータがないか否か判定する。送信すべきデータが存在していない場合、判定はYESとなって上記ステップ902に戻る。そうでない場合には、判定はNOとなってステップ904に移行する。
In
ステップ904では、変数wParamに、送信バッファの変数rPtrSの値で指定される場所に格納されているデータ(図中「ulMidiSendBuf[wPtrS]」と表記のMIDIデータ)を代入する。その次に移行するステップ905では、変数lParamに、送信バッファの変数rPtrSの値をインクリメントした値で指定される場所に格納されているデータ(図中「ulMidiSendBuf[wPtrS+1]」と表記の時間データ)を代入する。その後に実行するステップ906では、MIDIデータ送信用のヘッダーを生成しバッファsend_bufにセットする。以降は、変数wParam、lParamrにそれぞれ代入した値をバッファsend_bufにセットし(ステップ907)、バッファsend_bufにセットしたデータをサーバー2に送信させ(ステップ908)、変数rPtrSにそれまでの値に2を加算した値を新たに代入する(ステップ909)。ステップ910にはその代入後に移行する。
In
ステップ910では、変数rPtrSの値が送信バッファにデータを格納可能な最大数SIZE以上か否か判定する。その値が最大数SIZE以上であった場合、判定はYESとなり、ステップ911で変数rPtrSに0を代入した後、上記ステップ903に戻る。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ903に戻る。
In
図16は、図12に示す接続処理内のステップ608で起動されるMIDIアウトスレッドの実行によって実現される処理のフローチャートである。最後に図16を参照して、そのアウトスレッドについて詳細に説明する。そのアウトスレッドは、MIDIアウトバッファに格納されたMIDIデータの処理、処理したMIDIデータ、及び電子楽器5から入力したMIDIデータの送信バッファへの格納を実現させるためのものである。
FIG. 16 is a flowchart of processing realized by execution of the MIDI out thread started at
クライアント間で送受信すべき演奏情報の送受信はサーバー2の制御下で行われる。このことから、MIDIアウトスレッドは、受信したMIDIデータ、及び電子楽器5から入力したMIDIデータを共にサーバー2に送信する対象としている。MIDIデータに付加された時間データが示す発生時刻は、それを送信したPC4での過去のものであるから、そのMIDIデータを処理した時刻に変更している。それにより、受信したMIDIデータ、及び電子楽器5から入力したMIDIデータの時間データはそれらを送信するPC4を基準としたものとさせている。このため、送信したMIDIデータを受信するクライアントは、MIDIデータを区別することなく、全てのMIDIデータを適切に処理することができる。
Transmission / reception of performance information to be transmitted / received between clients is performed under the control of the
図16中に表記の「rPtr」は、送信バッファからデータを読み出す場所を管理するための変数であり、図12に示す接続処理内のステップ601で初期値(例えば0)が代入される。また、表記の「iMidiOutThreadCont」は、MIDIアウトスレッドの終了を管理するための変数である。
“RPtr” shown in FIG. 16 is a variable for managing a location to read data from the transmission buffer, and an initial value (for example, 0) is substituted in
先ず、ステップ1001では、変数iMidiOutThreadContに1を代入する。続くステップ1002では、変数iMidiOutThreadContの値が1か否か判定する。その値が1でなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップ1003に移行する。
First, in
その変数iMidiOutThreadContへの1以外の値の代入は、例えばユーザーがユーザーモードとして視聴者Dへの変更を要求した場合に、図11に示す全体処理内のステップ505で行われる。そのステップ505では、視聴者Dから演奏者A〜Cへのユーザーモードの変更が要求された場合に、初期化を行いMIDIアウトスレッドを起動させるようになっている。
Substitution of a value other than 1 to the variable iMidiOutThreadCont is performed in
ステップ1003では、変数lNowTimeに現在時刻を示す値を代入する。続くステップ1004では、定数lDelay、及びMIDIアウトバッファの変数rPtrの値をインクリメントした値で指定される場所に格納された時間データ(図中「lMidiOutBuf[rPtr+1]」と表記)の値をそれぞれ変数lTimeOffsetの値に加算し、その加算結果を変数lNowTimeの値から減算した値(=lNowTime−(lTimeOffset+lDelay+lMidiOutBuf[rPtr+1]))を変数aに代入する。その代入後はステップ1005に移行する。
In
上記定数lDelayは、ネットワーク1、及びサーバー2を介した送受信に係る通信時間の変動を吸収するために定めた定数である。変数lTimeOffsetの値は上記時間データ(iMidiOutBuf[rPtr+1])が示す発生時刻の考慮すべきシフト量(時間差)を表していることから、ステップ1004で変数aに代入する値は、その時間データが付加されたMIDIデータを処理すべきタイミングが到来することで0以上の値となる。その定数lDelayは各クライアントのユーザーが変更できるようにしても良い。
The constant lDelay is a constant determined to absorb a change in communication time related to transmission / reception via the
ステップ1005では、その変数aの値が0以上か否か判定する。その値が0未満であった場合、判定はNOとなってステップ1012に移行する。そうでない場合には、判定はYESとなってステップ1006に移行し、MIDIアウトバッファの変数rPtrの値で指定される場所に格納されたMIDIデータ(図中「lMidiOutBuf[rPtr]」と表記)が楽音の発音に係わるものか否か判定する。そのMIDIデータが楽音の発音に係わるものでない場合、判定はNOとなってステップ1012に移行する。そうでない場合には、判定はYESとなってステップ1007に移行する。
In
ステップ1007では、そのMIDIデータをMIDI I/F47により電子楽器5に出力させる。次のステップ1008では、ユーザーのユーザーモードを示す値を変数bに代入する。それに続くステップ1009では、変数bの値とステップ1007で処理したMIDIデータの送信者のユーザーモードを示す値(図中「USER_MODE_PLAYERMAX」と表記。そのMIDIデータのヘッダーに格納されているデータiFDを用いてユーザーDBを参照することにより特定される)の大小関係を比較して、その送信者がユーザーよりも上流で演奏する演奏者か否か判定する。その送信者がユーザーよりも上流で演奏する演奏者であった場合、判定はYESとなってステップ1010に移行する。そうでない場合には、判定はNOとなって上記ステップ1004に戻る。
In
ステップ1010では、変数bの値と視聴者Dのユーザーモードを示す値(図中「USER_MODE_AUDIENCE」と表記)の大小関係を比較して、ユーザーが視聴者Dでないか否か判定する。そのユーザーが視聴者Dでない場合、判定はYESとなり、ステップ1007で処理したMIDIデータ、及び時間データとして変数lNowTimeの値をステップ1011で送信バッファに格納した後、上記ステップ1004に戻る。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ1004に戻る。MIDIデータに時間データとして変数lNowTimeの値を付加することにより、そのMIDIデータの発生時刻はそのMIDIデータを送信するPC4で処理した時刻に更新される。
In step 1010, the magnitude relationship between the value of the variable b and the value indicating the user mode of the viewer D (indicated as “USER_MODE_AUDIOENCE” in the figure) is compared to determine whether or not the user is the viewer D. If the user is not the viewer D, the determination is YES, the MIDI data processed in
上記ステップ1005、或いは1006の判定がNOとなって移行するステップ1012では、電子楽器5からMIDIデータを入力したか否か判定する。そのMIDIデータを入力した場合、判定はYESとなってステップ1011に移行し、そのMIDIデータ、及び時間データとしての変数lNowTimeの値を送信バッファに格納する。一方、そうでない場合には、判定はNOとなって上記ステップ1002に戻る。
In
なお、本実施の形態では、演奏操作の内容を示すデータとしてMIDIデータを採用しているが、別のデータ、例えば楽音の波高値を示す波形データ、或いはその符号化データを採用しても良い。時間データも同様に、発生時刻を示すものではなくとも良い。例えば直前に送信した演奏情報との間の処理タイミングの差を示すものであっても良い。ネットワーク2の送信に要する通信時間に生じる変動分が無視できるような場合には、時間データは付加しなくとも良い。
In this embodiment, MIDI data is used as data indicating the contents of the performance operation. However, other data, for example, waveform data indicating the peak value of a musical sound, or encoded data thereof may be used. . Similarly, the time data may not indicate the time of occurrence. For example, it may indicate the difference in processing timing with the performance information transmitted immediately before. In the case where fluctuations occurring in the communication time required for transmission on the
また、合奏結果として録音する対象は、演奏者CをユーザーモードとするユーザーのPC4から送信されるMIDIデータ(演奏情報)としているが、その対象を任意に選択できるようにしても良い。PC4の複数のユーザーがその選択をそれぞれ行えるようにしても良い。送信される演奏情報には送信者を示す情報が付加されていることから、複数のユーザーのそれぞれの要望に沿った録音を並行して行うことは容易である。
The object to be recorded as the ensemble result is MIDI data (performance information) transmitted from the user's
上述したようなサーバー2(ネット合奏システム)を実現させるようなプログラム(アプリケーション)は、CD−ROM、DVD、或いは着脱自在なフラッシュメモリ等の記録媒体に記録させて配布しても良い。公衆網等のネットワークを介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してデータ処理装置にロードすることにより、その装置を用いて本発明を適用したネット合奏システムを構築することができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。 A program (application) for realizing the server 2 (net concert system) as described above may be distributed by being recorded on a recording medium such as a CD-ROM, a DVD, or a removable flash memory. Part or all of the program may be distributed via a network such as a public network. In such a case, the user can construct a net concert system to which the present invention is applied by using the apparatus by acquiring the program and loading it into the data processing apparatus. Therefore, the recording medium may be accessible by a device that distributes the program.
1 ネットワーク
2 サーバー
3、4 パーソナルコンピューター
5 電子楽器
21、41 CPU
22、42 RAM
23、43 ROM
24、44 ネットワークインターフェース
25、45 入力装置
27、48 補助記憶装置
28、49 バス
47、51 MIDI I/F
52 キーボード
53 音源・サウンドシステム
1
22, 42 RAM
23, 43 ROM
24, 44
52
Claims (4)
前記合奏を所望する演奏者毎に、該合奏のために演奏者が行った演奏内容を示す演奏情報を送信すべき他の演奏者を送信対象者として予め設定し、
前記設定により前記送信対象者が存在する演奏者が使用するそれぞれの端末装置に、該演奏者自身の演奏による演奏情報を前記ネットワーク上に送信させ、
前記設定により、前記送信対象者、及び自身を該送信対象者とする他の演奏者が共に存在する演奏者が使用するそれぞれの端末装置に、該他の演奏者の使用する端末装置から送信されて受信される演奏情報を更に前記ネットワーク上に送信させ、
前記送信対象者である各演奏者に、前記端末装置が受信する演奏情報による一人以上の演奏者の演奏と合わせた演奏をそれぞれ行わせて前記合奏を仮想的に実現させる、
ことを特徴とする合奏実現方法。 A method for virtually enabling an ensemble by multiple players using a network,
For each performer who desires the ensemble, other performers who should transmit performance information indicating the performance contents performed by the performer for the ensemble are set in advance as transmission subjects,
According to the setting, each terminal device used by a player who has the transmission target person transmits performance information by the player's own performance on the network,
According to the setting, the terminal device used by the other performer is transmitted to each terminal device used by the performer who has both the transmission subject and the other performer who is the transmission subject. Further transmitting performance information received on the network,
Causing each performer who is the transmission target to perform the performance together with the performance of one or more performers according to the performance information received by the terminal device to virtually realize the ensemble,
The ensemble realization method characterized by the above.
前記ネットワークを介して、前記ユーザーが楽器に対して行なった演奏内容を示す演奏情報をリアルタイムに前記端末装置から受信する情報受信手段と、
複数のユーザーが合奏を行う場合に、該複数のユーザー間で予め設定される演奏情報を送受信すべき関係に従って、前記情報受信手段が受信した演奏情報を、該演奏情報を送信させた端末装置のユーザーによって特定されるユーザーの使用する端末装置に必要に応じて送信する情報送信手段と、
を具備することを特徴とするネット合奏システム。 A system for virtually realizing ensemble for users of terminal devices connected via a network,
Information receiving means for receiving, in real time, performance information indicating performances performed on the musical instrument by the user from the terminal device via the network;
When a plurality of users perform an ensemble, the performance information received by the information receiving means is transmitted according to the relationship in which performance information set in advance between the plurality of users is to be transmitted and received. Information transmitting means for transmitting to the terminal device used by the user specified by the user, if necessary;
A network ensemble system comprising:
を更に具備することを特徴とする請求項2記載のネット合奏システム。 Information storage means for storing performance information received by the information receiving means from a terminal device in which a user is performing for the ensemble;
The net ensemble system according to claim 2, further comprising:
前記ネットワークを介して、前記ユーザーが楽器に対して行なった演奏内容を示す演奏情報をリアルタイムに前記端末装置から受信する機能と、
複数のユーザーが合奏を行う場合に、該複数のユーザー間で予め設定される演奏情報を送受信すべき関係に従って、前記受信する機能により受信した演奏情報を、該演奏情報を送信させた端末装置のユーザーによって特定されるユーザーの使用する端末装置に必要に応じて送信する機能と、
を実現させるためのプログラム。 A program to be executed by a data processing apparatus used for construction of a network ensemble system that virtually realizes an ensemble for users of terminal devices connected via a network,
A function for receiving, in real time, performance information indicating the performance performed by the user on the musical instrument from the terminal device via the network;
When a plurality of users perform an ensemble, the performance information received by the receiving function according to the relationship in which performance information set in advance between the plurality of users should be transmitted and received is transmitted from the terminal device that has transmitted the performance information. A function to send to the terminal device used by the user specified by the user, if necessary,
A program to realize
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005223621A JP2007041174A (en) | 2005-08-02 | 2005-08-02 | Concert embodying method, network concert system, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005223621A JP2007041174A (en) | 2005-08-02 | 2005-08-02 | Concert embodying method, network concert system, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007041174A true JP2007041174A (en) | 2007-02-15 |
Family
ID=37799228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005223621A Withdrawn JP2007041174A (en) | 2005-08-02 | 2005-08-02 | Concert embodying method, network concert system, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007041174A (en) |
-
2005
- 2005-08-02 JP JP2005223621A patent/JP2007041174A/en not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4382786B2 (en) | Audio mixdown device, audio mixdown program | |
JP2018519538A (en) | Karaoke processing method and system | |
US7554027B2 (en) | Method to playback multiple musical instrument digital interface (MIDI) and audio sound files | |
JP4755672B2 (en) | Content editing apparatus, method and program | |
JP5803056B2 (en) | Acoustic processing system and acoustic processing method | |
JP4265082B2 (en) | Server client system and server device | |
JP2011119847A (en) | Communication system and communication method | |
JP5380109B2 (en) | Karaoke service system, distribution server, terminal device | |
JP2009282254A (en) | Login user copy system among plural karaoke terminals | |
JP2007041174A (en) | Concert embodying method, network concert system, and program | |
JP4096734B2 (en) | Music activity support system and program | |
JP3864808B2 (en) | Terminal device and program thereof | |
JP2008171194A (en) | Communication system, communication method, server, and terminal | |
JP2014153516A (en) | Determination device | |
JP2021190895A (en) | Control method and control system | |
CN112905834A (en) | Song list management method, medium, device and computing equipment | |
JP4134691B2 (en) | Information duplication method, network system, and information processing apparatus | |
JP2009124543A (en) | Content transmission device, content transmission method, and computer program | |
JP4126246B2 (en) | Performance data communication system | |
JP4131678B2 (en) | Performance data communication system | |
JP5191336B2 (en) | Sound system with group performance practice support function | |
JP5645327B2 (en) | DISTRIBUTION DEVICE, DISTRIBUTION METHOD, DISTRIBUTION CONTROL COMPUTER PROGRAM, REPRODUCTION DEVICE, REPRODUCTION METHOD, REPRODUCTION CONTROL COMPUTER PROGRAM, AND DISTRIBUTION SYSTEM | |
CN117379787A (en) | Music control method and device in game, readable storage medium and electronic equipment | |
Voloskyi | Development of web audio app" Music equalizer" | |
JP7063533B2 (en) | Karaoke system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081007 |