2014-09-06 8 views
11

Ich versuche gerade, Apples neue Audio-Engine mit meinem aktuellen Audio-Setup zu arbeiten. Konkret versuche ich die Tonhöhe mit der Audio Engine zu ändern, was laut this post scheinbar möglich ist.Verwenden von Apples neuer AudioEngine zum Ändern der Tonhöhe des AudioPlayer-Sounds

Ich habe mir auch andere Lösungen für die Tonhöhenveränderung angeschaut, einschließlich Dirac und ObjectAL, aber leider scheinen beide in Bezug auf die Arbeit mit Swift, die ich verwende, ziemlich durcheinander zu sein.

Meine Frage ist, wie ändere ich die Tonhöhe einer Audiodatei mit Apples neuer Audio-Engine. Ich kann Sounds mit AVAudioPlayer abspielen, aber ich bekomme nicht, wie die Datei in audioEngine referenziert wird. Im Code auf der verlinkten Seite gibt es ein "Format", das sich auf eine Audiodatei bezieht, aber ich bekomme nicht, wie man ein Format erstellt oder was es tut.

Ich spiele Klänge mit diesem einfachen Code:

let path = NSBundle.mainBundle().pathForResource(String(randomNumber), ofType:"m4r") 
let fileURL = NSURL(fileURLWithPath: path!) 
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil) 
player.prepareToPlay() 
player.play() 

Antwort

14

Sie verwenden einen AVAudioPlayerNode, keine AVAudioPlayer.

engine = AVAudioEngine() 
playerNode = AVAudioPlayerNode() 
engine.attachNode(playerNode) 

Dann können Sie eine AVAudioUnitTimePitch befestigen.

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)) 
+0

Es macht keinen Sinn für mich. Wo sage ich der Datei, die ich spielen möchte? – charlesrockbass

+0

scheduleFile ist die zu verwendende Funktion. https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerNode_Class/index.html#//apple_ref/occ/cl/AVAudioPlayerNode –