【问题标题】:Changing the pitch of a sound in realtime (Swift)实时改变声音的音高(Swift)
【发布时间】:2017-06-29 19:13:45
【问题描述】:

在过去的几周里,我一直在尝试找到一种简单的方法来在 swift 中实时控制音频频率(即更改音频文件的音高)。 我试过用 AVAudioPlayer.rate 但这只会改变速度。 我什至尝试将 AVAudioUnitTimePitch 连接到音频引擎,但没有成功。 AVAudioUnitTimePitch 只是给我一个错误,并且速率会改变播放速度,这不是我需要的。 我想做的是,将声音调高或调低,例如从 -1.0 到 2.0(audio source.duration/2,这样它的播放速度就会提高一倍。

即使我必须使用外部库或类,你们知道有什么方法可以做到这一点吗?

谢谢你,我不知道如何继续。

【问题讨论】:

    标签: swift audio pitch


    【解决方案1】:

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

    Audio Unit 框架有一个(目前未弃用的)C API,但可以从 Swift 代码调用 C API 函数。

    【讨论】:

    • 非常感谢您的回答。所以我可以以某种方式将其附加到 AVAudioNode 或..?我对如何应用它感到困惑,更因为它是一个 C API。有什么提示吗?
    • 好吧,我让 AVAudioUnitTimePitch 开始工作,但 htis 并不是我真正想要的,这会延长时间并进行不必要的处理,我想要做的是下采样,以便音频播放降低速度。
    • 您可以尝试研究 MIDI 采样器合成引擎,看看它是否符合您的要求。
    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 2015-08-15
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多