WO2021240138A1 - Collaboration system - Google Patents

Collaboration system Download PDF

Info

Publication number
WO2021240138A1
WO2021240138A1 PCT/GB2021/051260 GB2021051260W WO2021240138A1 WO 2021240138 A1 WO2021240138 A1 WO 2021240138A1 GB 2021051260 W GB2021051260 W GB 2021051260W WO 2021240138 A1 WO2021240138 A1 WO 2021240138A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
client device
server
parameters
value
Prior art date
Application number
PCT/GB2021/051260
Other languages
French (fr)
Inventor
Ryan Ian STABLES
Nicholas Geoffrey Robert JILLINGS
Brecht Mark DE MAN
Sean Christopher ENDERBY
Original Assignee
Semantic Audio Limited
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 Limited filed Critical Semantic Audio Limited
Publication of WO2021240138A1 publication Critical patent/WO2021240138A1/en

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

Definitions

  • 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.
  • DAW Digital Audio Workstation
  • 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.
  • 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).
  • 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.
  • 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.
  • 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 device is configured to receive, via the user interface of the first client device, user input, wherein the user
  • 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.
  • 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.
  • 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.
  • 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.
  • a device for accessing an audio session in a digital audio workstation comprising 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.
  • 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
  • FIG. 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
  • DAW digital audio workstation
  • ‘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.
  • each user, 4 while working collaboratively in the DAW is able to view each other’s parameter changes, as well as their own.
  • 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.
  • server 30 which is typically cloud-based
  • 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.
  • web-based API 20 facilitates the exchange of metadata between client devices, and all data is stored at the client devices.
  • the DAW is a web-based application; i.e. it is hosted by a server and accessible to a user via a browser.
  • references to ‘client device’ or ‘device’ refer to hardware that it capable of accessing the DAW via a browser.
  • 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.
  • API 20 facilitates communication between the DAW running on each user device and server 30.
  • 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).
  • UI user interface
  • API 20 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, 10b accordingly. This works differently for each type of parameter, as discussed below.
  • 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 achieve 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.
  • 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.
  • 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.
  • an invited participant can be ‘assigned’ control over one or more channels of the session.
  • 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.
  • FIG. 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • icon 103 represents the current global value
  • 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.
  • 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.
  • a single toggle switch in the UI allows a participant to switch between view of a global value and view of a personal value.
  • the user interface comprises a toggle switch for each channel.
  • 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.
  • saving personal values may manual.
  • 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.
  • 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.
  • a participant 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, timeline_format, view_start, view_length, loop_start, loop_duration
  • 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.
  • 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.
  • 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.
  • Send parameters are classified as follows: Global - destination_bus, send_type Switchable – volume, phase, mute
  • a participant To add a plugin to a channel, a participant must be the assignee for the channel and have the edit_plugin privilege.
  • Parameters for plugin usage are classified as follows: Global - chain_position Switchable – bypassed, parameter_settings
  • a participant 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).
  • the position and label of automation nodes are a structural element of the session and as such are global parameters.
  • 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.
  • 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.
  • 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.
  • the server accepts the connection and adds it to a list of connections which have been established for that particular DAW session.
  • the server 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.
  • 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.
  • the server will instead make changes to the participant's personal value of the parameter.
  • 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.
  • 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.
  • 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 https://socket.io/docs/client-api. The following describes the basic interaction with the DAW API 20.
  • a WebSocket interface for API 20 is hosted alongside the HTTP interface.
  • the client script for socket.io is hosted at /api/daw-sockets/socket.io/socket.io.js.
  • 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.
  • each client 10a, 10b can make API requests by emitting “daw-request” 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.
  • 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.
  • 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 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 ⁇ ⁇ ⁇
  • 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.
  • 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.on("session-update", function (data) ⁇ // update the UI with new parameter values ⁇ );

Abstract

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 and second client devices comprising a user interface, in communication with the server and configured to respectively allow a first and a second users to access the audio session, wherein the first client is configured to receive, via the user interface, an instruction to grant control of 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 said elements and to allow adjustments to the value or status of their parameters.

Description

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 device 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, 4 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, 10b 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 achieve 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 UI 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, timeline_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 UI 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 https://socket.io/docs/client-api. 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/daw-sockets/socket.io/socket.io.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/socket.io", query: {session_id: 42069} // provide the current session ID here }); socket.on("error", function (e) { // handle connection errors here }); Once a connection has been established, each client 10a, 10b can make API requests by emitting “daw-request” 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} // the method parameters // (as per the API docs) }, function(response) { // handle response here }); 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 } } } 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 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 UI 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.on("session-update", function (data) { // update the UI with new parameter values });

Claims

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 device 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. The system of any preceding claim, wherein the first client device and second client device are configured to run a digital audio workstation.
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. 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. 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. The server and/or application programming interface of claim 18, wherein the parameter is a global parameter.
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. 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. 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.
PCT/GB2021/051260 2020-05-24 2021-05-24 Collaboration system WO2021240138A1 (en)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2021240138A1 true WO2021240138A1 (en) 2021-12-02

Family

ID=71406233

Family Applications (1)

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

Country Status (2)

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

Citations (4)

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

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337420A1 (en) * 2013-05-09 2014-11-13 Brian Lee Wentzloff System and Method for Recording Music Which Allows Asynchronous Collaboration over the Internet
US10403251B1 (en) * 2018-08-08 2019-09-03 Joseph Robert Escamilla System and method of collectively producing music

Patent Citations (4)

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

Also Published As

Publication number Publication date
GB202007751D0 (en) 2020-07-08
GB2595456A (en) 2021-12-01

Similar Documents

Publication Publication Date Title
US9436929B2 (en) Collaborative event playlist systems and methods
US10389782B2 (en) Synchronized playback of alternate content version
US8266214B2 (en) System and method for collaborative web-based multimedia layered platform with recording and selective playback of content
US8670651B2 (en) Editing device, editing method, and program
EP1224658B1 (en) System and method for enabling multimedia production collaboration over a network
US20210051185A1 (en) System and method for automatic meeting note creation and sharing using a user's context and physical proximity
US8150918B1 (en) Client controllable server-side playlists
KR101551868B1 (en) A method a system and an apparatus for delivering media layers
US9558162B2 (en) Dynamic multimedia pairing
US20090106429A1 (en) Collaborative music network
KR102139889B1 (en) A Real-Time Collaboration and Evaluation System for a Music Creation Activities on an online Platform
US8068105B1 (en) Visualizing audio properties
US20130024880A1 (en) Web-based music partner systems and methods
US20130339397A1 (en) Method and system for multilevel creation of consolidated dynamic playlist and utilization thereof
US20100319518A1 (en) Systems and methods for collaborative music generation
JP2002259315A (en) Conference server program
CA2866585A1 (en) Systems and methods for audio attribute mapping
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
Ådahl Shared resource for collaborative editing over a wireless network
Pachet et al. On-the-fly multi-track mixing
Hoy et al. A technological and methodological ecosystem for dynamic virtual acoustics in telematic performance contexts
WO2021240138A1 (en) Collaboration system
Chigwamba et al. Parameter relationships in high-speed audio networks

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21737116

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21737116

Country of ref document: EP

Kind code of ref document: A1