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

标签 ios ios5 core-audio audiounit

我想在 iOS5 上开发应用程序,获取语音并对其应用效果(高通滤波器、延迟等)并从扬声器输出。

我尝试了 RemoteIO(input) -> effect ->RemoteIO(output) 但它没有用。

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

我该怎么做?

最佳答案

我写了一个tutorial detailing how to do realtime processing and recording来自 iOS 上的麦克风,但从那时起,我发现了 novocaine 的乐趣,这是在 iOS 上进行效果处理的一种非常更简单的方法。这比处理 AURemoteGraph 之类的东西要容易得多。

关于ios - 如何将效果应用到麦克风输入?(iOS Core Audio & Audio Graph),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11117375/

相关文章:

ios - iOS录音时如何将PCM缓存实时转为AAC数据?

iphone - cocos2d CCSprite 碰撞问题

ios - 将图像插入 PDF 文件 Swift

IOs 代码签名说明

ios - 设置 bundle 的核心数据模型中定义的父实体

ios - EKCalendar 没有出现在 calendar.app 中

ios - Swift 核心音频学习资源

ios - 核心音频 : file playback render callback function

iphone - Adhoc App无法安装在设备上

xcode - 创建 LiveCode IOS 独立应用程序