How do I apply effect to mic input?(iOS Core Audio & Audio Graph)

匿名 (未验证) 提交于 2019-12-03 01:06:02

问题:

I would like to develop application on iOS5 that get voice and apply effect(high pass filer, delay, and so on) to it and output it from speaker.

I tried RemoteIO(input) -> effect ->RemoteIO(output) but it didn't work.

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);

But if AUGraphConnectNodeInput set bellow , I heard my voice from speaker.

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

how do i do it?

回答1:

I wrote a tutorial detailing how to do realtime processing and recording from the microphone on iOS, but since then, I have discovered the joys of novocaine, which is a much easier way of doing effect processing on iOS. This is much easier than dealing with AURemoteGraph and that stuff.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!