我目前正在努力让Apple的新音频引擎与我目前的音频设置配合使用。具体来说,我正在尝试使用音频引擎改变音高,显然可以根据this post进行音高。
我也研究过其他改变音调的解决方案,包括Dirac和ObjectAL,但不幸的是,在使用Swift时,两者似乎都很混乱。
我的问题是如何使用Apple的新音频引擎更改音频文件的音高。我能够使用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()
答案 0 :(得分:14)
您使用的是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))