如何在Amazing Audio Engine中使用AU3DMixer?
我正在使用(确实!)惊人的音频引擎来播放一些曲目(使用AUFilePlayer
,每个都在单独的AEAudioChannel
),这非常AEAudioChannel
。
现在,我想添加3D混音器音频单元kAudioUnitSubType_AU3DMixerEmbedded
,但搜索高低后,我找不到任何有关如何完成这些任务的信息。
我也对3D混音器的工作原理有了基本的了解,并遵循了我能找到的所有例子,例如Apple的TN2112
以下是我试图将3D混音器添加到频道的方式:
- (BOOL)add3DMixerToTrack:(NSURL*)track {
NSError *err;
AudioComponentDescription spatialMixerDescription = AEAudioComponentDescriptionMake(kAudioUnitManufacturer_Apple, kAudioUnitType_Mixer, kAudioUnitSubType_AU3DMixerEmbedded);
AEAudioUnitFilter *mixer = [[AEAudioUnitFilter alloc]
initWithComponentDescription:spatialMixerDescription
audioController:self.audioController
useDefaultInputFormat:YES
error:&err];
AudioUnitSetParameter(mixer.audioUnit, k3DMixerParam_Azimuth, kAudioUnitScope_Input, 1, 90, 0);
AudioUnitSetParameter(mixer.audioUnit, k3DMixerParam_Distance, kAudioUnitScope_Input, 1, 10, 0);
AEAudioUnitChannel *channel = [self getChannelForTrack:track];
if(channel) {
if(![self.audioController.channels containsObject:channel]) {
[self.audioController addChannels:@[channel]];
}
[self.audioController addFilter:mixer toChannel:channel];
return YES;
} else {
return NO;
}
}
音频播放(所以我认为一切都设置好了)。 但是,这些参数似乎都没有做任何事情。 90°的方位角和10米的距离肯定会导致平移输出。
在摆弄了几个非生产性的小时后,我决定完全转向使用AudioUnit并摆脱惊人的音频引擎(具有良好的副作用,我的整个项目也变得更小,更容易处理)。
结果并不复杂:在AUGraph
连接一对AUGraph
非常简单,从AUGraph API的角度来看(不需要渲染缓冲区处理程序等)。
它基本上与以下一样简单:
AUGraph
AUNodes
(所有AudioUnits): 这些链接和文档非常有用(按此顺序):
上一篇: How to use an AU3DMixer with The Amazing Audio Engine?
下一篇: Record microphone input with AudioUnit filter applied to the recorded file