GB2595456A - Collaboration system - Google Patents

Collaboration system Download PDF

Info

Publication number
GB2595456A
GB2595456A GB2007751.7A GB202007751A GB2595456A GB 2595456 A GB2595456 A GB 2595456A GB 202007751 A GB202007751 A GB 202007751A GB 2595456 A GB2595456 A GB 2595456A
Authority
GB
United Kingdom
Prior art keywords
user
client device
server
value
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
GB2007751.7A
Other versions
GB202007751D0 (en
Inventor
Ian Stables Ryan
Geoffrey Robert Jillings Nicholas
Mark De Man Brecht
Christopher Enderby Sean
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Semantic Audio Ltd
Original Assignee
Semantic Audio Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Semantic Audio Ltd filed Critical Semantic Audio Ltd
Priority to GB2007751.7A priority Critical patent/GB2595456A/en
Publication of GB202007751D0 publication Critical patent/GB202007751D0/en
Priority to PCT/GB2021/051260 priority patent/WO2021240138A1/en
Publication of GB2595456A publication Critical patent/GB2595456A/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H60/00Arrangements for broadcast applications with a direct linking to broadcast information or broadcast space-time; Broadcast-related systems
    • H04H60/02Arrangements for generating broadcast information; Arrangements for generating broadcast-related information with a direct linking to broadcast information or to broadcast space-time; Arrangements for simultaneous generation of broadcast information and broadcast-related information
    • H04H60/04Studio equipment; Interconnection of studios
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Signal Processing (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

A system for providing concurrent access to an audio session in a digital audio workstation (DAW) - the audio session comprising plural elements and controllable parameters - comprises: a server to manage adjustments to the value or status of parameters in plural elements in an audio session; a first client device comprising a user interface, the first client in communication with the server, allowing a first user to access the audio session; a second client device comprising a user interface, in communication with the server, allowing a second user to access the audio session, wherein the first client receives, via the user interface, user input instruction to grant control of one or more elements of the audio session to a user of the second client device, and sends the instruction to the server. The server grants control of the one or more elements in the audio session to a user associated with the second client device, allowing adjustments to the value or status of parameter(s) in the element(s) by the second client device user. Also described is determination, based on predetermined rules configurable by a second user, whether control has been granted, and instructing a second client device to adjust an audio session parameter accordingly; and notification of audio session modification.

Description

Intellectual Property Office Application No. GII2007751.7 RTM Date:19 November 2020 The following terms are registered trade marks and should be read as such wherever they occur in this document: Garageband Apple Ableton Pro Tools Avid Soundtrap BandLab Intellectual Property Office is an operating name of the Patent Office www.gov.uk/ipo Collaboration System
Technical field of the invention
The present invention relates to a digital audio workstation for the intelligent processing of audio data, and, more specifically, a digital audio workstation which facilitates concurrent collaboration between two or more users.
Background to the invention
There are many digital tools available for audio production, such as those for editing and recording, and audio effects processors, synthesizers, and mixers. A comprehensive collection of such tools is often referred to as a Digital Audio Workstation (DAW). Different DAWs are often specifically aimed at users of different production experience and/or intended for use for specific types of projects.
Existing DAWs include GarageBand (Apple Inc., US), Live (Ableton AG, Germany), and ProTools (Avid Technology, US).
Music production often involves different technical and/or creative input from multiple individuals.
Given the complexity of many audio arrangements, managing access and responsibility for each different aspect of an audio production session amongst multiple collaborators is challenging. Some audio production systems, such as Soundtrap, BandLab, and Ohm Studio, allow for the collaboration between multiple users, for example by synchronising two sessions (where each session has been mixed by a separate user). However, existing systems which facilitate collaboration have drawbacks.
For example, synchronisation of sessions after the mixing process means that each user is unaware of what the other users are working on, and as a consequence, the resulting synchronised mix may require further mixing to achieve the desired result. Furthermore, a collaboration system which does not implement effective conflict management is frustrating and difficult for collaborators to use and may result in a suboptimal final mix.
It is an aim of the present invention to address, or at least mitigate, deficiencies of the prior art by provision of a DAW which facilitates concurrent session collaboration between two or more users/collaborators by virtue of a set of permissions.
Summary of the invention
According to a first aspect of the invention, there is provided a system for providing concurrent access to an audio session in a digital audio workstation, wherein the audio session comprises a plurality of elements and a plurality of controllable parameters, the system comprising: a server and/or application programming interface configured to manage adjustments to the value or status of parameters in the plurality of elements in an audio session; a first client device comprising a user interface, wherein the first client device is in communication with the server and is configured to allow a first user to access the audio session, and a second client device comprising a user interface, wherein the second client device is in communication with the server and is configured to allow a second user to access the audio session, wherein the first client is configured to receive, via the user interface of the first client device, user input, wherein the user input is an instruction to grant control of one or more elements of the audio session to a user of the second client device, and send the instruction to the server and/or application programming interface, and wherein the server and/or application programming interface is configured to grant control of adjustments to the value or status of one or more parameters in the one or more elements by the user associated with the second client device.
Preferably, the server and/or application programming interface is further configured to receive, via the user interface of the second client device, a request to adjust the value or status of one or more parameters of an element in the audio session, determine whether a user of the second client device has been granted control of the element, and in response to determining that the user of the second client device has been granted control of the element in the audio session, instruct the first client device to adjust the value or status of the parameter to the new value or status of the parameter in the audio session.
The server and/or application programming interface may be further configured to deny the request to adjust the value or state of the parameter in the audio session in response to determining that the user of the second client device has not been granted control of the element of the audio session. The first client device is preferably configured to output, to the user interface of the first client device, the new value or status of the parameter in real time.
Preferably, one or more functions are associated with each element, and wherein the first client device may be further configured to receive, via the user interface, user input, wherein the input is instruction to grant control of the one or more functions to a second user to which control over one or more elements have been granted. The first client device and second client device are preferably in communication with the server and/or application programming interface via WebSockets.
Optionally, the parameters are global parameters which have a single value or status in the audio session and represent the final mix of the audio session.
The server and/or application programming interface may be configured to store a first user version of the audio session associated with the first user and a second user version associated with the second user. The first device is preferably configured to store a first user version of the audio session associated with the first user and wherein the second user device is configured to store a second user version of the audio session associated with the second user. The first and second user versions of the audio session optionally store the value or status of personal parameters associated with the first user and second user respectively, wherein personal parameters are parameters that are only adjustable by the first user and second user respectively. The first user version and the second user version optionally also store the value or status of global parameters.
The first client device and second client device may be configured to display, in the user interface of the first and second client device respectively, the value or status of personal parameters of the first user and second user respectively, and the value or status of global parameters. The user interfaces of the first and second client devices are preferably configured to display personal parameters in a first user interface theme and global parameters in a second user interface theme.
The first client device and the second client device are optionally further configured to receive input to switch between viewing the status or value of personal parameters and viewing the value or status of global parameters. The first client device and second client device are preferably configured to run a digital audio workstation.
According to a second aspect of the invention, there is provided a server and/or application programming interface for management of an audio session in a digital audio workstation, wherein the audio session comprises a plurality of controllable parameters, wherein each controllable parameter has a value or status, and wherein the audio session is concurrently accessible by a first user via a first client device and a second user via a second client device, wherein the server and/or application programming interface is configured to receive a request from the first client device to adjust a value or status of a parameter in the audio session to a new value or status, determine whether the first user has been granted control of the parameter, wherein the determination is based on one or more predetermined rules configurable by the second user, and instruct the second client device to adjust the status or value of the parameter to the new status or value of the parameter in response to determining that the first user has been granted control of the parameter.
The server and/or application programming interface may be further configured to deny the request in response to determining that the first user has not been granted control of the parameter.
The plurality of controllable parameters may comprise global parameters and personal parameters.
The parameter is preferably a global parameter. The value or status of the parameter optionally represents the value or status of the parameter in the final mix of the audio session. The server and/or application programming interface is preferably further configured to store metadata relating to personal parameters and global parameters.
According to a third aspect of the invention, there is provided a device for accessing an audio session in a digital audio workstation, wherein the device comprises a user interface and is configured to communicate with a server and/or application programming interface, wherein the device is further configured to receive user input from a first user via the user interface, wherein the user input is an instruction to allow one or more elements of an audio session to be controlled by a second user, and receive notification from the server and/or application programming interface that the second user has modified the one or more elements of the audio session.
According to a fourth aspect of the invention, there is provided a system for providing concurrent access to an audio session in a digital audio workstation, wherein the audio session comprises a plurality of elements and a plurality of controllable parameters, the system comprising: a server configured to manage adjustments to the value or status of parameters in the plurality of elements in an audio session; and a first client device comprising a user interface, wherein the first client device is in communication with the server and is configured to allow a first user to access the audio session, a second client device comprising a user interface, wherein the second client device is in communication with the server and is configured to allow a second user to access the audio session, wherein the first client is configured to receive, via the user interface of the first client device, user input, wherein the user input is an instruction to grant control of one or more elements of the audio session to a user of the second client device, and send the instruction to the server, and wherein the server is configured to grant control of the one or more elements in the audio session to a user associated with the second client device.
Preferable features of the invention are defined in the appended dependent claims. Brief description of the drawings Figure 1 is a diagram of system architecture; Figure 2 is a portion of a mixer view user interface showing a guitar track according to an embodiment of the invention; Figure 3 shows an exemplary mixer view user interface according to an embodiment of the invention; Figure 4 shows a timeline view user interface according to an embodiment of the invention;
Detailed description
A digital audio workstation ('DAW') system which facilitates concurrent collaboration between multiple users ('participants') will be described. As used herein, 'concurrent collaboration' means that two or more users can work on the same audio session simultaneously. A DAW comprises a set of tools which allow a user to generate audiomixes using recorded and synthesised audio. In accordance with the present invention, each user, while working collaboratively in the DAW, is able to view each other's parameter changes, as well as their own. According to a preferred embodiment of the present invention, the DAW is configurable to allow a user to grant control of one or more elements/components of a session to another user, as will be described in further detail below, so as to provide an accurate, user-customisable and robust collaboration system, which circumvents the need to have to manage conflicts and undo and redo actions.
System Architecture The system architecture to facilitate collaborative audio production in a DAW is shown in Figure 1. In Figure 1, two client devices 10a, 10b are shown, although it will be appreciated that the system may comprise many more clients. Communication between client devices 10a, 10b in a collaborative session is facilitated by server 30 (which is typically cloud-based) via a server-side web application programming interface (API) 20. API 20 and server 30 are together responsible for processing parameter change requests made by participants in a session and broadcasting any necessary information to other active participants. In one embodiment, web based API 20 facilitates the exchange of metadata between client devices, and all data is stored at the client devices.
In a preferred embodiment, the DAW is a web-based application; i.e. it is hosted by a server and accessible to a user via a browser. In this embodiment, references to 'client device' or 'device' refer to hardware that it capable of accessing the DAW via a browser. In an alternative embodiment, client devices 10a, 10b run a DAW as a user application, such as a desktop or mobile application which can be run on any suitable hardware.
Every user/participant has unique user credentials which allow access to the DAW. Each user may be required to have registered as a user of the DAW to enable secure access to the DAW and may be required to purchase access to specific features. Means for registration and the purchase of all or some features are known in the art. A storage facility such as a database associated with server 30 stores audio session metadata (including global parameters and settings), action history and user-specific metadata. A user can therefore access their own personal parameters and other personal settings when accessing the audio session via a web-based DAW or if the DAW is running on different hardware. The audio is generally processed client-side, rather than server-side, via the user's browser, a desktop application or mobile application.
API 20 facilitates communication between the DAW running on each user device and server 30. For multiple concurrent users, API 20 handles each request from each participant and instructs operation of the DAW operating on each client device 10a, 10b (i.e. allows or prohibits the requests from the participants) according to the permissions that have been granted to each participant (as will be described in detail below). When a participant changes a parameter via the user interface (UI), the user DAW sends a request to API 20 detailing the new changes. API 20 then determines what data to update on server 30 (according to the permissions that have been granted to that particular participant) and issues instructions to each user DAW on client devices 10a, lob accordingly. This works differently for each type of parameter, as discussed below. In a preferred embodiment, the client device only issues requests to API 20 in relation to parameter changes in channel or other elements for which the user of the client device has been granted control.
An audio session In the present context, a session is configuration of tools in a DAW which are used to produce audio. Audio production generally includes recording, editing, and mixing. A session may have multiple structural elements/components and sub-elements/components and audio elements/components and audio sub-elements/components, each of which can be adjusted (or 'processed') during a mix to achieved a desired end product (known as a 'mixed session'). A channel is a controllable element in a session which allows for individual control of a certain aspect of the session separately from the rest of the session. For example, a channel may be a specific instrument track (e.g. guitar 1, guitar 2, violin, vocals), a group of tracks (for example, guitar 1+guitar 2), the master track (the output of the session), a click track or a bus. In other words, a channel can be any part or whole of the session to which individual control of parameters of that channel can be assigned.
Assignment As a general example, a session owner (participant 1) is able to provide permission for another DAW user (participant 2) to alter a channel, or group of channels (e.g. drums), such that participant 2 can change the sound of the drums, whilst participant 1 adjusts the guitars.
A user who creates a session is referred to as the "owner" of that session. The session owner (participant 1) is able to add/invite participants who can adjust parameters and attributes and control functions of channels and other elements/components of the session to which they are assigned, thereby making the session collaborative. For example, an invited participant can be 'assigned' control over one or more channels of the session. In this way, the session itself and each channel within it can each be assigned to a particular participant. The "assignee"/participant then has control over global properties of that channel. A participant may also be granted privileges by the session owner, as discussed further below. 'Global properties', 'global parameters', 'global values' or similar mean that the properties, parameters, values etc are common across all user DAWs -i.e. the values are the same for all participants.
The 'assignee' for the session itself (which is by default, the owner of the session) is granted global control over session level parameters (bpm, time signature, etc.) and session level automation (bpm, time signature, chords etc.). Channel assignees are granted global control over the parameters of that specific channel (volume, pan, etc.). When a group is assigned to a participant, all of that group's member channels are also assigned to that participant.
Figure 2 is a screenshot of a portion of a mixer view in a digital audio workstation, showing single track 100. A mixer view represents the tracks analogously to a mixing desk. Track 100 is a guitar track which is controlled by a participant. The participant is denoted by icon 101. The current global gain value of track 100 is illustrated by the position of user interface object 103. Icon 102 represents the current personal gain value of the track-i.e. the gain value of the track that only participant 101 can view and change. The global value of the track will remain as the value represented by icon 103 until the highlighted participant's changes are 'accepted' (for example, after being auditioned by the assignee of the channel), or unless participant is granted global control of the of the track. This is discussed further below. Figure 3 is a screenshot of a session mixer view showing track 200 (which is the same as track 100).
Figure 4 is a screenshot of timeline view 300 which shows a plurality of tracks on the left side of the screen and their temporal variation in amplitude on the right side of the screen. In general, a timeline view allows for the visualisation of progression of a mix over time. Track 301 is a drum track and is controlled by a participant, as denoted in the top left of the left side of the track. The temporal illustration of the track to which the participant is assigned is highlighted similarly to the participant icon in the top left corner on the left side of the track.
A channel can only be assigned to one participant at a time. By default the session is assigned to the session owner and channels are assigned to whichever participant created them. The assignee for a particular entity (the session or a channel) can be changed by the session owner or any other participant with the assign_channel privilege. When an entity's assignee is changed, any actions associated with that entity are "pruned" from the old assignees undo history. This ensures that participants cannot alter parameters of entities which are not assigned to them via the action history system.
Privileges Privileges determine what functions a participant can control on channels to which they are assigned. According to which privileges they have been granted, the participant will also have control over the entities which belong to that channel, such as plugins in the processing chain, sends, regions and automation, as well as channel functions, such as assigning a channel, deleting a channel, etc. Some granted privileges have implications for other privileges. In other words, some privileges will be affected (i.e. some functions are controllable) based on whether or not another privilege has been granted. Privileges which can be granted to session participants as well as what other privileges are implied by them and their default status are listed below. The default status for all is 'off' apart from 'write note' and 'close note' which is on.
assign_channel -allows the participant to assign channels to other participants.
create channel -allows the participant to create new channels. Newly created channels are assigned to the participant who created them. create channel implies edit region, edit send, edit automation, edit plugin. Accordingly, if a participant has been granted the create channel privilege, they have also been automatically granted edit region, edit send, edit automation, and edit plugin privileges.
delete channel -allows the participant to delete channels which are assigned to them. delete channel implies edit region, edit send, edit automation, edit plugin upload asset-allows the participant to record or upload assets into the session. Storage requirements will come from the session owner's quota.
edit region -allows the participant to create, and alter the global parameters of, regions on tracks assigned to them.
edit send -allows the participant to create, and alter the global parameters of, sends on channels assigned to them. The send's destination bus must also be assigned to them.
edit automation -allows the participant to create, and alter the global parameters of, automation tracks on channels assigned to them.
edit plugin -allows the participant to create, and alter the global parameters of, plugins on channels assigned to them.
write note -allows the participant to create and reply to note threads. close note -allows the participant to mark a note thread as closed.
Notes allow a user of the DAW to attach text to a channel, which can be viewed by other users accessing the session. When a new participant is added to a session, by default they will only be able to create, reply to, and close note threads. The owner of the session must grant privileges and assign channels based on what they want the participant to do.
Parameter Classification The parameter of every controllable entity within am audio session is classified into one of three groups: Global, Switchable or Personal. This classification defines how those parameters behave in a collaborative session.
Global parameters are parameter which have only a single, global value, which is replicated across all user DAWs. Typically these are parameters which define the structure of the session (channel routing, naming, etc.). When these parameters are changed, the effects are immediately visible in all other active session logins (e.g. if one participant creates a track it will appear in every other user's/participant's view of the session). Changes to global parameters can only be made by participants who currently have permission to do so, i.e. they have been granted the relevant privilege.
For example, a new channel can only be created by a participant with the create channel privilege, and a channel's routing can only be changed by the participant to which that channel is currently assigned.
Switchable parameters have both a global value and personal values for each participant. The global value of a switchable parameter is available to all participants in the session and represents the current "final mix" of the session. An example of this is shown in Figure 2 -icon 103 represents the current global value, and icon 102 represents the personal value of the parameter of the user represented by icon 101. Participants have exclusive control over the global values of parameters for entities which are assigned to them.
A participant's personal values for switchable parameters represent the participant's own "mix" of the session. Having a personal "mix" allows participants to mute (or remix) elements of the session which they are not currently working on without affecting other active participants.
When a participant alters a switchable parameter, DAW API 20 will change the global value or the participant's personal value depending on the participant's assignments and privileges. The global value is only changed if the participant is assigned the relevant element and has been granted the relevant privilege. For example, to alter the global volume value for a send, a participant must be the assignee for the send's source channel and have the edit send privilege. When the conditions to alter the global value are not met, the participant's personal value is changed instead.
Participants can switch between viewing the global settings or their personal settings for switchable parameters, or can view both global and personal values simultaneously, as per Figures 2 and 3. In one embodiment, a single toggle switch in the Ul allows a participant to switch between view of a global value and view of a personal value. In an alternative embodiment, the user interface comprises a toggle switch for each channel.
If a participant switches from viewing personal to global values of parameters, the current personal values are saved automatically, such that when the participant switches back to viewing personal values, the personal values are as automatically saved. Alternatively, saving personal values may manual.
As well as switching between the global values and their own personal values of switchable parameters, participants can also "audition" other participant's personal values. This allows participants who are not the current assignee of a channel to suggest how the parameters should be set. The assignee for the relevant channel (or channels) can audition the requester's parameter settings and apply them if desired. In one embodiment, the DAW user interface is configured such that a channel assignee selects the channel, selects another user of the session and selects an input to audition. A further menu option allows the channel assignee to accept the other user's parameter values Personal parameters are those which are individual to each participant in the session. Typically these are things that are purely visual and have no effect on the production output of the session. When a participant is added to a session they will be given a default set of personal parameters (which may be defined by a set of preferences) which they can edit.
Parameters Global session parameters can only be changed by the session's assignee. Session level parameters are classified as follows: Global -name, directory, genre, bpm, time signature numerator, time signature denominator Personal -buses visible, master visible, metronome visible, notes visible, current view, timehne_format, view start, view length, loop start, loop_duration In order to create new channels a participant must have the create channel privilege. Newly created channels will be assigned to the participant who created it. To change the global values of parameters a participant must be the assignee of the channel. Channel parameters are classified as follows: Global -name, instrument id, output group id (tracks and groups only) Switchable -pan, volume, mute, solo Personal -session_position, height, colour, expanded (groups only) Region parameters define the structure of audio within a session. As such they must all be global parameters. To create or edit regions a participant must be the assignee for the channel the region is on and have the edit region privilege.
The following is a list of region parameters (all are global): Global track id, take set id, take number, asset id, timeline start, timeline duration, buffer start, loop start, loop_duration, fade in_duration, fade in_exponent, fade out duration, fade out exponent, gain, inverted, reversed, playback speed.
To create a send, a participant must have the edit send privilege and be the assignee for both the source channel and destination bus. To change the global parameter values a participant must be the assignee for the send's source channel and have the edit send privilege. Send parameters are classified as follows: Global -destination_bus, send type Switchable -volume, phase, mute To add a plugin to a channel, a participant must be the assignee for the channel and have the edit plugin privilege. To change the global parameter values a participant must be the assignee for the channel the plugin is used on and also have the edit plugin privilege. Parameters for plugin usage are classified as follows: Global -chain position Switchable -bypassed, parameter settings To create an automation track or edit the global parameter value of an automation track, a participant must have the edit automation privilege and be the assignee for the channel on which the automation track sits (or the session for session level automation).
Switchable -enabled Personal -visible The position and label of automation nodes are a structural element of the session and as such are global parameters. The following lists the parameters of automation nodes. To alter these a participant must have the edit automation privilege and be the assignee for the channel on which the automation track sits.
Global -timeline position, value, label Notes are used for communicating with other participants within the session. By default all participants will be able to create, reply to, and close note threads. The session owner has the ability to revoke these privileges from participants if desired.
implementation For a participant wishing to make a change to a parameter, the user's client device first establishes a connection to the server. The details sent to establish this connection must be sufficient for the server to determine the user account the connection is being made under and the DAW session the user intends to work in. This information will be used by the server to authenticate requests and determine where data should be sent. Once a connection is established, the participant can begin making changes to the session. For each change that is made, a request is sent over the server connection indicating the new parameter values. The client then receives a response detailing whether the request succeeded and what parameter settings were changed.
To establish client-server connection, the server authenticates the user (by verifying that they are logged into their account). This is typically achieved via cookie authentication methods. The server then determines whether the user is allowed to access the DAW session which has been specified. If either of these steps fails the connection is rejected. Otherwise, the server accepts the connection and adds it to a list of connections which have been established for that particular DAW session.
On receiving a parameter change request over an established connection, via the API (discussed further below), the server authenticates the request, propagates any necessary changes to a database storing parameters of the session, respond to the request (to indicate to the client whether or not the request has been accepted or rejected), and broadcast changes to other clients which are connected to the server to access the same DAW session. This process will proceed differently depending on whether the request specifies changes to a global, switchable or personal parameter.
For requests which specify changes to global parameters, the server first checks whether the requesting participant has been assigned the entity (session or channel) to which that parameter belongs, as well as check the participant's privileges to alter that kind of parameter. For example, if the participant attempts to move a region, the server will check that they have been assigned the channel the region belongs to and that they have been granted the edit region privilege. If either of these checks fails, the request is denied and an error message returned to the client. If a request meets these requirements, the server commits the parameter change(s) to the database storing the DAW session. Once committed to the database, the new parameter value is returned to the requesting client to indicate success. The new value is also broadcast to every other connection which is present for that particular DAW session, in order for global parameter settings to be synchronised for all active participants.
For changes requested to switchable parameters, the server stipulates the same requirements as for global parameters. If the requirements are met, changes will be made to the global value of the specified parameter in the database. If the requirements are not met, the server will instead make changes to the participant's personal value of the parameter. When global values have been altered, the server will return the new value to the requesting participant as well as broadcasting it to all other connections for the DAW session. For changes to personal values the new value is only returned to the requester and not broadcast.
When changes are requested to personal parameters, the server checks that the request is valid for the given DAW session (verify that it is a request to change parameters which are a part of that session), makes the requested changes to the participant's personal parameter values, and returns the new value to the requester. Changes to personal parameter values are not broadcast to other participants.
From the perspective of a participant receiving updates to global parameter values, the client establishes a connection to the collaboration server in the same way described above. The client then 'listens' on this connection (i.e. is configured to receive a broadcast from the server) for any updates to global parameter values. Upon receiving a parameter update the DAW Ul is updated to reflect the new value.
API
Server 30 uses server push technology (such as WebSockets, Long Polling, Server-Sent Events, etc.) via API 20 to allow it to send data to clients unprompted. WebSocket is a communication protocol which facilitates bi-directional simultaneous data exchange. In a preferred embodiment, communication is via a socket.io library. Full documentation for the socket.io client interface can be found at The following describes the basic interaction with the DAW API 20.
In one embodiment, a WebSocket interface for API 20 is hosted alongside the HTTP interface. The client script for socket.io is hosted at Api/claw-sockets/socketio/socketio.js. To initiate a connection, a client 10a, 10b loads this script, exposing the socket.io "io" object. This "io" object is then used to create a WebSocket connection to DAW API 20. The following is example JavaScript for connecting to the DAW API 20 WebSocket server.
var socket = io({ path: "/api/daw sockets/socketio", query: {session_id: 42069}// provide the current session ID here }); socket.on("error", function (e) // handle connection errors here H; Once a connection has been established, each client 10a, 10b can make API requests by emitting "dawrequest" events on the socket.
The second argument to the socket "emit" function is a JavaScript object containing a "path" and a "parameters" property. The "path" is the path to the method which is being called, while "parameters" is another object containing the parameters for that method. The third argument to the "emit" function is a callback function which will be executed when API 20 responds to the request. The first argument of this callback is the JavaScript object returned by API 20. Below is a JavaScript example of emitting a "daw-request" event: socket.emit("daw-request", path: "session/channel/get/sends", // the API method path parameters: {channel_id: -1532872566}H the method parameters // (as per the API docs) function(response) { // handle response here 11; Global parameters can only be changed by participants with permission to do so: those which have been assigned the relevant channel and have the relevant privileges. If a request is made by a participant without sufficient privileges, DAW API 20 will report that the request has failed and no changes will be made to the global value of the parameter in the session. If instead the request is successful, the new global value of the parameter is returned in a JavaScript object. The following is an example object returned when altering a global parameter: "track": { "id": 4876287, "name": "Drums" When a request is made to change a switchable parameter, the DAW API first determines whether the global value, or the personal value for the participant making the request, should be changed. If the participant has sufficient privileges to alter the global value, both the global value and that participant's personal value are changed. The API then returns an object summarising the changes made. The following is an example object returned when altering the global value of a switchable parameter: { "track": { "id": 4876287, "volume": { "global": 10, "personal": 10 If the participant does not have the required privileges, the API will only change the participant's personal value of the parameter. The object returned by the API then only states the new personal value. The following is an example object returned when altering a participant's personal value of a switchable parameter.
"track": { "id": 4876287, "volume": { "personal": 10 1 When changes are made to a personal parameter, the DAW API will just return the participant's new value for that parameter. The following is an example object returned when altering a personal 30 parameter.
"track": { "id": 4876287, "height": 400 When a change is made to a global parameter value, DAW API 20 will broadcast these changes to all active participant accessing the session. The participant/user DAW U I is updated in real time to reflect the current state of the session.
Global parameter updates are broadcast as "session-update" events. The user DAW 10a, 10b attaches a callback for these events as shown below. The first argument of this callback will be a JavaScript object containing the updates parameter information. The following is an example JavaScript for attaching a callback to "session-update" events.
socket.onrsession-update", function (data) { // update the Ul with new parameter values B;

Claims (22)

  1. Claims 1. A system for providing concurrent access to an audio session in a digital audio workstation, wherein the audio session comprises a plurality of elements and a plurality of controllable parameters, the system comprising: a server configured to manage adjustments to the value or status of parameters in the plurality of elements in an audio session; and a first client device comprising a user interface, wherein the first client device is in communication with the server and is configured to allow a first user to access the audio session, a second client device comprising a user interface, wherein the second client device is in communication with the server and is configured to allow a second user to access the audio session, wherein the first client is configured to receive, via the user interface of the first client device, user input, wherein the user input is an instruction to grant control of one or more elements of the audio session to a user of the second client device, and send the instruction to the server, and wherein the server is configured to grant control of the one or more elements in the audio session to a user associated with the second client device and to allow adjustments to the value or status of one or more parameters in the one or more elements by the user associated with the second client device.
  2. 2. The system of claim 1, wherein the server is further configured to receive, via the user interface of the second client device, a request to adjust the value or status of one or more parameters of an element in the audio session, determine whether a user of the second client device has been granted control of the element, and in response to determining that the user of the second client device has been granted control of the element in the audio session, adjust the value or status of the parameter to the new value or status of the parameter in the audio session, and broadcast the new value or status of the parameter to the first client device.
  3. 3. The system of claim 2, wherein the server is further configured to deny the request to adjust the value or status of the parameter in the audio session in response to determining that the user of the second client device has not been granted control of the element of the audio session.
  4. 4. The system of claim 2, wherein the first client device is configured to output, to the user interface of the first client device, the new value or status of the parameter in real time.
  5. 5. The system of any of claims 1 to 4, wherein one or more functions are associated with each element, and wherein the first client device is further configured to receive, via the user interface, user input, wherein the input is instruction to grant control of the one or more functions to a second user to which control one or more elements have been granted.
  6. 6. The system of any of claims 1 to 5, wherein the first client device and second client device are in communication with the server via WebSockets.
  7. 7. The system of any of claims 1 to 6, wherein the parameters are global parameters which have a single value or status in the audio session and represent the final mix of the audio session.
  8. 8. The system of any of claims 1 to 7, wherein the server is configured to store a first user version of the audio session associated with the first user and a second user version associated with the second user.
  9. 9. The system of any of claims 1 to 8, wherein the first device is configured to store a first user version of the audio session associated with the first user and wherein the second user device is configured to store a second user version of the audio session associated with the second user.
  10. 10. The system of claim 8 or 9, wherein the first and second user versions of the audio session store the value or status of personal parameters associated with the first user and second user respectively, wherein personal parameters are parameters that are only adjustable by the first user and second user respectively.
  11. 11. The system of claim 9 or claim 10, wherein the first user version and the second user version further store the value or status of global parameters.
  12. 12. The system of claim 10 or 11, wherein the first client device and second client device are configured to display, in the user interface of the first and second client device respectively, the value or status of personal parameters of the first user and second user respectively, and the value or status of global parameters.
  13. 13. The system of claim 12, wherein the user interfaces of the first and second client devices are configured to display personal parameters in a first user interface theme and global parameters in a second user interface theme.
  14. 14. The system of claim 12 or claim 13, wherein the first client device and the second client device are further configured to receive input to switch between viewing the status or value of personal parameters and viewing the value or status of global parameters
  15. 15. The system of any preceding claim, wherein the first client device and second client device are configured to run a digital audio workstation.
  16. 16. A server and/or application programming interface for management of an audio session in a digital audio workstation, wherein the audio session comprises a plurality of controllable parameters, wherein each controllable parameter has a value or status, and wherein the audio session is concurrently accessible by a first user via a first client device and a second user via a second client device, wherein the server and/or application programming interface is configured to receive a request from the first client device to adjust a value or status of a parameter in the audio session to a new value or status, determine whether the first user has been granted control of the parameter, wherein the determination is based on one or more predetermined rules configurable by the second user, and instruct the second client device to adjust the status or value of the parameter to the new status or value of the parameter in response to determining that the first user has been granted control of the parameter.
  17. 17. The server and/or application programming interface of claim 16, wherein the server and/or application programming interface is further configured to deny the request in response to determining that the first user has not been granted control of the parameter.
  18. 18. The server and/or application programming interface of claim 16 or 17, wherein the plurality of controllable parameters comprise global parameters and personal parameters.
  19. 19. The server and/or application programming interface of claim 18, wherein the parameter is a global parameter.
  20. 20. The server and/or application programming interface of claim 19, wherein the value or status of the parameter represents the value or status of the parameter in the final mix of the audio session.
  21. 21. The server and/or application programming interface of any of claims 16 to 20, wherein the server and/or application programming interface is further configured to store metadata relating to personal parameters and global parameters.
  22. 22. A device for accessing an audio session in a digital audio workstation, wherein the device comprises a user interface and is configured to communicate with a server and/or application programming interface, wherein the device is further configured to receive user input from a first user via the user interface, wherein the user input is an instruction to allow one or more elements of an audio session to be controlled by a second user, and receive notification from the server and/or application programming interface that the second user has modified the one or more elements of the audio session.
GB2007751.7A 2020-05-24 2020-05-24 Collaboration system Pending GB2595456A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
GB2007751.7A GB2595456A (en) 2020-05-24 2020-05-24 Collaboration system
PCT/GB2021/051260 WO2021240138A1 (en) 2020-05-24 2021-05-24 Collaboration system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB2007751.7A GB2595456A (en) 2020-05-24 2020-05-24 Collaboration system

Publications (2)

Publication Number Publication Date
GB202007751D0 GB202007751D0 (en) 2020-07-08
GB2595456A true GB2595456A (en) 2021-12-01

Family

ID=71406233

Family Applications (1)

Application Number Title Priority Date Filing Date
GB2007751.7A Pending GB2595456A (en) 2020-05-24 2020-05-24 Collaboration system

Country Status (2)

Country Link
GB (1) GB2595456A (en)
WO (1) WO2021240138A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014182881A1 (en) * 2013-05-09 2014-11-13 Musistic, Inc. System and method for recording music which allows asynchronous collaboration over the internet
WO2020031164A2 (en) * 2018-08-08 2020-02-13 Joseph Robert Escamilla System and method of collectively producing music

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2009295348A1 (en) * 2008-09-25 2010-04-01 Igruuv Pty Ltd Video and audio content system
KR101650534B1 (en) * 2014-10-07 2016-09-05 김두환 Cooperative music composition system using music social network and method thereof
GB201502491D0 (en) * 2015-02-13 2015-04-01 Mixim Technology Ltd Method, system and apparatus for facilitating collaboration on media projects
KR102014543B1 (en) * 2017-11-13 2019-08-26 버추얼월드 유한책임회사 Method and system for cooperating production of online sound source

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014182881A1 (en) * 2013-05-09 2014-11-13 Musistic, Inc. System and method for recording music which allows asynchronous collaboration over the internet
WO2020031164A2 (en) * 2018-08-08 2020-02-13 Joseph Robert Escamilla System and method of collectively producing music

Also Published As

Publication number Publication date
GB202007751D0 (en) 2020-07-08
WO2021240138A1 (en) 2021-12-02

Similar Documents

Publication Publication Date Title
US8670651B2 (en) Editing device, editing method, and program
US10389782B2 (en) Synchronized playback of alternate content version
US10757151B2 (en) System and method for automatic meeting note creation and sharing using a user's context and physical proximity
US20180332341A1 (en) Distributed Computer System Architecture for Networked Playback Systems to Facilitate Producing Music Service Media Applications and to Utilize Music Services
US8464164B2 (en) System and method to create a collaborative web-based multimedia contextual dialogue
EP1224658B1 (en) System and method for enabling multimedia production collaboration over a network
KR102139889B1 (en) A Real-Time Collaboration and Evaluation System for a Music Creation Activities on an online Platform
US8150918B1 (en) Client controllable server-side playlists
US9558162B2 (en) Dynamic multimedia pairing
US20090106429A1 (en) Collaborative music network
US20100319518A1 (en) Systems and methods for collaborative music generation
JP2002259315A (en) Conference server program
DE112013001340T5 (en) Common network music jam session and recording of it
KR101650534B1 (en) Cooperative music composition system using music social network and method thereof
JP7234935B2 (en) Information processing device, information processing method and program
CN104937588A (en) Distributed music collaboration
Ådahl Shared resource for collaborative editing over a wireless network
KR100504309B1 (en) Method and apparatus for creating and managing the cyber academy in cyberspace
GB2595456A (en) Collaboration system
Hoy et al. A technological and methodological ecosystem for dynamic virtual acoustics in telematic performance contexts
Chigwamba et al. Parameter relationships in high-speed audio networks
Gatzsche et al. A flexible system architecture for collaborative sound engineering in object-based audio environments
Turner et al. Is Binaural Spatialization the Future of Hip-Hop?
KR102467097B1 (en) Operation method of server and client for providing music broadcasting contents
US20130097222A1 (en) Adaptive artistry