我还有一个与 BASS 相关的问题。我已经发布了这个问题 How Can we control bass of music in 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的音频单元框架的类并获得此 之后我开始寻找低音控制并得到了这个
所以现在我需要实现这个 kAudioUnitSubType_LowShelfFilter 。但现在我不知道如何在我的代码中实现这个枚举,以便我可以控制低音作为书面文档。即便是Apple也没有写过我们如何使用它。 kAudioUnitSubType_AUiPodEQ 此类别返回了一个数组,但 kAudioUnitSubType_LowShelfFilter 类别未返回任何数组。使用 kAudioUnitSubType_AUiPodEQ 此类别时,我们可以使用数组中的均衡器类型,但我们如何使用此类别 kAudioUnitSubType_LowShelfFilter 。任何人都能以任何方式帮助我吗?这将是非常值得赞赏的。
感谢。
答案 0 :(得分:4)
<强>更新强>
虽然在iOS标题中声明了它,但实际上iOS上并没有提供Low Shelf AU。
低架的参数与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 ...;
}