19 mFiltJoin(mLLPF, mRLPF),
41 for (
unsigned i = 0; i < which; i++) {
48 Panner * inPan =
new Panner(soundSource);
50 FanOut * inFan =
new FanOut(*inPan, 3);
61 for (
unsigned i = 0; i <
mSources.size(); i++) {
63 FanOut * inFan = (FanOut *)
mFanOuts[i];
64 Panner * inPan = (Panner *)
mPanners[i];
82 float half = 1.0f/2.0f;
85 for (
unsigned i = 0; i < mPanners.size(); i++) {
86 if ( ! mSources[i])
continue;
87 az = ((SpatialSource *) mSources[i])->azimuth() /
CSL_TWOPI;
88 while (az < 0.0f) az += 1.0f;
90 if (rem > half) rem = 1.0f - rem;
93 ((Panner *) mPanners[i])->setPosition(rem);
95 float distScale = 1.0f / sqrt(((SpatialSource *) mSources[i])->distance());
97 mRevMix.scaleInput(*mFanOuts[i], 1.0f - distScale);
100 mFiltMix.scaleInput(*mFanOuts[i], 0.0f);
101 mDryMix.scaleInput(*mFanOuts[i], distScale);
103 float ratio = fabs(0.75f - az) * 4.0f;
104 mFiltMix.scaleInput(*mFanOuts[i], (1.0f - ratio) * distScale);
105 mDryMix.scaleInput(*mFanOuts[i], ratio * distScale);
108 mOutMix.nextBuffer(outputBuffer);