AXFX_REVERBSTD_EXP/AXFX_REVERBSTD_EXP_DPL2

Syntax

#include <cafe.h>
#include <cafe/axfx.h>

/*----------------------------------------------*
    For mono, stereo, surround
 *----------------------------------------------*/

typedef struct AXFX_BUS
{
    s32       *left;
    s32       *right;
    s32       *surround;

} AXFX_BUS;

typedef struct AXFX_REVERBSTD_EXP
{
    // do not touch these!
    f32       *earlyLine[3];
    u32        earlyPos;
    u32        earlyLength;
    u32        earlyMaxLength;
    f32        earlyCoef;
    f32       *preDelayLine[3];
    u32        preDelayPos;
    u32        preDelayLength;
    u32        preDelayMaxLength;
    f32       *combLine[3][2];
    u32        combPos[2];
    u32        combLength[2];
    u32        combMaxLength[2];
    f32        combCoef[2];
    f32       *allpassLine[3][2];
    u32        allpassPos[2];
    u32        allpassLength[2];
    u32        allpassMaxLength[2];
    f32        allpassCoef;
    f32        lastLpfOut[3];
    f32        lpfCoef;
    u32        active;

    // user params
    u32        earlyMode;        // early reflection mode
    f32        preDelayTimeMax;  // pre-delay max time of fused reverb (sec)
    f32        preDelayTime;     // pre-delay time of fused reverb (sec)
    u32        fusedMode;        // fused reverb mode
    f32        fusedTime;        // fused reverb time (sec)
    f32        coloration;       // coloration of all-pass filter (0.f - 1.f)
    f32        damping;          // damping of timbre  (0.f - 1.f)
    f32        earlyGain;        // output gain of early reflection (0.f - 1.f)
    f32        fusedGain;        // output gain of fused reverb (0.f - 1.f)

    AXFX_BUS  *busIn;
    AXFX_BUS  *busOut;
    f32        outGain;
    f32        sendGain;
    
} AXFX_REVERBSTD_EXP;

/*----------------------------------------------*
    For Dolby Pro Logic II
 *----------------------------------------------*/

typedef struct AXFX_BUS_DPL2
{
    s32       *L;
    s32       *R;
    s32       *Ls;
    s32       *Rs;

} AXFX_BUS_DPL2;

typedef struct AXFX_REVERBSTD_EXP_DPL2
{
    // do not touch these!
    f32       *earlyLine[4];
    u32        earlyPos;
    u32        earlyLength;
    u32        earlyMaxLength;
    f32        earlyCoef;
    f32       *preDelayLine[4];
    u32        preDelayPos;
    u32        preDelayLength;
    u32        preDelayMaxLength;
    f32       *combLine[4][2];
    u32        combPos[2];
    u32        combLength[2];
    u32        combMaxLength[2];
    f32        combCoef[2];
    f32       *allpassLine[4][2];
    u32        allpassPos[2];
    u32        allpassLength[2];
    u32        allpassMaxLength[2];
    f32        allpassCoef;
    f32        lastLpfOut[4];
    f32        lpfCoef;
    u32        active;

    // user params
    u32        earlyMode;      // early reflection mode
    f32        preDelayTimeMax;// pre-delay max time of fused reverb(sec)
    f32        preDelayTime;   // pre-delay time of fused reverb (sec)
    u32        fusedMode;      // fused reverb mode
    f32        fusedTime;      // fused reverb time (sec)
    f32        coloration;     // coloration of all-pass filter (0.f-1.f)
    f32        damping;        // damping of timbre  (0.f-1.f)
    f32        earlyGain;      // output gain of early reflection(0.f-1.f)
    f32        fusedGain;      // output gain of fused reverb (0.f-1.f)

    AXFX_BUS_DPL2 *busIn;
    AXFX_BUS_DPL2 *busOut;
    f32        outGain;
    f32        sendGain;
    
} AXFX_REVERBSTD_EXP_DPL2;

Elements

