我正在使用(确实!)Amazing Audio Engine播放一些曲目(AUFilePlayer
,每个曲目都在一个单独的AEAudioChannel
中),效果非常好。
现在,我想添加3D混音器音频单元kAudioUnitSubType_AU3DMixerEmbedded
,但在搜索高低之后,我找不到任何有关如何完成此操作的信息。
我对3D混音器的工作原理有了基本的了解,并且遵循了我能找到的所有例子,例如: Apple's 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 m,绝对会导致平移输出。
答案 0 :(得分:0)
在摆弄了几个非常低效的时间之后,我决定完全转向使用AudioUnits并摆脱Amazing Audio Engine(具有良好的副作用,我的整个项目也变得更小,更容易处理)。
事实证明并非那么复杂:当你从AUGraph API的角度来看(没有渲染缓冲区处理程序等)时,在AUGraph
中连接几个AudioUnit非常简单。
它基本上和以下一样简单:
AUGraph
AUNodes
(所有AudioUnits):
这些链接和文档非常有用(按此顺序):