This invention relates to mixing music collaboratively in three-dimensional virtual space.
The ubiquitous availability of broadband internet in the home along with ever-increasing computer power is driving the use of the internet for entertainment and paving the way for demanding multimedia applications delivered over the internet. This trend has created new opportunities for online collaboration, opportunities that just a few years ago were not possible for both technical and economic reasons. Among the many new types of networked entertainment genres, online musical collaboration holds great potential to overcome the limitations of conventional musical collaboration and appreciation.
For more than 50 years advances in digital technology have enabled musicians and engineers to create new ways to make and perform music. Such advances have resulted in electronic musical instruments (e.g. sound samplers, synthesizers), which offer new opportunities for musical expression and creativity. Musicians can create a musical composition without having to use a single traditional instrument. Instead, electronic musical compositions are assembled out of pre-recorded sound samples and computer generated sounds modulated with filters, then played back from a computer. Proficiency in traditional musical instruments is no longer a prerequisite for creative musical expression.
Virtual reality allows us to imagine new paradigms for musical performance and creativity, by allowing people to collaborate remotely in real-time. Feelings of co-presence (the sense that a collaborator is experiencing the same set of perceptual stimuli at the same time) are essential for this creative process to occur, which virtual worlds are perfect for delivering. However, musical collaboration in a virtual world has historically been difficult to achieve because of the need for collaborators to play their music to a common beat, something that would require near zero latency across the data network. What is needed is a system of combining musical decisions across a network that syncs all decisions to the same beat without sacrificing the user's sense of immediacy.
The present invention enables clients (users or other users) to collaboratively mix musical samples and computer-generated sounds in real-time in a three-dimensional virtual space. Each user is able to independently make musical choices and hear other users' musical choices. For each user, the volume and direction of music coming from another user or other sound-emitting entity, is dependent on how far away that entity is in the virtual space, as well as the angle required to turn and face the entity. Further, if a user moves towards another user in the virtual space, their music becomes louder to the other user and vice versa. Correspondingly, if the original, local user remains stationary facing one direction and a second, remote user who is playing music moves from left to right across the local user's field-of-view, the music emanating from the remote user will pan from left to right in the local user's unique musical mix (‘Mix’).
The invention overcomes problems of latency between users by loading all musical samples (‘Samples’) to the user before collaboration begins. Every Client has a graphical interface through which they listen to a library of musical Samples (‘Library’) and select individual Samples to play inside the musical-mixer (‘Mixer’). In the Mixer a user can adjust parameters for individual Samples such as raise or lower the volume of a Sample (‘Volume’), or enable effects that distort the sound of individual samples (‘Effects’). This information is then combined by the client application with the information pertaining to the musical choices of all other users in the virtual space in such a way that the volume and direction of sounds played by other users reflects their relative position in virtual space. All repeating Samples (‘Loops’) are synced by the server and/or client application so that they begin at the same time for that local user.
All data pertaining to the musical choices of users in virtual space is given a time value (‘Time-Stamped’) then recorded to a data file (‘Data File’) that can be retrieved at a later time to play again within the game (‘Playback’) or used to produce a digital audio file (such as an MP3 or other digital format) that can be played outside of the game.
In one embodiment of the invention users are able to listen to a musical performance (‘Concert’) with other users and contribute to the music using their own Graphical Interface without being heard by other users. This unique musical Mix can be recorded so that the user can Playback the Mix at a later time and/or produce an audio recording of the Mix including their own contribution to the performance.
The system provides each user with a client application for combining the musical decisions of all users into a unique musical mix. The system includes a local client and a remote client. The system includes a system server operatively connected to each client application to receive position data and audio data from the local client and the remote client. A graphical interface is provided to each user, by which that user can make musical decisions. The client application generates a unique musical mix based on position data and audio data for each user.
The invention description below refers to the accompanying drawings, of which:
A system is described that combines virtual world interaction with creative musical expression to enable collaborative music-making in virtual space in the absence of a low-latency data connection and requiring no previous musical background or knowledge. The system draws data from a “virtual world”, which as used herein refers to an online, computer-generated environment for a user to guide his or her ‘Avatar’, or digital representation of their physical selves to accomplish various goals. The user, through a client application, accesses a computer-simulated world that presents perceptual stimuli to the user. The user can manipulate elements of the modeled world and thus experience ‘Telepresence’, the sense that a person is present, or has an effect at a location other than their true location. The virtual world can simulate rules based on the real world or a fantasy world. Example rules are gravity, topography, locomotion, real-time actions, and communication. Communication between users ranges from text, graphical icons, visual gesture, sound, and additionally, forms using touch, voice command, and balance senses. Typical virtual world activities include meeting and socializing with other avatars (graphical representation of a user), buying and selling virtual items, playing games, and creating and decorating virtual homes and properties.
While in
Stereophonic sound (‘Stereo’) refers to the distribution (‘Pan’) of sound using two or more independent audio channels so as to create the impression of sound heard from various directions, as in natural hearing. For this explanation we limit the number of audio channels to two (Left and Right), however the system is capable of distributing sound over a limitless number of channels.
In one embodiment of panning in a stereo mix, the sound appears in only one channel (Left or Right alone). If the Pan is then centered, the sound is decreased in the louder channel, and the other channel is brought up to the same level, so that the overall ‘Sound Power Level’ is kept constant. In
As shown in
Shown in
All users 111, 112, and 113, respectively transmit, via datastreams 315, 316, and 317, X, Y & Z-axis Coordinates along with data pertaining to which samples are being played at what volume and with which effects to the system server 325 via datastream 321. Server then in turn sends each Client data pertaining to the position and musical arrangement of all other Users as these parameters change via datastream 330. This data is respectively sent to each user 111, 112 and 113 via datastreams 331, 332 and 333. This information is used by either a system application 326 residing on the server (with a position calculator 327 and sound calculator 328), or a client application 310 local to the user (with a position calculator 311 and sound calculator 312), to create a live musical Mix. The local user 111 also includes a display interface 313 for displaying the virtual space, as well as audio output 314 for playing the audio corresponding to the display.
The division of tasks between the system server application 326 and the client application 310 are highly variable. The tasks have been described as occurring by a particular application for illustrative and descriptive purposes, however either application can perform the various tasks of the system. Additionally, third party applications can interface via the network for billing, social networking, sales of items (both real and virtual items), interface downloads, marketing or advertising.
The client application uses a generic 3D engine to visually display other users in virtual space. In an exemplary embodiment of the system the Papervision 3D-Engine is used to position users in virtual space, and Flash is used for the musical Sampler. The Sampler has access to all Sounds that can be emitted by users in virtual space. The client application syncs all Loops so that the Loops begin and end playing in a synchronized manner regardless of which Entity is emitting that Loop.
The client application can either play Hits immediately or create a list of Hits to be played on the next available fraction of a beat. By waiting for the next available fraction of a beat the client application ensures all Samples are played in a rhythmical manner.
The resulting musical mix of combining musical selections of other users relative to their distance and direction from a local user in virtual space is sent to the local user's audio output 314 based upon both library and mixer inputs.
All actions within Mixer are combined with data pertaining to the musical selections of all other Users and their distance and direction from LocalUser in the virtual space, and the resulting list of data is recorded by either the system server via datastream 340 into a database 350 as data files 355, or by client application 310 into database 351 as data files 356. Data files 355 and 356 can be retrieved at a later time for Playback or used to produce a Digital Audio File. The database 350 also includes the musical mixes 360 generated by the system application, as well as position data 370 and audio data 380. The database 351 includes musical mixes 361 generated by the client application, as well as position data 371 and audio data 381. The volume of each Sample is calculated by adding together the contributions to that Sample by all Users in the Virtual space (‘Sound Calculation’), as described in greater detail below.
Parameters of sound calculation include:
Relative Distance and Relative Direction can be calculated separately from the overall Sound Calculation and then referenced when required, or calculated as a part of the Sound Calculation itself. Some generic 3D engines (e.g. Unity Engine) calculate these values as part of their basic functions. These can therefore be accessed by the client application when required. In an illustrative embodiment these values are calculated independently of the Sound Calculation, in a set of calculations known as the ‘Position Calculation’.
These values are stored in the system database, to be referenced by the Sound Calculation procedure as necessary. Note that the relative distance calculation is required for the mono-channel mix, while the stereo mix needs the relative direction of the foreign entities as well. For the purpose of calculating relative distance and direction, LocalUser can be defined as the local user's avatar, or the camera that is filming the virtual space associated with that avatar, or a combination of the two (for example the position of the avatar and direction of the camera). Notably, as used herein the term LocalUser refers to the position of the local user avatar and direction that the avatar is facing.
Referring back to
h22=(X12˜X14)2+(Z12˜Z14)2
h22=32+52
h2=√34
h2=5.83095
The direction of ClientTwo from the local user can be calculated according to a variety of procedures, for example using the inverse trigonometric functions. Arcsin can be used to calculate an angle from the length of the difference along the X-axis and the length of the hypotenuse.
Arccos can be used to calculate an angle from the length of the difference along the Z-axis and the length of the hypotenuse.
Arctan can be used to calculate an angle from the length of the difference along the X-axis and the length of the difference along the Z-axis.
Because the local user is facing in the same direction as the Z-axis in
The current system uses the law of cosine to calculate the relative offset position vector of the other users from the local user. The offset vector contains both relative direction, and distance. The law of cosines is equivalent to the formula;
{right arrow over (X)}·{right arrow over (Z)}=∥{right arrow over (X)}∥∥{right arrow over (Z)}∥cos α2
which expresses the dot product of two vectors in terms of their respective lengths and the angle they enclose. Returning to
In an illustrative embodiment, a client application sends a request to the Server for a list of users in the corresponding virtual space, along with their ‘AudioData’ and ‘PositionData’ at step 512. AudioData refers to the parameters of sound emanating from a user before position is taken into account. PositionData refers to the direction and/or distance of the remote user from the local user. In another embodiment of the system the PositionData is calculated as part of the Sound Calculation using the Coordinates of each user to calculate Distance and Direction, as discussed herein. A user may be a foreign user (in which case the AudioData refers to the state of the Client's Mixer), or it may be a computer generated Entity such as a Plant or an Animal.
The Server obtains a list of all users, including his or her AudioData and PositionData, to be used for the Sound Calculation at step 514. The client application then combines AudioData for Samples with matching SoundIDs to give the ‘GlobalAudioData’ at step 514. SoundIDs are the names given to each unique Sample or Computer Generated Sound that can be accessed by the client application. The resulting GlobalAudioData is then recorded with the time of the Calculation (‘TimeStamp’) and retained at step 516 for Playback and/or the creation of a Digital Audio File. With each cycle GlobalAudioData is separated by SoundType at step 518 and used to update the Volume of each Sample playing in each Channel as well as triggering Hits.
In an alternate embodiment of the system, the Sound Calculation can be split between the server application and the client application. The server application combines AudioData for all matching SoundIDs (Sample_A, Sample_B, Sample_C, etc.) in the virtual space apart from those emanating from the local user to give an ‘External’ Volume for each Sound. This new list of ExternalAudioData contains a single Volume value for every unique SoundID, which is then passed to the client application to be combined with the Volume values of sounds being played by LocalUser to give the Global Volume for each Sound.
The resulting list of AudioData is then separated by SoundType (i.e. Loop, Hit or Computer Generated Sound). Volumes for all Loops being played by the Application are adjusted to match the latest AudioData list at step 520. Hits are either triggered immediately or placed into a queue by the Application to be triggered on the next available fraction of a beat at the Volume and Pan as calculated by Sound Calculation at step 522.
02/14/2009 14:31 hrs 21 s 62 ms ClientTwo, h=5.83, SampleA=1.00 SampleB=1.00 SampleC=0.00
02/14/2009 14:31 hrs 21 s 62 ms ClientThree, h=2.24, SampleA=0.00 SampleB=0.00 SampleC=1.00
In this example ‘02/14/2009 14:31 hrs 21 s 62 ms’ represents the TimeStamp by the Server, ‘Client-2’ represents the EntityID, ‘h’ represents the Distance of that Entity from LocalUser, ‘Sample-A’ represents the SoundID, and the value of the SoundID represents the Volume (between 0.0 and 1.0).
Volumes are then adjusted to account for the Distance of the Entity playing the Sound from the local user at step 612. Returning to
02/14/2009 14:31 hrs 21 s 62 ms ClientTwo, SampleA=0.17 SampleB=0.17 SampleC=0.00
02/14/2009 14:31 hrs 21 s 62 ms ClientThree, SampleA=0.00 SampleB=0.00 SampleC=0.45
The Audio values of the local user can now be added to the overall list of Audio values;
02/14/2009 14:31 hrs 21 s 62 ms ClientTwo, SampleA=0.17 SampleB=0.17 SampleC=0.00
02/14/2009 14:31 hrs 21 s 62 ms ClientThree, SampleA=0.00 SampleB=0.00 SampleC=0.45
02/14/2009 14:31 hrs 21 s 62 ms ClientOne, SampleA=1.00 SampleB=0.00 SampleC=0.00
All matching SoundIDs are then combined at step 614 to give Global Volume values for every SoundID;
02/14/2009 14:31 hrs 21 s 62 ms SampleA=1.17 SampleB=0.17 SampleC=0.45
All volume values are multiplied by an overall calibration figure at step 616 that serves to reduce the Volume of each user so that no one user can achieve 100% Volume on its own regardless of its distance from the local user. This can occur at any step during the procedure, or not at all in certain embodiments. In the current version of the system the calibration figure is 0.8;
02/14/2009 14:31 hrs 21 s 62 ms SampleA=0.96 SampleB=0.16 SampleC=0.32
This set of Audio values is recorded in a list at step 618 for Playback, as well as used for adjusting the live musical Mix at step 620. To adjust the live musical Mix SoundIDs are separated by SoundType. If the SoundType is a Loop the Loop is already being played by the Application and only the Volume need be adjusted to match the new value. If the SoundType is a Hit that Hit can be played immediately at the calculated Volume in each Channel or stored in a list to be queried by the Application on the next available beat.
where VL is the Volume of Sample A in the Left Channel and VR is the Volume of Sample A in the Right Channel of the local user 111.
If we take
In this example ‘02/14/2009 14:31 hrs 21 s 62 ms’ represents the TimeStamp by the Server, ‘ClientTwo’ represents the EntityID, ‘h’ represents the Distance of that user from LocalUser, ‘α’ represents the angle the local user would need to turn to face that user, ‘SampleA’ represents the SoundID, and the value of the SoundID represents the Volume at which the SoundID is being played (between 0.0 and 1.0).
Similarly to the procedure of
‘SampleAch1’ refers to the contribution of specified EntityID to the Volume of SampleA in the Left Channel of the local user. ‘SampleAch2’ refers to the contribution of specified EntityID to the Volume of SampleA in the right Channel of the local user. The Audio values of the local user are now added to the overall list of Audio values;
All matching SoundIDs are then combined for each Channel to give Global Volume values for every SoundID for every Channel at step 714;
These values are then multiplied by an overall calibration figure at step 716 that reduces the volume of each user so that no single user achieves full volume on his or her own client application;
Similar to the procedure of
In an illustrative embodiment of the system the contributions of all users in the virtual space, including the original User, are calculated dynamically by each client application into a unique musical Mix. In another embodiment of the system the musical selections for each user are combined by server application to give ‘External’ Audio values for each unique SoundID, which are then sent to the client application to be combined with the contributions of the local user to give the Global Audio values for the same SoundIDs.
Volumes are then adjusted to account for the Distance of the Entity playing the Sound from the LocalUser across two channels depending on the relative Direction of that Entity.
All matching SoundIDs are then combined for each Channel to give External Audio values for each unique SoundID for each Channel at step 814;
This list is then passed from the server application to the client application where the Audio values of the local user are now added to the External Audio values at step 816;
Combining the External Audio values with the Audio values for LocalUser gives the Global Audio values.
These values are then multiplied by an overall calibration figure at step 818 that reduces the volume of each user so that no single user can achieve full volume on his or her own. In the current version this calibration figure is 0.8;
The resulting set of Audio values is recorded in a list at step 820 for Playback, as well as used for adjusting the live musical Mix. SoundIDs are separated by SoundType at step 822 and used to update Volumes and trigger sounds in the Mix.
A variety of single computer languages, or in combination, can be employed to implement the system described herein. Exemplary computer languages include, but are not limited to, C, C++, C#, Java, JavaScript, and Actionscript, among other computer languages readily applicable by one having ordinary skill.
Reference is now made to
According to an exemplary screen display, a user can select the box 917 which is to “Remember me on this computer”, to remember the username on the computer. Also, if a user does not remember their password, there is a link provided to issue a new password—“Forgot Password?” 918.
The home page screen 900 also includes a series of links to other functions, not shown, but described herein. There is a “For Parents” link 920 that provides parents with information about the overall system, specifically for the parents of users of the system. In an illustrative embodiment, the system is designed to be used by a younger age group of people, but can be employed by any group interested in collaborative music-making. There is an “About” link 921, which provides visitors with information about the overall system. There is a “News” link 922 that navigates a user to a news page containing further related information. There is also a “Terms of Use” link 923 to provide users with the terms for using the overall system. The screen also includes a “Privacy Policy” link 924 that displays the system privacy policy, and finally a “Help” link 925, which provides users with resources for solving any problems they may have with the system.
A user desiring to create a new client for the overall system is directed to a screen such as exemplary create display screen 1000 of
As described hereinabove, the interface includes a plurality of hits 1230 and loops 1280 for collaborating and setting parameters for a musical mix.
It should be clear from the above description that the system and method provided herein affords a relatively straightforward, aesthetically pleasing and enjoyable interface and application for collaborating to create a musical mix in virtual space. The exemplary procedures and images are for illustrative and descriptive purposes only and should not be construed to limit the scope of the invention. The various interfaces, computer languages, and audio outputs for the illustrative system should be readily apparent to those of ordinary skill.
The foregoing has been a detailed description of illustrative embodiments of the invention. Various modifications and additions can be made without departing from the spirit and scope of this invention. Each of the various embodiments described above may be combined with other described embodiments in order to provide multiple features. Furthermore, while the foregoing describes a number of separate embodiments of the apparatus and method of the present invention, what has been described herein is merely illustrative of the application of the principles of the present invention. For example, the parties of the virtual space music collaboration have been largely described as users herein, however a client of the system can comprise any computer or computing entity, or other individual, capable of manipulating the provided interface to enable the system to perform the musical collaboration. Additionally, the positioning, layout, size, shape and colors of each screen display are highly variable and such modifications are readily apparent to one of ordinary skill. Accordingly, this description is meant to be taken only by way of example, and not to otherwise limit the scope of this invention.
This application claims the benefit of copending U.S. Provisional Application Ser. No. 61/306,914, filed Feb. 22, 2010, entitled SYSTEM AND METHOD FOR MUSICAL COLLABORATION IN VIRTUAL SPACE, the entire disclosure of which is herein incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5020101 | Brotz et al. | May 1991 | A |
5768350 | Venkatakrishnan | Jun 1998 | A |
6175872 | Neumann et al. | Jan 2001 | B1 |
6212534 | Lo et al. | Apr 2001 | B1 |
6353174 | Schmidt et al. | Mar 2002 | B1 |
6482087 | Egozy et al. | Nov 2002 | B1 |
6490359 | Gibson | Dec 2002 | B1 |
6598074 | Moller et al. | Jul 2003 | B1 |
6653545 | Redmann et al. | Nov 2003 | B2 |
6898291 | Gibson | May 2005 | B2 |
6898637 | Curtin | May 2005 | B2 |
7297858 | Paepcke | Nov 2007 | B2 |
7405355 | Both et al. | Jul 2008 | B2 |
7518051 | Redmann | Apr 2009 | B2 |
7649136 | Uehara | Jan 2010 | B2 |
7714222 | Taub et al. | May 2010 | B2 |
7875787 | Lemons | Jan 2011 | B2 |
7994409 | Lemons | Aug 2011 | B2 |
8035020 | Taub et al. | Oct 2011 | B2 |
20010007960 | Yoshihara et al. | Jul 2001 | A1 |
20010042056 | Ferguson | Nov 2001 | A1 |
20020091847 | Curtin | Jul 2002 | A1 |
20020095392 | Ferguson et al. | Jul 2002 | A1 |
20020165921 | Sapieyevski | Nov 2002 | A1 |
20030091204 | Gibson | May 2003 | A1 |
20030164084 | Redmann et al. | Sep 2003 | A1 |
20040240686 | Gibson | Dec 2004 | A1 |
20050120865 | Tada | Jun 2005 | A1 |
20050173864 | Zhao | Aug 2005 | A1 |
20060112814 | Paepcke | Jun 2006 | A1 |
20060123976 | Both et al. | Jun 2006 | A1 |
20070028750 | Darcie et al. | Feb 2007 | A1 |
20070039449 | Redmann | Feb 2007 | A1 |
20070044639 | Farbood et al. | Mar 2007 | A1 |
20070140510 | Redmann | Jun 2007 | A1 |
20070255816 | Quackenbush et al. | Nov 2007 | A1 |
20080047413 | Laycock et al. | Feb 2008 | A1 |
20080060499 | Sitrick | Mar 2008 | A1 |
20080060506 | Laycock et al. | Mar 2008 | A1 |
20080190271 | Taub et al. | Aug 2008 | A1 |
20080201424 | Darcie | Aug 2008 | A1 |
20080215681 | Darcie et al. | Sep 2008 | A1 |
20080264241 | Lemons | Oct 2008 | A1 |
20080271589 | Lemons | Nov 2008 | A1 |
20090034766 | Hamanaka et al. | Feb 2009 | A1 |
20090070420 | Quackenbush | Mar 2009 | A1 |
20090156179 | Hahn et al. | Jun 2009 | A1 |
20090172200 | Morrison et al. | Jul 2009 | A1 |
20100058920 | Uehara | Mar 2010 | A1 |
20100132536 | O'Dwyer | Jun 2010 | A1 |
20100146405 | Uoi et al. | Jun 2010 | A1 |
20100212478 | Taub et al. | Aug 2010 | A1 |
20100216549 | Salter | Aug 2010 | A1 |
20100319518 | Mehta | Dec 2010 | A1 |
20100326256 | Emmerson | Dec 2010 | A1 |
20110219307 | Mate et al. | Sep 2011 | A1 |
Number | Date | Country | |
---|---|---|---|
61306914 | Feb 2010 | US |