143 PAUSE_STATE_UNPAUSING,
164 enum ParamUpdateFlags {
165 PARAM_UPDATE_VOLUME = (1 << 0),
166 PARAM_UPDATE_PAN = (1 << 1),
167 PARAM_UPDATE_SURROUND_PAN = (1 << 2),
168 PARAM_UPDATE_PRIORITY = (1 << 3),
173 virtual void detail_UpdateAmbientParam(
const void*, ulong,
int,
SoundAmbientParam*);
174 virtual int detail_GetAmbientPriority(
const void*, ulong);
175 virtual int detail_GetRequiredVoiceOutCount(
const void*, ulong);
190 virtual void at_0x0c(
void *, BasicSound *);
206 virtual void *detail_AllocAmbientArg(ulong size);
208 virtual void detail_FreeAmbientArg(
void *pArg,
228 BasicSound(
int priority,
int ambientPriority);
238 virtual void Shutdown();
239 virtual bool IsPrepared()
const = 0;
240 virtual bool IsAttachedTempSpecialHandle() = 0;
241 virtual void DetachTempSpecialHandle() = 0;
242 virtual void InitParam();
243 virtual BasicPlayer &GetBasicPlayer() = 0;
244 virtual BasicPlayer
const &GetBasicPlayer()
const = 0;
245 virtual void OnUpdatePlayerPriority() {}
246 virtual void UpdateMoveValue();
247 virtual void UpdateParam();
250 void StartPrepared();
252 void Pause(
bool flag,
int fadeFrames);
253 bool IsPause()
const;
254 void Stop(
int fadeFrames);
255 void SetAutoStopCounter(
int count);
256 void FadeIn(
int fadeFrames);
258 bool GetStartedFlag()
const {
return mStartedFlag; }
259 ulong GetId()
const {
return mId; }
260 PlayerHeap *GetPlayerHeap() {
return mPlayerHeap; }
261 SoundPlayer *GetSoundPlayer() {
return mSoundPlayer; }
262 int GetVoiceOutCount()
const;
263 int GetPriority()
const {
return mPriority; }
265 void SetPlayerPriority(
int priority);
266 void SetInitialVolume(f32 volume);
267 void SetVolume(f32 volume,
int frames);
268 void SetPitch(f32 pitch);
269 void SetPan(f32 pan);
270 void SetSurroundPan(f32 pan);
271 void SetLpfFreq(f32 freq);
272 void SetFxSend(AuxBus bus, f32 send);
273 void SetRemoteFilter(
int filter);
274 void SetPanMode(PanMode mode);
275 void SetPanCurve(PanCurve curve);
276 void SetAmbientInfo(
AmbientInfo const &ambientArgInfo);
277 void SetId(ulong
id);
278 void SetOutputLineFlag(
int flag);
280 void AttachPlayerHeap(PlayerHeap *heap);
281 void AttachSoundPlayer(SoundPlayer *player);
282 void AttachSoundActor(SoundActor *actor);
283 void AttachExternalSoundPlayer(ExternalSoundPlayer *extPlayer);
285 bool IsAttachedGeneralHandle();
286 bool IsAttachedTempGeneralHandle();
288 void DetachPlayerHeap(PlayerHeap *heap);
289 void DetachSoundPlayer(SoundPlayer *player);
290 void DetachSoundActor(SoundActor *actor);
291 void DetachExternalSoundPlayer(ExternalSoundPlayer *extPlayer);
292 void DetachGeneralHandle();
293 void DetachTempGeneralHandle();
295 int GetRemainingFadeFrames()
const;
297 int CalcCurrentPlayerPriority()
const
299 return ut::Clamp(mPriority + mAmbientParam.priority, PRIORITY_MIN,
303 void ClearAmbientArgUpdateCallback() {
304 mAmbientInfo.argUpdateCallback = NULL;
307 static int GetAmbientPriority(
AmbientInfo const &ambientInfo,
313 static ulong
const INVALID_ID = -1;
314 static int const PRIORITY_MAX = 127;
315 static int const PRIORITY_MIN = 0;
317 static ut::detail::RuntimeTypeInfo
const typeInfo;
322 PlayerHeap *mPlayerHeap;
323 SoundHandle *mGeneralHandle;
324 SoundHandle *mTempGeneralHandle;
325 SoundPlayer *mSoundPlayer;
326 SoundActor *mSoundActor;
327 ExternalSoundPlayer *mExtSoundPlayer;
329 SoundParam mAmbientParam;
330 SoundActorParam mActorParam;
331 MoveValue<f32, int> mFadeVolume;
332 MoveValue<f32, int> mPauseFadeVolume;
337 PauseState mPauseState;
340 s32 mAutoStopCounter;
341 ulong mUpdateCounter;
344 u8 mBiquadFilterType;
347 MoveValue<f32, int> mExtMoveVolume;
353 f32 mBiquadFilterValue;
357 f32 mFxSend[AUX_BUS_NUM];
358 f32 mRemoteOutVolume[4];
360 ut::LinkListNode mPriorityLink;
361 ut::LinkListNode mSoundPlayerPlayLink;
362 ut::LinkListNode mSoundPlayerPriorityLink;
363 ut::LinkListNode mExtSoundPlayerPlayLink;
367 friend class snd::SoundHandle;