axvpb.pb.mixerCtrl

Syntax

#define AX_PB_MIXCTRL_L         0x00000001  // main left mix
#define AX_PB_MIXCTRL_R         0x00000002  // main right mix
#define AX_PB_MIXCTRL_LR_RAMP   0x00000004  // main bus ramp (applies to LRS)
#define AX_PB_MIXCTRL_S         0x00000008  // main surround mix
#define AX_PB_MIXCTRL_S_RAMP    0x00000010  // Main bus ramp (applies to surround)

#define AX_PB_MIXCTRL_A_L       0x00010000  // AuxA left mix
#define AX_PB_MIXCTRL_A_R       0x00020000  // AuxA right mix
#define AX_PB_MIXCTRL_A_LR_RAMP 0x00040000  // AuxA bus ramp (applies to LR only)
#define AX_PB_MIXCTRL_A_S       0x00080000  // AuxA surround mix
#define AX_PB_MIXCTRL_A_S_RAMP  0x00100000   // AuxA bus ramp (applies to surround)

#define AX_PB_MIXCTRL_B_L       0x00200000  // AuxB left mix
#define AX_PB_MIXCTRL_B_R       0x00400000  // AuxB right mix
#define AX_PB_MIXCTRL_B_LR_RAMP 0x00800000  // AuxB bus ramp (applies to LR only)
#define AX_PB_MIXCTRL_B_S       0x01000000  // AuxB surround mix
#define AX_PB_MIXCTRL_B_S_RAMP  0x02000000  // AuxB bus ramp (applies to surround only)

#define AX_PB_MIXCTRL_C_L       0x04000000  // AuxC left mix
#define AX_PB_MIXCTRL_C_R       0x08000000  // AuxC right mix
#define AX_PB_MIXCTRL_C_LR_RAMP 0x10000000  // AuxC bus ramp (applies to LR only)
#define AX_PB_MIXCTRL_C_S       0x20000000  // AuxC surround mix
#define AX_PB_MIXCTRL_C_S_RAMP  0x40000000  // AuxC bus ramp (applies to surround only)
#define AX_PB_MIXCTRL_C_DPL2    0x80000000  // AuxC DPL2, does not apply ITD for surrounds

u32 mixerCtrl;

Description

The mixerCtrl parameter dictates which channels the DSP must mix for a voice, and the manner in which the mixing must occur (ramped or non-ramped). The more channels the DSP must mix for a voice, the costlier the voice is, in terms of DSP cycles.

Take care to specify only the necessary minimum number of channels to mix for a voice. For example, if a sound effect is panned only to the front left and right channels, then the surround channel mixer control should not be asserted. Furthermore, if an AUX effect is not being applied to the voice, then don't assert the mixer controls for the AUXA/AUXB/AUXC busses.

The mixerCtrl parameter has the following bit definitions (where bit 1 is the least significant bit):

The ramping feature of the mixer activates a per-sample volume ramp. This eliminates "zipping" artifacts when a large volume change is applied to a sound effect. Without ramping, volume changes would be applied on a frame (or millisecond) basis, resulting in a "stair step" volume profile. A per-sample ramp provides a smoother transition, but nearly doubles the mixing cost of a given channel. Take care to use ramping only when necessary.

Bit 32 must be asserted if you are implementing DPL2 support. This bit will deactivate the ITD (initial time delay) phase modulation for the surround channels. This is necessary because phase coherence is required for proper decoding of surround information by DPL2 receivers.

Assert the AX_SYNC_USER_MIXCTRL synchronization flag in axvpb.sync, whenever mixerCtrl has changed. Please refer to the source code for the MIX library as an example of using mixerCtrl.

See Also

axvpb.sync, axvpb.pb.mix, AXSetVoiceMix

Revision History

2006/03/01 Initial version.


CONFIDENTIAL