2017-06-29 147 views
0

过去几周里,我一直在试图从swift中实时控制音频(I.E.更改音频文件的音高)的简单方法。 我用AVAudioPlayer.rate试过,但只改变了速度。 我甚至试图将AVAudioUnitTimePitch连接到音频引擎,但没有成功。 AVAudioUnitTimePitch只是给了我一个错误,并且速度改变了我不需要的播放速度。 我想要做的是,使声音更高或更低的音调,比如从-1.0到2.0(音源source.duration/2,所以它会播放两倍的速度。)实时更改声音的音高(Swift)

你们知道任何方式做到这一点,即使我有使用外部库或类?

谢谢你,我难倒就如何继续。

回答

0

如果使用音频单元API,iOS的内置kAudioUnitSubType_NewTimePitch音频单元组件可用于在以相同速度播放音频时改变音调。例如,kNewTimePitchParam_Rate和kNewTimePitchParam_Pitch参数是独立的。

音频单元框架有一个(当前未被弃用的)C API,但可以从Swift代码调用C API函数。

+0

非常感谢您的答案。所以我可以以某种方式将它附加到AVAudioNode或..?我很困惑如何应用这个,更是如此,因为它是一个C API。任何提示? –

+0

好吧,我得到了AVAudioUnitTimePitch的工作,但htis并没有真正为我所喜欢,这是时间拉伸和做不必要的处理,我想要做的是向下采样,以便音频以更低的速度播放。 –

+0

您可以尝试查看MIDI采样器合成引擎,并查看它是否符合您的要求。 – hotpaw2