令人惊叹的音频引擎如何将滤波器应用于麦克风输入
我试图制作卡拉OK应用程序,用于记录来自文件和麦克风的背景音乐。 我也想为麦克风输入添加滤镜效果。
我可以使用惊人的音频引擎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];
}
您可以使用不同的频道将背景音乐和麦克风分开,然后只能将滤波器应用于麦克风频道。
首先在头文件中声明一个通道组
AEChannelGroupRef _group;
然后只需将您用于录制文件的播放器添加到该组
[_audioController addChannels:@[_player] toChannelGroup:_group ];
然后只将该过滤器添加到该组
[_audioController addFilter:_reverb toChannelGroup:_group];
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];
您可以在播放录制的音频时应用滤镜。
链接地址: http://www.djcxy.com/p/13691.html上一篇: the amazing audio engine how to apply filters to microphone input
下一篇: How to use 'cp' command to exclude a specific directory?