如何使用kAudioUnitType_Effect的kAudioUnitSubType_LowShelfFilter来控制核心音频中的低音?

我还有一个与BASS有关的问题。 我已经发布了这个问题我们如何在iPhone中控制音乐的低音 ,但是没有得到你应该得到的那么多人的关注。 但现在我已经做了一些搜索并阅读了Core AUDIO 。 我有一个示例代码,我想与你分享这里的人是下载iPhoneMixerEqGraphTest的链接。 在这段代码中看一下我所看到的是开发人员使用Apple在iPod中给出的预置均衡器。 让我们看一些代码片段:—-

// iPodEQ unit CAComponentDescription eq_desc(kAudioUnitType_Effect, kAudioUnitSubType_AUiPodEQ, kAudioUnitManufacturer_Apple); 

kAudioUnitSubType_AUiPodEQ的作用是从iPod的均衡器中获取预设值,并在Xcode中返回我们可以在PickerView / TableView中使用的数组,并可以设置任何类别,如贝斯,摇滚,舞蹈等。这对我来说无能为力,因为它只返回名称像bass,rock,Dance等均衡器类型,因为我只想实现低音,并希望在UISLider上实现它。

要在滑块上实现低音,我需要值,以便我可以设置最小值和最大值,以便可以更改移动滑块上的低音。

在完成所有这些之后,我开始阅读Core Audio的Audio Unit框架的类并获得了这个 Ipod Desc图像 之后我开始寻找低音控制并得到了这个

在此处输入图像描述

所以现在我需要实现这个kAudioUnitSubType_LowShelfFilter 。 但现在我不知道如何在我的代码中实现这个枚举,以便我可以控制低音作为书面文档。 即使是Apple也没有写过我们如何使用它。 kAudioUnitSubType_AUiPodEQ此类别返回一个数组,但kAudioUnitSubType_LowShelfFilter类没有返回任何数组。 在使用kAudioUnitSubType_AUiPodEQ此类别时,我们可以使用数组中的均衡器类型,但我们如何使用此类别kAudioUnitSubType_LowShelfFilter 。 任何人都可以以任何方式帮助我吗? 这将是非常值得赞赏的。

谢谢。

更新

虽然它在iOS标题中声明,但实际上iOS上并不提供Low Shelf AU。


Low Shelf的参数与iPod EQ不同。

参数在`AudioUnit / AudioUnitParameters.h’中声明和记录:

 // Parameters for the AULowShelfFilter unit enum { // Global, Hz, 10->200, 80 kAULowShelfParam_CutoffFrequency = 0, // Global, dB, -40->40, 0 kAULowShelfParam_Gain = 1 }; 

因此,在创建低架AU之后,使用AudioUnitSetParameter配置其参数。

您可以尝试的一些初始参数值是120 Hz(kAULowShelfParam_CutoffFrequency)和+6 dB(kAULowShelfParam_Gain) – 假设您的系统很好地再现低音,您的低频内容应该是响亮的两倍。


你能告诉我如何使用这个kAULowShelfParam_CutoffFrequency来改变频率。

如果一切配置正确,这应该是所需要的:

 assert(lowShelfAU); const float frequencyInHz = 120.0f; OSStatus result = AudioUnitSetParameter(lowShelfAU, kAULowShelfParam_CutoffFrequency, kAudioUnitScope_Global, 0, frequencyInHz, 0); if (noErr != result) { assert(0 && "error!"); return ...; }