aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/effects/autowah.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/effects/autowah.cpp')
-rw-r--r--Alc/effects/autowah.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/Alc/effects/autowah.cpp b/Alc/effects/autowah.cpp
index e034c610..e455acf2 100644
--- a/Alc/effects/autowah.cpp
+++ b/Alc/effects/autowah.cpp
@@ -119,11 +119,22 @@ void ALautowahState::update(const ALCcontext *context, const ALeffectslot *slot,
mFreqMinNorm = MIN_FREQ / device->Frequency;
mBandwidthNorm = (MAX_FREQ-MIN_FREQ) / device->Frequency;
- mOutBuffer = device->FOAOut.Buffer;
- mOutChannels = device->FOAOut.NumChannels;
- for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
- ComputePanGains(&device->FOAOut, alu::Matrix::Identity()[i].data(), slot->Params.Gain,
- mChans[i].TargetGains);
+ if(ALeffectslot *target{slot->Params.Target})
+ {
+ mOutBuffer = target->WetBuffer;
+ mOutChannels = target->NumChannels;
+ for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
+ ComputePanGains(target, alu::Matrix::Identity()[i].data(), slot->Params.Gain,
+ mChans[i].TargetGains);
+ }
+ else
+ {
+ mOutBuffer = device->FOAOut.Buffer;
+ mOutChannels = device->FOAOut.NumChannels;
+ for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
+ ComputePanGains(&device->FOAOut, alu::Matrix::Identity()[i].data(), slot->Params.Gain,
+ mChans[i].TargetGains);
+ }
}
void ALautowahState::process(ALsizei SamplesToDo, const ALfloat (*RESTRICT SamplesIn)[BUFFERSIZE], ALfloat (*RESTRICT SamplesOut)[BUFFERSIZE], ALsizei NumChannels)