audioChannelFormat - Matrix
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
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
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.
<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>
|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|
|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.