是否可以制作 'aufc' (kAudioUnitType_FormatConverter) 类型的 AUv3 扩展?

Is it possible to make a AUv3 extension of type 'aufc' (kAudioUnitType_FormatConverter)?

我写了一个时间拉伸算法,听起来比 AvAudioUnitTimePitch. 好得多我正在使用 AVAudioEngine, 围绕它制作一个 iOS 应用程序认为我可以将我的算法插入 AUv3 扩展,并简单地替换 AvAudioUnitTimePitch.

然而,阅读文档似乎这种方法可能无法实现,因为时间拉伸不是实时效果,因此 AVAudioUnitTimePitch 属于 'aufc' (kAudioUnitType_FormatConverter). 类型创建自定义音频扩展的文档只提到四种类型,'aufc'不是其中之一,Xcode中的模板只支持这四种类型。

一线希望是,在尝试实例化空白扩展时,我可以设置 componentDescription.componentType = kAudioUnitType_FormatConverter 并且实例化显然是成功的,尽管这可能被证明是死胡同。

有人成功地对 'aufc' 进行了 v3 扩展吗?鉴于我已经围绕 AVAudioEngine, 编写了大量代码,如果 AUv3 扩展不是可行的方法,是否还有其他推荐的方法来做我想做的事情?

经过几天的实验,我发现完全可以自己制作时间伸缩的AUv3 Audio Unit。 AU 负责从上游源拉取帧,指定要拉取的帧数并提供时间戳。

最难弄清楚的是在调用 AUInternalRenderBlock 从上游拉帧时为 mSampleTime 设置正确的 AudioTimeStamp 值。正如文档所述,当时间拉伸时,您从下游收到的时间戳采样时间将毫无意义。

我不认为使用的扩展类型 - 'aufc' 与 'aufx' 会产生任何影响。