1 Definition 2 Functional Requirements 3 Syntax 4 Semantics

1 Definition

User Command (CAE-UCM) is End User’s data enabling editing and control of an Audio or Visual Scene: a request (UserCommandRQ), input to the AIM that executes it, or the response to it (UserCommandRS), output by that AIM under the same UserCommandID. It is one Data Type: exactly one of the two is present. A request specifies navigation, remixing, spatial positioning, change of the features of Objects, substitution, motion, listing, and acoustic environment modifications of Objects and Scenes. Objects and Scenes are identified by the name the User gave them.

2 Functional Requirements

User Command shall support the following Functional Requirements:

Scene Navigation Changing the position and/or orientation of the end user by specifying a new User Point of View.
Acquire Object Acquire an Object from the environment or a storage device.
Deliver Object Deliver an Object to the environment or a storage device.
Remixing Level (LUFS measured as specified by ITU‑R BS.1770), a number, specifying amplification or attenuation of Audio Objects.
Addition/Removal Adding Audio Objects and Speech Objects to a Scene, each placed at a position and orientation given as numbers; removing them.
Object Repositioning Moving an Object to a new position and orientation: a command is absolute, and every amount in it is a required number.
Feature Change Changing a feature of an Object from a defined list (ChangedObjects), each by a value; a new Name is the same Object with a unique name.
Object Substitution Having a Speech Object translated into another language, the translation replacing the original at its place.
Object Motion Assigning motion attributes to Audio Objects using Spatial Attitude and Acoustic Profile.
Acoustic Environment Modification Changing the acoustic characteristics applied to Audio Objects and Scenes through Acoustic Profiles, and the Closed Space of a Scene.
Listing Listing the Objects and Scenes of a Kind, by name, with their Duration, number of children and Version; listing the members of a named Scene with their PoV; listing everything (All) that an editing AIM keeps.
Deletion Deleting Objects and Scenes, by the name the User gave them, with all their versions, from where the Module keeps them: not the same as removing an Object from a Scene.
Revocation Revoking an earlier User Command, by its UserCommandID.
Response Reporting, in the same Data Type and under the same UserCommandID, how each action of a request was executed.

3 Syntax

https://schemas.mpai.community/CAE3/V1.0/data/UserCommand.json

4 Semantics

Label Description
Header User Command Header, format “CAE-UCM-Vx.y”.
MInstanceID Identifier of the M-Instance.
UEnvironmentID Identifier of the User Environment.
UserCommandID Identifier of the User Command. The response carries the UserCommandID of the request it answers.
UserCommandTime Timestamp indicating when the command is issued (Simple Time).
Confidence A number from 0 to 1: how likely it is that the User Command is what the User asked for – for instance, when it is interpreted from what the User says.
UserCommandRQ A request. Exactly one of UserCommandRQ and UserCommandRS is present. Every amount in a request is a number the request carries; an AIM that finds none reports it, it does not guess one. Objects and Scenes are identified by the name the User gave them.
– UserPoV Where the Scene, or an Object heard alone, is heard from (Point of View).
– LUFS The loudness, in LUFS, as a number. Alone it sets the loudness of the open Object; with ModifiedObjects it is the amount the modification carries when no entry has an Acoustic Profile or a Spatial Attitude.
– RevokedUserCommandID The User Command to revoke, by its UserCommandID. It goes to the AIM that executed that command, which undoes it if it can; the report says whether it did: Done, Failed, or NotSupported where the AIM cannot undo it.
– AcquiredObject The Object to acquire or to open: an Audio, Speech, 3D Model or Visual Object, in full or by its identifier (ObjectOrID).
– DeliveredObject The Object to deliver: an Audio, Speech, 3D Model or Visual Object, in full or by its identifier (ObjectOrID).
– AddedObjects Objects added to a Scene, or composed into an Audio Object.
  – ObjectID The name of the Audio Object, or of the Scene, that the command makes of the Objects it adds (the name the User gives it, such as “concert”). Required when the command makes one: an Audio Object composed of the Objects, or the Scene created when none is open. A name that is taken becomes the name followed by the next free number (“concert 2”).
  – Objects[] The Objects added.
    – ObjectID The Object, or its name.
    – SpatialAttitude Where the Object is put: the position and the orientation, as numbers. Required (Spatial Attitude).
– RemovedObjects Objects removed from a Scene.
  – Objects[] Each entry gives the ObjectID, or the SpatialAttitude, or both; at least one.
– DeletedObjects Deletes, from where the Module keeps them, the Objects and Scenes named – the Audio Objects, Speech Objects, Audio Scenes, Speech Scenes and Multimodal Scenes, by the name the User gave them, with all their versions. Not the same as RemovedObjects, which takes an Object out of the open Scene and leaves it kept. An Object that is a member of a Scene is not deleted, and the response says so, naming the Scene: the Scene is deleted first. A name that is not known fails. Nothing is deleted that is not named.
  – Objects[] The Objects and Scenes to delete: at least one entry.
    – ObjectID The Object or Scene to delete, by the name the User gave it. Required.
– MovedObjects Objects moved to a new position and orientation.
  – Objects[] Each entry has a NewSpatialAttitude and either an ObjectID or an OldSpatialAttitude.
    – ObjectID The Object, by name.
    – AcousticProfile The Object part of the Acoustic Profile.
    – OldSpatialAttitude Where the Object is now, as numbers; names the Object when ObjectID is absent.
    – NewSpatialAttitude Where the Object is to be: the position and the orientation, as numbers. Required.