earlyMode Mode of the initial reflected sound (Early Reflection). The modes that can be specified are listed below.
AXFX_REVERBSTD_EXP_EARLY_MODE_5MS The initial reflection arrives after an approximately 5-millisecond delay. Subsequently, the sound arrives at intervals of approximately 5 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_10MS The initial reflection arrives after an approximately 10-millisecond delay. Subsequently, the sound arrives at intervals of approximately 10 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_15MS The initial reflection arrives after an approximately 15-millisecond delay. Subsequently, the sound arrives at intervals of approximately 15 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_20MS The initial reflection arrives after an approximately 20-millisecond delay. Subsequently, the sound arrives at intervals of approximately 20 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_25MS The initial reflection arrives after an approximately 25-millisecond delay. Subsequently, the sound arrives at intervals of approximately 25 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_30MS The initial reflection arrives after an approximately 30-millisecond delay. Subsequently, the sound arrives at intervals of approximately 30 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_35MS The initial reflection arrives after an approximately 35-millisecond delay. Subsequently, the sound arrives at intervals of approximately 35 milliseconds.
AXFX_REVERBSTD_EXP_EARLY_MODE_40MS The initial reflection arrives after an approximately 40-millisecond delay. Subsequently, the sound arrives at intervals of approximately 40 milliseconds.
preDelayTimeMax Maximum value of pre-delay for the end of reverberation (= maximum delay time until reflection begins). Specify a value of 0.0 or greater (units of sec). The memory to be used for pre-delay is allocated according to this value.
preDelayTime Pre-delay for the end of reverberation (= delay time until reverberation begins). Specify a value as 0.0 <= value <= preDelayTimeMax (in sec).
fusedMode Mode for the end of reverberation. The modes that can be specified are listed below.
AXFX_REVERBSTD_EXP_FUSED_MODE_OLD_AXFX The old AXFX Reverb mode.
AXFX_REVERBSTD_EXP_FUSED_MODE_METAL_TANK Provides the feel of a small, metal-walled space. The reverberating echoes interfere with each other, and the flange effect generates some high frequencies.
AXFX_REVERBSTD_EXP_FUSED_MODE_SMALL_ROOM A suitable mode for simulating a small room (about 10x10m).
AXFX_REVERBSTD_EXP_FUSED_MODE_LARGE_ROOM A suitable mode for simulating a large room (on the scale of a large conference room).
AXFX_REVERBSTD_EXP_FUSED_MODE_HALL A suitable mode for simulating concert halls.
AXFX_REVERBSTD_EXP_FUSED_MODE_CAVERNOUS A suitable mode for simulating caves.
fusedTime The reverberation time for the end of reverberation. Specify a value of 0.0 or greater (units of sec).
coloration Tunes the coefficients of the all-pass filter. Specify a value as 0.0 <= value <= 1.0. This number is used to simulate the acoustic properties of sound-reflective walls. In general, the smaller this value becomes, the coarser the reverberation density. In the opposite way, as this value increases the reverberation becomes more dense, but waveform interference may cause the high frequencies to stand out.
damping Tunes the filter coefficient of the low-pass filter (LPF). Specify a value as 0.0 <= value <= 1.0. As this value approaches 0.0, the signal's low-frequency portion becomes its main content and reverb begins to stand out. In the opposite way, as this value approaches 1.0, the high-frequency portion of the signal is passed with less attenuation, and reverb becomes less noticeable.
earlyGain Mix gain of the initial reflected sound. Specify a value as 0.0 <= value <= 1.0.
fusedGain Mix gain for the end of reverberation. Specify a value as 0.0 <= value <= 1.0.
busIn Specifies the input buffer for effect bus sends.
busOut Specifies the output buffer for effect bus sends.
outGain Output gain. Specify a value as 0.0 <= value <= 1.0.
sendGain Send gain to the next-level effect bus. Specify a value as 0.0 <= value <= 1.0.

Description

When using the Standard Reverb Expansion, assign appropriate values to the various parameters of the AXFX_REVERBSTD_EXP or AXFX_REVERBSTD_EXP_DPL2 structure. Normally, AXFX_REVERBSTD_EXP structure is used; the AXFX_REVERBSTD_EXP_DPL2 structure is used with Dolby Pro Logic II.

Revision History

2013/05/08 Automated cleanup pass.
2007/08/07 Initial version.


CONFIDENTIAL