summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-05-25 21:57:46 +0200
committerrobojumper <robojumper@gmail.com>2025-05-25 22:08:27 +0200
commitd016bf80054ee09370809fc88f1e103532e5b03e (patch)
tree65c8b4744e0a05a0dab0f20a064495f653b11f26 /src
parent7616b37976dac6248c5aac07c3ec882160114e70 (diff)
snd_BasicPlayer OK
Diffstat (limited to 'src')
-rw-r--r--src/nw4r/snd/snd_AxManager.cpp16
-rw-r--r--src/nw4r/snd/snd_BasicPlayer.cpp13
2 files changed, 27 insertions, 2 deletions
diff --git a/src/nw4r/snd/snd_AxManager.cpp b/src/nw4r/snd/snd_AxManager.cpp
index 1cb2c4b1..971f5e4b 100644
--- a/src/nw4r/snd/snd_AxManager.cpp
+++ b/src/nw4r/snd/snd_AxManager.cpp
@@ -68,7 +68,8 @@ AxManager::AxManager() :
mInitialized (false),
mUpdateVoicePrioFlag (true),
mOldAidCallback (nullptr),
- mResetReadyCounter (-1)
+ mResetReadyCounter (-1),
+ field_0x100(5)
{
mMainOutVolume.InitValue(1.0f);
mMasterVolume.InitValue(1.0f);
@@ -307,7 +308,10 @@ OutputMode AxManager::GetOutputMode()
}
void AxManager::SetMasterVolume(f32 volume, int frame) {
- mMasterVolume.SetTarget(ut::Clamp(volume, 0.0f, 1.0f), (frame + 2) / 3);
+ if (volume < 0.0f) {
+ volume = 0.0f;
+ }
+ mMasterVolume.SetTarget(volume, (frame + 2) / 3);
if (frame == 0) {
VoiceManager::GetInstance().UpdateAllVoicesSync(Voice::SYNC_AX_VE);
@@ -395,6 +399,9 @@ bool AxManager::AppendEffect(AuxBus bus, FxBase* pFx) {
void AxManager::ClearEffect(AuxBus bus, int frame) {
if (frame == 0) {
ShutdownEffect(bus);
+ if (!mAuxFadeVolume[bus].IsFinished()) {
+ mAuxFadeVolume[bus].SetTarget(0.0f, 0);
+ }
return;
}
@@ -447,6 +454,8 @@ void AxManager::AuxCallbackFunc(void* pChans, void* pContext) {
void** ppChans = static_cast<void**>(pChans);
AuxBus bus = static_cast<AuxBus>(reinterpret_cast<u32>(pContext));
+ int tick = OSGetTick();
+
if (GetInstance().GetOutputMode() == OUTPUT_MODE_DPL2) {
num = AX_DPL2_MAX;
@@ -468,10 +477,12 @@ void AxManager::AuxCallbackFunc(void* pChans, void* pContext) {
for (int i = 0; i < num; i++) {
std::memset(buffer[i], 0, FX_BUFFER_SIZE);
}
+ GetInstance().mEffectProcessTick[bus] = OSGetTick() - tick;
} else if (GetInstance().GetEffectList(bus).IsEmpty()) {
for (int i = 0; i < num; i++) {
std::memset(buffer[i], 0, FX_BUFFER_SIZE);
}
+ GetInstance().mEffectProcessTick[bus] = OSGetTick() - tick;
} else {
for (FxBase::LinkList::Iterator it =
GetInstance().GetEffectList(bus).GetBeginIter();
@@ -480,6 +491,7 @@ void AxManager::AuxCallbackFunc(void* pChans, void* pContext) {
it->UpdateBuffer(num, buffer, FX_BUFFER_SIZE, FX_SAMPLE_FORMAT,
FX_SAMPLE_RATE, GetInstance().GetOutputMode());
}
+ GetInstance().mEffectProcessTick[bus] = OSGetTick() - tick;
}
}
diff --git a/src/nw4r/snd/snd_BasicPlayer.cpp b/src/nw4r/snd/snd_BasicPlayer.cpp
index e5695e31..4045f4b8 100644
--- a/src/nw4r/snd/snd_BasicPlayer.cpp
+++ b/src/nw4r/snd/snd_BasicPlayer.cpp
@@ -41,6 +41,9 @@ void PlayerParamSet::Init()
for (int i = 0; i < AUX_BUS_NUM; i++)
fxSend[i] = 0.0f;
+ for (int i = 0; i < 4; i++)
+ remoteOutVolume[i] = 1.0f;
+
for (int i = 0; i < (int)ARRAY_LENGTH(voiceOutParam); i++)
{
VoiceOutParam *param = &voiceOutParam[i];
@@ -99,4 +102,14 @@ void BasicPlayer::SetRemoteFilter(int filter)
mPlayerParamSet.remoteFilter = filter;
}
+void BasicPlayer::SetRemoteOutVolume(int remote, f32 volume)
+{
+ mPlayerParamSet.remoteOutVolume[remote] = volume;
+}
+
+f32 BasicPlayer::GetRemoteOutVolume(int remote) const
+{
+ return mPlayerParamSet.remoteOutVolume[remote];
+}
+
}}} // namespace nw4r::snd::detail