Information
-
Patent Grant
-
6248945
-
Patent Number
6,248,945
-
Date Filed
Thursday, December 2, 199925 years ago
-
Date Issued
Tuesday, June 19, 200123 years ago
-
Inventors
-
Original Assignees
-
Examiners
- Nappi; Robert E.
- Fletcher; Marlon
Agents
- Frishauf, Holtz, Goodman, Langer & Chick, P.C.
-
CPC
-
US Classifications
Field of Search
-
International Classifications
-
Abstract
A transmitting end transmits to a receiving end event data of an MIDI type with first time data indicative of a timing of processing the event data at the receiving end, and waveform data and second time data indicative of a timing to process the waveform data at the receiving end. The receiving end receives and stores the event data and first time data in a music data buffer. When the receiving end receives the waveform data, it stores it in a waveform buffer. When the receiving end receives the second time data, it starts reproduction of the waveform data stored in the waveform buffer at a timing specified by the received second time data. The start time is incremented at predetermined timings. The event data stored in the music buffer is reproduced at a timing determined based on the start time and first time data stored in the music buffer. As a result, the receiving end is capable of processing a large amount of waveform data, etc., at an appropriate timing irrespective of its reception route.
Description
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates to a technique, which causes a receiving end to produce a musical sound, and to perform a melody based on transmission and reception of music information.
2. Background Art
At present, MIDI (Musical Instrument Digital Interface) have diffused and generation of musical sounds at receiving ends based on received music information has become widespread. To this end, musical sound generating apparatus such as an electronic musical instrument, a sound source, and a synthesizer generally include a music information transmitting-receiving apparatus (or one of a music information transmitting apparatus and a music information receiving apparatus).
The above mentioned musical information includes various kinds of musical information. Most of music information actually communicated between the transmitting and the receiving ends is data on an event such as “note on and off,” and its data quantity is comparatively small, for example, 2 or 3 bytes. A large quantity of data such as musical waveform data can be sometimes transmitted as musical information.
Transmission of data such as music information takes much time. The transmission time varies depending on generation of an error and the condition of the transmission path. Therefore, there is the problem that when waveform data is transmitted from the transmitting end to the receiving end and then reproduced immediately at the receiving end, the timing of reproducing the waveform (musical sound generating timing) undesirably changes depending on the required transmission time.
A discrepancy in performance or generation timing between melodies or musical sounds very often has such a great musical influence that an impression receiving from the performance of the melody will largely change. Therefore, in the past, waveform data was previously transmitted, and commands for processing the waveform data were transmitted as requested, which imposed substantially large restrictions on the utilization of the waveform data. Therefore, effective use of the waveform data has been strongly demanded.
Diffusion of MIDI has changed a style of playing a musical instrument, a music producing method, and a music style. There has been a long continuing demand for expanding a range of utilization of a musical sound generator and for improving facilities given to users.
DISCLOSURE OF THE INVENTION
An object of the present invention is to expand a range of using of waveform data to be transmitted and received while avoiding musical difficulties such as mentioned above, and also to expand a range of the method of using a musical sound generating apparatus through transmission-reception of music information.
According to one aspect of the present invention, there is provided a music information transmitting apparatus comprising:
event data acquiring means for acquiring event data indicating the contents of a performance effected by a user;
event data transmitting means for transmitting music information obtained by adding first time data indicating a timing which a receiving end should process to the event data obtained by the event data acquiring means;
waveform data acquiring means for acquiring acoustic waveform data;
waveform data transmitting means for transmitting to the receiving end the music information acquired by the waveform data acquiring means; and
time data transmitting means for transmitting as music information second time data specifying a timing at which the receiving end should process the waveform data transmitted by the waveform data transmitting means.
According to another aspect of the present invention, there is provided a music information receiving apparatus comprising:
receiving means for receiving music information;
a music data buffer, responsive to the receiving means receiving the event data and first time data as the music information, for storing the received event data and first time data;
a waveform buffer for storing the waveform data;
storage controlling means, responsive to the receiving means receiving the waveform data as the music information, for storing the received waveform data in the waveform buffer;
waveform processing means, responsive to the receiving means receiving the second time data as the music information, for processing the waveform data stored in the waveform buffer at a timing specified by the second time data;
a musical-sound generating time register for storing the received second time data as a musical-sound generating time;
incrementing means for incrementing the musical-sound generating time, stored in the musical-sound generating time register, at predetermined timings; and
event processing means for processing the event data stored in the music buffer at a timing determined on the basis of the musical sound generating time stored in the musical-sound generating time register and the first time data stored in the music data buffer.
According to this structure, the receiving end is capable of processing, for example, a large quantity of waveform data or the like at a appropriate timing irrespective of a transmission path.
According to still another aspect of the present invention, there is provided a music information editing apparatus comprising:
transmission requesting means for transmitting a transmission request to a plurality of external devices;
receiving means, responsive to the transmission request transmitted by the transmission requesting means, for receiving from the plurality of external devices music information which comprises event data representing the contents of an event in a performance and time data representing a timing for processing the event data added to the event data;
music information storing means for storing the music information received by the receiving means; and
music information editing means for rearranging the music information stored in the music information storing means in accordance with a processing sequence specified by the time data of the music information.
According to this structure, a user is able to freely combine various different music information strings, thereby enjoying a music in various ways.
According to a further aspect of the present invention, there is a music information transmitting apparatus comprising:
music information storing means for storing music information which comprises event data representing the contents of an event in a performance and first time data representing a timing for processing the event data added to the event data;
music information processing means for processing and reproducing an event of the music information stored in the music information storing means;
event data acquiring means for acquiring event data representing the contents of a performance effected by a user during the time when the music information stored in the music information storing means is processed by the music information processing means;
time data adding means for generating second time data representing a timing for processing the event data acquired by the event data acquiring means on the basis of the first time data of the music information stored in the music information storing means, and for adding the generated second time data to the event data acquired by the event data acquiring means;
first transmission means for transmitting as music information the event data and the second time data added to the event data by the time data adding means; and
second transmission means for transmitting the music information, stored in the music information storing means, at a timing based on the second time data added to the event data transmitted by the first transmission means.
According to this structure, a user is able to enjoy a session with another performer in a remote place.
According to a still further aspect of the present invention, there is provided a music information transmitting-receiving apparatus comprising:
receiving means for receiving music information transmitted by a plurality of external devices;
music information storing means having a plurality of storage regions corresponding to the plurality of external devices, respectively;
storage controlling means, responsive to reception of music information by the receiving means, for storing the received music information in a corresponding storage region of the music information storing means;
music information processing means for processing and reproducing an event of the music information stored in the music information storing means;
event data acquiring means for acquiring event data representing the contents of a performance effected by a user during the time when the music information stored in the music information storing means is processed by the music information processing means; and
transmission means for transmitting the event data acquired by the event data acquiring means to the plurality of external devices, respectively.
According to this structure, a user is able to enjoy a session with another performer in a remote place.
Moreover, according to the present invention, the above mentioned structures may be replaced with corresponding programs executed by a computer.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1
shows a circuit structure of a musical sound generating apparatus, which includes a music information transmitting-receiving apparatus as a first embodiment of the present invention.
FIG. 2
is a flowchart of a music information transmitting process.
FIG. 3
is a flowchart of a label
1
process.
FIG. 4
is a flowchart of a label
2
process.
FIG. 5
is a flowchart of a music information receiving process.
FIG. 6
is a flowchart of a label
3
process.
FIG. 7
is a flowchart of a label
4
process.
FIG. 8
is a flowchart of a label
8
process.
FIG. 9
is a flowchart of a label
5
process.
FIG. 10
is a flowchart of a label
9
process.
FIG. 11
is a flowchart of a label
6
process.
FIG. 12
is a flowchart of a label
7
process.
FIG. 13
illustrates a method of utilizing a musical sound generating apparatus, which includes a music information transmitting-receiving apparatus as a second embodiment of the present invention.
FIG. 14
is a flowchart of a music information transmitting process effected in the second embodiment.
FIG. 15
is a flowchart of a label
1
process in the second embodiment.
FIG. 16
is a flowchart of a music information receiving process in the second embodiment.
FIG. 17
is a flowchart of a label
2
process in the second embodiment.
FIG. 18
is a flowchart of a label
3
process in the second embodiment.
FIG. 19
is a flowchart of a label
4
process in the second embodiment.
FIG. 20
illustrates a method of utilizing a musical sound generating apparatus which includes a music information transmitting-receiving apparatus as a third embodiment of the present invention.
FIG. 21
is a flowchart of the music information transmitting-receiving process effected by a performing device in the third embodiment.
FIG. 22
is a flowchart of a label
1
process in the third embodiment.
FIG. 23
is a flowchart of a music information transmitting-receiving process effected by a database device in the third embodiment.
FIG. 24
is a flowchart of a label
2
process in the third embodiment.
FIG. 25
is a flowchart of a music information receiving process effected by a receiving device in the third embodiment.
FIG. 26
is a flowchart of a label
3
process in the third embodiment.
FIG. 27
illustrates a method of utilizing a musical sound generating apparatus which includes a music information transmitting-receiving apparatus as a fourth embodiment of the present invention.
FIG. 28
is a flowchart of a music information transmitting-receiving process in the fourth embodiment.
FIG. 29
is a flowchart of a label
1
process in the fourth embodiment.
FIG. 30
is a flowchart of a label
2
process in the fourth embodiment.
FIG. 31
is a flowchart of a label
3
process in the fourth embodiment.
FIG. 32
is a flowchart of a label
4
process in the fourth embodiment.
FIG. 33
is a flowchart of a label
5
process in the fourth embodiment.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Embodiments of the present invention will be described next in detail with reference to the accompanying drawings.
<First Embodiment>
FIG. 1
shows a circuit construction of a musical sound generating apparatus, which includes a music information transmitting-receiving apparatus as a first embodiment of the present invention.
As shown in
FIG. 1
, the musical sound generating apparatus
100
comprises a CPU
101
for controlling the entire apparatus
100
, a timer
102
for counting time, a ROM
103
which contains programs, performance data, and various control data, a RAM
104
to be used to record data on the operation of the CPU
101
, a cursor pointer
105
for indicating the position of a cursor displayed on a display screen of a liquid crystal display
106
, a receiver
107
for receiving music information transmitted by an external device through a predetermined transmission route, a transmitter
108
for transmitting music information to the external device through the transmission path, a D-to-A converter
109
for converting digital waveform data received from the CPU
101
to analog data, a speaker
110
for outputting a sound based on analog waveform signal outputted by the converter
109
, a microphone
111
for collecting ambient sounds and for outputting an analog sound signal, an A-to-D converter
112
for converting the analog sound signal outputted from the microphone
111
to digital waveform data, an MIDI OUT terminal
113
for outputting MIDI data received from the CPU
101
to a sound source
120
, an MIDI IN terminal
114
for receiving the MIDI data outputted from a keyboard device
130
, and a switch group
115
of various switches.
The above transmission route includes, for example, a LAN, WAN or public network. In the music generating apparatus
100
of the first embodiment, the music information transmitting-receiving apparatus transmits and receives MIDI data to and from the external devices through the MIDI IN terminal
114
and the MIDI OUT terminal
113
, and also transmits and receives music information to and from nodes (devices) connected with the network through the receiver
107
and the transmitter
108
.
For convenience's sake, assume that the receiver
107
and the transmitter
108
receive and transmit data from and to other devices through a LAN. According to this assumption, the transmitter
108
and the receiver
107
compose a single device, but those terms will be used as they are for the purpose of clarifying discrimination between transmission and reception of data. There are several methods of transmitting and receiving data through the LAN. For convenience's sake, assume herein that data is transmitted and received through a server (not shown).
The external devices connected to the MIDI OUT terminal
113
and the MIDI IN terminal
114
should not be limited to the sound source device
120
or the keyboard
130
, and may be connected freely to an automatic performer, electronic musical instruments or devices with a MIDI terminal such as a controller.
In operation, when an electric power source is turned on, the CPU
101
reads out and executes a program from the ROM
103
, thereby starting control of the entire apparatus
100
. At that time, for example, the timer
102
may be actuated to start a time counting operation. Then, the RAM
104
is used for a work area while the CPU
101
provides control on the basis of information obtained from respective input devices of the switch group
115
, MIDI IN terminal
114
(keyboard
130
), A-to-D converter
112
, and receiver
107
.
Although not detailed, the switch group
115
comprises switches (hereinafter referred to as type selecting switches) for specifying a type, tone quality and destination device for information to be displayed, for example, on the liquid crystal display device
106
, various switches (hereinafter referred to as general-purpose button group) including a plurality of buttons for specifying a destination device, tone quality, and melody to be displayed as a musical score on the liquid crystal display device
106
, and a detection circuit for detecting their respective operational states. The detection circuit scans those switches, for example, in accordance with an instruction from the CPU
101
, and sends a result of the scan as operation information to the CPU
101
.
The CPU
101
analyzes the operation information received from the switch group
115
and specifies a switch operated by a user and the contents of its operation. Thus, the CPU
101
recognizes the contents of the user's instruction, effects different settings in accordance with a result of the recognition, and controls the entire apparatus
100
in accordance with the settings. For example, if the user instructs the apparatus to display a musical score, the CPU
101
reads out its image data from the ROM
103
, and transfers it to VRAM (not shown) of the liquid crystal display device
106
, thereby displaying the musical score specified by the user on the liquid crystal display device
106
. On the other hand, if the user depresses an appropriate button of the general-purpose button group after selecting a destination device with the type selecting switch, the CPU
101
sets a destination device in accordance with the depression of the appropriate button. In general, rewriting the values of variables prepared for the respective types effects the various settings.
The keyboard device
130
outputs the contents of the user's manipulation on the keyboard and various switches in the form of MIDI data. If the CPU
101
receives MIDI data through the MIDI IN terminal
114
, the CPU
101
delivers it to the MIDI OUT terminal
113
, thereby causing the sound source
120
to generate or mute a musical sound. If a destination device to which the music information is transmitted is specified, the CPU
101
adds an identifier representing transmission of the MIDI data and time data representing a timing of processing the identifier to the MIDI data received through the MIDI IN terminal
114
, and causes the transmitter
108
to transmit the resulting data as music information. The time data is a value of a variable (present time register) updated, for example, in accordance with a value of the timer
102
.
When a microphone
111
is connected to a terminal in a jack (not shown), the A-to-D converter
112
samples a voice signal outputted from the microphone
111
and outputs digital waveform data.
The CPU
101
delivers the waveform data received from the A-to-D converter
112
to the D-to-A converter
109
. Thus, the speaker
110
audibly outputs sounds collected by the microphone
111
on a real time basis. If a destination device is specified, two regions for storing the waveform data are secured in the RAM
104
. The waveform data are stored alternatively in the two regions (PCM recording) and the waveform data stored in one of the regions are sequentially transmitted as music information from the transmitter
108
. The identifier representing transmission of the waveform data is added to the waveform data upon its transmission.
As mentioned above, according to the present embodiment the waveform data is divided and transmitted in units of a capacity of each of the two secured regions, in order that the waveform data can be intermittently transmitted so that other music information (for example, MIDI data) can be transmitted between periods of waveform data transmission, in other words, in order that even if any transmission path may be used, different types of music information can be transmitted in parallel.
The two regions secured for storing (and transmitting) the waveform data are hereinafter referred to as waveform buffers A and B for convenience's sake. When the two regions are not required to be clearly discriminated from each other, they are each hereinafter referred to as waveform buffer simply. In the present embodiment, the capacity of each of the waveform buffers is 256 bytes.
Each time waveform data is transmitted in units of a capacity of the waveform buffers, a command to reproduce the waveform data (hereinafter referred to as a reproduction command) is transmitted. If the receiving end can not receive the waveform data normally, noise may be reproduced undesirably as a result. Under the circumstances, the transmitter
108
transmits to the receiving end the command along with additional data by which the receiving end can determine whether the data quantity transmitted so far has been received normally or not, and further along with time data representing a timing of starting reproduction of the waveform data. Those data compose music information. The time data is a value of a variable (in the recording time register) updated, for example, on the basis of the value of the timer
102
.
By specifying the timing data for reproducing the waveform data added to the reproduction command for the destination device, as described above, the receiving end can absorb possible fluctuations of the transmission times for the respective waveforms. Thus, even when a transmission path is used in which the required transmission time fluctuates, the receiving end can reproduce the waveform data at an appropriate timing. Therefore, the occurrence of musical difficulties due to the transmission path, situation and the like is avoided and the waveform data can be used appropriately for a performance. Therefore, a range of utilization of the waveform data expands.
Receiving the waveform data, the receiving end can produce various sounds without any limitation. Thus, the latitude of musical expression expands, thereby contributing to creation of a new style of music.
Now, the data structure of the music information transmitted as mentioned above will be described. For convenience's sake, assume that there are five kinds of music information; that is, MIDI data, waveform data, reproduction command, image (bit map) data of a musical score, and point data indicating a performance position on the musical score.
The MIDI data contains no exclusive message, for example, in this case. This MIDI data has a variable length of 1 to 3 bytes. However, for the sake of simplifying the processing, the MIDI data is assumed as having a fixed length of 4 bytes in the present embodiment. The time data to be added to the MIDI data is assumed having 4 bytes representing a time, for example, with a unit of a millisecond. Therefore, when MIDI data is transmitted as the music information, the data quantity is of 8 bytes in total.
If data excluding the MIDI data is transmitted as the music information, two byte data are allocated for storing an identifier (corresponding to a command given to the destination device) representing the kind of the music information, instead of the MIDI data and time data. If the contents of the identifier are expressed in the form of (a first byte, a second byte), (0,0) represents the waveform data; (1,0) the reproduction command; (2,0) the image data; and (3,0) the point data. The data structure of the music information with those identifiers is as follows.
First, in the waveform data to which the identifier (0,0) is allocated, the identifier is accompanied by the total number of bytes of the waveform data, a serial number of the waveform data, and the waveform data in this order. The units of the data (for example, representing the number of bytes of the identifier and waveform data) composing music information are each referred to as a word herein.
In the reproduction command to which the identifier (1,0) is allocated, the identifier itself represents the reproduction command. The identifier acting also as the command is accompanied by the total number of bytes of the waveform data, and a reproduction timing. The second word is used for a receiver to determine whether the second data as well as the waveform data has been normally received.
In the image data to which the identifier (2,0) is allocated, the image data is annexed to the identifier, and no time data is annexed. This is because a musical score is assumed to be transmitted as the image data and the musical score is required to be transmitted before start of the performance.
In the point data to which the identifier (3,0) is allocated, the identifier is accompanied by x-coordinate data for specifying a position on the x coordinate axis, and y-coordinate data for specifying a position on the y coordinate axis. No time data is annexed either. This is because the precision of a time required for switching display of the image data is low compared to generation of a musical sound.
The CPU
101
causes the transmitter
108
to transmit the music information in the form mentioned above. Such music information is received by the receiver
107
when the musical sound generating device
100
is specified as a destination device for the musical information by another node.
Actually, the music information is transmitted along with a header which contains control data related to transmission such as a transmission source and a destination device. The music information transmitted is held in the server. The destination device for the music information inquires of the server whether there is received data for the receiver or not. As a result, if it is ascertained that there is new received data, the receiver obtains the data from the server by down-loading. As mentioned above, the music information is communicated through the server.
When the receiver
107
receives the music information, the receiver
107
notifies the CPU
101
of the fact and then transmits the received music information to the CPU
101
.
Receiving the music information from the receiver
107
, the CPU
101
determines the kind of the music information from a value of the two-byte data positioned at its head. Then, the CPU
101
processes the music information on the basis of the results of the determination.
Moreover, in the case of MIDI data, the value of its first-byte data is equal to, or above, F0H (H is represented by a hexadecimal notation), and the identifier is data of two bytes. As apparent from this, the kind of the music information can be determined from the value of the head two-byte data.
When the music information is ascertained as MIDI data, the CPU
101
transmits the MIDI data to the sound source device
120
through the MIDI OUT terminal at a timing specified by the time data attached to the MIDI data.
As in transmission of the waveform data, two regions for storing the received waveform data are secured in the RAM
104
. When the music information is ascertained as waveform data, the CPU
101
stores the waveform data alternately in the two regions each time the waveform data is received. On the other hand, the CPU
101
calculates the total number of bytes of the waveform data so far received, and substitutes the result of the calculation into a variable HSSR. The two regions are hereinafter referred to as reception waveform buffers A and B, respectively. If one of them is not required to be discriminated from the other, it is merely referred to as the reception waveform buffer. In the present embodiment, the capacity of the reception waveform buffer is set at 256 bytes equal to that of the transmission waveform buffer.
When the music information is ascertained as a reproduction command, the CPU
101
determines whether the value of a second word from the head of the music information coincides with the value of the variable HSSR or not. If the waveform data transmitted so far is normally received, those values coincide. In this case, the reproduction of the waveform data stored in the reception waveform buffer starts when a timing specified by the time data of the music information has come. If both the values do not coincide, the CPU
101
stops reproduction of the waveform data as an error being involved in the reception of the waveform data to thereby avoid reproduction of a sound which may impair the performance. The CPU
101
in such a manner that the CPU
101
reads out one-sample waveform data sequentially from the received waveform buffer at sampling periods and transmits them sequentially to the D-to-A converter
109
effects the reproduction of the waveform data.
If the music information is ascertained as image data, the CPU
101
stores the image data followed by the identifier representing that fact in VRAM (not shown) provided in the liquid crystal display device
106
. The CPU
101
sets in the cursor pointer an initial value representing that the image data should be displayed from its head and hence displays the head of the musical score transmitted as the image data on the picture of the liquid crystal display device
106
.
Although not detailed especially, a plurality of such image data are stored in the ROM
103
, and one of the image data is selected by the user with the switch group
115
. Thus, the CPU
101
transmits the image data selected by the user as the music information.
The cursor pointer
105
specifies a display position of the cursor (not shown) in the xy coordinate system. A register which stores a value representing a position on the x coordinate axis is hereinafter referred to as a cursor x register, and a register which stores a value representing a position on the y coordinate axis is hereinafter referred to as a cursor y register. The CPU
101
updates those values in accordance with the progress of the performance, for example, on the basis of the contents of a musical score (play data) displayed on the display device
106
, the time counted by the timer
102
, and a set tempo value. Thus, the CPU
101
moves the position of the cursor on the musical score in accordance with the progress of the performance, and updates the displayed contents of the musical score (e.g. by scrolling). Of course, the registers each may be a variable.
Receiving image data and then point data as the music information, the CPU
101
stores the second and third data of the music information in the cursor x and y registers, respectively, each time music information determined as point data is received. Thus, the CPU
101
moves the position of the cursor displayed on the picture of the liquid crystal display device
106
to a position specified by the received point data.
Referring now to
FIGS. 2
to
12
, the operation of the CPU
101
involving the control as mentioned above will be described next in more detail. Since the present invention relates to the transmission-reception of music information, the transmission and reception of the music information will be described mainly here for the sake of easy understanding.
FIG. 2
is a flow chart of a music information transmitting process, which includes an extraction of a flow of processing the music information in its transmission. For convenience's sake, it is assumed to transmit the waveform data, image data (musical score), and point data as the music information. Initially, the operation of the CPU
101
involving the transmission of the music information will be described in detail with reference to
FIGS. 2
to
4
.
The music information transmitting process shown in
FIG. 2
, (including subroutine processes as shown in
FIGS. 3 and 4
) is realized when the user has specified a destination device by manipulating the switch group
115
and hence the CPU
101
executes a related program stored in the ROM
103
.
First, in step
201
, the CPU
101
also substitutes zeros into variables FX and FY. In step
201
, the CPU
101
also substitutes zeros into the variables x and y, and then shifts its control to step
203
.
The variables FX and FY are used for the CPU
101
to manage the display position of the cursor. The variables x and y are used to update the variables FX and FY.
In step
203
, the CPU
101
transmits a constant (2,0) of two bytes where 2 is a value of a first byte, and 0 is a value of a second byte. This applies similarly hereinafter. The constant (2,0) is an identifier representing transmission of the image data (bit map data of the musical score in this embodiment) as the music information.
In step
204
following step
203
, the CPU
101
reads out the image data selected by the user with the switch group
115
from the ROM
103
, delivers it to the transmitter
108
, and causes the transmitter
108
to transmit it. In the next step
205
, the CPU
101
determines whether the transmission of the image data has been completed or not. If the transmission is not completed, the determination becomes NO, and the CPU
101
returns its control to step
204
, where the CPU
101
causes the transmitter
108
to continue the transmission. If the transmission has been completed, the determination becomes YES, and the CPU
101
shifts its control to step
206
.
As described above, in steps
201
to
205
, the CPU
101
effects the initial setting of the display position of the cursor and the transmission of the image data. In the present embodiment, in step
204
the CPU
101
transfers the required image data to the VRAM of the liquid crystal display device
106
, thereby displaying the musical score on its display screen because it is supposed that transmitter
108
transmits as the musical information the contents of the user's performance effected by seeing the musical score.
In step
206
, the CPU
101
substitutes zero into a variable SC for counting the number of transmissions of divided waveform data. In the next step
207
, the CPU
101
substitutes zero into a variable BC for holding the total number of bytes of the waveform data transmitted. Then, the CPU
101
shifts its control to step
208
, where the CPU
101
substitutes a value A or B representing the transmit waveform buffer A or B into a variable RHBF which manages the area which stores the waveform data. Then, the CPU
101
shifts its control to step
209
.
In step
209
, voice data is input to the A-to-D converter
112
, which outputs corresponding waveform data. In the following step
210
, the CPU
101
stores the waveform data in the transmit waveform buffer designated by the variable RHBF. Then, the CPU
101
shifts its control to step
211
. The A-to-D converter
112
converts an analog sound signal outputted from the microphone
111
to a digital signal and outputs it. Therefore, the waveform data is hereinafter referred to as sound data.
In step
211
, the CPU
101
effects a label
1
process for transmitting the music information in accordance with a change in the conditions. Then in step
212
, the CPU
101
determines whether completion of the transmission of the music information is specified or not. When the user specified the completion of the transmission of the music information by operating a predetermined switch of the switch group
115
, the determination becomes YES, and the CPU
101
thereby terminates the process. If otherwise in step
212
, the determination becomes NO and the CPU
101
returns its control to step
211
. Thus, the CPU
101
iterates the label
1
process in step
211
until the user specifies the completion of the transmission.
The above mentioned steps
201
to
210
are effected as an initial setting process for starting the transmission of the music information and a process subsequent to the initial setting process. Changes in the conditions such as reception of MIDI data and loss of an empty area of the transmit waveform buffer which stores sound data are coped with by effecting the label
1
process in step
211
.
FIG. 3
is a flowchart of the label
1
process in step
211
. Referring to
FIG. 3
, the subroutine process to be executed in the process for transmitting the music information will be described hereinafter.
As mentioned above, a unit of time data representing a timing is millisecond. The timer
102
counts time in units of a time smaller than a millisecond. Therefore, according to the present embodiment, a variable for holding the present time is prepared, and a value of the variable is updated in accordance with a lapse of time counted by the timer
102
. The variable is hereinafter referred as a present time register.
First, in step
301
the CPU
101
determines whether or not one millisecond has lapsed since update of the value of the register in order to update the value of the present time register each time one millisecond elapses. When the present value of the timer
102
is larger by a value corresponding to at least one millisecond than the last updated value of the present time register, the determination becomes YES. Then, the CPU
101
shifts its control to step
302
to increment the value of the register and then to step
303
. If otherwise in step
301
, the determination becomes NO and the CPU
101
shifts its control to step
303
.
In step
303
the CPU
101
determines whether the MIDI IN terminal
114
has received the MIDI data or not. If the user has operated the keyboard
130
, the keyboard
130
outputs MIDI data. Therefore, the determination becomes YES, and the CPU
101
shifts its control to step
304
. If the user does not operate the keyboard
130
, the determination becomes NO, and the CPU
101
shifts its control to step
306
.
In step
304
, the CPU
101
delivers the MIDI data received by the MIDI IN terminal
114
to the transmitter
108
to cause the transmitter
108
to transmit it. Then in step
305
, the CPU
101
delivers the value of the present time register to the transmitter
108
to cause the transmitter
108
to transmit it as the time data. Then, the CPU
101
shifts its control to step
306
. Actually, the MIDI data and the time data are transmitted from the transmitter
108
as one packet.
In step
306
, the CPU
101
reads out the values of the cursor X and Y registers of the cursor pointer
102
and substitutes them into the variables X and Y, respectively. Then in step
307
, the CPU
101
determines whether or not the value of the variable FX is equal to the value of the variable X and also whether or not the value of the variable FY is equal to the value of the variable Y. When the display position of the cursor indicated by the cursor pointer
102
changes from its preceding position, the value of the variable FX is different from the value of the variable X or the value of the variable FY is different from the value of the variable Y. Therefore, the determination becomes NO and the CPU
101
shifts its control to step
308
. If otherwise in step
307
, the CPU
101
shifts its control to step
311
.
A change in the display position of the cursor means the necessity of changing the display position of the cursor at the receiving end. Thus, in steps
308
to
310
, the CPU
101
effects a process for transmitting the point data as the music information.
First, in step
308
, the CPU
101
substitutes the value of the variables X and Y into the variables FX and FY, respectively, thereby updating the values of the variables FX and FY. In the following step
309
, the CPU
101
causes the transmitter
108
to transmit a constant (3,0) representing the transmission of the point data as the music information. After the transmission, the CPU
101
shifts its control to step
310
, where the CPU
101
causes the transmitter
108
to transmit the values of the variables X and Y. Then, the CPU
101
shifts its control to step
311
. The transmitter transmits the identifier and variables as one packet.
In step
311
and subsequent steps, the CPU
101
stores the sound data in the transmit waveform buffer to another, selects the other transmit waveform buffer, and transmits the sound data stored in the transmit waveform buffer.
First, in step
311
the CPU
101
determines whether or not recording the transmit waveform buffer in units of a capacity has been completed. When an empty space in the transmit waveform buffer specified by the value of the variable RHBF is lost, the determination becomes YES and the CPU
101
shifts its control to step
312
. If otherwise in step
311
, the determination becomes NO, and the CPU
101
shifts its control to step
316
.
In step
312
, the CPU
101
substitutes the value of the present time register into the record time register. In the following step
313
, the CPU
101
substitutes the value of the variable RHBF into the variable SHBF for managing the transmit waveform buffer which has stored the sound data to be transmitted. Then, the CPU
101
shifts its control to step
314
.
In step
314
, the CPU
101
reverses the value of the variable RHBF. More specifically, if the value of the RHBF has been A, it is rewritten with B, and vice versa. If this rewriting is completed, the CPU
10
l shifts its control to step
315
, where the CPU
101
effects a label
2
process for transmitting the music information including the sound data.
Then, the CPU
101
shifts its control to step
316
, where the CPU
101
determines where the timing for inputting the sound data has come or not. The CPU
101
gets the sound data outputted from the A-to-D converter
112
at predetermined sampling periods. Thus, when a time corresponding to one sampling period has lapsed since the output of the A-to-D converter
112
was gotten last, the determination becomes YES, and the CPU
101
shifts its control to step
317
. If otherwise in step
316
, the determination becomes NO, and the CPU
101
thereby terminates the process.
As described above, in the present embodiment, each time the sound recording of sound data at a capacity unit of the transmit waveform buffer is completed, the transmit waveform buffer storing the sound data is switched to the other to continue recording the sound data (storage). The sound data stored so far in the unswitched transmit waveform buffer is transmitted when the label
2
process described hereinafter is effected. Thus, it is avoided that the waveform buffer storing the sound data is the same as the waveform buffer for transmitting the sound data.
FIG. 4
is a flowchart of a label
2
process to be effected in step
315
. Referring to
FIG. 4
, the label
2
process will be described next in detail. The present time register and the recording time register are transferred as arguments from the label
1
process to the label
2
process.
First, in step
401
, the CPU
101
determines whether or not one millisecond has lapsed since the value of the present time register was updated, in order to update the value of the present time register at each lapse of one millisecond. If the present value of the timer
102
is larger by a value corresponding to at least one millisecond than the preceding updated value of the present time register, the determination becomes YES, and the CPU
101
shifts its control to step
402
, where it increments the value of the present time register, and then to step
403
. If otherwise in step
401
, the CPU
101
shifts its control to step
406
.
In step
403
, the CPU
101
determines whether or not the MIDI IN terminal
114
has received MIDI data. If the user manipulates the keyboard
130
, the keyboard
130
outputs MIDI data. Therefore, the determination becomes YES, and the CPU
101
shifts its control to step
404
. If otherwise in step
403
, the determination becomes NO, and the CPU
101
shifts its control to step
406
.
In step
404
, the CPU
101
delivers the MIDI data received by the MIDI IN terminal
114
to the transmitter
108
, which is then caused to transmit it. In the following step
405
, the CPU
101
delivers the value of the present time register to the transmitter
108
, which is then caused to transmit it as the time data. Then, the CPU
101
shifts its control to step
406
. As mentioned above, the MIDI data and the time data are transmitted together as one packet.
In steps
406
to
411
, the CPU
101
effects a process for transmitting the sound data (waveform data) as the music information.
First, in step
406
, the CPU
101
causes the transmitter
108
to transmit a constant (0,0) representing the transmission of sound data as sound information. Similarly, the CPU
101
causes the transmitter
108
to transmit “256”, which is the number of bytes representing the capacity of the waveform buffer, as the number of bytes of sound data, and then the value of a variable SC as a serial number (steps
407
and
408
). Then, the CPU
101
increments the value of the variable SC in step
409
and the CPU
101
then shifts its control to step
410
.
In step
410
, the CPU
101
delivers the waveform data stored in the waveform buffer specified by the value of the variable SHBF to the transmitter
108
, which is then caused to transmit it. Then, the CPU
101
shifts its control to step
411
where the CPU
101
updates the value of the variable BC. In this case, since 256 bytes of acoustic data is transmitted, a value obtained by adding 256 bytes of the transmitted sound data to the last value of the variable BC is substituted newly into the variable BC. The sound data is actually transmitted as one packet, starting with the constant (0,0) as the identifier.
Then in step
412
, the CPU
101
waits for the transmitter
108
to complete transmission of the sound data delivered in step
410
. Then, the CPU
101
shifts its control to step
413
.
Transmission of all the sound data means completion of transmission of the music information. Thus, in step
413
and subsequent steps, the CPU
101
effects a process for transmitting as music information a command for reproduction of the transmitted sound data.
First, in step
413
, the CPU
101
causes the transmitter
108
to transmit a constant (1,0) representing transmission of a reproduction command as music information. Then, the CPU
101
causes the transmitter
108
to transmit the value of the variable BC as the total number of bytes of the sound data, and then the value of the record time register as the time data (steps
414
and
415
). Then, the CPU
101
terminates the process. The time data is actually transmitted as one packet, starting with the constant (1,0) which also indicates the reproduction command.
Thus, in the present embodiment, the image data (bit map data of a musical score) is transmitted prior to transmission of music information for an actual performance, the MIDI data is transmitted each time the music information is received, the point data is transmitted as requested, the sound data is transmitted each time an empty space in the waveform buffer is lost, and the reproduction command is transmitted each time the sound data is transmitted.
Moreover, while in the present embodiment the sound data is illustrated as being transmitted separately from the reproduction command for convenience's sake, the reproduction command may be not transmitted. The sound data may be transmitted along with the time data and various other data for determining whether the sound and time data should be reproduced or not.
Referring now to
FIG. 5
, the operation of the CPU
101
effected upon reception of the music information will be described in detail.
FIG. 5
is a flowchart of a music information receiving process.
It is impossible for the user to previously know when data for the user will be received. Therefore, when the receiver
107
is connected to a network (LAN in this case), the music information receiving process is effected when the CPU
101
executes a program stored in the ROM
103
after the power source is turned on.
The music information transmitted as mentioned above is held in the server, and therefore can be received by down-loading from the server. The user can know whether there is transmitted data for the user by inquiring the server of it.
First, in step
501
, the CPU
101
effects an initializing process including substituting initial values into the various variables in preparation for start of reception of the music information. The substitution of the initial values into the variables includes substituting 0's into the variable JBC for holding the number of bytes of the received sound data, the variable JSC for managing the serial number of the sound data, and the variable HSSR for managing the total number of bytes of the received sound data; securing a reception waveform buffer for storing the received sound data; and substituting a character “A” representing the reception waveform buffer A into the variable JHBF for managing an area which stores the received sound data. Thus, if the initialization is completed, the CPU
101
shifts its control to the next step
502
.
In step
502
, the CPU
101
executes a label
3
process which includes determining the contents of the music information received from the receiver
107
, and effecting a corresponding process. In the next step
503
, the CPU
101
determines whether the receiver
107
is disconnected from the server. If the user disconnects the receiver from the server, the determination becomes YES by regarding the reception of the music information as completed, and the CPU
101
thereby terminates the process. If otherwise in step
503
, the determination becomes NO, and the CPU
101
returns its control to step
502
, thereby executing the label
3
process. Thus, the CPU
101
iterates the label
3
process in step
502
until reception of the music information is completed.
FIG. 6
is a flowchart of the label
3
process to be executed in step
502
, which will be described in more detail hereinafter. The transmission source transmits music information along with time data added depending on the kind of the music information. The time data represents a time counted in units of one millisecond by the transmission source. Therefore, in the present embodiment, a variable prepared for processing the music information is used to count a time, this counted time is compared with the time represented by the received time data, and the music information is processed at a timing specified by the result of the comparison. For convenience's sake, the variable will be hereinafter referred to as a musical sound generating time register.
First, in step
601
the CPU
101
determines, using the timer
102
, whether one millisecond has elapsed or not since the value of the musical sound generating time register was updated last. When the present time of the timer
102
is larger by a value corresponding to at least one millisecond than the last updated value of the register, the determination becomes YES, the CPU
101
increments the value of the register in step
602
, and then shifts its control to step
603
. If otherwise in step
601
, the determination becomes NO, and the CPU
101
shifts its control to step
603
.
In the present embodiment, a region for storing MIDI data received as the music information (referred to as a music data buffer hereinafter) is provided in the RAM
104
. MIDI data is stored together with its received time data in the buffer each time the MIDI data is received, and the MIDI data is processed at a timing specified by the time data. In step
603
, the CPU
101
determines whether there is any unprocessed MIDI data stored in the music data buffer and whose processing timing has come. When MIDI data in which the time represented by the added time data is earlier than the time represented by the value of the musical sound generating time register is stored in the music data buffer, the determination becomes YES. Thus, the CPU
101
processes MIDI data in step
604
and then shifts its control to step
605
. If otherwise in step
603
, the determination becomes NO, and the CPU
101
shifts its control to step
605
. The processing of the MIDI data is executed by the CPU
101
in such a manner that the CPU
101
reads out the MIDI data from the music data buffer of the RAM
104
and sends it to the sound source device
120
through the MIDI OUT terminal
113
.
In step
605
, the user inquires the server through the receiver
107
of whether there is transmitted data for the user. If so, the user receives the data by down-loading. The CPU
101
then fetches a head two-word item of the data. The two-word data item includes an item of MIDI data and time data if the music information is the MIDI data, and an identifier of two byte data if it is music information other than the MIDI data. Step
606
and subsequent steps are executed depending on the kind of the music information specified by the data.
First, in step
606
the CPU
101
determines whether a value represented by the data is (0,0) or not. When the receiver
107
has received the sound data as the music information (down-loaded from the server), the determination becomes YES. Thus, the CPU
101
effects a label
4
process involving receiving the sound data in step
607
and then terminates the process. If otherwise, namely, if the receiver
101
has received the music information other than the sound data, the determination becomes NO, and the CPU
101
shifts its control to step
608
.
In step
608
, the CPU
101
determines whether the value represented by the two-word data is (1,0) or not. When the receiver
107
has received a reproduction command as the music information, the determination becomes YES, and the CPU
101
executes a label
5
process involving reception of the reproduction command in step
609
, and then terminates the process. When the sound data and music information other than the reproduction command have been received, the determination becomes NO, and the CPU
101
shifts its control to step
610
.
In step
610
, the CPU
101
determines whether the value represented by the two-word data is (2,0) or not. If the image data is received as the music information by the receiver
107
, the determination becomes YES, and the CPU
101
executes a label
6
process involving the reception of the image data in step
611
and then terminates the process. If otherwise in step
610
, that is, if the sound data, reproduction command, and music information other than the image data are received, the determination becomes NO, and the CPU
101
shifts its control to step
612
.
In step
612
, the CPU
101
determines whether the value represented by the two-word data is (3,0) or not. If the point data is received as the music information by the receiver
107
, the determination becomes YES, the CPU
101
executes a label
7
process involving the reception of the reproduction command in step
613
and then terminates the process. If otherwise, that is, if the MIDI data is received as the music information, the determination becomes NO, and the CPU
101
shifts its control to step
614
.
In step
614
, the CPU
101
stores the MIDI data received as the music information together with the time data in the music data buffer in the RAM
104
. Then, the CPU
101
terminates the process.
As described above, in the label
3
process the CPU
101
processes the music information and effects a process involving the reception of the music information, while checking to see whether the timing specified by the time data has come. Various subroutines to be executed in the label
3
process will be described in detail hereinafter.
FIG. 7
is a flowchart of the label
4
process to be executed in step
607
. The label
4
process will be described in detail with reference to
FIG. 7
hereinafter. The label
4
process involves the reception of music information which contains an identifier for representing sound data, number of bytes of the sound data, serial number, and sound data arranged in this order.
First, in step
701
, the CPU
101
fetches the number of bytes positioned next to a constant which is the identifier from among the data received from the receiver
107
, and substitutes it into the variable JBC in step
702
. Then, the CPU
101
fetches the serial number from the received data in step
703
, and shifts its control to step
704
, where it determines whether the received serial number is equal to the value of the variable JSC prepared for counting the number of receptions of the sound data. When all the sound data transmitted from the transmission source are normally received, both the values coincide. Thus, the determination becomes YES, and the CPU
101
shifts its control to step
705
. If otherwise in step
704
, the determination becomes NO, and the CPU
101
shifts its control to step
709
.
In step
705
, the CPU
101
fetches 256-byte sound data positioned next to the serial number from the received data. In step
706
, the CPU
101
stores the sound data in the reception waveform buffer specified by the value of the variable JHBF. Then, the CPU
101
increments the value of the variable JSC in step
707
, updates the value of the variable HSSR in step
708
, and then terminates the process.
The determination of NO in step
704
means that there is sound data which is not received normally among the sound data transmitted from the transmission source, namely, that an error has occurred in the reception of the sound data. Therefore, the CPU
101
effects a label
8
process in step
709
for coping with the error. Then the CPU
101
terminates the process.
FIG. 8
is a flowchart of the label
8
process mentioned above.
When an error has occurred in the reception of the sound data, there is a probability that an abnormal sound will be generated due to the error. Therefore, in the label
8
process, the CPU
101
effects a process for abandoning the received sound data in step
801
. Then, the CPU
101
terminates the process.
FIG. 9
is a flowchart of the label
5
process to be executed as step
609
in the music information receiving process. The label
5
process will be described in detail with reference to
FIG. 9
hereinafter.
The label
5
process involves the reception of the reproduction command. The transmission source transmits an identifier representing a musical sound reproduction command, a total number of bytes of the sound data transmitted so far and time data, arranged as the music information in this order. The total number of bytes of the music information is represented by the value of the variable BC.
First, in step
901
the CPU
101
fetches the total number of bytes of the music information positioned next to a constant which represents the identifier from among the data received from the receiver
107
. In step
902
, the CPU
101
determines whether the total number of bytes is equal to a value of the variable HSSR or not. When the value of the variable BC in the transmission source present at transmission of the reproduction command coincides with the value of the variable HSSR, the determination becomes YES, and the CPU
101
shifts its control to step
903
. If otherwise in step
902
, the determination becomes NO, and the CPU
101
shifts its control to step
907
.
In step
903
, the CPU
101
fetches the time data positioned next to the total number of bytes from among the received data, and substitutes it into the musical sound generating time register. Then, the CPU
101
shifts its control to step
904
.
The sound data transmitted prior to the reproduction command is data representing the sound collected by the microphone
111
, and sent to the CPU
101
from the A-to-D converter
112
as requested. Thus, the sound data generally becomes music information of the kind received first by the receiver
107
. The sound data is larger in the number of bytes compared to the other data. Therefore, it is expected that the transmission time will fluctuate most. Therefore, in the present embodiment, the time data added to the reproduction command is substituted into the musical sound generating time register. Thus, the performance of the music information received at the reception end is effected, using the reproduction of the waveform data as a reference timing. By substitution of the time data added to the reproduction command into the musical sound generating time register, the timing for processing the MIDI data is specified by merely comparing the time data added to the MIDI data with the value of the musical sound generating time register, as mentioned in step
603
of the label
3
process of FIG.
6
.
In step
904
, the value of the variable JHBF which represents a reception waveform buffer which has stored the newest received sound data is substituted into a variable OHBF for managing the reception waveform buffer which has stored the sound data to be reproduced. In step
905
, the CPU
101
reverses the value of the variable JHBF. For example, if the value of the variable JHBF present so far is A, it is rewritten with B and vice versa. Then, the CPU
101
shifts its control to step
906
, and starts reproduction of the sound data stored in the reception waveform buffer specified by the value of the variable OHBF. Then, the CPU
101
terminates the process.
Although not detailed, the CPU
101
reproduces the sound data by sequentially reading out the sound data stored in the reception waveform buffer in units of one sample at the sampling cycle, and delivering them sequentially to the D-to-A converter
109
.
As mentioned above, the determination of NO in step
902
means that there is a probability that any error has occurred in the reception of the sound data. Thus, the CPU
101
effects a label
9
process coping with the error in step
907
to stop reproduction of the sound data. Then, the CPU
101
terminates the process.
FIG. 10
is a flowchart of in the label
9
process. In this process, as shown in
FIG. 10
, the CPU
101
fetches time data contained in the received data in step
1001
, and then clears the values of the variables JBC and HSSR to 0 (steps
1002
and
1003
). The CPU
101
then terminates the process. By clearing the value of the variable HSSR, the determination in step
902
is always NO thereafter. Thus, the reproduction of the sound data normally received is terminated and not effected any longer. Thus, generation of an abnormal sound due to the occurrence of error is avoided.
FIG. 11
is a flowchart of a label
6
process to be executed as step
611
in the label
3
process of FIG.
6
. In the label
6
process involving the reception of the image data (assumed as the bit map data of the musical score herein), the CPU
101
fetches image data positioned next to the identifier (2,0) from the received data, and then transfers it to the VRAM provided in the liquid crystal display device
106
in step
1101
. Thus, the CPU
101
displays a musical score on the liquid crystal display device
106
, and then terminates the process.
FIG. 12
is a flowchart of a label
7
process to be executed as step
613
in the label
3
process of FIG.
6
. This label
7
process involves reception of point data (which specifies the display position of the cursor indicative of a performance position on the musical score). In this process, the CPU
101
fetches X coordinate data positioned next to the identifier (3,0) from the received data, stores the X coordinate in the cursor X register of the cursor pointer
105
(steps
1201
,
1202
), similarly fetches Y coordinate data from the received data and stores it in the cursor Y register (steps
1203
,
1204
). In this way, the CPU
101
changes the display position of the cursor and then terminates the process.
In the first embodiment, it is assumed to transmit and receive five kinds of event data, i.e., MIDI data, sound data, reproduction command, image data, and point data. Of course, the contents of the music information to be transmitted should not be limited to those data. They may be more or less than five, and further the type of transmission of the music information may be changed as requested.
While in the present embodiment the sound data is illustrated as invariably transmitted in a transmission mode, it is not necessarily required to be done so. For example, the sound data may be transmitted as it is or in a compressed state only when the microphone
111
is picking up sounds of a volume level higher than a set volume level. When the transmitting end transmits only sound data worth reproducing at the receiving end or reduces the quantity of the sound data to be transmitted, the transmitting end can transmit a corresponding quantity of music information of other kinds. When an error has occurred in the reception of the sound data, the musical sound may be cross-faded to make the occurring error inconspicuous without muting the musical sound immediately.
While in the first embodiment the transmission and reception of the music information are illustrated, only one of transmission and reception of the music information may be effected. In this case, it is preferable to be able to optionally select the kind of music information to be transmitted/received.
<Second Embodiment>
Recently, sequencers dedicated to automatic performance (including an automatic accompaniment) and other different apparatuses have an automatic performance function. The user can enjoy an ensemble by utilizing such function.
Processing the performance data (sequence data) therefor effects the automatic performance. The performance data is composed of a plurality of pairs of event data representing the contents of an event in the performance (e.g. MIDI data) and time data representing a timing for processing the event data, each pair representing one unit to be processed, arranged in order of processing. Thus, it is possible to inhibit performance of a part selected from among performance data, but it is impossible to add an external additional part to the original performance data and then to perform the resulting performance data. Under the circumstances, the second embodiment enables the contents of musical data automatically performable to be added to the performance data.
To this end, the second embodiment comprises a combination of the music information editing apparatus having the function of adding the contents of the automatic performance and the music information receiving apparatus of the first embodiment. The second embodiment has substantially the same in composition as the first embodiment (FIG.
1
). Therefore, the second embodiment will be described next, using the reference numerals of the first embodiment used with reference to FIG.
1
.
FIG. 13
illustrates a method of utilizing a musical sound generating apparatus which includes the music information transmitting-receiving apparatus of the second embodiment. The method will be described next along with operation of the musical sound generating apparatus with respect to FIG.
13
.
In
FIG. 13
, musical sound generating apparatus
1301
to
1304
each have the structure of FIG.
1
.
FIG. 13
shows that by arrows each of musical sound generating apparatuses
1302
to
1304
transmits music information to a musical sound generating apparatus
1301
.
Each of the musical sound generating apparatuses
1302
to
1304
transmits performance data selected with the switch group
115
to a destination device specified by the switch group
115
. To this end, the CPU
101
reads out selected performance data from the ROM
103
and delivers it to the transmitter
108
.
The performance data transmitted from those apparatuses
1302
to
1304
are received by the musical sound generating apparatus
1301
. The CPU
101
of the apparatus
1301
stores the performance data received by the receiver
107
in an area of the RAM
104
thereof (for convenience's sake, hereinafter referred to as a music data buffer). In the present embodiment, the reception of the performance data is effected by each of the apparatuses
1302
to
1304
in a handshaking fashion.
When the reception of the performance data from each of the apparatuses
1302
to
1304
is completed, the CPU
101
of the apparatus
1301
sorts event data (in this case, MIDI data) in the order of their earlier performance timings specified by time data added to the event data. That is, the pairs of event data and time data are rearranged in order of processing. After this, the reproduction of the performance data is started.
This method of managing the timings based on the time data is mainly classified into two: that is, an absolute time series managing method of representing the timing with a time lapsing from a time of reference, and a relative time series managing method of representing the timing with a time lapsing from occurrence of a last event. The former method is employed in the present embodiment.
As mentioned above, since the event data are sorted on the basis of time data, the timings for processing event data composing respective performance data are maintained while the performance data are arranged as one unit in an appropriate form. Thus, the user can optionally combine different performance data and appropriately reproduce the respective performance data. Thus, the user can expand a range of musical expression, which the user can use and enjoy music in diverse manners, thereby improving facilities provided for the user. Moreover, since the performance data can be stored in a divided state, it is avoided that all of the performance data will be stolen or deleted at a time, thereby increasing security.
While in the present embodiment the performance data to be combined with are illustrated as being received from the external devices, they may be obtained in another way. They may be obtained by accessing a recording medium such as a floppy disk, a CD-ROM or an IC card. Of course, it is also possible to select a plurality of performance data stored in the ROM
103
or recording medium and to combine the selected performance data.
Referring now to
FIGS. 14
to
19
, the operation of the CPU
101
which provides the control mentioned above will be described next in detail with respect to transmission, reception and edition of music information for the sake of easy understanding.
FIG. 14
is a flowchart of a music information transmitting process, which handles transmission of music information (i.e. performance data). Referring to
FIGS. 14 and 15
, the operation of the CPU
101
in the transmission of the performance data will be described in detail hereinafter.
The process of
FIG. 14
(including its subroutine process
FIG. 15
) starts when the user specifies with the switch group
115
performance data to be transmitted and hence the CPU
101
executes a corresponding program stored in the ROM
103
.
First, in step
1401
, the CPU
101
effects initialization for providing a music data buffer in the RAM
104
. In step
1402
, the CPU
101
reads out the performance data specified by the user from the ROM
103
and stores it in the buffer. Then, the CPU
101
shifts its control to step
1403
.
In the present embodiment, the performance data supposed to be edited is not transmitted to a destination device until the destination device requests transmission of the performance data. Therefore, in step
1403
, the CPU
101
determines whether the request has been received or not. If received, the determination becomes YES, and the CPU
101
effects the label
1
process which includes transmitting the performance data in step
1404
, and then shifts its control to step
1405
. If otherwise in step
1403
, the determination becomes NO, the CPU
101
thereby shifts its control to step
1405
.
In step
1405
, the CPU
101
determines whether the transmission of the performance data has been completed. If all the required performance data have been transmitted to the receiver or the transmission of the performance data has been stopped by the user's instruction with the switch group
115
, the determination becomes YES, and the CPU
101
terminates the process. If otherwise in step
1405
, the determination becomes NO, and the CPU
101
returns its control to step
1403
, where it determines whether it is necessary to continue transmission of the performance data. Thus, all of the performance data to be transmitted is transmitted to all of the destination devices.
FIG. 15
is a flowchart of the label
1
process to be executed in step
1404
. In this process, the CPU
101
first transmits the performance data stored in the music data buffer in step
1501
. In step
1502
, the CPU
101
determines whether there is still any data to be transmitted in the buffer or not. If all of the data have been transmitted, the determination becomes NO. Then, the CPU
101
transmits to the destination device a message that all of the data have been transmitted, and then terminates the process. If there is in step
1502
, the determination becomes YES, and the CPU returns its control to step
1501
, where it transmits to the destination devices the data, which is not transmitted yet.
As mentioned above, in the label
1
process, the steps
1501
and
1502
compose a processing loop, whose looping operation is repeatedly executed as long as untransmitted data exists to thereby to transmit the performance data in units of a predetermined quantity. In this case, the CPU
101
adds a header to the data read out from the music data buffer and sends resulting data to the transmitter
108
.
FIG. 16
is a flowchart of a music information receiving process. Referring now to
FIGS. 16
to
19
, the controlling operation of the CPU
101
for the reception of the performance data will be described in detail.
The user receives performance data from a transmission source specified with the switch group
115
. The music information receiving process is executed in such a manner that if the reception of the performance data is specified by the user with the switch group
115
after the transmission source is specified, the CPU
101
executes a corresponding program stored in the ROM
103
.
First, in step
1601
, the CPU
101
performs initialization for preparing the reception of the performance data. Thus, the CPU
101
clears the value of a variable SAR for managing a transmission source of the performance data or substitutes zero into the variable SAR, and provides an area for storing the received performance data. Then, the CPU
101
shifts its control to step
1602
. The area is hereinafter referred to as a received music data buffer for convenience's sake.
In step
1602
, the CPU
101
effects the label
2
process for requesting transmission of the performance data from the transmission source and for receiving the performance data. In step
1603
, the CPU
101
determines whether the processing of the performance data has all been completed or not. The received performance data is edited and then reproduced. Therefore, when the reproduction is completed or the user stops its reproduction with the switch group
115
, the determination becomes YES, and the CPU
101
terminates the process. If otherwise in step
1403
, the determination becomes NO, and the CPU
101
returns its control to step
1602
, where it executes the label
2
process.
FIG. 17
is a flowchart of the label
2
process to be executed in step
1602
. Referring now to
FIG. 17
, the label
2
process will be described in detail hereinafter.
It is possible to specify a plurality of performance data transmission sources. When the CPU
101
has stored data on the transmission sources (addresses) inputted by the user with the switch group
115
in the RAM
104
, it receives performance data by selecting the transmission sources sequentially while referring to the stored data. The variable SAR is used for selecting such a transmission source for the performance data.
First, in step
1701
, the CPU
101
requests transmission of the performance data from the transmission source specified by the value of the variable SAR. In step
1702
, the CPU
101
inquires the sever through the receiver
107
of whether the performance data has been transmitted. If the transmission source has transmitted the performance data, the determination becomes YES, and the CPU
101
shifts its control to step
1703
. If otherwise in step
1702
, the determination becomes NO, and the CPU
101
returns its control to step
1701
. Then, the CPU
101
waits the transmission of the performance data in step
1702
.
In step
1703
, the CPU
101
determines whether performance data has been received from the server through the receiver
107
, and whether the same performance data as the received one is stored in the reception music data buffer. If the MIDI data of the received performance data and the time data added to the MIDI data do not coincide with those of the performance data stored in the reception music data buffer, the determination becomes NO, the CPU
101
stores the performance data received in step
1704
and then shifts its control to step
1705
. If otherwise in step
1703
, the determination becomes NO, the CPU
101
requests the transmission of the performance data from the sever.
In step
1705
, the CPU
101
determines whether there is any more data to be received. If the received data contains an identifier representing completion of the transmission of the performance data, the determination becomes NO, the CPU
101
increments the value of the variable SAR in step
1706
and then shifts its control to step
1707
. If there is in step
1705
, the determination becomes YES, and the CPU
101
returns its control to step
1701
.
In step
1707
, the CPU
101
determines whether there are any more transmission sources from which performance data should be received. If there is a transmission source corresponding to the value of the variable SRA, the determination becomes NO, and the CPU
101
shifts its control to step
1708
. If so in step
1707
, the determination becomes YES, and the CPU
101
returns its control to step
1701
.
The determination of NO in step
1707
means completion of the reception of the performance data from all of the transmission sources specified by the user. Thus, in step
1708
the CPU
101
executes the label
3
process for editing and producing the received performance data. Then, the CPU
101
terminates the process.
FIG. 18
is a flowchart of the label
3
process to be executed in step
1708
. Referring now to
FIG. 18
, the label
3
process will be described in detail hereinafter.
In the execution of the label
3
process, the received performance data are stored in correspondence to the respective transmission sources in the reception music data buffer. The label
3
process is effected on those performance data.
First, in step
1801
, the CPU
101
refers to the time data added to the MIDI data, fetches timing data to process MIDI data from the respective performance data and arranges them in the order of their earlier performance timings to thereby collect the plurality of performance data as one unit while maintaining the processing timings of the MIDI data.
In step
1802
, the CPU
101
substitutes time data representing the earliest timing to be specified among the time data into the performance time register. In other words, the CPU
101
substitutes the time data added to the MIDI data to be processed first into the performance time register. The performance time register is a variable used for processing the MIDI data in accordance with the time data, and the value of the performance time register is incremented each time one millisecond lapses, for example, by referring to the timer
102
.
Step
1802
includes initialization for starting reproduction of the performance data. In step
1803
, the CPU
101
effects the label
4
process for reproducing the performance data. The series of steps composing the label
3
process is completed after the completion of the label
4
process.
FIG. 19
is a flowchart of the label
4
process executed in step
1803
. This process will be described in detail hereinafter, which is executed on the performance data after edition.
First, in step
1901
, the CPU
101
determines whether one millisecond has lapsed since the value of the performance time register was updated last. If there is a difference of a value corresponding to at least one millisecond between the value of the timer
102
at the time when the value of the performance time register was updated last and the present value of the timer
102
, the determination becomes YES. Thus, the CPU
101
increments the value of the timer in step
1902
and then shifts its control to step
1903
. If otherwise in step
1901
, the determination becomes NO, and the CPU
101
shifts its control to step
1903
.
In the
1903
, the CPU
101
determines whether a timing for processing next MIDI data selected from among the performance data has come. When the value of the time data added to the MID data is not more than the value of the performance time register, the determination becomes YES. The CPU
101
then processes the MIDI data in step
1904
and shifts its control to step
1905
. If otherwise in step
1903
, the determination becomes NO, and the CPU
101
returns its control to step
1901
. The processing of the MIDI data is executed after transmission of the MIDI data by the CPU
101
to the MIDI OUT terminal
113
.
In step
1905
, the CPU
101
determines whether there is unprocessed MIDI data among the performance data or not. Where all of the MIDI data are not processed, the determination becomes YES. The CPU
101
selects the MIDI data to be processed next in step
1906
, and then returns its control to step
1901
. If otherwise, namely, when the reproduction of the performance data is completed, the determination becomes NO, and the CPU
101
then terminates the process. The selection of the data to be processed next is executed, for example, by substituting the value of an address at which the MIDI data to be processed next is stored into the variable for managing the MIDI data to be processed.
As mentioned above, the label
4
process is executed in such a manner that the value of the performance time register is updated as required and that the MIDI data is processed at the timing specified by the time data.
While in the second embodiment the edition which collects a plurality of performance data as one unit is illustrated, the present invention is not limited to this particular case. For example, instead of the edition, each time one item of MIDI data is processed, another item of MIDI data to be processed next may be searched from among the plurality of performance data. However, if this process is used when the relative time series managing method is employed, a complex operation to specify the timing must be effected in parallel with reproduction of the performance data. Thus, after the edition, the performance data is preferably produced.
While in the second embodiment performance data including the MIDI data is illustrated as being edited, it may be data other than the MIDI data, for example, sound data. The performance data is beforehand stored in the transmission source. Music information to be produced and transmitted as requested may be an object to be edited when each transmission source has beforehand determined as a reference a time for time counting, for example, by adding to the performance data time data representing a time when the performance is started.
While the respective users of the devices
1302
-
1304
are illustrated as specifying performance data to be transmitted, the devices, which request transmission of the performance data, may specify the performance data.
In addition, while in the present embodiment the received performance data is illustrated as being edited, performance data stored in a recording medium may be edited instead. As will be obvious from this, the music information editing device may be provided on apparatus which are capable of receiving music information as well as on various other devices.
<Third Embodiment>
Since the MIDI have spread and music information can be easily transmitted and received, a range of use of the devices has spread, for example, such that they are used in respective specified applications. Thus, it has so widely spread that a user combines a plurality of devices into a single system suitable for the user to enjoy music. The third embodiment is intended to increase a range of use of the devices by paying attention to a possibility of new music being created based on transmission and reception of music information.
The musical sound generator which includes a music information transmitting/receiving apparatus of the third embodiment is basically the same in composition as the first embodiment (FIG.
1
). Thus, the third embodiment will be described by basically using the reference numerals used for explaining the first embodiment with reference to FIG.
1
.
FIG. 20
illustrates a method of using the musical sound generator and its operation therefor. Reference numerals
2001
-
2005
of
FIG. 20
each denote the musical sound generator, for example, having the composition of FIG.
1
. The musical sound generator
2001
transmits/receives music information to/from the musical sound generator
2002
, which in turn transmits music information to the musical sound generators
2003
-
2005
. As in the first and second embodiments, the generators
2001
-
2005
are connected via a LAN.
In the system of
FIG. 20
, the musical sound generator
2001
is supposed to be used for performance. The musical sound generator
2002
is supposed to provide music information for the musical sound generators
2001
, and
2003
-
2005
. The musical sound generators
2003
-
2005
are supposed to reproduce received music information. Thus, for convenience's sake, the musical sound generator
2001
is hereinafter referred to as a performance device, the musical sound generator
2002
as a database, and the musical sound generators
2003
-
2005
as receiving devices.
The devices
2001
-
2005
, which compose the system of
FIG. 20
, operate as follows. The respective devices
2001
-
2005
are operated, for example, when the users operate respective switch groups
115
to set the devices in the corresponding modes. For example, when a mode is set which specifies that the device
2002
should operate as a database, and the user at the device
2002
specifies with the switch group
115
the device
2001
as the performance device and the devices
2003
-
2005
as receiving devices, those devices are connected so as to fulfill their respective specified functions. The database
2002
reads out from the ROM
103
performance data which the user specified with the switch group
115
, and provides the performance data as music information for the respective devices
2001
and
2003
-
2005
as follows.
The database
2002
refers to time data added to the MIDI data which composes a portion of the performance data, and transmits the MIDI data along with the time data at a timing specified by the time data to the performance device
2001
as required.
The performance device
2001
receives the performance data from the database and processes the MIDI data based on the time data to thereby reproduce the performance data. The performance device
2001
transmits to the database
2002
the contents of an ensemble, which the user effected, based on the reproduction of the performance data. More specifically, the performance device
2001
adds time data to MIDI data indicative of the contents of the user's manipulation effected on the keyboard
130
, and then transmits resulting data to the database
2002
. The time data is produced based on the time data received from the database
2002
.
In the present embodiment, the performance device
2001
transmits only the contents of the performance, which the user effected because the performance data received by the performance device
2001
is possessed by the database
2002
. This avoids possible occurrence of something wrong with the database
2002
when the performance device
2001
does not transmit the performance data to the database. By sending back to the database
2002
no performance data received from the database, as described above, a quantity of data communicated between the database
2002
and the performance device
2001
is reduced as a whole to thereby improve the efficiency of use of a transmission path which connects those devices.
The database
2002
transmits to the respective receiving devices
2003
-
2005
the same performance data as was transmitted to the performance device
2001
, and the performance data received from the performance device
2001
. This transmission is effected based on the time data received from the performance device
2001
because the data transmission between the performance data
2001
and the database
2002
takes some time to thereby avoid occurrence of a possible discrepancy between the timings when those performance data are reproduced.
Like the performance device
2001
, the respective receiving devices
2003
-
2005
receive the performance data and process the MIDI data based on the time data to reproduce an ensemble composed of a performance based on reproduction of the performance data which the database
2002
itself has and the performance effected by the user at the keyboard
130
of the performance device
2001
.
As described above, the database
2002
is capable of transmitting performance data (music information) having different contents to the respective destination devices. This means that different roles can be easily assigned to the respective destination devices and/or the contents of their roles can easily specified more minutely. Thus, the respective uses of those devices can be set minutely, for example, such that some of the devices should be used for performance, and the other devices should be used for producing different musical sounds, respectively. Thus, those devices become usable selectively for more various purposes to improve their facilities, and the user can use those devices which compose the system in the respective more desired forms. The improvement of their facilities serves to expand the user's musical expression and hence contributes to creation of new music.
A control operation of the CPU
101
of each of the devices
2001
-
2005
for realizing their respective intended operations will be described in detail with reference to
FIGS. 21-26
.
FIG. 21
is a flowchart of a music information transmitting/receiving process effected by the CPU
101
of the performance device
2001
. Referring to
FIG. 21
, the operation of the CPU
101
will be described first in detail. When the user specifies with the switch group
115
that the musical sound generator should function as the performance device, the CPU
101
executes a program stored in the ROM
103
to effect the music information transmitting/receiving process.
First in step
2101
, the CPU
101
effects initialization to thereby clear various variables, substitute preset values into required variables, and provide in the RAM
104
an area which temporarily stores the received performance data (hereinafter referred to as a received music data buffer). Then, in step
2102
, the CPU
101
effects the label
1
process to transmit/receive music information (here, performance data transmitted/received in units of MIDI data) to and from the database
2002
.
The CPU
101
then shifts its control to step
2103
, where it determines whether transmission/reception of the music information has been completed. For example, when no performance data has been transmitted for more than a preset time from the database
2002
or when the user instructs the performance device
2001
to stop transmission/reception of the performance data with the switch group
115
, the determination in step
2103
becomes YES, and the CPU
101
then terminates the process. If otherwise in step
2103
, determination becomes NO and the CPU
101
returns its control to step
2102
, where it performs the label
1
process again.
The steps
2102
and
2103
form a processing loop whose looping operation continues until the determination in step
2103
becomes YES. Thus, the CPU
101
effects an automatic performance which includes sequentially receiving and processing MIDI data from the database
2002
, and transmits to database
2002
the contents of the performance, which was effected by the user's manipulation on the keyboard
130
, in the form of MIDI data.
FIG. 22
is a flowchart of the label
1
process effected in step
2102
, which will be described next. The database
2002
adds time data to the MIDI data and transmits the resulting data to the performance device
2001
. In order to process the MIDI data at a timing specified by the time data, a variable (present time register) which updates its value as each predetermined time lapses is prepared, and the value of the variable is compared with the value of the time data.
First, in step
2201
, the CPU
101
determines whether one millisecond has lapsed since the value of the present time register was updated last. When there is a difference of a value corresponding to at least one millisecond between the preceding updated value of the timer
102
and the present value of the timer
102
, the determination becomes YES. Thus, the CPU
101
increments the value of the present time register in step
2202
and then shifts its control to step
2203
. If otherwise in step
2202
, the determination becomes NO and the CPU
101
shifts its control to step
2203
.
In step
2203
, the CPU
101
determines whether a timing at which next MIDI data is to be processed among the MIDI data stored in the received music data buffer has come. When the value of the time data added to this MIDI data becomes smaller than the value of the present time register, the determination becomes YES. Thus, the CPU
101
outputs the MIDI data to the MIDI OUT terminal
113
in step
2204
, and then shifts its control to step
2205
. If otherwise in step
2203
, the determination becomes NO, and the CPU
101
shifts its control to step
2205
.
In step
2205
, the CPU
101
inquires the sever through the receiver
101
of whether there is any new received data for the CPU
101
. If there is, it downloads the data. In step
2206
, the CPU
101
stores the MIDI data and time data of the data received from the receiver
107
in the received music data buffer.
The CPU
101
then shifts its control to step
2207
, where it determines whether the MIDI data received in step
2005
is first data received as music information from the database
2002
. When the database
2002
has transmitted the MIDI data positioned at the head of the performance data, the determination becomes YES. Thus, the CPU
101
substitutes into the present time register the time data added to the MIDI data in step
2208
, and then shifts its control to step
2209
. If otherwise in step
2207
, the determination becomes NO, and the CPU
101
directly shifts its control to step
2209
.
As described above, the performance device
2001
substitutes into the present time register the time data received first from the database
2002
. Thus, only by comparing the value of the time data added to the received MIDI data with the value of the present time register, the performance device
2001
is capable of processing the MIDI data at the timing specified by the time data.
In step
2209
, the CPU
101
determines whether the MIDI IN terminal
114
has received the MIDI data from the keyboard
130
. When the user has manipulated the keyboard
130
, the determination becomes YES, and the CPU
101
then shifts its control to step
2210
. If otherwise in step
2209
, the determination becomes NO, and the CPU
101
then terminates the process.
In step
2210
, the CPU
101
receives the MIDI data received by the MIDI IN terminal
114
, delivers it to the MIDI OUTPUT terminal
113
to cause the sound source
120
to process it, adds the value of the present time register as time data to the MIDI data, delivers the resulting data to the transmitter
108
, causes the transmitter
108
to transmit the data to the database
2002
, and then terminates the process.
As described above, the performance device
2001
processes the performance data received from the database
2002
and transmits the performance data to the device
2002
and thus the above mentioned operations are effected.
FIG. 23
is a flowchart of a music information transmitting/receiving process effected by the CPU
101
of the database
2002
. Referring to
FIGS. 23 and 24
, the control operation of the CPU
101
will be described next in detail.
The music information transmitting/receiving process is effected in the database
2002
when the user manipulates the switch group
115
to cause the musical sound generator to function as a database, to specify performance data to be transmitted, and destination devices such as the performance device
2001
and receiving devices
2003
-
2005
, and then to instruct the database
2002
to start transmission of the performance data to thereby cause the CPU
101
to execute an appropriate program stored in the ROM
103
.
First, in step
2301
, the CPU
101
effects initialization to thereby clear the values of variables in the present time register and the performance time register used for transmitting the performance data, and to substitute initial values into those variables, to provide an area in the RAM
104
used for storing the performance data to be delivered (hereinafter, referred to as a music data buffer).
Then, the CPU
101
shifts its control to step
2302
, where the CPU
101
reads out the performance data specified by the user from the ROM
103
and then stores it in the music data buffer. In step
2303
, the CPU
101
effects the label
2
process which includes transmission and reception of performance data to/from a specified destination device or transmits performance data to a specified destination device.
Then, the CPU
101
shifts its control to step
2304
, where it determines whether transmission/reception of the music information has been terminated. Since the performance device
2001
transmits to the database
2002
and the receiving devices
2003
-
2005
data on an ensemble which includes the contents of the user's performance and a performance based on the performance data received from the database
2002
, termination of transmission of the performance data specified by the user arrivals earlier at the database device
2002
than at the respective receiving devices
2003
-
2005
because the termination of transmission of the performance data from the database
2002
to the receiving devices is effected via the database
2002
. Thus, when the respective receiving devices
2003
-
2005
receive no performance data from the performance device
2001
for more than a predetermined time after the transmission of the performance data from the performance device
2001
to the respective receiving devices
2003
-
2005
or when the user instructs the performance device to stop transmission of the performance data with the switch group
115
, the determination in step
2304
becomes YES, and the CPU
101
then terminates the process. If otherwise in step
2304
, the determination becomes NO, and the CPU
101
returns its control to step
2303
, where it effects the label
2
process again.
The steps
2303
and
2304
compose a processing loop whose looping process continues until the determination in step
2304
becomes YES. Thus, the performance data is transmitted/received between the database
2002
and the performance device
2001
, and is transmitted to the respective receiving devices
2003
-
2005
.
FIG. 24
is a flowchart of the label
2
process effected in step
2303
, which will be described next in detail. As described above, the database
2002
transmits the same performance data in units of MIDI data to the performance device
2001
and the respective receiving devices
2003
-
2005
, but the timings at which the performance data are received by the performance device
2001
and the receiving devices
2003
-
2005
are different because different times are required for the respective transmissions of the performance data. The same MIDI data is transmitted at an earlier timing to the performance device
2001
than to the receiving devices
2003
-
2005
. The present time register and the performance time register are variables prepared to separately control the timings of transmitting the MIDI data to the performance device
2001
and the respective receiving devices
2003
-
2005
.
First, in step
2401
, the CPU
101
determines whether one millisecond has lapsed in the present time register since its value was updated last. If there is a difference of a value corresponding to at least one millisecond between the value of the timer
102
updated last and the present value of the timer
102
, the determination becomes YES. Thus, the CPU
101
increments the respective values of the present time register and the performance time register (steps
2402
and
2403
), and then shifts its control to step
2404
. If otherwise in step
2401
, the determination becomes NO, and the CPU
101
shifts its control to step
2404
.
In step
2404
, the CPU
101
determines whether a timing of transmitting to the performance device
2001
next MIDI data selected among the MIDI data stored in the music data buffer has come. When the value of the time data added to the selected MIDI data is smaller than the value of the present time register, the determination becomes YES. Thus, in step
2405
, the CPU
101
causes the transmitter
108
to transmit the MIDI data and the time data to the performance device
2001
. Then, the CPU
101
shifts its control to step
2406
. If otherwise in step
2404
, the determination becomes NO, and the CPU
101
then shifts its control to step
2406
.
In step
2406
, the database
2002
inquires the sever through the receiver
107
of whether there is any data received for the database. If there is, the database downloads the data and the CPU
101
determines whether the data is MIDI data received from the performance device
2001
. If data on the transmission source added to the received data indicates the performance device
2001
, the determination becomes Yes, and the CPU
101
shifts its control to step
2407
. If otherwise in step
2406
, the determination becomes NO, and the CPU
101
then shifts its control to step
2410
.
In step
2407
, the CPU
101
determines whether the MIDI data received by the receiver
107
is the first data received as music information from the performance device
2001
. When the database starts to transmit the performance data to the performance device
2001
, and then the user starts to manipulate the keyboard
130
of the performance device
2001
, the database
2002
receives first MIDI data. Thus, the determination becomes YES. Thus, in step
2408
, the CPU
101
substitutes the time data added to the MIDI data into the performance time register, and then shifts its control to step
2409
. If otherwise in step
2407
, the determination becomes NO, and the CPU
101
shifts its control to step
2409
, where the CPU
101
causes the transmitter
108
to transmit the MIDI data and time data received from the performance device
2001
to the respective receiving devices
2003
-
2005
.
As described above, the database
2002
substitutes the time data received first from the performance device
2001
into the performance time register. The time data represents the time counted, using as an initial value the value of the time data received first from the database
2002
. Thus, as will be described later, only by merely comparing the value of the performance time register and the time data and then specifying a timing of transmitting the value of the performance time register based on the result of the comparison, a possible discrepancy in timing between the transmissions of the performance data specified by the user and the performance data received from the performance device
2001
in units of MIDI data to the respective receiving devices
2003
-
2005
is avoided. Thus, the respective receiving devices
2003
-
2005
reproduce those performance data synchronously.
Then, in step
2410
, the CPU
101
determines whether the timing of transmitting to the respective receiving devices
2003
-
2005
next MIDI data selected from among the MIDI data stored in the music data buffer has come. When the value of the time data added to the MIDI data becomes smaller than the value of the performance time register, the determination becomes YES. Thus, in step
2411
, the CPU
101
causes the transmitter
108
to transmit the MIDI data and time data to the respective receiving devices
2003
-
2005
in step
2411
, and then terminates the process. If otherwise, the determination becomes NO, and the CPU
101
then terminates the process.
FIG. 25
is a flowchart of a music information receiving process effected by the CPU
101
of each of the receiving devices
2003
-
2005
, which will be described next. When the user specifies with the switch group
115
that the music information transmitting/receiving apparatus should function as a receiving device, the CPU
101
executes a relevant program stored in the ROM
103
to effect the music information receiving process.
First, in step
2501
, the CPU
101
effects initialization which includes clearing the values set in the respective variables and substituting preset values into the variables, and securing in the RAM
104
an area which temporarily stores the received performance data (hereinafter referred to as a received music data buffer). Then, in step
2502
, the CPU
101
effects the label
3
process, which includes receiving performance data received from the database
2002
and reproducing it.
The CPU
101
then shifts its control to step
2503
, where it determines whether the reception of the music information has been completed. When the receiver has not received the performance data from the database
2002
for more than a predetermined time or when the user manipulates the switch group
115
to instruct the receiver to stop reception of the performance data, the determination in step
2503
becomes YES, and the CPU
101
then terminates the process. If otherwise in step
2503
, the determination becomes NO, and the CPU
101
then returns its control to step
2502
, where it effects the label
3
process.
The steps
2502
and
2503
compose a processing loop whose looping operation continues until the determination in step
2503
becomes YES. Thus, the receiver sequentially receives MIDI data from the database
2002
and processes them to thereby effect an automatic performance.
FIG. 26
is a flowchart of the label
3
process effected in step
2502
. Referring to
FIG. 26
, the label
3
process will be described in detail.
First, in step
2601
, the CPU
101
determines whether one millisecond has lapsed since the value of the present time register was updated last. When there is a difference of a value corresponding to at least one millisecond between the value of the timer
102
updated last and the present value of the timer
102
, the determination becomes YES. Thus, the CPU
101
increments the value of the present time register in step
2602
, and then shifts its control to step
2603
. If otherwise in step
2601
, the determination becomes NO, and the CPU
101
shifts its control to step
2603
.
In step
2603
, the CPU
101
determines whether the timing of processing next MIDI data selected from among the MIDI data stored in the received music data buffer has come. When the value of the time data added to the selected MIDI data becomes smaller than the value of the present time register, the determination becomes YES. Thus, the CPU
101
delivers the item of MIDI data to the MIDI OUT terminal
113
in step
2604
, and then shifts its control to step
2605
. If otherwise in step
2603
, the determination becomes NO, and the CPU
101
shifts its control to step
2605
.
In step
2605
, the CPU
101
inquires the sever through the receiver
107
of whether there is transmitted data for the receiving device thereof. When the database
2002
has transmitted MIDI data to the receiving device, the termination becomes YES. Thus, the CPU
101
down-loads the data in step
2606
, receives the data from the receiver
107
, stores it in the received music data buffer, and then shifts its control to step
2607
. If otherwise in step
2605
, the determination becomes NO, and the CPU
101
then terminates the process.
In step
2607
, the CPU
101
determines whether the data stored last in the received music data buffer in step
2606
is the first data received as music information (MIDI data) from the database
2002
. If the data is so, the determination becomes YES. Thus, the CPU
101
substitutes the time data added to the received first data into the present time register in step
2608
, and then terminate the process. If otherwise in step
2607
, the determination becomes NO, and the CPU
101
then terminates process.
As described above, the respective receiving devices
2003
-
2005
substitute the time data received first from the database
2002
into the respective present time registers. Thus, only by comparing the time data added to the received MIDI data with the value of the present time register, the MIDI data is processed at an appropriate timing based on the comparison whether or not the MIDI data is the performance data specified by the user or the performance data produced by the performance device
2001
. As a result, the respective receiving devices
2003
-
2005
faithfully reproduce an ensemble effected by the performance device
2001
.
While in the third embodiment the database
2002
is illustrated as transmitting two different items of music information to the performance device
2001
and the group of receiving devices
2003
-
2005
, respectively, the music information may be further divided into more items which are then transmitted to the performance device
2001
and other receiving devices
2003
-
2005
. The contents of the music information to be transmitted may be specified in accordance with a part and tone quality.
While the database
2002
is illustrated as receiving music information from the performance device
2001
, it may be used for merely transmitting music information to external devices without receiving music information from the external devices. In this case, no receiver
107
is required to be provided.
<Fourth Embodiment>
An ensemble or a contest (both are each represented as a session) cannot be held unless a plurality of performers collects at a single place—place restrictions. The fourth embodiment is intended to eliminate such restrictions and allows a plurality of performers to enjoy a session even when they do not collect in a single place.
A musical sound generator, which includes the musical sound transmitting/receiving apparatus according to the fourth embodiment, is basically the same in composition as that of the first embodiment (FIG.
1
). Therefore, also, in the fourth embodiment, the reference numerals used for the description of the first embodiment are used basically as in the second and third embodiments. Now the fourth embodiment will be described with reference to FIG.
1
.
FIG. 27
illustrates a method of using the musical sound generator of the fourth embodiment. First, referring to
FIG. 27
, the method of using the musical sound generator and the operation of the generator, which enables the use of the musical sound generator, will be described next.
Reference numerals
2701
-
2703
of
FIG. 27
denote musical sound generators each having the same composition as that of FIG.
1
. Arrows illustrate that the musical sound generator
2701
transmits and receives music information to and from the musical sound generators
2702
and
2703
and that the musical sound generator
2702
transmits and receives music information to and from the musical sound generators
2701
and
2703
. Like the first-third embodiments, the devices
2701
-
2703
are connected to a LAN.
When music information is transmitted to a performer at a relatively remote position, some delay will occur. Thus, in real time processing, a discrepancy in performance timing between the performers cannot be avoided in principle. That is, one performer will necessarily notice by hearing another performer's performance that there is a deviation in timing between the former performance and the latter one.
In an actual session, in order to avoid such deviation, the same melody can be performed repeatedly in such a manner that each time each performer repeats a take, starting with a performance faithful to a musical score, the contents of the respective performances are adjusted. Since in the fourth embodiment a discrepancy between the performers' performances cannot be avoided in the real time processing, and when a session, which repeats a take, is held, the respective takes are performed more appropriately as follows. Here, for convenience' sake, a session which is held with melodies corresponding to performance data which the respective devices
2701
-
2703
of
FIG. 27
have will be illustrated as an example. Since the operations of the respective devices
2701
-
2703
are basically the same, the device
2701
will be described as an example.
The performance data does not contain the intention of performance of the respective performers and has a plurality of parts. When the performance data is specified by the user (performer) of the musical sound generator
2701
with the switch group
115
, it is read by the CPU
101
from the ROM
103
, and then stored in an area provided in the RAM
104
(hereinafter referred to as a music track buffer).
The user (performer) of the musical sound generator
2701
, for example, specifies a mute for a sound of a part performed by the user to reproduce the performance data (minus one performance) and performs a desired part to the performance. The CPU
101
receives MIDI data indicative of the performance contents of the part from the MIDI IN terminal
114
, adds to the MIDI data time data which specifies timings of processing or reproducing the MIDI data at the receiving devices, and transmits resultant data as music information to the respective devices
2702
and
2703
as requested.
Time data representing a processing timing whose reference is the start of the performance is added to the MIDI data of the performance data. Thus, a time recorded since the start of reproduction of the performance data as a reference is added as time data to the MIDI data to be transmitted. In order to record time, a performance time register as a variable is used.
Similarly, the musical sound generators
2702
and
2703
transmit the music information indicative of the contents of the performances effected by the respective users to other devices. When the musical sound generator
2701
receives the music information transmitted by the musical sound generators
2702
and
2703
, it stores the received music information for each generator (corresponding to a part (track)) in an area (hereinafter referred to as a received music data buffer) provided in the RAM
104
.
The performance data stored in the received music data buffer is written over data corresponding to the part of the performance data stored in the music track buffer after the termination of the user's performance. The performance data stored in the music track buffer is updated with contents of the performances effected last by the respective performers (herein, two). Thus, the user of the musical sound generator
2701
can effect an ensemble with the performances which the respective users of the musical sound generators
2702
and
2703
effected last. The devices
2702
and
2703
add time data to the respective MIDI data and then transmit them. Thus, even when the updated performance data is reproduced and a related ensemble is performed, a discrepancy in timing between the performance effected by the device
2701
and the performances effected last by the devices
2702
and
2703
is avoided. As a result, the user of the musical sound generator
2701
can repeat a take comfortably while feeling as if the user were together with other performers (the users of the devices
2702
and
2703
) at a single place.
Transmission/reception and update of the performance data, as described above, are effected when the user sets a predetermined mode (hereinafter, for convenience's sake, referred to as a session mode) with the switch group
115
. In the present embodiment, in order to facilitate the update of the performance data, performance data edited in units of a part are used and stored in the ROM
103
.
The control operation of the CPU
101
of the musical sound generators
2701
-
2703
to realize their operations will be described next in detail with reference to
FIGS. 28-33
. The operations of the devices
2701
-
2703
are basically the same, and hence only the operation of the device
2701
will be described herein.
FIG. 28
is a flowchart of a musical information transmitting/receiving process effected by the CPU
101
of the musical sound generator
2701
. First, referring to
FIG. 28
, the contents of the processing by the CPU
101
will be described in detail.
The music information transmitting/receiving process is effected when the user of the musical sound generator
2701
manipulates the switch group
115
to set the session mode and to specify destination devices for performance data to be reproduced and hence the CPU
101
executes a relevant program stored in the ROM
103
. The performance data to be specified can be predetermined as a united one among the performers (users) at the devices
2701
-
2703
who hold the session.
First, in step
2801
the CPU
101
effects initialization which includes clearing the value in the performance time register, substituting predetermined values into the respective variables and securing in the RAM
104
music track buffers used for temporarily storing performance data read out from the ROM
103
and a received music data buffer which temporarily hold the received performance data. Then in step
2802
, the CPU
101
reads out the performance data specified by the user from the ROM
103
, and then stores it in the music track buffer.
Then in step
2803
, the CPU
101
updates the value of the performance time register as requested and then effects the label
1
process which includes transmission/reception of performance data to/from other devices
2702
and
2703
, and update and reproduction of the performance data.
Then in step
2804
, the CPU
101
determines whether the user has instructed the device
2701
to terminate the session. When the user manipulates the switch group
115
to instruct the device
2701
to release the session mode or to terminate reproduction of the performance data, the determination becomes YES and the CPU
101
then terminates the process. If otherwise n step
2804
, the determination becomes NO and the CPU
101
returns its control to step
2803
to effect the label
1
process.
As described above, the steps
2803
and
2804
compose a processing loop whose looping operation continues until the determination in step
2804
becomes YES. Thus, the device
2701
effects transmission/reception of performance data to/from the other devices
2702
and
2703
and update and reproduction of the performance data.
FIG. 29
is a flowchart of the label
1
process effected in step
2803
. Referring to
FIG. 29
, the label
2
process will be described next in detail.
First, in step
2901
, the CPU
101
determines whether one millisecond has elapsed since the value of the performance time register was updated (incremented) last. When there is a difference of a value corresponding to at least one millisecond between the value of the timer
102
updated last and the present value of the timer, the determination becomes YES. Thus, the CPU
101
increments the value of the performance time register in step
2902
, and then shifts its control to step
2903
. If otherwise in step
2901
, the determination becomes NO, and the CPU
101
shifts its control to step
2903
.
In step
2903
, the CPU
101
effects the label
2
process which includes transmission/reception of performance data to/from the other devices
2702
and
2703
and update and reproduction of the performance data. Then, the CPU
101
terminates the process.
FIG. 30
is a flowchart of the label
2
process effected in step
2803
. Referring to
FIG. 30
, the label
2
process will be described next in detail.
Data is transmitted/received through the sever between the musical sound generators
2701
-
2703
. First, in step
3001
, the device
2701
inquires the sever of whether there is data received for the device
2701
from another device
2702
or
2703
. If so, the determination becomes YES. The CPU
101
then shifts its control to step
3002
. If otherwise, the determination becomes NO, and the CPU
101
shifts its control to step
3005
.
In step
3002
, the CPU
101
downloads data from the sever through the receiver
107
. Then in step
3003
, the CPU
101
stores the down-loaded data in an area in the received music data buffer specified by the transmission source. Then, in step
3004
, the CPU
101
inquires the sever of whether there is further data to be downloaded from the sever. As a result, when the CPU
101
confirms that there is no more data to be down-loaded, the determination becomes NO. Step
3005
is next. If otherwise in step
3004
, the determination becomes YES, and the CPU
101
returns its control to step
3002
, which downloads required data.
After receiving the data from the other device
2702
or
2703
, in step
3005
the CPU
101
effects the label
3
process which includes reproducing the performance data stored in the music track buffer, and transmitting the MIDI data indicative of the contents of the performance effected by the user to the devices
2072
and
2073
as requested. Then, the CPU
101
then terminates the process.
FIG. 31
is a flowchart of the label
3
process effected in step
3005
. Referring to
FIG. 31
, the label
3
process will be described next in detail.
As described above, in the present embodiment, performance data is employed which are separated for tracks corresponding to parts in order that the performance data stored in the music track buffer can easily updated. Thus, the performance data is reproduced while the tracks for the performance data to be produced in units of a track are being changed. The tracks to be reproduced are managed by the track address register which is a variable. The reproduction of performance data effected so is realized by effecting the steps
3101
-
3106
.
First, in step
3101
, the CPU
101
determines whether the value of time data added to an item of MIDI data to be processed next among the performance data in a track specified by the value of the track address register is more than the value of the performance time register. When a processing timing specified by the time data has come, the determination becomes YES and the CPU shifts its control to step
3102
, where it delivers the MIDI data with the added time data to the MIDI OUT terminal
113
, selects as next MIDI data that positioned next to the delivered MIDI data, and then shifts its control to step
3101
. If otherwise in step
3101
, the determination becomes NO, and the CPU
101
shifts its control to step
3103
.
In step
3103
, the CPU determines whether there are still MIDI data to be processed in the track of interest. When the determination in step
3103
is NO or all the MIDI data of the performance data in that track have been processed. The CPU
101
increments the value of the track address register in step
3104
and then shifts its control to step
3105
. If otherwise, the determination becomes YES, and the CPU
101
returns its control to step
3101
, where it effects the determination about the processing timing of MIDI data to be processed next.
In step
3105
, the CPU determines whether there are still MIDI data in the track to be produced. When the value of the track address register is larger than a maximum one of the track numbers, in other words, when the performance data in all the tracks have been processed at the present time, the determination becomes NO. Thus, in step
3106
the CPU
101
clears (substitutes zero into) the track address register, and then shifts its control to step
3107
. If otherwise in step
3105
, the determination becomes YES, and the CPU
101
returns its control to step
3101
, where it effects a process for reproducing performance data in a track as a new object.
In step
3107
, the CPU determines whether MIDI IN terminal
114
has received MIDI data from the keyboard
130
. When the MIDI IN terminal
114
has output a signal indicative of reception of the MIDI data, the determination becomes YES. Thus, in step
3108
the CPU
101
receives the MIDI data from the MIDI IN terminal
114
, stores it in a temporary buffer, delivers it to the MIDI OUT terminal
113
, and then shifts its control to step
3109
. If otherwise in step
3107
, the determination becomes NO, and the CPU
101
returns its control to step
3109
. The temporary buffer is an area provided in the RAM
104
to temporarily hold the MIDI data output from the keyboard
130
.
In step
3109
, the CPU
101
effects the label
4
process, which includes transmission of the MIDI data, stored in the temporary buffer in step
3108
and completion of reproduction of the performance data. Then, the CPU
101
then terminates the process.
FIG. 32
is a flowchart of the label
4
process to be effected in step
3109
. Referring to
FIG. 32
, the label
4
process will be described in detail next.
The CPU
101
stores in the RAM
104
a list of destination devices (their addresses) which the user specified or input with the switch group
115
(hereinafter referred to also as a destination device list). The CPU
101
transmits the MIDI data input by the keyboard
130
by referring to the list. The destination device of the list is managed by a transmission address register, which includes a variable.
First, in step
3201
, the CPU
101
reads out the MIDI data stored in the temporary buffer, adds a value of the performance time register as the time data to the MIDI data, and then transmits the resulting data to a destination device of the list specified by the value of the transmission address register by adding to the data (MIDI data and time data) a header which includes the destination device address and delivering it to the transmitter
108
.
The performance time register includes a variable used for recording time in order to specify a timing for processing the MIDI data of the performance data. By adding the value of the register as time data to MIDI data, the performance of a part effected by the musical sound generator
2701
is reproduced synchronously with performance of another part effected in the destination device. Thus, even when the respective performers are in different places, they can repeat a take (session) while feeling as if they were together in a single place.
Then in step
3202
, the CPU
101
increments the value of the transmission address register. Then, in step
3203
, the CPU
101
determines whether data has been transmitted to the entire destination device. When the value of the transmission address register is larger than a maximum one of the numbers of the destination devices of the list, it is meant that the data has been transmitted to all the destination devices of the list. Thus, the determination becomes YES. Thus, in step
3204
the CPU
101
erases all the MIDI data in the temporary buffer, clears (substitutes zero into) the transmission address register, and then shifts its control to step
3205
. If otherwise in step
3202
, the determination becomes NO. Thus, the CPU
101
returns its control to step
3201
, where it transmits data to the next destination device.
There may be a case where no MIDI data is stored in the temporary buffer in the execution of the label
4
process. In this case, the CPU
101
actually does not effect the steps
3201
-
3204
, but shifts its control to step
3205
.
In step
3205
, the CPU
101
determines whether there are MIDI data which are not yet processed among the performance data stored in the music track buffer. If so, the determination becomes YES and the CPU
101
then terminates the process. If otherwise, the determination becomes NO, and the CPU
101
then shifts its control to step
3206
.
In step
3206
, the CPU
101
effects the label
5
process which includes copying the performance data received from the other devices
3207
and
3203
into the performance data stored in the music track buffer as requested. Then, the CPU
101
terminates the process.
As described above, in the present embodiment, it is supposed that the user effects an ensemble with a performance, which includes reproduction of the performance data. Thus, the CPU
101
updates the performance data when the reproduction of the performance data is completed. Thus, the respective performers are capable of adjusting their respective performances to others performances.
FIG. 33
is a flowchart of the label
3
process effected in step
3206
. Referring to
FIG. 33
, the label
5
process will be described in detail. As described above, the CPU
101
of the generator
2701
stores the performance data received from the other musical sound generators
2702
and
2703
separately for the respective generators (parts) in the received music data buffer. Thus, the received performance data are copied sequentially in units of a generator (part) into the performance data stored in the music track buffer. The performance data to be copied is managed by the transmission address register because the performance data is supposed to be received from the respective destination devices of the list.
First, in step
3301
, the CPU
101
writes over a track specified by the value of the transmission address register performance data in the received music data buffer corresponding to the track among the performance data of the music track buffer. Thus, performance data for one part is copied. Of course, this coping is not effected when there are no performance data to be copied in the received music data buffer.
Then, in step
3302
, the CPU
101
increments the value of the transmission address register. Then, the CPU
101
shifts its control to step
3303
, where it determines whether all the performance data stored in the received music data buffer have been copied. When the value of the transmission address register is larger than a maximum one of the numbers of the destination devices of the list, it is meant that all the performance data received from the destination devices of the list have been copied. Thus, the determination becomes YES, and the CPU
101
shifts its control to step
3304
. If otherwise in step
3303
, the determination becomes NO, and the CPU
101
returns its control to step
3301
, where it copies another performance data in the received music data buffer into the performance data of the music track buffer.
As described above, the steps
3301
-
3303
compose a processing loop whose looping operation updates the performance data stored in the music track buffer in units of a part (device).
After the determination in step
3303
becomes YES, the CPU
101
clears the values of the transmission address register and the performance time register (step
3304
,
3305
). Then, the CPU
101
then terminates the process.
When the label
5
process is terminated, the label
1
process in step
2803
of the music information transmitting/receiving process of
FIG. 28
is also terminated. When the determination in step
2804
is NO, that is, when the user does not instruct the device to stop the performance, the user is forced to start the next performance immediately after the present performance is effected. However, that is not desirable because the respective performer's circumstances are ignored. Thus, when the reproduction of the performance data is completed, the CPU
101
shifts its control from step
2804
to step
2893
after predetermined conditions are satisfied, for example, a predetermined time after the reproduction of the performance data was terminated or when all the performers have manually expressed that they are ready for the next processing. In that case, the respective performers can repeat a take (session) as if they were together in a single place.
While in the fourth embodiment the secession held by the three performers is illustrated as an example, of course, the number of performers is not limited to three. While the performance data is illustrated as being updated in each session, the performance data may be updated according to another criterion, for example, at predetermined intervals of time. In that case, a practice time may be given to each of the performers to adjust their respective performances.
While in the fourth embodiment one device is illustrated as transmitting/receiving music information to/from a plurality of other devices, it may transmit/receive the music information to/from one device. In addition, one of transmission/reception of the music information may be selected in accordance with each performer's ability.
While the first-fourth embodiments are realized as devices provided in the musical sound generators, the apparatuses in which the first-fourth embodiments are included are not limited to electronic musical instruments and other musical sound generators such as various controllers and sequencers. They may be provided on personal computers. Of course, the apparatuses in which the respective inventive devices are provided are not necessarily required to have all the functions of transmitting/receiving the music information, but may include one of the functions of transmitting/receiving the music information depending on respective environments where they are supposed to be used.
Provision of the inventive devices in the personal computers is achieved by loading on the computers programs which realizes the above operations on the computers. The programs may be recorded and distributed in portable recording mediums such as CD-ROMs and floppy desks or obtained through some telecommunication lines from external devices.
Claims
- 1. A music information transmitting apparatus comprising:event data acquiring means for acquiring event data indicating the contents of a performance effected by a user; event data transmitting means for transmitting music information obtained by adding first time data indicating a timing which a receiving end should process to the event data obtained by the event data acquiring means; waveform data acquiring means for acquiring acoustic waveform data; waveform data transmitting means for transmitting to the receiving end music information acquired by the waveform data acquiring means; and time data transmitting means for transmitting as music information second time data specifying a timing at which the receiving end should process waveform data transmitted by the waveform data transmitting means.
- 2. The music information transmitting apparatus according to claim 1, wherein said waveform data transmitting means transmits the waveform data acquired by said waveform data acquiring means along with serial data representing the order of the transmitted waveform data.
- 3. The music information transmitting apparatus according to claim 1, wherein said time data transmitting means transmits size data representing a size of the waveform data transmitted by said waveform data transmitting means in addition to the second time data.
- 4. A music information receiving apparatus comprising:receiving means for receiving music information; a music data buffer, responsive to the receiving means receiving event data and first time data as the music information, for storing the received event data and first time data; a waveform buffer for storing waveform data; storage controlling means, responsive to the receiving means receiving waveform data as the music information, for storing the received waveform data in the waveform buffer; waveform processing means, responsive to the receiving means receiving second time data as the music information, for processing the waveform data stored in the waveform buffer at a timing specified by the second time data; a musical-sound generating time register for storing the received second time data as a musical sound generating time; incrementing means for incrementing the musical sound generating time, stored in the musical-sound generating time register, at predetermined timings; and event processing means for processing the event data stored in the music data buffer at a timing determined on the basis of the musical sound generating time stored in the musical-sound generating time register and the first time data stored in the music data buffer.
- 5. The music information transmitting apparatus according to claim 4, wherein said storage controlling means comprises storage means for storing reception serial data representing the order of received waveform data, and wherein when transmission serial data representing the order of the transmitted waveform data is added to waveform data received by said receiving means and only when said transmission serial data coincides with the reception serial data stored in said storage means, said storage means stores the waveform data in said waveform buffer.
- 6. The music information transmitting apparatus according to claim 4, wherein said waveform processing means comprises storage means for storing reception size data representing a size of the received waveform data, and wherein when transmission size data representing a size of transmitted waveform data is added to the second time data received by said receiving means and only when said transmission size data coincides with the reception size data stored in said storage means, said waveform processing means processes the waveform data at a timing specified by the second time data.
- 7. A music information editing apparatus comprising:transmission requesting means for transmitting a transmission request to a plurality of external devices; receiving means, responsive to the transmission request transmitted by the transmission requesting means, for receiving from the plurality of external devices music information which comprises event data representing contents of an event in a performance and time data representing a timing for processing the event data added to the event data; music information storing means for storing the music information received by the receiving means; and music information editing means for rearranging the music information stored in the music information storing means in accordance with a processing sequence specified by the time data of the music information.
- 8. A music information transmitting apparatus comprising:music information storing means for storing music information which comprises event data representing contents of an event in a performance and first time data representing a timing for processing the event data added to the event data; music information processing means for processing and reproducing an event of the music information stored in the music information storing means; event data acquiring means for acquiring event data representing contents of a performance effected by a user during the time when the music information stored in the music information storing means is processed by the music information processing means; time data adding means for generating second time data representing a timing for processing the event data acquired by the event data acquiring means on the basis of the first time data of the music information stored in the music information storing means, and for adding the generated second time data to the event data acquired by the event data acquiring means; first transmission means for transmitting as music information the event data and the second time data added to the event data by the time data adding means; and second transmission means for transmitting the music information, stored in the music information storing means, at a timing based on the second time data added to the event data transmitted by the first transmission means.
- 9. The music information transmitting apparatus according to claim 8, wherein said music information storing means comprises a further transmission means for transmitting music information stored therein to said music information processing means, and said music information processing means comprises receiving means for receiving the music information transmitted by said further transmission means.
- 10. The music information transmitting apparatus according to claim 9, wherein said time data adding means generates the time data representing the timing for processing the event data, based on the time data added to the event data first received by said receiving means, and adds the generated time data to the event data acquired by said event data acquiring means.
- 11. The music information transmitting apparatus according to claim 8, wherein said second transmission means transmits the music information at a timing based on the time data added to the event data transmitted first by said first transmission means.
- 12. A music information transmitting-receiving apparatus comprising:receiving means for receiving music information transmitted by a plurality of external devices; music information storing means having a plurality of storage regions corresponding to the plurality of external devices, respectively; storage controlling means, responsive to reception of music information by the receiving means, for storing the received music information in a corresponding storage region of the music information storing means; music information processing means for processing and reproducing an event of the music information stored in the music information storing means; event data acquiring means for acquiring event data representing contents of a performance effected by a user during time when the music information stored in the music information storing means is processed by the music information processing means; and transmission means for transmitting the event data acquired by the event data acquiring means to the plurality of external devices, respectively.
- 13. A recording medium which contains a computer readable program for:acquiring event data indicating contents of a performance effected by a user; transmitting music information obtained by adding first time data indicating a timing which a receiving end should process to the acquired event data; acquiring acoustic waveform data; transmitting to the receiving end the acquired acoustic waveform data as music information; and transmitting as music information second time data specifying a timing at which the receiving end should process the transmitted acoustic waveform data.
- 14. A recording medium which contains a computer readable program for:receiving music information; in response to the reception of event data and first time data as the music information, storing the received event data and first time data in a music data buffer; in response to the reception of waveform data as the music information, storing the received waveform data in a waveform buffer; in response to the reception of second time data as the music information, reproducing the waveform data stored in the waveform buffer, at a timing specified by the received second time data; storing the received second time data as a musical sound generating time; incrementing a musical-sound generating time, stored in a musical-sound generating time register, at predetermined timings; and reproducing the event data stored in the music data buffer at a timing determined on the basis of the musical sound generating time stored in the musical-sound generating time register and the first time data stored in the music data buffer.
- 15. A recording medium which contains a computer readable program for:transmitting a transmission request to a plurality of external devices; in response to the transmitted transmission request, receiving from the plurality of external devices music information which comprises event data representing the contents of an event in a performance and time data representing a timing for processing the event data added to the event data; storing the received music information in a music information storage memory; and rearranging the music information stored in the music information storage memory in accordance with a processing sequence specified by the time data of the music information.
- 16. A recording medium which contains a computer readable program for:processing and reproducing an event of music information stored in a music information storage memory, the music information comprising event data representing contents of an event in a performance and first time data representing a timing for processing the event data added to the event data; acquiring event data representing contents of a performance effected by a user during the time when the music information stored in the music information storage memory is reprocessed; generating second time data representing a timing for reprocessing the acquired event data on the basis of the first time data of the music information stored in the music information storage memory, and for adding the generated second time data to the acquired event data; transmitting as music information the event data and the second time data added to the event data; and transmitting the music information, stored in the music information storage memory, at a timing based on the second time data added to the transmitted event data.
- 17. A recording medium which contains a computer readable program for:receiving music information transmitted by a plurality of external devices; in response to the reception of music information, storing the received music information in a corresponding storage region of a music information storage memory; processing and reproducing an event of the music information stored in the music information storage memory; acquiring event data representing contents of a performance effected by a user during the time when the music information stored in the music information storage memory is reprocessed; and transmitting the acquired event data to the plurality of external devices, respectively.
Priority Claims (1)
Number |
Date |
Country |
Kind |
10-360207 |
Dec 1998 |
JP |
|
US Referenced Citations (6)
Foreign Referenced Citations (5)
Number |
Date |
Country |
2 296 123 |
Jun 1996 |
GB |
55-12967 |
Jan 1980 |
JP |
55-12968 |
Jan 1980 |
JP |
55-12969 |
Jan 1980 |
JP |
55-25049 |
Feb 1980 |
JP |