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);
Mixer mDryMix
direct send mixer
AdditiveInstrument.h – Sum-of-sines synthesis instrument class.
Mixer mRevMix
reverb send mixer
UGenVector mPanners
Vector of pointers to the panners.
UGenVector mSources
SpatialSource... refers to its input UGen, but with the knowledge of its position within a space...
void removeInput(UnitGenerator &inp)
void setDryLevel(float level)
Mixer mFiltMix
LPF filter send mix.
void setRoomSize(float size)
Joiner mFiltJoin
mono-to-stereo joiner (for filters)
Stereoverb mReverb
stereo freeverb
void scaleInput(UnitGenerator &inp, float val)
set the scale of an input
UGenIMap mFanOuts
Vector of pointers to the fan-outs.
virtual void nextBuffer(Buffer &outputBuffer)
fill the buffer with the next buffer_length of values
SimplePanner()
Default constructor.
void addInput(UnitGenerator &inp)
void removeSource(SpatialSource &s)
Remove a sound source.
Mixer mOutMix
master output mixer
void setWetLevel(float level)
void addSource(SpatialSource &s)
Implement Panner's addSource, inserting a panner to each source.