如何在Amazing Audio Engine中使用AU3DMixer?

我正在使用(确实!)惊人的音频引擎来播放一些曲目(使用AUFilePlayer ,每个都在单独的AEAudioChannel ),这非常AEAudioChannel

现在,我想添加3D混音器音频单元kAudioUnitSubType_AU3DMixerEmbedded ,但搜索高低后,我找不到任何有关如何完成这些任务的信息。

  • 我应该创建并添加3D混音器作为每个频道的过滤器吗? (尝试过这种方式,但声音始终是50%/ 50%,不过是我设置的任何属性。
  • 或者我应该破解TAAE并更换内部的多声道混音器(听起来不是个好主意)
  • 或者,这是不可能的,我应该直接使用核心音频没有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米的距离肯定会导致平移输出。


    在摆弄了几个非生产性的小时后,我决定完全转向使用AudioUnit并摆脱惊人的音频引擎(具有良好的副作用,我的整个项目也变得更小,更容易处理)。

    结果并不复杂:在AUGraph连接一对AUGraph非常简单,从AUGraph API的角度来看(不需要渲染缓冲区处理程序等)。

    它基本上与以下一样简单:

  • 创建一个AUGraph
  • 在此图中创建几个AUNodes (所有AudioUnits):
  • RemoteIO AudioUnit(输出)
  • 3D音频单元混音器
  • 一个AudioUnit FilePlayer
  • 将调音台连接到输出
  • 将filePlayer连接到调音台
  • 这些链接和文档非常有用(按此顺序):

  • iOS版音频单元托管指南
  • 如何将audiofileplayer音频单元连接到3dmixer
  • 使用3D音频混音器单元
  • 链接地址: http://www.djcxy.com/p/78155.html

    上一篇: How to use an AU3DMixer with The Amazing Audio Engine?

    下一篇: Record microphone input with AudioUnit filter applied to the recorded file