Я использую эффект Superpowered Reverb с Audio Graph в OS X. Я делаю это, вызывая reverb->process
в обратном вызове рендеринга выходного аудиоустройства (проверено на kAudioUnitSubType_SystemOutput
и kAudioUnitSubType_DefaultOutput
).
Эффект реверберации работал, но полученный звук был очень шумным. Я пробовал разные вещи (регулировка частоты дискретизации, использование дополнительных и обнуленных буферов и т. д.), но, похоже, это не помогает. Есть ли способы решить эту проблему? Спасибо.
Упрощенный код:
SuperpoweredReverb* reverb;
OSStatus callback(void * inComponentStorage,
AudioUnitRenderActionFlags * __nullable flags,
const AudioTimeStamp * inTimeStamp,
UInt32 busNumber,
UInt32 framesCount,
AudioBufferList * ioData)
{
for (int i = 0; i < ioData->mNumberBuffers; ++i)
{
if (ioData->mBuffers[i].mData)
reverb->process(static_cast<float*>(ioData->mBuffers[i].mData),
static_cast<float*>(ioData->mBuffers[i].mData),
framesCount);
}
return noErr;
}
void setupReverb(unsigned int sampleRate, AudioUnit unit)
{
reverb = new SuperpoweredReverb(sampleRate);
reverb->enable(true);
reverb->setMix(0.5);
AudioUnitAddRenderNotify(unit, callback, nullptr);
}