– ChangedObjects Edits the features of the Objects named, each feature changed by a value. The features that can be changed are listed here by name, and nothing else is allowed; every edit is a new version, which has the name of the Object. The sound itself is not a feature: it is not edited.
  – Objects[] Each entry has an ObjectID and at least one of the features below.
    – ObjectID The Object whose features are changed, by its name.
    – Name The new name of the Object (its AudioObjectID or BasicAudioObjectID): it is the same Object, and the name stays unique – a name that is taken becomes the name followed by the next free number (“violin 2”).
    – Time The time of the Object (AudioObjectTime, BasicAudioObjectTime).
    – SpaceTime The Space/Time of an Audio Object (AudioObjectSpaceTime): the frame its children are placed in.
    – UserPoV Where the Object is heard from when it is heard alone.
    – ParentAudioObjectIDs The names of the Audio Objects the Audio Object is a child of.
    – DescrMetadata The description of the Object (at most 2048 characters).
    – Children[] Where and when each child of an Audio Object, named, is inside the parent: ObjectID (the name of the child, a Basic Audio Object or an Audio Object) and SpaceTime.
    – DeviceID The device of a Basic Audio Object.
    – Level The loudness of a Basic Audio Object, in LUFS, a number.
    – PerceptStatus The percept status of a Basic Audio Object.
    – AcousticProfile The Object part of the Acoustic Profile of a Basic Audio Object.
    – AudioQualifier The Audio Qualifier of a Basic Audio Object.
    – SpatialAttitude Where the Object is in the open Scene: a Scene Editing feature.
    – Qualifier The Qualifier of a Speech Object: a Speech Object Editing feature.
– ModifiedObjects Objects whose acoustics are modified. When present, either LUFS is present or each entry has an AcousticProfile or a SpatialAttitude.
  – Objects[] The entries: ObjectID, AcousticProfile (Object part), SpatialAttitude.
– ListedObjects Asks the Editing AIM that keeps the Objects or Scenes of a Kind to list them. The response (UserCommandRS.ListedObjects) gives their names, never storage keys.
  – Kind One of Audio Object, Basic Audio Object, Speech Object, Basic Speech Object, Audio Scene, Speech Scene, Multimodal Scene, or All (everything the editing AIM keeps). Required.
  – ObjectID The name of the one Scene or Object to list, of the Kind given (not All). For a Scene the response gives the number of its members and, for each member, its name and its PoV – its position and orientation as provided in the Scene; no Object is touched. Absent, everything of the Kind is listed.
– ClosedSpace[] The space the open Scene is in – a room built round its Objects: one Closed Space, by ID or in full. It replaces the one the Scene had.
– ModifiedScene The acoustics of the open Scene: what happens to the sound of its Objects on the way to the listener.
  – AcousticProfile The Scene part of the Acoustic Profile; it is the one the Scene has from now on.
– TranslatedObjects Speech Objects to translate into another language, with Text and Speech Translation (MMC-TST). The source language is the one the Speech Object’s own Qualifier states. The translated Speech Object replaces the original in the Scene, at its place.
  – Objects[] Each entry has an ObjectID and a SpeechQualifier, both required.
    – ObjectID The Speech Object, by name.
    – SpeechQualifier The Qualifier of the translated Speech Object: its Attributes.Metadata.Language states the target language.
UserCommandRS The response: how the User Command was executed, output by the AIM that executed it, under the UserCommandID of the request. Outcome is required.
– ReportTime When the report was made.
– Outcome Done: every action done; Partly: some; Failed: none; Ignored: the command names nothing this AIM executes.
– Actions[] One entry per action of the request.
  – Action The field of UserCommandRQ the action comes from: UserPoV, LUFS, RevokedUserCommandID, AcquiredObject, DeliveredObject, AddedObjects, RemovedObjects, DeletedObjects, MovedObjects, ChangedObjects, ModifiedObjects, ClosedSpace, ModifiedScene, TranslatedObjects, ListedObjects.
  – ObjectID The name of the Object or Scene acted on.
  – Outcome Done, Failed or NotSupported.
  – ResultID The name of what the action produced: every edit is a new version, which has the name of the Object or Scene edited.
  – Reason Why the action was not done (at most 1024 characters).
– ListedObjects[] The answer to a ListedObjects request: what the AIM keeps of the Kind asked for, by name – never a storage key.
  – ObjectID The name of the Object or Scene.
  – Kind Audio Object, Basic Audio Object, Speech Object, Basic Speech Object, Audio Scene, Speech Scene or Multimodal Scene.
  – MemberObjectIDs[] For an Audio Object, a Speech Object or a Scene: the names of the Objects it is made of.
  – Duration Of an Object: how long it lasts, in seconds (that of its sound; for an Object made of others, the end of the child that lasts longest inside it). Absent where the AIM cannot tell.
  – ChildCount Of an Object: the number of children it is made of (0 for a Basic Object).
  – Version Of an Object: its version – 1 for the first, one more for every edit.
  – ObjectCount Of a Scene named in the request: the number of its members.
  – Members[] Of a Scene named in the request: each member by its name, with its PoV.
    – ObjectID The name of the member.
    – PoV Its position and orientation as provided in the Scene (Spatial Attitude).
DataXMData Data Exchange Metadata describing the User Command instance.
DescrMetadata Descriptive metadata (at most 2048 characters).

5 Conformance Testing

A Data instance conforms with User Command (CAE‑UCM) if:

  1. Its JSON Object validates against the User Command JSON Schema, and contains exactly one of UserCommandRQ and UserCommandRS.
  2. Any included JSON Objects validate against their respective JSON Schemas.
  3. All data elements:
    1. Have the specified Data Types.
    2. Conform with the qualifiers defined in their JSON Schemas.

6 Performance Assessment