Я использую (действительно!) Amazing Audio Engine для воспроизведения некоторых треков (с AUFilePlayer
, каждый в отдельном AEAudioChannel
), который работает довольно хорошо.Как использовать AU3DMixer с Amazing Audio Engine?
Теперь я хотел бы добавить 3D-микшер Audio Unit kAudioUnitSubType_AU3DMixerEmbedded
, но после поиска высокого и низкого я не могу найти никакой информации о том, как это можно сделать.
- Должен ли я создавать и добавлять 3D-микшер в качестве фильтра для каждого канала? (попробовал это, но звук всегда подкачивается на 50/50%, тем не менее, любого свойства, которое я установил.
- Или мне нужно взломать TAAE и изменить внутренний многоканальный микшер (не похоже на хорошую идею)
- Или это вообще невозможно, и я должен просто использовать Core Audio непосредственно без TAAE?
Я также базовое понимание того, как 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 м должны обязательно приводить к выпуску.