首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用苹果新款AudioEngine改变AudioPlayer音高

用苹果新款AudioEngine改变AudioPlayer音高
EN

Stack Overflow用户
提问于 2014-09-07 05:28:22
回答 1查看 8.8K关注 0票数 11

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

我还研究了其他的音高变化解决方案,包括迪拉克和ObjectAL,但不幸的是,这两种方案在与我正在使用的Swift合作方面似乎都相当混乱。

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

我正在用这个简单的代码播放声音:

代码语言:javascript
复制
let path = NSBundle.mainBundle().pathForResource(String(randomNumber), ofType:"m4r")
let fileURL = NSURL(fileURLWithPath: path!)
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
player.prepareToPlay()
player.play()
EN

回答 1

Stack Overflow用户

发布于 2014-09-09 19:37:16

您使用的是AVAudioPlayerNode,而不是AVAudioPlayer。

代码语言:javascript
复制
engine = AVAudioEngine()
playerNode = AVAudioPlayerNode()
engine.attachNode(playerNode)

然后,您可以附加AVAudioUnitTimePitch。

代码语言:javascript
复制
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))
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25704923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档