MUSIC RECORDING AND COLLABORATION PLATFORM
20230065117 · 2023-03-02
Assignee
Inventors
Cpc classification
G10H2240/175
PHYSICS
G10H1/0058
PHYSICS
G10H2220/455
PHYSICS
International classification
Abstract
Methods, systems and non-transitory computer-readable mediums for remote audio project collaboration. The method includes generating a first version of an audio project file including a reference track. The method also includes receiving a first audio track from a first user computing device. The first audio track is synced to the reference track. The method further includes generating a second version of the audio project file by adding the first audio track to the audio project file. The method also includes receiving a second audio track from a second user computing device. The second audio track is synced to the reference track. The second user computing device is remotely located from the first user computing device. The method further includes generating a third version of the audio project file by adding the second audio track to the audio project file.
Claims
1. A method for remote audio project collaboration, the method comprising: generating a first version of an audio project file, wherein the first version of the audio project file includes a reference track; sending the first version of the audio project file to a plurality of user computing devices; receiving a first audio track from a first user computing device included in the plurality of user computing devices, wherein the first audio track is synced to the reference track; generating a second version of the audio project file by adding the first audio track to the first version of the audio project file; sending the second version of the audio project file to the plurality of computing devices; receiving a second audio track from a second user computing device included in the plurality of user computing devices, wherein the second audio track is synced to the reference track, and wherein the second user computing device is remotely located from the first user computing device; generating a third version of the audio project file by adding the second audio track to the second version of the audio project file; and sending the third version of the audio project file to the plurality of computing devices.
2. The method of claim 1, wherein the reference track includes at least one selected from the group consisting of a drum line, a metronome, a harmony, and an audio beat.
3. The method of claim 1, further comprising: receiving, from the first user computing device, a change to a piece of metadata associated with the second audio track; generating a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata; and sending the fourth version of the audio project file to the plurality of computing devices.
4. The method of claim 3, wherein the piece of metadata includes an annotation associated with the second audio track.
5. The method of claim 1, further comprising: recording the first audio track on the first user computing device using a web audio application programming interface (API); determining a system latency of the first user computing device; and adjusting a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
6. The method of claim 5, wherein determining the system latency of the first user computing device further includes: emitting an audio tone via a speaker included in the first user computing device, recording the audio tone via a microphone included in the first user computing device, measuring a total input travel time of the audio tone from the microphone to the web audio API, measuring a total output travel time of the audio tone from the web audio API to the speaker, and determining the system latency based on a difference between the total input travel time and the total output travel time.
7. The method of claim 1, further comprising: recording the first audio track on the first user computing device using a plugin to a digital audio workstation.
8. A system for remote audio project collaboration, the system comprising: a plurality of user computing devices including at least a first user computer device and a second user computing device, wherein the second user computing device is remotely located from the first user computing device; and a server configured to: generate a first version of an audio project file, wherein the first version of the audio project file includes a reference track, send the first version of the audio project file to the plurality of user computing devices, receive a first audio track from the first user computing device, wherein the first audio track is synced to the reference track, generate a second version of the audio project file by adding the first audio track to the first version of the audio project file, send the second version of the audio project file to the plurality of user computing devices, receive a second audio track from the second user computing device, wherein the second audio track is synced to the reference track, generate a third version of the audio project file by adding the second audio track to the second version of the audio project file, and send the third version of the audio project file to the plurality of user computing devices.
9. The system of claim 8, wherein the reference track includes at least one selected from the group consisting of a drum line, a metronome, a harmony, and an audio beat.
10. The system of claim 9, wherein the server is further configured to: receive, from the first user computing device, a change to a piece of metadata associated with the second audio track, generate a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata, and send the fourth version of the audio project file to the plurality of user computing devices.
11. The system of claim 10, wherein the piece of metadata includes an annotation associated with the second audio track.
12. The system of claim 8, wherein the first user computing device is further configured to: record the first audio track using a web audio application programming interface (API), determine a system latency of the first user computing device, and adjust a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
13. The system of claim 12, wherein, to determine the system latency of the first user computing device, the first user computing device is further configured to: emit an audio tone via a speaker included in the first user computer device, record the audio tone via a microphone included in the first user computer device, measure a total input travel time of the audio tone from the microphone to the web audio API, measure a total output travel time of the audio tone from the web audio API to the speaker, and determine the system latency based on a difference between the total input travel time and the total output travel time.
14. The system of claim 8, wherein the first user computing device is further configured to record the first audio track using a plugin to a digital audio workstation.
15. The system of claim 8, wherein the server is further configured to communicate with the plurality of user computing devices via one or more live websocket connections.
16. A tangible, non-transitory computer-readable medium storing instructions that, when executed, cause a processing device to: generate a first version of an audio project file, wherein the first version of the audio project file includes a reference track; send the first version of the audio project file to a plurality of user computing devices; receive a first audio track from a first user computing device included in the plurality of user computing devices, wherein the first audio track is synced to the reference track; generate a second version of the audio project file by adding the first audio track to the first version of the audio project file; send the second version of the audio project file to the plurality of user computing devices; receive a second audio track from a second user computing device included in the plurality of user computing devices, wherein the second audio track is synced to the reference track, and wherein the second user computing device is remotely located from the first user computing device; generate a third version of the audio project file by adding the second audio track to the second version of the audio project file; and send the third version of the audio project file to the plurality of user computing devices.
17. The non-transitory computer-readable medium of claim 16, wherein the instructions further cause the processing device to: receive, from the first user computing device, a change to a piece of metadata associated with the second audio track; generate a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata; and send the fourth version of the audio project file to the first user computing device and the second user computing device.
18. The non-transitory computer-readable medium of claim 17, wherein the piece of metadata includes an annotation associated with the second audio track.
19. The non-transitory computer-readable medium of claim 16, wherein the instructions further cause the processing device to: record the first audio track on the first user computing device using a web audio application programming interface (API); determine a system latency of the first user computing device; and adjust a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
20. The non-transitory computer-readable medium of claim 19, wherein, to determine the system latency of the first user computing device, the instructions further cause the processing device to: emit an audio tone via a speaker included in the first user computing device, record the audio tone via a microphone included in the first user computing device, measure a total input travel time of the audio tone from the microphone to the web audio API, measure a total output travel time of the audio tone from the web audio API to the speaker, and determine the system latency based on a difference between the total input travel time and the total output travel time.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings. It is emphasized that, according to common practice, the various features of the drawings are not necessarily to-scale. On the contrary, the dimensions of the various features may be—and typically are—arbitrarily expanded or reduced for the purpose of clarity.
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
NOTATION AND NOMENCLATURE
[0019] Various terms are used to refer to particular system components. A particular component may be referred to commercially or otherwise by different names. Further, a particular component (or the same or similar component) may be referred to commercially or otherwise by different names. Consistent with this, nothing in the present disclosure shall be deemed to distinguish between components that differ only in name but not in function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, or through an indirect connection via other devices and connections.
[0020] The terminology used herein is for the purpose of describing particular example implementations only, and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” may be intended to include the plural forms as well, unless the context clearly indicates otherwise. The method steps, processes, and operations described herein are not to be construed as necessarily requiring their performance in the particular order discussed or illustrated, unless specifically identified as an order of performance. It is also to be understood that additional or alternative steps may be employed.
[0021] The terms first, second, third, etc. may be used herein to describe various elements, components, regions, layers and/or sections; however, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms may be only used to distinguish one element, component, region, layer, or section from another region, layer, or section. Terms such as “first,” “second,” and other numerical terms, when used herein, do not imply a sequence or order unless clearly indicated by the context. Thus, a first element, component, region, layer, or section discussed below could be termed a second element, component, region, layer, or section without departing from the teachings of the example implementations. The phrase “at least one of,” when used with a list of items, means that different combinations of one or more of the listed items may be used, and only one item in the list may be needed. For example, “at least one of: A, B, and C” includes any of the following combinations: A, B, C, A and B, A and C, B and C, and A and B and C. In another example, the phrase “one or more” when used with a list of items means there may be one item or any suitable number of items exceeding one.
[0022] Spatially relative terms, such as “inner,” “outer,” “beneath,” “below,” “lower,” “above,” “up,” “upper,” “top,” “bottom,” “down,” “inside,” “outside,” “contained within,” “superimposing upon,” and the like, may be used herein. These spatially relative terms can be used for ease of description to describe one element's or feature's relationship to another element(s) or feature(s) as illustrated in the figures. The spatially relative terms may also be intended to encompass different orientations of the device in use, or operation, in addition to the orientation depicted in the figures. For example, if the device in the figures is turned over, elements described as “below” or “beneath” other elements or features would then be oriented “above” the other elements or features. Thus, the example term “below” can encompass both an orientation of above and below. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptions used herein interpreted accordingly.
[0023] “Real-time” may refer to less than or equal to 2 seconds. “Near real-time” may refer to any interaction of a sufficiently short time to enable two individuals to engage in a dialogue via such user interface, and will generally be less than 10 seconds (or any suitable proximate difference between two different times) but greater than 2 seconds.
[0024] The term “remotely located” as used herein in relation to computing devices may refer to any amount of distance between computing devices that prohibits a user of one computing device from hearing audio generated by or proximate to a computing device of another user.
[0025] The term “version” may used herein to describe audio project files; however, audio project files should not be limited by this term. The term “version” may only be used to distinguish a single audio project file before and after a change has been made. The use of the term “version” is not intended to imply to use of version control (i.e., the practice of tracking and managing changes to software code).
DETAILED DESCRIPTION
[0026] The following discussion is directed to various implementations of the present disclosure. Although one or more of these implementations may be preferred, the implementations disclosed should not be interpreted, or otherwise used, as limiting the scope of the present disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any implementation is meant only to be exemplary of that implementation, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that implementation.
[0027]
[0028] User computing devices may include, for example, a smartphone, a tablet, a laptop computer, a desktop computer, or a combination thereof. The first user computing device 102 illustrated in
[0029] The communications network 110 may be a wired network, a wireless network, or both. All or parts of the communications network 110 may be implemented using various networks, for example, a cellular network, the Internet, a Bluetooth™ network, a wireless local area network (for example, Wi-Fi), a wireless accessory Personal Area Networks (PAN), cable, an Ethernet network, satellite, a machine-to-machine (M2M) autonomous network, and a public switched telephone network. The first user computing device 102, the second user computing device 104, the server 106, and other various components of the system 100 communicate with each other over the communications network 110 using suitable wireless or wired communication protocols. In some implementations, communications with other external devices (not shown) occur over the communications network 110. In some implementations, the communications network 110 include one or more live websocket connections.
[0030]
[0031] The computer system 200 illustrated in
[0032] The processing device 202 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device 202 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processing device 202 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a system on a chip, a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 202 may be configured to execute instructions for performing any of the operations and steps discussed herein.
[0033] The computer system 200 illustrated in
[0034] The memory device 208 may include a computer-readable storage medium 220 on which the instructions 222 embodying any one or more of the methods, operations, or functions described herein is stored. The instructions 222 may also reside, completely or at least partially, within the main memory 204 and/or within the processing device 202 during execution thereof by the computer system 200. As such, the main memory 204 and the processing device 202 also constitute computer-readable media. The instructions 222 may further be transmitted or received over a network via the network interface device 212.
[0035] While the computer-readable storage medium 220 is shown in the illustrative examples to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium capable of storing, encoding or carrying out a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
[0036] The methods described herein may be performed by processing logic that may include hardware (circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system, a dedicated machine, or a computing device of any kind (e.g., IoT node, wearable, smartphone, mobile device, etc.)), or a combination of both. The methods described herein and/or each of their individual functions (including “methods,” as used in object-oriented programming), routines, subroutines, or operations may be performed by one or more processors of a computing device (e.g., any component of
[0037]
[0038] At block 302, a first version of an audio project file is generated. The first version of the audio project file includes a reference track. The reference track may include, for example, a drum line, a metronome, a harmony, an audio beat, or a combination thereof. At block 304, the first version of the audio project file is sent to a plurality of user computing devices. For example, with reference to
[0039] Returning to
[0040] Returning to
[0041] When using a web audio API to record an audio track, a user computing device may determine a system latency and adjust a time offset of the audio track relative to the reference track based on the system latency. In some implementations, a user computing device performs a latency test by emitting an audio tone via a speaker and recording the audio tone via a microphone. For example, the first user computing device 102 may emit an audio tone with the speaker 114 and record the audio tone with the microphone 112. The user computing device then measures a total input travel time of the audio tone from the microphone to the web audio API. Further, the user computing device measures a total output travel time of the audio tone from the web audio API to the speaker. Finally, the system latency may be determined based on a difference between the total input travel time and the total output travel time. In some implementations, user computing devices will display an option to perform a latency test.
[0042] Each audio track includes a plurality of metadata. Metadata includes, for example, audio levels, track names, and display colors. In some implementations, users can adjust metadata associated with audio tracks generated by other users. For example, the server 106 may receive, from the first user computing device 102, a change to a piece of metadata associated with an audio track from the second user computing device 104 and generate a new version of the audio project file by adjusting the audio track to conform with the change of the piece of metadata. Then, the new version of the audio project file is sent to the plurality of user computing devices. User can, for example, mute audio tracks, adjust the display color of audio tracks, and add labels to audio tracks. In addition, in some implementations, users can add annotations to audio tracks. For example, users can add annotations to an audio track. As a further example, annotations on an audio track can work as chat messages between different users.
[0043] Consistent with the above disclosure, the examples of systems and methods enumerated in the following clauses are specifically contemplated and are intended as a non-limiting set of examples.
[0044] Clause 1. A method for remote audio project collaboration, the method comprising:
[0045] generating a first version of an audio project file, wherein the first version of the audio project file includes a reference track;
[0046] sending the first version of the audio project file to a plurality of user computing devices;
[0047] receiving a first audio track from a first user computing device included in the plurality of user computing devices, wherein the first audio track is synced to the reference track;
[0048] generating a second version of the audio project file by adding the first audio track to the first version of the audio project file;
[0049] sending the second version of the audio project file to the plurality of computing devices;
[0050] receiving a second audio track from a second user computing device included in the plurality of user computing devices, wherein the second audio track is synced to the reference track, and wherein the second user computing device is remotely located from the first user computing device;
[0051] generating a third version of the audio project file by adding the second audio track to the second version of the audio project file; and sending the third version of the audio project file to the plurality of computing devices.
[0052] Clause 2. The method of any clause herein, wherein the reference track includes at least one selected from the group consisting of a drum line, a metronome, a harmony, and an audio beat.
[0053] Clause 3. The method of any clause herein, further comprising:
[0054] receiving, from the first user computing device, a change to a piece of metadata associated with the second audio track;
[0055] generating a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata; and
[0056] sending the fourth version of the audio project file to the plurality of computing devices.
[0057] Clause 4. The method of any clause herein, wherein the piece of metadata includes an annotation associated with the second audio track.
[0058] Clause 5. The method of any clause herein, further comprising:
[0059] recording the first audio track on the first user computing device using a web audio application programming interface (API);
[0060] determining a system latency of the first user computing device; and
[0061] adjusting a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
[0062] Clause 6. The method of any clause herein, wherein determining the system latency of the first user computing device further includes:
[0063] emitting an audio tone via a speaker included in the first user computing device, recording the audio tone via a microphone included in the first user computing device, measuring a total input travel time of the audio tone from the microphone to the web audio API,
[0064] measuring a total output travel time of the audio tone from the web audio API to the speaker, and
[0065] determining the system latency based on a difference between the total input travel time and the total output travel time.
[0066] Clause 7. The method of any clause herein, further comprising:
[0067] recording the first audio track on the first user computing device using a plugin to a digital audio workstation.
[0068] Clause 8. A system for remote audio project collaboration, the system comprising:
[0069] a plurality of user computing devices including at least a first user computer device and a second user computing device, wherein the second user computing device is remotely located from the first user computing device; and
[0070] a server configured to: [0071] generate a first version of an audio project file, wherein the first version of the audio project file includes a reference track, [0072] send the first version of the audio project file to the plurality of user computing devices, [0073] receive a first audio track from the first user computing device, wherein the first audio track is synced to the reference track, [0074] generate a second version of the audio project file by adding the first audio track to the first version of the audio project file, [0075] send the second version of the audio project file to the plurality of user computing devices, [0076] receive a second audio track from the second user computing device, wherein the second audio track is synced to the reference track, [0077] generate a third version of the audio project file by adding the second audio track to the second version of the audio project file, and [0078] send the third version of the audio project file to the plurality of user computing devices.
[0079] Clause 9. The system of any clause herein, wherein the reference track includes at least one selected from the group consisting of a drum line, a metronome, a harmony, and an audio beat.
[0080] Clause 10. The system of any clause herein, wherein the server is further configured to:
[0081] receive, from the first user computing device, a change to a piece of metadata associated with the second audio track,
[0082] generate a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata, and send the fourth version of the audio project file to the plurality of user computing devices.
[0083] Clause 11. The system of any clause herein, wherein the piece of metadata includes an annotation associated with the second audio track.
[0084] Clause 12. The system of any clause herein, wherein the first user computing device is further configured to:
[0085] record the first audio track using a web audio application programming interface (API), determine a system latency of the first user computing device, and
[0086] adjust a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
[0087] Clause 13. The system of any clause herein, wherein, to determine the system latency of the first user computing device, the first user computing device is further configured to:
[0088] emit an audio tone via a speaker included in the first user computer device, record the audio tone via a microphone included in the first user computer device,
[0089] measure a total input travel time of the audio tone from the microphone to the web audio API,
[0090] measure a total output travel time of the audio tone from the web audio API to the speaker, and
[0091] determine the system latency based on a difference between the total input travel time and the total output travel time.
[0092] Clause 14. The system of any clause herein, wherein the first user computing device is further configured to record the first audio track using a plugin to a digital audio workstation.
[0093] Clause 15. The system of any clause herein, wherein the server is further configured to communicate with the plurality of user computing devices via one or more live websocket connections.
[0094] Clause 16. A tangible, non-transitory computer-readable medium storing instructions that, when executed, cause a processing device to:
[0095] generate a first version of an audio project file, wherein the first version of the audio project file includes a reference track;
[0096] send the first version of the audio project file to a plurality of user computing devices;
[0097] receive a first audio track from a first user computing device included in the plurality of user computing devices, wherein the first audio track is synced to the reference track;
[0098] generate a second version of the audio project file by adding the first audio track to the first version of the audio project file;
[0099] send the second version of the audio project file to the plurality of user computing devices;
[0100] receive a second audio track from a second user computing device included in the plurality of user computing devices, wherein the second audio track is synced to the reference track, and wherein the second user computing device is remotely located from the first user computing device;
[0101] generate a third version of the audio project file by adding the second audio track to the second version of the audio project file; and send the third version of the audio project file to the plurality of user computing devices.
[0102] Clause 17. The non-transitory computer-readable medium of any clause herein, wherein the instructions further cause the processing device to:
[0103] receive, from the first user computing device, a change to a piece of metadata associated with the second audio track;
[0104] generate a fourth version of the audio project file by adjusting the second audio track to conform with the change of the piece of metadata; and
[0105] send the fourth version of the audio project file to the first user computing device and the second user computing device.
[0106] Clause 18. The non-transitory computer-readable medium of any clause herein, wherein the piece of metadata includes an annotation associated with the second audio track.
[0107] Clause 19. The non-transitory computer-readable medium of any clause herein, wherein the instructions further cause the processing device to:
[0108] record the first audio track on the first user computing device using a web audio application programming interface (API);
[0109] determine a system latency of the first user computing device; and
[0110] adjust a time offset of the first audio track relative to the reference track based on the system latency of the first user computing device.
[0111] Clause 20. The non-transitory computer-readable medium of any clause herein, wherein, to determine the system latency of the first user computing device, the instructions further cause the processing device to:
[0112] emit an audio tone via a speaker included in the first user computing device, record the audio tone via a microphone included in the first user computing device, measure a total input travel time of the audio tone from the microphone to the web audio API,
[0113] measure a total output travel time of the audio tone from the web audio API to the speaker, and
[0114] determine the system latency based on a difference between the total input travel time and the total output travel time.
[0115] No part of the description in this application should be read as implying that any particular element, step, or function is an essential element that must be included in the claim scope. The scope of patented subject matter is defined only by the claims. Moreover, none of the claims is intended to invoke 25 U.S.C. § 104(f) unless the exact words “means for” are followed by a participle.
[0116] The foregoing description, for purposes of explanation, use specific nomenclature to provide a thorough understanding of the described embodiments. However, it should be apparent to one skilled in the art that the specific details are not required to practice the described embodiments. Thus, the foregoing descriptions of specific embodiments are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the described embodiments to the precise forms disclosed. It should be apparent to one of ordinary skill in the art that many modifications and variations are possible in view of the above teachings.
[0117] The above discussion is meant to be illustrative of the principles and various embodiments of the present disclosure. Once the above disclosure is fully appreciated, numerous variations and modifications will become apparent to those skilled in the art. It is intended that the following claims be interpreted to embrace all such variations and modifications.