macos - AVAudioEngine:有什么方法可以控制缓冲区大小(延迟)?

标签 macos core-audio avaudioengine

我编写了一个 V3 AudioUnit 并使用 AVAudioUnit 托管它。我的渲染回调以 512 帧调用,这对我的应用程序(合成器)来说延迟太高。

AVAudioEngine 有办法设置处理缓冲区大小吗?或者我需要直接使用 CoreAudio 吗?

注意:这是在 OS X 10.11 上。

最佳答案

下面的技巧:

static OSStatus SetCurrentIOBufferFrameSize(AudioUnit inAUHAL,
                                        UInt32 inIOBufferFrameSize)
{
  return AudioUnitSetProperty(inAUHAL,
                              kAudioDevicePropertyBufferFrameSize,
                              kAudioUnitScope_Global,
                              0,
                              &inIOBufferFrameSize, sizeof(UInt32));
}

...

_audioEngine = [[AVAudioEngine alloc] init];
SetCurrentIOBufferFrameSize(_audioEngine.inputNode.audioUnit, 32);

关于macos - AVAudioEngine:有什么方法可以控制缓冲区大小(延迟)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33030913/

相关文章:

python - 虚拟环境错误 : the executable in env/bin/python is not functioning

python - 为什么 macOS Visual Studio Code 使用错误的 Python 解释器?

ios - iOS 中音频文件耗时的毫秒(及更高)精度

iphone - CoreAudio : Playing system sounds and record playing sound in iphone

ios - 有没有办法使用 AVAudioPlayerNode 从头开始​​重播声音?

ios - AVAudioEngine & AVAudioPlayerNode didFinish 方法类似于 AVAudioPlayer

objective-c - 在基于 Cocoa Document 的应用程序启动中禁用打开面板

swift - 将 Swift 用于 Mac 应用程序的优缺点是什么?

ios - Core Audio 大型(压缩)文件播放和内存占用

ios - AVAudioEngine 分离 channel