0
再生中にピッチを調整できるようにするために、いくつかのオーディオを取得しようとしています。私はSwiftとiOSの新機能ですが、最初の試みは再生中にtimePitchNode.pitch
を変更することでした。ただし、再生中は更新されません。私の現在の試みは、audioEngine
をリセットし、それが再生していたところから再開することです(下記参照)。どのようにオーディオが現在あるのかを判断するにはどうしたらいいですか?iOS AVAudioUnitTimePitchで再生中にピッチを調整する
var audioFile: AVAudioFile?
var audioEngine: AVAudioEngine?
var audioPlayerNode: AVAudioPlayerNode?
var pitch: Int = 1 {
didSet {
playResumeAudio()
}
}
…
func playResumeAudio() {
var currentTime: AVAudioTime? = nil
if audioPlayerNode != nil {
let nodeTime = audioPlayerNode!.lastRenderTime!
currentTime = audioPlayerNode!.playerTimeForNodeTime(nodeTime)
}
if audioEngine != nil {
audioEngine!.stop()
audioEngine!.reset()
}
audioEngine = AVAudioEngine()
audioPlayerNode = AVAudioPlayerNode()
audioEngine!.attachNode(audioPlayerNode!)
let timePitchNode = AVAudioUnitTimePitch()
timePitchNode.pitch = Float(pitch * 100)
timePitchNode.rate = rate
audioEngine!.attachNode(timePitchNode)
audioEngine!.connect(audioPlayerNode!, to: timePitchNode, format: nil)
audioEngine!.connect(timePitchNode, to: audioEngine!.outputNode, format: nil)
audioPlayerNode!.scheduleFile(audioFile!, atTime: nil, completionHandler: nil)
let _ = try? audioEngine?.start()
audioPlayerNode!.playAtTime(currentTime)
}
ここで、「レート」は宣言されていますか? –
これは単なる変数です – Jacob