Как установить уровень и время реверберации на kAudioUnitSubType_Reverb2 - PullRequest
6 голосов
/ 01 марта 2012

Мне удалось добавить блок реверберации к моему графику, примерно так:

AudioComponentDescription auEffectUnitDescription;
    auEffectUnitDescription.componentType = kAudioUnitType_Effect;
    auEffectUnitDescription.componentSubType = kAudioUnitSubType_Reverb2;
    auEffectUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;

AUGraphAddNode(
                              processingGraph,
                              &auEffectUnitDescription,
                              &auEffectNode), 

Теперь, как я могу изменить некоторые параметры блока реверберации?Я хотел бы изменить соотношение влажность / сухость и сократить время затухания.

1 Ответ

15 голосов
/ 01 марта 2012

Сначала вы должны получить ссылку на реальный аудиоустройство реверберации:

AudioUnit reverbAU = NULL;

AUGraphNodeInfo(processingGraph, auEffectNode, NULL, &reverbAU);

Теперь, когда у вас есть аудиоустройство, вы можете установить параметры для него, например

// set the decay time at 0 Hz to 5 seconds
AudioUnitSetParameter(reverbAU, kAudioUnitScope_Global, 0, kReverb2Param_DecayTimeAt0Hz, 5.f, 0);
// set the decay time at Nyquist to 2.5 seconds
AudioUnitSetParameter(reverbAU, kAudioUnitScope_Global, 0, kReverb2Param_DecayTimeAtNyquist, 5.f, 0);

Вы можете найти параметры для блока реверберации (и всех поставляемых Apple аудиоустройств) в AudioUnit/AudioUnitParameters.h (Параметр реверберации в строке 521)

...