Comment utiliser le taux dans AVAudioEngine?Comment utiliser le taux dans AVAudioEngine
Voici mon code complet:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var audioEngine = AVAudioEngine()
var myPlayer = AVAudioPlayerNode()
override func viewDidLoad() {
super.viewDidLoad()
if var filePath = NSBundle.mainBundle().pathForResource("music", ofType: "wav"){
var filePathURL = NSURL.fileURLWithPath(filePath)
audioEngine.attachNode(myPlayer)
var audioFile = AVAudioFile(forReading: filePathURL, error: nil)
var audioError:NSError?
audioEngine.connect(myPlayer, to: audioEngine.mainMixerNode, format: audioFile.processingFormat)
myPlayer.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
audioEngine.startAndReturnError(&audioError)
}else {
println("url not found")
}
}
@IBAction func playSound(sender: UIButton) {
myPlayer.rate = 0.5
myPlayer.play()
}
Ainsi, alors que je joue le son son de ne pas utiliser le taux du tout. En outre, comment puis-je réinitialiser la position une fois que j'ai terminé l'audio. AVAudioPlayer avait currentTime à utiliser pour réinitialiser la barre.
Édition1: Ceci est plutôt source de confusion si AVAudioPlayerNode n'a pas de classe à gérer, pourquoi est-ce que cela me permet d'utiliser le taux? Désolé complètement noob à la programmation.
Édition2: Vous pouvez l'utiliser avec l'aide de l'exemple de code de Matt. J'ai raté la ligne de sortie audio:
var audioEngine = AVAudioEngine()
var myPlayer = AVAudioPlayerNode()
audioEngine.attachNode(myPlayer)
var changeAudioUnitTime = AVAudioUnitTimePitch()
changeAudioUnitTime.rate = audioChangeNumber
audioEngine.attachNode(changeAudioUnitTime)
audioEngine.connect(myPlayer, to: changeAudioUnitTime, format: nil)
audioEngine.connect(changeAudioUnitTime, to: audioEngine.outputNode, format: nil)
audioPlayerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
audioEngine.startAndReturnError(nil)
audioPlayerNode.play()
Merci à tous pour votre aide.
je montre la deuxième approche ici: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch14p655AVAudioEngineTest/AVAudioEngineTest/ViewController.swift – matt
Matt, j'ai essayé votre code d'exemple en changeant seulement le taux et en attachant le noeud. Suivez-le en planifiant le fichier et en essayant de le lire. Il y a toujours une erreur "exception non interceptée de type NSException". J'ai donc vérifié mon storyboard pour voir s'il y avait des boutons ou des connexions non contrôlés. Il n'y en avait pas. J'ai donc essayé de supprimer la partie d'effet et de la rejouer. Cette partie fonctionne. –
L'exemple fonctionne comme je l'ai écrit; ce que tu as fait dans ton code, je n'en ai aucune idée. Cependant, ce n'est pas pertinent. vous avez demandé pourquoi 'rate' ne fonctionnait pas et comment le faire fonctionner, et je vous l'ai dit. – matt