void process(AUAudioFrameCount frameCount, AUAudioFrameCount bufferOffset) override { for (int frameIndex = 0; frameIndex < frameCount; ++frameIndex) { int frameOffset = int(frameIndex + bufferOffset); pan = panRamper.getAndStep(); panst->pan = (float)pan; if (!started) { outBufferListPtr->mBuffers[0] = inBufferListPtr->mBuffers[0]; outBufferListPtr->mBuffers[1] = inBufferListPtr->mBuffers[1]; return; } float *tmpin[2]; float *tmpout[2]; for (int channel = 0; channel < channels; ++channel) { float *in = (float *)inBufferListPtr->mBuffers[channel].mData + frameOffset; float *out = (float *)outBufferListPtr->mBuffers[channel].mData + frameOffset; if (channel < 2) { tmpin[channel] = in; tmpout[channel] = out; } } sp_panst_compute(sp, panst, tmpin[0], tmpin[1], tmpout[0], tmpout[1]); } }
void process(uint32_t frameCount, uint32_t bufferOffset) override { for (int frameIndex = 0; frameIndex < frameCount; ++frameIndex) { int frameOffset = int(frameIndex + bufferOffset); // do ramping every 8 samples if ((frameOffset & 0x7) == 0) { panRamp.advanceTo(_now + frameOffset); } _panst->pan = panRamp.getValue(); float *tmpin[2]; float *tmpout[2]; for (int channel = 0; channel < _nChannels; ++channel) { float *in = (float *)_inBufferListPtr->mBuffers[channel].mData + frameOffset; float *out = (float *)_outBufferListPtr->mBuffers[channel].mData + frameOffset; if (channel < 2) { tmpin[channel] = in; tmpout[channel] = out; } if (!_playing) { *out = *in; } } if (_playing) { sp_panst_compute(_sp, _panst, tmpin[0], tmpin[1], tmpout[0], tmpout[1]); } } }