117 *ptr++ = sinf(accum);
130 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
131 if ( ! mWavetable.mAreBuffersAllocated)
134 unsigned tableLength = mWavetable.mNumFrames;
135 float rateRecip = (float) tableLength / (
float)
mFrameRate;
136 float phase = mPhase;
137 unsigned numFrames = outputBuffer.mNumFrames;
141 logMsg(
"WavetableOscillator nextBuffer");
150 switch (mInterpolate) {
152 for (
unsigned i = 0; i < numFrames; i++) {
153 while (phase >= tableLength)
154 phase -= tableLength;
156 phase += tableLength;
157 index = (
unsigned int) floorf(phase);
158 samp1 = waveform[index];
159 *buffer++ = (samp1 * scaleValue) + offsetValue;
160 phase += (freqValue * rateRecip);
166 for (
unsigned i = 0; i < numFrames; i++) {
167 index = (
unsigned int) floorf(phase);
168 fraction = phase - (float) index;
169 samp1 = waveform[index];
170 if (index < (tableLength - 1))
171 samp2 = waveform[index+1];
174 samp1 += (samp2 - samp1) * fraction;
175 *buffer++ = (samp1 * scaleValue) + offsetValue;
176 phase += (freqValue * rateRecip);
177 while (phase >= tableLength)
178 phase -= tableLength;
184 throw LogicError(
"Unimplemented truncation policy");
211 outputBuffer.zeroBuffers();
212 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
213 this->nextWaveInto(buffer, outputBuffer.mNumFrames,
false);
220 Sine::Sine(
float frequency,
float ampl,
float offset,
float phase)
221 :
Oscillator(frequency, ampl, offset, phase) { }
226 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
228 unsigned numFrames = outputBuffer.mNumFrames;
229 float phase = mPhase;
233 logMsg(
"Sine nextBuffer");
239 for (
unsigned i = 0; i < numFrames; i++) {
240 *buffer++ = (sinf(phase) * scaleValue) + offsetValue;
241 phase += (freqValue * rateRecip);
255 :
Oscillator(frequency, ampl, offset, phase) { }
260 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
262 unsigned numFrames = outputBuffer.mNumFrames;
263 float phase = mPhase;
267 logMsg(
"Sine nextBuffer");
273 for (
unsigned i = 0; i < numFrames; i++) {
274 *buffer++ = (sinf(phase) * scaleValue) + offsetValue;
275 phase += (freqValue * rateRecip);
289 :
Oscillator(frequency, ampl, offset, phase) { }
292 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
294 unsigned numFrames = outputBuffer.mNumFrames;
295 float phase = mPhase;
299 logMsg(
"Sine nextBuffer");
304 for (
unsigned i = 0; i < numFrames; i++) {
305 *buffer++ = phase * scaleValue + offsetValue;
306 phase += (freqValue * rateRecip);
320 :
Oscillator(frequency, ampl, offset, phase) { }
323 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
325 unsigned numFrames = outputBuffer.mNumFrames;
326 float phase = mPhase;
330 logMsg(
"Sine nextBuffer");
335 for (
unsigned i = 0; i < numFrames; i++) {
336 *buffer++ = ((phase > 0.0) ? 1.0f : -1.0f) * scaleValue + offsetValue;
337 phase += (freqValue * rateRecip);
364 SampleBuffer buffer = outputBuffer.monoBuffer(outBufNum);
365 unsigned numFrames = outputBuffer.mNumFrames;
367 unsigned count = mCounter;
371 logMsg(
"Sine nextBuffer");
377 for (i = 0; i < numFrames; i++)
379 }
else if (count < numFrames) {
380 for (i = 0; i < count; i++)
382 *buffer++ = scaleValue;
383 for (j = count+1; j < numFrames; j++)
386 for (i = 0; i < numFrames; i++)
389 mCounter = count - numFrames;
401 float num=0, amp=0, pha=0;
404 va_start(ap, partialCount);
405 for (
unsigned i = 0; i < partialCount; i++) {
408 num = (float) (i + 1);
409 amp = va_arg(ap,
double);
413 num = va_arg(ap,
double);
414 amp = va_arg(ap,
double);
418 num = va_arg(ap,
double);
419 amp = va_arg(ap,
double);
420 pha = va_arg(ap,
double);
448 for (
unsigned i = 0; i < numHarms; i++) {
449 float ampl =
fRandV(noise) / (float) (i + 2);
459 for (
unsigned i = 0; i < numHarms; i++) {
489 for (
unsigned i = 0; i < num_p; i++)
495 float ** v_ptr = (
float ** ) argv;
499 part->
number = * v_ptr[i++];
512 float incr, t_incr, phase, ampl;
514 unsigned numFrames = count;
525 for (
unsigned i = 0; i <
mPartials.size(); i++) {
529 t_incr = incr * p->
number;
533 for (
unsigned j = 0; j < numFrames; j++) {
534 *out_ptr++ += (sinf(phase) * ampl);
538 for (
unsigned j = 0; j < numFrames; j++) {
539 *out_ptr++ += (sinf(phase) * ampl * scaleValue) + offsetValue;
540 phase += (t_incr * freqValue);
547 freqPort->resetPtr();
548 scalePort->resetPtr();
549 offsetPort->resetPtr();
550 freqValue = freqPort->nextValue();
551 scaleValue = scalePort->nextValue();
552 offsetValue = offsetPort->nextValue();
562 logMsg(
"a SumOfSines: %d partials", siz);
563 for (
unsigned i = 0; i < siz; i++)