59 AXFrameCallback *callback;
65 static AxManager &GetInstance();
72 OutputMode GetOutputMode();
73 void const *GetZeroBufferAddress();
74 bool CheckInit() {
return mInitialized; }
75 f32 GetOutputVolume()
const;
76 FxBase::LinkList &GetEffectList(AuxBus bus)
78 NW4RAssertHeaderClampedLValue_Line(173, bus, AUX_A, AUX_BUS_NUM);
84 return sBiquadFilterCallbackTable[
static_cast<u8
>(index)];
87 void SetOutputMode(OutputMode mode);
88 void SetMainOutVolume(f32 volume,
int frames);
89 void SetBiquadFilterCallback(
int type,
90 BiquadFilterCallback
const *callback);
92 void RegisterCallback(CallbackListNode *node,
93 AXFrameCallback *callback);
94 void UnregisterCallback(CallbackListNode *node);
96 bool AppendEffect(AuxBus bus, FxBase *pFx);
97 void ClearEffect(AuxBus bus,
int frame);
98 void ShutdownEffect(AuxBus bus);
100 f32 GetMasterVolume()
const {
101 return mMasterVolume.GetValue();
103 void SetMasterVolume(f32 volume,
int frame);
106 bool IsResetReady()
const {
107 return mResetReadyCounter == 0;
110 AxVoice::SrcType GetSrcType()
const {
119 static void AxCallbackFunc();
120 static void AuxCallbackFunc(
void* pChans,
void* pContext);
121 static void AiDmaCallbackFunc();
125 static u8
const AUX_CALLBACK_WAIT_FRAME = 6;
126 static u16
const AUX_RETURN_VOLUME_MAX = AX_MAX_VOLUME;
127 static int const FX_SAMPLE_RATE = 32000;
128 static SampleFormat
const FX_SAMPLE_FORMAT = SAMPLE_FORMAT_PCM_S32;
129 static int const FX_BUFFER_SIZE = 0x180;
130 static int const ZERO_BUFFER_SIZE = 256;
131 static int const SAMPLES_PAR_AUDIO_FRAME;
132 static int const AUDIO_FRAME_INTERVAL;
134 static byte_t sZeroBuffer[ZERO_BUFFER_SIZE];
135 static BiquadFilterCallback
const *sBiquadFilterCallbackTable[128];
136 static BiquadFilterLpf sBiquadFilterLpf;
137 static BiquadFilterHpf sBiquadFilterHpf;
138 static BiquadFilterBpf512 sBiquadFilterBpf512;
139 static BiquadFilterBpf1024 sBiquadFilterBpf1024;
140 static BiquadFilterBpf2048 sBiquadFilterBpf2048;
144 OutputMode mOutputMode;
145 void *mZeroBufferAddress;
146 CallbackListNode::LinkList mCallbackList;
147 AXFrameCallback *mNextAxRegisterCallback;
149 bool mUpdateVoicePrioFlag;
151 MoveValue<f32, int> mMasterVolume;
152 MoveValue<f32, int> mMainOutVolume;
153 MoveValue<f32, int> mVolumeForReset;
154 AIDMACallback mOldAidCallback;
155 volatile s32 mResetReadyCounter;
156 MoveValue<f32, int> mAuxFadeVolume[AUX_BUS_NUM];
157 MoveValue<f32, int> mAuxUserVolume[AUX_BUS_NUM];
158 FxBase::LinkList mFxList[AUX_BUS_NUM];
159 AXAuxCallback mAuxCallback[AUX_BUS_NUM];
160 void *mAuxCallbackContext[AUX_BUS_NUM];
161 u8 mAuxCallbackWaitCounter[AUX_BUS_NUM];
163 ulong mEffectProcessTick[AUX_BUS_NUM];
164 AxVoice::SrcType mSrcType;