here is a fix for this... it probably could be more efficient (i.e. if you have a single precision host, then this will be copying the buffers to double precision and back again unnecessarily) but it seems OK for now
add these methods to IPlugBase
Code:
void IPlugBase::PassThroughBuffers(double sampleType, int nFrames)
{
IPlugBase::ProcessDoubleReplacing(mInData.Get(), mOutData.Get(), nFrames);
}
void IPlugBase::PassThroughBuffers(float sampleType, int nFrames)
{
IPlugBase::ProcessDoubleReplacing(mInData.Get(), mOutData.Get(), nFrames);
int i, n = NOutChannels();
OutChannel** ppOutChannel = mOutChannels.GetList();
for (i = 0; i < n; ++i, ++ppOutChannel) {
OutChannel* pOutChannel = *ppOutChannel;
if (pOutChannel->mConnected) {
CastCopy(pOutChannel->mFDest, *(pOutChannel->mDest), nFrames);
}
}
}
and in IPlugAU::RenderProc() remove the existing if (_this->mBypassed) code and replace the call to ProcessBuffers() with this...
Code:
if (_this->mBypassed)
{
_this->PassThroughBuffers((AudioSampleType) 0, nFrames);
}
else
{
_this->ProcessBuffers((AudioSampleType) 0, nFrames);
}