82 std::vector<Comb*>::iterator iComb =
mCombFilters.begin();
103 bufferPtr =
new sample[bufferSize];
104 for (j = 0; j < bufferSize; j++)
107 combFilter =
new Comb();
108 combFilter->
setBuffer(bufferPtr, bufferSize);
114 bufferPtr =
new sample[bufferSize];
115 for (j = 0; j < bufferSize; j++)
119 allpassFilter->
setBuffer(bufferPtr, bufferSize);
134 for (std::vector<Comb*>::iterator iComb =
mCombFilters.begin();
180 unsigned numFrames = outputBuffer.mNumFrames;
181 sample * fp = outputBuffer.buffer(outBufNum);
182 this->pullInput(outputBuffer);
183 sample * inputBuf = mInputPtr;
187 logMsg(
"Freeverb nextBuffer");
189 for (i = 0; i < numFrames; i++) {
191 input = inputBuf[i] * mGain;
193 std::vector<Comb*>::iterator iComb = mCombFilters.begin();
194 for (; iComb != mCombFilters.end(); ++iComb)
195 out += (*iComb)->process(input);
197 std::vector<FAllpass*>::iterator iAllpass = mAllpassFilters.begin();
198 for (; iAllpass != mAllpassFilters.end(); ++iAllpass)
199 out = (*iAllpass)->process(out);
200 *fp++ = out * mWetLevel + inputBuf[i] * mDryLevel;
263 join->nextBuffer(outputBuffer);
sample * SampleBuffer
1-channel buffer data type, vector of (sample)
void constructReverbGraph()
void logMsg(const char *format,...)
These are the public logging messages.
AdditiveInstrument.h – Sum-of-sines synthesis instrument class.
Effect – mix-in for classes that have unit generators as inputs (like filters).
void setWidth(float width)
Currently not used, as this reverb became mono in/out.
void setDampening(float damp)
Specified in percentage (from 0 to 100%).
void setDampening(float damp)
virtual bool isActive()
am I active?
void setBuffer(float *buf, int size)
void setDryLevel(float level)
Amount of the original "dry" signal in the output.
const int kAllpassBufferSizes[]
void setRoomSize(float size)
Setting the room size makes longer tails. The value has a range from 0 to 1.
std::vector< FAllpass * > mAllpassFilters
void setBuffer(float *buf, int size)
SampleBufferVector mAllpassBuffers
void setDryLevel(float level)
void setWetLevel(float level)
Amount of wet (reverberation) in the mixed output.
float sample
(could be changed to int, or double)
void nextBuffer(Buffer &outputBuffer, unsigned outBufNum)
really compute the next buffer given an offset base channel; this is called by nextBuffer, possibly multiple times
void setFeedback(float val)
void setRoomSize(float size)
bool isActive()
am I active?
CSL port of the public domain Freeverb reverberator.
Stereoverb(UnitGenerator &input)
Splitter class – a de-multiplexer for multi-channel signals.
void setWidth(float width)
void nextBuffer(Buffer &outputBuffer)
I'm stereo.
Buffer – the multi-channel sample buffer class (passed around between generators and IO guys)...
Joiner class – a multiplexer for multi-channel signals.
Freeverb(UnitGenerator &input)
std::vector< Comb * > mCombFilters
SampleBufferVector mCombBuffers
void setWetLevel(float level)
const float kInitialWidth
Base class of CSL exceptions (written upper-case). Has a string message.
const int kCombBufferSizes[]