Progressively generating an output stream with realtime...

Computer graphics processing and selective visual display system – Display driving control circuitry – Controlling the condition of display elements

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C084S600000

Reexamination Certificate

active

06317123

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention generally concerns generating an output stream with real-time properties from a representation of the output stream that specifies the real-time properties of the output stream. More particularly, the invention concerns techniques for reducing the delay in beginning to generate the output stream from the representation when the representation is not monotonic with regard to time. The techniques are particularly useful in generating a stream of MIDI events from a MIDI file before the entire MIDI file has been received in the device that is generating the stream of events.
2. Description of the Prior Art
The Musical Instrument Digital Interface (MIDI) is a standard protocol for controlling electronic musical instruments such as synthesizers or the sound cards of personal computers. One common use of the protocol is permitting a musician to play more than one electronic instrument at once. The instrument that the musician is actually playing not only generates sounds, but also generates a sequence of event messages. An event message may for example be a note on message, that indicates that a note of a given pitch has started to sound or a note off message that indicates that the note has ceased sounding. Many other kinds of event messages are defined as well. Another instrument receives the event messages from the first instrument and responds by performing the actions indicated in the messages. Thus, if the message is a note on message, the other instrument will begin sounding the note, and will thus “play along with” the first instrument. For purposes of the present discussion, the event messages can be divided into two classes: the note on and note off messages and the remaining messages, which will be termed herein control messages.
The sequence of MIDI protocols to which a musical instrument directly responds is termed herein a MIDI stream. Devices which respond to a MIDI stream are termed herein MIDI devices. In a MIDI stream, time relationships between events are simply determined by when the events appear in the event stream. For example, if a note is to be held for a period of one second, the note on message for the note will appear in the MIDI stream one second before the note off message for the note appears in the stream. Since the MIDI device will start sounding the note in response to the note on message and stop sounding the note in response to the note off message, the note will be sounded for one second.
A MIDI stream may be produced not only by an electronic musical instrument, but also from a MIDI file. The MIDI file is stored in memory and is then read by a device called a MIDI controller to generate a MIDI stream. This process of reading a MIDI file and generating a MIDI stream from it is termed herein playing the MIDI file. A MIDI file is made up of a sequence of MIDI event messages separated by elapsed time descriptors. An elapsed time descriptor specifies the time that is to elapse between the time the MIDI controller places the MIDI event message that precedes the elapsed time descriptor in the MIDI stream and the time that the controller places the event message that follows the elapsed time descriptor in the MIDI stream. There are at present two standard formats for MIDI files. In one format, known as Format
0
, the file is simply a single sequence of event messages and elapsed time descriptors. In the following, such a sequence of event messages and elapsed time descriptors will be termed a track. In the other format, known as Format
1
, the file has a number of tracks. Each track corresponds roughly to a part in a piece of ensemble music. In the case of Format
0
, the MIDI controller generates the MIDI stream from the file by outputting a given event message, waiting the time specified in the elapsed time descriptor, and outputting the next event message. In the case of Format
1
, the MIDI controller generates the MIDI stream by reading the tracks “simultaneously”, that is, by outputting the event messages in each track that correspond to a given point in time in the music to the MIDI stream at that point in time. Most MIDI files are format
1
files, since the use of tracks makes it easy to modify a part or add a part. The standards for both MIDI streams and MIDI files are defined in the MIDI Specification, copyright 1983 and available from the MIDI Manufacturers' Association.
FIG. 1
shows a prior-art arrangement
101
for generating a MIDI stream from a MIDI format
1
file
103
. Midi file
103
has a header
104
which contains information such as the number of tracks. The MIDI file also contains at least one track
105
. A given track i in such a file is indicated hereinafter by
105
(
i
). Each track
105
(
i
) contains a sequence of events
106
. Each event
106
(
j
) has two parts: an event message
117
and an elapsed time descriptor
119
. The elapsed time descriptor indicates the time that is to elapse between the preceding event
106
(
j−
1) and event
106
(
j
). As can be seen from the foregoing, a given event
106
's position in file
103
may be indicated by the index of its track and its own index in the track. Event
106
(
i,j
) is thus event j in track i.
The MIDI stream
111
is generated from MIDI file
103
by MIDI controller
107
. Prior-art MIDI controller
107
does this by first writing all of the tracks
105
from file
103
into controller memory
109
, as shown by arrow
108
, and then reading all of the tracks simultaneously in the fashion just described, as shown by arrow
110
. To accomplish the simultaneous reading, MIDI controller
107
maintains a song position time value
121
which the controller can use together with the elapsed time descriptors to determine which event messages are to be output from the tracks at a given time. As would be expected from this procedure, and as shown in
FIG. 1
, MIDI stream
111
generally consists of interleaved event messages
117
from the tracks
105
. MIDI stream
111
may then be responded to by any MIDI device
113
, which then drives loudspeaker
115
to produce the sounds specified by MIDI stream
111
.
While the MIDI protocol was originally developed for electronic instruments, it is being increasingly used in computer systems. In such systems, the MIDI files are stored at a location accessible to the computer system, the MIDI controller is a program which executes in the computer system, and the MIDI device to which the MIDI controller outputs the MIDI stream is a sound board in the computer system. Even more recently, MIDI files have been included as part of World Wide Web pages that may be accessed via the Internet. The Web browsers that are used to view such pages include programs that work as MIDI controllers to play the MIDI file included in the Web page as the Web page is being viewed. The included MIDI file can thus be used to provide background music for the Web page. When a user has a Web browser that can play a MIDI file, the user can also select a link to a MIDI file from a Web page and hear the music that the MIDI file represents. An example of a Web browser that can play a MIDI file is the well-known Netscape browser with the Crescendo plug-in produced by Laboratories Technologies Corporation, 400 Research Drive, Wilmington, Mass. 01887. Netscape and Crescendo are trademarks of Netscape Communications Corporation and Laboratories Technologies Corporation, respectively.
A problem with prior-art MIDI controllers
107
is that controller
107
must load all of the tracks from MIDI file
103
being played into controller memory
109
before MIDI controller
107
can start playing MIDI file
103
. Consequently, there will always be some delay between the time that controller
107
is commanded to start playing MIDI file
103
and the time that MIDI device
113
actually begins to output music. The length of the delay will of course depend on the size of file
103
and the bandwidth of the connection upon which MIDI controller
107
is receiving file
103
. There are many case

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Progressively generating an output stream with realtime... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Progressively generating an output stream with realtime..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Progressively generating an output stream with realtime... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2609705

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.