audioChannelFormat - Matrix

Description

An audioChannelFormat represents a single sequence of audio samples on which some action may be performed, such as movement of an object, which is rendered in a scene. It is sub-divided in the time domain into one or more audioBlockFormats.

The typeDefinition described here is for the 'Matrix' type, which means there are extra sub-elements available to allow the definition of encoding (e.g. Left/Right to Mid/Side), decoding (e.g. Mid/Side to Left/Right) and direct (e.g. Lo/Ro) matrices.

The other types of audioChannelFormats are:

The matrix element contains a list of coefficient sub-elements which each refer to other channels and a multiplication factor. All the coefficients in this list should be added together to generate the matrix equation.

There are three types of matrix that can be defined: encoding, decoding and direct:

  • An encoding matrix will be typically used to describe how the audio signals have been encoded to generate matrixed audio signals.
  • A decoding matrix will be typically used to describe how the audio signals can be converted from matrixed audio signals to another type of output (typically, but not restricted to “DirectSpeakers”). This could be the reverse process of the encoding matrix. The encoding matrix can reference a decoding matrix to connect related matrices.
  • A direct matrix can convert from channel-based to channel-based directly (such as downmixing).

The audioPackFormat contains sub-elements that group Matrix channels and allow cross-referencing between encoding and decoding matrices.

For example, the encoding matrix element of a ‘Side’ channel will contain two coefficient sub-elements, one with the value 0.5 referring to "Left" and the other with a value of −0.5 referring to ‘Right’; this gives

An example of a decoding matrix would be

where ‘Left’ becomes a channel-based output.

A direct matrix example would be a 5.1→LoRo downmix where

The values for gain and phase shift can either be constants (using gain and phase) or they may be variables (using gainVar and phaseVar) that allow the renderer to decide the value, maybe via another source of metadata.

Example

<audioChannelFormat audioChannelFormatID="AC_00021101"
                    audioChannelFormatName="WeirdMidDecode"
                    typeLabel="0002" typeDefinition="Matrix">
  <audioBlockFormat audioBlockFormatID="AB_00021101_00000001">
    <matrix>
      <coefficient gain="0.2" phase="90" delay="0.0">AC_00021001</coefficient>
      <coefficient gainVar="-gv1" phaseVar="-pv1" delayVar="dv3">AC_00021002</coefficient>
    </matrix>
    <outputChannelIDRef>AC_00010001</outputChannelIDRef>
  </audioBlockFormat>
</audioChannelFormat>

Attributes

The common audioChannelFormat attributes are used for the typeDefinition 'Matrix'.

Sub-elements

The common audioChannelFormat sub-elements are used for the typeDefinition 'Matrix'.

audioBlockFormat

In addition to the common audioBlockFormat attributes the following sub-elements are defined for the audioBlockFormat with typeDefinition 'Matrix'.

Sub-elements

Element Sub-elements Description Quantity
outputChannelFormatIDRef For defining a decoding or direct matrix, this is the output audioChannelFormat that defines the channel being decoded to. 0 or 1
matrix coefficient Contains the coefficients for combining other channels 1

matrix sub-elements

Sub-element Attribute Description Units Example Quantity Default
coefficient gain Multiplication factor of another channel. Constant value. Type: float Linear gain value* −0.5 0...* 1.0
coefficient gainVar Multiplication factor of another channel. Variable. Type: string (reference to float) Linear gain value clev 0...* -
coefficient phase Phase shift of another channel. Constant value. Type: float Degrees 90 0...* 0.0
coefficient phaseVar Phase shift of another channel. Variable. Type: string (reference to float) Degrees ph 0...* -
coefficient delay Time delay of another channel. Constant value Type: float ms (float) 10.5 0.0 0...* 0.0
coefficient delayVar Time delay of another channel. Variable Type: string (reference to float) ms (float) del 0...* -
coefficient - Reference to other channel definition - AC_00010001 1...* -

Note 1: No more than one use of each attribute can be specified.
Note 2: A negative gain value implies an inversion of the signal.