我正在使用(确实!)Amazing Audio Engine来播放一些曲目(使用AUFilePlayer
, 每个都在一个单独的 中AEAudioChannel
),效果很好。
现在,我想添加 3D Mixer Audio Unit kAudioUnitSubType_AU3DMixerEmbedded
,但是在搜索高低之后,我找不到任何关于如何做到这一点的信息。
- 我应该创建一个 3D 混合器并将其添加为每个通道的过滤器吗?(试过这个,但声音总是平移 50/50%,尽管我设置的任何属性。
- 或者我应该破解 TAAE 并更改内部多通道混音器(听起来不是个好主意)
- 或者这根本不可能,我应该直接使用 Core Audio 而不使用 TAAE?
我对 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 m 的距离肯定会导致平移输出。