Swift 使用苹果&x27;s新的AudioEngine可改变AudioPlayer声音的音高

Swift 使用苹果&x27;s新的AudioEngine可改变AudioPlayer声音的音高,swift,avfoundation,avaudioplayer,Swift,Avfoundation,Avaudioplayer,我目前正在尝试让苹果的新音频引擎与我当前的音频设置一起工作。具体地说,我正试图用音频引擎改变音高,这显然是可能的 我还研究了其他改变音高的解决方案,包括狄拉克和ObjectAL,但不幸的是,这两个方案在与Swift的合作方面似乎都非常混乱,我正在使用Swift 我的问题是如何使用苹果新的音频引擎改变音频文件的音高。我可以使用AVAudioPlayer播放声音,但我不知道该文件在audioEngine中是如何引用的。在链接页面上的代码中,有一个“格式”指向音频文件,但我不知道如何创建格式,或者它的

我目前正在尝试让苹果的新音频引擎与我当前的音频设置一起工作。具体地说,我正试图用音频引擎改变音高,这显然是可能的

我还研究了其他改变音高的解决方案,包括狄拉克和ObjectAL,但不幸的是,这两个方案在与Swift的合作方面似乎都非常混乱,我正在使用Swift

我的问题是如何使用苹果新的音频引擎改变音频文件的音高。我可以使用AVAudioPlayer播放声音,但我不知道该文件在audioEngine中是如何引用的。在链接页面上的代码中,有一个“格式”指向音频文件,但我不知道如何创建格式,或者它的作用

我使用以下简单代码播放声音:

let path = NSBundle.mainBundle().pathForResource(String(randomNumber), ofType:"m4r")
let fileURL = NSURL(fileURLWithPath: path!)
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
player.prepareToPlay()
player.play()

您使用的是AVAudioPlayerNode,而不是AVAudioPlayer

engine = AVAudioEngine()
playerNode = AVAudioPlayerNode()
engine.attachNode(playerNode)
然后可以附加一个AVAudioUnitTimePitch

var mixer = engine.mainMixerNode;
auTimePitch = AVAudioUnitTimePitch()
auTimePitch.pitch = 1200 // In cents. The default value is 1.0. The range of values is -2400 to 2400
auTimePitch.rate = 2 //The default value is 1.0. The range of supported values is 1/32 to 32.0.
engine.attachNode(auTimePitch)
engine.connect(playerNode, to: auTimePitch, format: mixer.outputFormatForBus(0))
engine.connect(auTimePitch, to: mixer, format: mixer.outputFormatForBus(0))

这对我来说毫无意义。在哪里告诉要播放的文件?scheduleFile是要使用的函数。