惊人的音频引擎:如何将滤镜应用于麦克风输入

7
我正在尝试制作一个卡拉OK应用程序,它可以从文件和麦克风记录背景音乐。我还想为麦克风输入添加滤镜效果。
使用 Amazing Audio Engine SDK,我可以完成上述所有操作,但是我无法弄清楚如何将麦克风输入添加为通道,以便我可以对其应用滤镜(而不是对背景音乐应用滤镜)。
谢谢您的帮助。
我的当前录制代码:
- (void)beginRecording {
// Init recorder
 self.recorder = [[AERecorder alloc] initWithAudioController:_audioController];
NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES) 
                               objectAtIndex:0];
  NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"Recording.aiff"];
// Start the recording process
NSError *error = NULL;
if ( ![_recorder beginRecordingToFileAtPath:filePath 
                                   fileType:kAudioFileAIFFType 
                                     error:&error] ) {
   // Report error
   return;
}
// Receive both audio input and audio output. Note that if you're using
// AEPlaythroughChannel, mentioned above, you may not need to receive the input again.
[_audioController addInputReceiver:_recorder];
[_audioController addOutputReceiver:_recorder];
}

1
你解决了这个问题吗?我仍然面临着同样的问题。 - Colin
2个回答

4
你可以通过使用不同的通道来分离背景音乐和麦克风,然后只将滤波器应用于麦克风通道。
首先在头文件中声明一个通道组。
AEChannelGroupRef _group;

然后将您用于录制文件的播放器添加到此组中即可。

[_audioController addChannels:@[_player] toChannelGroup:_group ];

然后只将该过滤器添加到此组中。
[_audioController addFilter:_reverb toChannelGroup:_group]; 

这很好,但你也应该描述如何做到这一点。 - Alexandre Santos
Alexander,如果您认为我的回答有帮助,请点赞。 - Ahmad Karim

0
self.reverb = [[[AEAudioUnitFilter alloc] initWithComponentDescription:AEAudioComponentDescriptionMake(kAudioUnitManufacturer_Apple, kAudioUnitType_Effect, kAudioUnitSubType_Reverb2) audioController:_audioController error:NULL] autorelease];

AudioUnitSetParameter(_reverb.audioUnit, kReverb2Param_DryWetMix, kAudioUnitScope_Global, 0, 100.f, 0);

[_audioController addFilter:_reverb];

您可以在播放录制的音频时应用过滤器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接