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

Posted

技术标签:

【中文标题】惊人的音频引擎如何将过滤器应用于麦克风输入【英文标题】:the amazing audio engine how to apply filters to microphone input 【发布时间】:2013-05-25 18:39:04 【问题描述】:

我正在尝试制作从文件和麦克风录制背景音乐的卡拉 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];

【问题讨论】:

你解决过这个问题吗?我仍然面临同样的问题。 【参考方案1】:

您可以使用不同的通道将背景音乐和麦克风分开,然后您可以将过滤器仅应用于您的麦克风通道。

首先在头文件中声明一个频道组

AEChannelGroupRef _group;

然后只需将您用于录制文件的播放器添加到该组

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

然后只将过滤器添加到该组

[_audioController addFilter:_reverb toChannelGroup:_group]; 

【讨论】:

这很好,但你也应该描述如何做到这一点。 Alexander,如果您认为我的回答有帮助,请点赞。【参考方案2】:
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];

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

【讨论】:

以上是关于惊人的音频引擎如何将过滤器应用于麦克风输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Auriotouch 将麦克风的音频输入静音并仅识别设备的内部音频

在 Ubuntu Linux 上操作音频输入缓冲区

适用于 macOS 的 Xcode 应用程序。这就是我设置从 USB 麦克风输入获取音频的方式。一年前工作,现在不行。为啥

如何从WDM流音频源(Realtek HD Audio)捕获

linux使用pactl将音频管道传输到虚拟麦克风

如何使用openAL将实时音频输入从麦克风录制到文件中? (里面有C++代码)