Music event timing and delivery in a non-realtime environment
First Claim
1. A method of sending music events from an application program to one or more music processing components, comprising:
- time-stamping a plurality of music events with varying times at which the respective events are to be played, wherein the timestamp reflects any processing latency of the processing component to ensure rendering at each of the varying times, and sending the plurality of music events and their timestamps as a group to one or more music processing components prior to any of said times at which the events are to be played.
2 Assignments
0 Petitions
Accused Products
Abstract
A music generation and playback system includes an application program and a music processing component. The application program makes repeated calls to the music processing component and provides a group of music events to be sent to the music processing component during each call. Each group of events comprises a plurality of individual events and associated timestamps indicating when the events are to be played. The timestamps of the individual music events of a particular group indicate that the events are to be played at varying times subsequent to being sent to the music processing component. The music processing component exposes a latency clock interface, which indicates the earliest time at which a new music event can be rendered. The application program uses this interface to determine how far ahead of time to provide new music events, and to schedule spontaneously occurring events for playback at the earliest possible time.
-
Citations
61 Claims
-
1. A method of sending music events from an application program to one or more music processing components, comprising:
-
time-stamping a plurality of music events with varying times at which the respective events are to be played, wherein the timestamp reflects any processing latency of the processing component to ensure rendering at each of the varying times, and sending the plurality of music events and their timestamps as a group to one or more music processing components prior to any of said times at which the events are to be played. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
receiving the group of music events;
providing the individual music events of the group to a synthesizer driver at the times indicated by the timestamps of the individual music events.
-
-
5. A method as recited in claim 1, wherein the one or more music processing components comprise a software-based synthesizer.
-
6. A method as recited in claim 1, wherein the one or more music processing components comprise a hardware-based synthesizer.
-
7. A method as recited in claim 1, wherein the one or more music processing components comprise a synthesizer driver.
-
8. A method as recited in claim 1, wherein the music events comprise data structures specifying music notes.
-
9. A method as recited in claim 1, wherein the music events are out of time order within the group.
-
10. A computer, comprising:
-
an application program;
a music processing component;
wherein the application program initiates repeated calls to the music processing component and provides a group of music events to be sent to the music processing component during each call;
wherein said group of music events comprises a plurality of individual music events and associated timestamps indicating when the music events are to be played, wherein the timestamps of the individual music events of a particular group indicate that the individual music events are to be played at varying times subsequent to being sent to the music processing component. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
a synthesizer driver;
a sequencer that receives the groups of music events and that provides the individual music events to the synthesizer driver at the times indicated by the timestamps of the individual music events.
-
-
17. A computer as recited in claim 10, wherein the music processing component comprises:
-
a synthesizer;
a sequencer that receives the groups of music events and that provides the individual music events to the synthesizer at the times indicated by the timestamps of the individual music events;
wherein the synthesizer plays the music events as they are received.
-
-
18. A computer as recited in claim 10, further comprising a non-kernel-mode port object associated with the music processing component, wherein the port object has an interface that is callable by the application program to initiate the calls to the music processing component.
-
19. A computer, comprising:
-
an application program;
a music processing component;
wherein the application program initiates repeated calls to the music processing component and provides a group of music events to be sent to the music processing component during each call;
wherein said group of music events comprises a plurality of individual music events and associated timestamps indicating when the music events are to be played, wherein the timestamps of the individual music events of a particular group indicate that the individual music events are to be played at varying times subsequent to being sent to the music processing component a port object associated with the music processing component, wherein the port object has an interface that is called by the application program to initiate the calls to the music processing component. - View Dependent Claims (20, 21)
a synthesizer driver;
a sequencer that receives the groups of music events and that provides the individual music events to the synthesizer driver at the times indicated by the timestamps of the individual music events;
wherein the synthesizer driver plays the music events as they are received.
-
-
22. A computer program stored on one or more computer-readable storage media for receiving music events from an application program, which, when executed by a host computing system, implements a method comprising:
-
receiving groups of music events from the application program;
wherein each group of music events comprises a plurality of individual music events and associated timestamps indicating when the music events are to be played, wherein the timestamps of the individual music events of a particular group indicate that the individual music events are to be played at varying times subsequent to being received and reflect any inherent processing latency in rendering the music events by a synthesizer; and
providing the individual music events of the groups to the synthesizer in accordance with the timestamps of the individual music events. - View Dependent Claims (23, 24, 25)
-
-
26. A method for sending music events from an application program to one or more music processing components, the method comprising:
-
time-stamping music events with times at which the events are to be played, wherein the timestamp reflects an inherent processing latency of each of the one or more music processing components; and
sending the music events and their timestamps to a plurality of music processing components prior to the times at which the events are to be played;
playing the music events at the times indicated by their respective timestamps, regardless of the times at which the music events were sent;
wherein the plurality of music processing components all use a common time base to interpret the timestamps of the music events. - View Dependent Claims (27, 28, 29, 30)
receiving groups of time-stamped music events;
providing the individual music events of the group to a synthesizer driver at the times indicated by the timestamps of the individual music events.
-
-
29. A method as recited in claim 26, wherein the at least one of the plurality of music processing components comprises a synthesizer.
-
30. A method as recited in claim 26, wherein music events comprise data structures specifying music notes.
-
31. A computer, comprising:
-
an application program;
a plurality of music processing components;
wherein the application program is programmed to time-stamp music events with times at which the events are to be played and to send the music events to the music processing components prior to the times at which they are to be played;
wherein the music processing components play the music events at the times indicated by their respective timestamps, regardless of the times at which the music events were sent;
wherein all of the music processing components use a common time base to interpret the timestamps of the music events. - View Dependent Claims (32, 33, 34, 35)
receiving groups of time-stamped music events;
providing the individual music events of the group to a synthesizer driver at the times indicated by the timestamps of the individual music events.
-
-
34. A computer as recited in claim 31, wherein at least one of the music processing components comprises a synthesizer.
-
35. A computer as recited in claim 31, wherein music events comprise data structures specifying music notes.
-
36. A music generation system comprising:
-
an application program including music events, which are timestamped and sent to a music processing component for rendering; and
a music processing component having a latency between the time at which it receives a music event and the earliest time at which it can play the music event, wherein the music processing component being callable by the application program to return the earliest time at which the music processing component can play a new music event. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
the music processing component comprises a kernel-mode component and a non-kernel-mode component;
the non-kernel-mode component is callable to receive a group of music events to be played at varying times after said earliest time.
-
-
42. A music generation system as recited in claim 36, wherein:
-
the music processing component comprises a kernel-mode component and a non-kernel-mode component;
the non-kernel-mode component is called by an application program to return said earliest time;
the non-kernel-mode component is callable to receive a group of music events to be played at varying times after said earliest time;
wherein the non-kernel mode component passes the group of music events to the kernel-mode component.
-
-
43. A music generation system as recited in claim 36, wherein the music processing component comprises a software-based synthesizer.
-
44. A music generation system as recited in claim 36, wherein the music processing component comprises a hardware-based synthesizer.
-
45. A music generation system as recited in claim 36, wherein the music events comprise data structures specifying music notes.
-
46. A music generation system as recited in claim 36, further comprising a plurality of music processing components, wherein all of the music processing components use a common time base to interpret the timestamps of the music events.
-
47. A music generation system comprising:
-
a music processing component having a latency between the time at which it receives a music event and the earliest time at which the it can play the music event;
the music processing component having an interface that is callable to return the earliest time at which the music processing component can play a new music event;
an application program that initiates repeated calls to the music processing component and provides a group of music events to be sent to the music processing component during each call;
wherein said group of music events comprises a plurality of individual music events and associated timestamps indicating when the music events are to be played, wherein the timestamps of the individual music events of a particular group indicate that the individual music events are to be played at varying times subsequent to said earliest time at which the music processing component can play a new music event. - View Dependent Claims (48, 49, 50, 51, 52, 53, 54, 55)
the music processing component comprises a kernel-mode component and a non-kernel-mode component;
the non-kernel-mode component is callable to receive the group of music events.
-
-
51. A music generation system as recited in claim 47, wherein:
-
the music processing component comprises a kernel-mode component and a non-kernel-mode component;
the non-kernel-mode component is called by the application program to return said earliest time;
the non-kernel-mode component is called by the application program to receive the group of music events;
wherein the non-kernel mode component passes the group of music events to the kernel-mode component.
-
-
52. A music generation system as recited in claim 47, wherein the music processing component comprises:
-
a synthesizer driver;
a sequencer that receives the group of music events and that provides the individual music events to the synthesizer driver at the times indicated by the timestamps of the individual music events;
wherein the synthesizer driver plays the music events as they are received.
-
-
53. A music generation system as recited in claim 47, wherein the music processing component comprises a software-based synthesizer.
-
54. A music generation system as recited in claim 47, wherein the music processing component comprises a hardware-based synthesizer.
-
55. A music generation system as recited in claim 47, wherein the music events comprise data structures specifying music notes.
-
56. A computer program stored on one or more computer-readable storage media for playing music events, which, when executed by a host computing system, implement a method comprising:
-
calling a music processing component to determine the earliest time at which the music processing component can play new music events;
compiling a group of music events that are to be played after the earliest time at which the music processing component can play new music events;
time-stamping the music events of the compiled group with the times at which the music events are to be played by the music processing component; and
sending the compiled group of music events and their timestamps to the music processing component as a group in a single call. - View Dependent Claims (57, 58, 59, 60, 61)
the music processing component comprises a kernel-mode component and a non-kernel-mode component;
the application program calls the non-kernel-mode component obtain said earliest time;
the application program calls the non-kernel-mode component to send the group of music events;
the non-kernel-mode component passes the group of music events to the kernel-mode component.
-
-
59. A computer program as recited in claim 56, wherein the music processing component comprises a software-based synthesizer.
-
60. A computer program as recited in claim 56, wherein the music processing component comprises a hardware-based synthesizer.
-
61. A computer program as recited in claim 56, wherein the music events comprise data structures specifying music notes.
Specification