Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xcode-AUiPodEQ曲线图_Xcode_Avfoundation_Core Audio_Equalizer - Fatal编程技术网

xcode-AUiPodEQ曲线图

xcode-AUiPodEQ曲线图,xcode,avfoundation,core-audio,equalizer,Xcode,Avfoundation,Core Audio,Equalizer,我正在使用AVAudioplayer为iOS开发一个音乐应用程序,我想在其中实现一个均衡器。 我在互联网上搜索了一个很好的解决方案,最终得到了如下和AUGraph配置: // multichannel mixer unit AudioComponentDescription mixer_desc; mixer_desc.componentType = kAudioUnitType_Mixer; mixer_desc.componentSubType = kAudioUnitSubType_Mul

我正在使用AVAudioplayer为iOS开发一个音乐应用程序,我想在其中实现一个均衡器。 我在互联网上搜索了一个很好的解决方案,最终得到了如下和AUGraph配置:

// multichannel mixer unit
AudioComponentDescription mixer_desc;
mixer_desc.componentType = kAudioUnitType_Mixer;
mixer_desc.componentSubType = kAudioUnitSubType_MultiChannelMixer;
mixer_desc.componentManufacturer = kAudioUnitManufacturer_Apple;
mixer_desc.componentFlags = 0;
mixer_desc.componentFlagsMask = 0;
// iPodEQ unit
AudioComponentDescription eq_desc;
eq_desc.componentType = kAudioUnitType_Effect;
eq_desc.componentSubType = kAudioUnitSubType_AUiPodEQ;
eq_desc.componentManufacturer =  kAudioUnitManufacturer_Apple;
eq_desc.componentFlags = 0;
eq_desc.componentFlagsMask = 0;
// output unit
AudioComponentDescription output_desc;
output_desc.componentType = kAudioUnitType_Output;
output_desc.componentSubType = kAudioUnitSubType_GenericOutput;
output_desc.componentManufacturer =  kAudioUnitManufacturer_Apple;
output_desc.componentFlags = 0;
output_desc.componentFlagsMask =  0;

// create a new AUGraph
OSStatus result = NewAUGraph(&mGraph);
// Add Audio Nodes to graph
AUNode outputNode;
AUNode eqNode;
AUNode mixerNode;
AUGraphAddNode(mGraph, &mixer_desc, &mixerNode);
AUGraphAddNode(mGraph, &eq_desc, &eqNode);

AUGraphAddNode(mGraph, &output_desc, &outputNode);

// open the graph AudioUnits (but not initialized)
result = AUGraphOpen(mGraph);
// grab the audio unit instances from the nodes
AudioUnit mEQ;
AudioUnit mMixer;
result = AUGraphNodeInfo(mGraph, mixerNode, NULL, &mMixer);
result = AUGraphNodeInfo(mGraph, eqNode, NULL, &mEQ);

// set number of input buses for the mixer Audio Unit
UInt32 numbuses = 0;
AudioUnitSetProperty ( mMixer, kAudioUnitProperty_ElementCount,
                      kAudioUnitScope_Input, 0, &numbuses, sizeof(numbuses));

// get the equalizer factory presets list
CFArrayRef mEQPresetsArray;
UInt32 sizeof1 = sizeof(mEQPresetsArray);
AudioUnitGetProperty(mEQ, kAudioUnitProperty_FactoryPresets,
                     kAudioUnitScope_Global, 0, &mEQPresetsArray, &sizeof1);


result = AUGraphConnectNodeInput(mGraph, mixerNode, 0, eqNode, 0);
result = AUGraphConnectNodeInput(mGraph, eqNode, 0, outputNode, 0);

AudioUnitSetParameter(mMixer, kMultiChannelMixerParam_Enable, kAudioUnitScope_Input, 0, 1, 0);

AUPreset *aPreset = (AUPreset*)CFArrayGetValueAtIndex(mEQPresetsArray, 7);
AudioUnitSetProperty (mEQ, kAudioUnitProperty_PresentPreset,
                      kAudioUnitScope_Global, 0, aPreset, sizeof(AUPreset));

AUGraphInitialize(mGraph);
AUGraphStart(mGraph);
螺旋图正在运行,但未应用EQ。AUPreset*aPreset=AUPreset*CFArrayGetValueAtIndexmEQPresetsArray中的参数“7”,7;是应应用的均衡器的索引。电子的 我通过记录mEQPresetsArray数组的值获得该索引:

我怎样才能解决我的问题?我已经尝试过NVDSP,但它似乎没有工作。我在互联网上找不到任何其他解决方案


提前谢谢你,Fabian。

如果这是针对iOS的,那么你需要使用kAudioUnitSubType\u RemoteIO而不是kAudioUnitSubType\u generico输出

您不能使用AVAudioPlayer来进行EQ,您需要AVPlayer

有关使用音频点击的示例项目,请参见此处:


好吧,我试过了,但它根本没有应用均衡器。我仍然得到相同的输出声音。如果你用kAudioUnitSubType_generico输出声音,你必须使用模拟器。我在iOS设备上试用过,效果很好。在我运行iOS 8.4的iPhone 6上,它既不适用于kAudioUnitSubType_RemoteIO,也不适用于kAudioUnitSubType_GenericOutput。你用的是哪个音频播放器?我在回叫时产生了一个声波好的,谢谢。当我加载此ViewController时,会不间断地播放音调。均衡器应用于此音调。但是我的AVAudioPlayer中的音乐不受均衡器的影响。我是否必须使用其他音频播放器将均衡器应用于我的音乐?
for (int i = 0; i < CFArrayGetCount(mEQPresetsArray); i++) {
    AUPreset *aPreset = (AUPreset*)CFArrayGetValueAtIndex(mEQPresetsArray, i);
    NSLog(@"%d: %@", (int)aPreset->presetNumber, aPreset->presetName);
}