如何将效果应用于麦克风输入?(iOS Core Audio&Audio Graph)

我想开发iOS5上的应用程序,它可以获得语音和应用效果(高通滤波器,延迟等)并从扬声器输出。

我尝试了RemoteIO(输入) – >效果 – > RemoteIO(输出),但它没有用。

AudioComponentDescription cd; cd.componentType = kAudioUnitType_Output; cd.componentSubType = kAudioUnitSubType_RemoteIO; cd.componentManufacturer = kAudioUnitManufacturer_Apple; cd.componentFlags = 0; cd.componentFlagsMask = 0; AUGraphAddNode(self.auGraph, &cd, &remoteIONode); AUGraphNodeInfo(self.auGraph, remoteIONode, NULL, &remoteIOUnit); UInt32 flag = 1; AudioUnitSetProperty(remoteIOUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &flag, sizeof(flag)); AudioStreamBasicDescription audioFormat = [self auCanonicalASBDSampleRate:44100.0 channel:1]; AudioUnitSetProperty(remoteIOUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &audioFormat, sizeof(AudioStreamBasicDescription)); AudioUnitSetProperty(remoteIOUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); AudioComponentDescription cd_e; cd_e.componentSubType = kAudioUnitSubType_LowPassFilter; cd_e.componentSubType = kAudioUnitSubType_Reverb2; cd_e.componentFlags = 0; cd_e.componentFlagsMask = 0; cd_e.componentManufacturer = kAudioUnitManufacturer_Apple; AUGraphAddNode(self.auGraph, &cd_e, &effectNode); AUGraphNodeInfo(self.auGraph, effectNode, NULL, &effectUnit); AudioUnitSetProperty(effectUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Global, 0, &audioFormat, sizeof(AudioStreamBasicDescription)); AudioUnitSetParameter(effectUnit, kAudioUnitScope_Global, 0, kLowPassParam_CutoffFrequency, 10.f, 0); AudioUnitSetParameter(effectUnit, kAudioUnitScope_Global, 0, kLowPassParam_Resonance, 10, 0); AUGraphConnectNodeInput(self.auGraph, remoteIONode, 1, effectNode, 0); AUGraphConnectNodeInput(self.auGraph, effectNode, 0, remoteIONode, 0); AUGraphInitialize(localGraph); 

但如果AUGraphConnectNodeInput设置如下,我听到了扬声器的声音。

 AUGraphConnectNodeInput(self.auGraph, remoteIONode, 1, remoteIONode, 0); 

我该怎么做?

我写了一篇教程,详细介绍了如何从iOS上的麦克风进行实时处理和录音 ,但从那时起,我发现了novocaine的乐趣,这是一种在iOS上进行效果处理的更简单方法。 这比处理AURemoteGraph和那些东西要容易得多。