2017-06-29 106 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