我只是想知道是否有人可以向我解释我将如何录制音频,修改它(音高?)并在 iPhone 上播放给用户。
我不是要求有人为我做这件事,只是一些关于我应该如何去做的提示。浏览文档似乎我应该使用AVAudioSession
,AVAudioRecorder
和AVAudioPlayer
( AVFoundation.Framework
) 来记录播放部分。或者我应该使用CoreAudio.Framework
? 然后是关于修改音频的问题。
我只是想知道是否有人可以向我解释我将如何录制音频,修改它(音高?)并在 iPhone 上播放给用户。
我不是要求有人为我做这件事,只是一些关于我应该如何去做的提示。浏览文档似乎我应该使用AVAudioSession
,AVAudioRecorder
和AVAudioPlayer
( AVFoundation.Framework
) 来记录播放部分。或者我应该使用CoreAudio.Framework
? 然后是关于修改音频的问题。
AVAudioUnitTimePitch应该可以解决问题。
来自 udacity.com 的示例代码Intro to iOS App Development with Swift:
func playAudioWithVariablePitch(pitch: Float) {
audioEngine.stop()
audioEngine.reset()
let audioPlayerNode = AVAudioPlayerNode()
audioEngine.attachNode(audioPlayerNode)
let changePitchEffect = AVAudioUnitTimePitch()
changePitchEffect.pitch = pitch
audioEngine.attachNode(changePitchEffect)
audioEngine.connect(audioPlayerNode, to:changePitchEffect, format:nil)
audioEngine.connect(changePitchEffect, to:audioEngine.outputNode, format:nil)
audioPlayerNode.scheduleFile(audioFile, atTime:nil, completionHandler: nil)
try! audioEngine.start()
audioPlayerNode.play()
}
OpenAL 是一个库,它支持您正在搜索的内容。它在 iPhone 上非常受欢迎,所以也许你应该看看这个。即,只需一个命令即可轻松更改样本的音高:
alSourcef(source, AL_PITCH, pitch);
但我不确定,如果音高变化也可能与 AVFoundation 或 CoreAudio 类一起使用 - 从未使用过它们。
这可能会有所帮助。DIRAC-mobile,一个用于和弦音频信号的实时速度和音高操作的库。他们还有示例代码,您可以在下载库后查看。