2014-09-06 11 views
11

Obecnie próbuję uzyskać nowy silnik audio firmy Apple działający z moją obecną konfiguracją audio. Dokładniej, próbuję zmienić wysokość dźwięku za pomocą Audio Engine, co najwyraźniej jest możliwe zgodnie z this post.Używanie nowego AudioEngine firmy Apple do zmiany dźwięku Pitch of AudioPlayer

Przyjrzałem się także innym rozwiązaniom zmieniającym boisko, w tym Diracowi i Objectalowi, ale niestety oba wydają się być dość pomieszane pod względem współpracy z Swift, którego używam.

Moje pytanie brzmi: jak zmienić wysokość pliku audio za pomocą nowego silnika audio Apple. Mogę odtwarzać dźwięki za pomocą AVAudioPlayer, ale nie rozumiem, jak plik jest przywoływany w audioEngine. W kodzie na połączonej stronie znajduje się "format" odnoszący się do pliku audio, ale nie mam pojęcia, jak utworzyć format lub co on robi.

gram dźwięki z tego prostego kodu:

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

Odpowiedz

14

można użyć AVAudioPlayerNode, a nie AVAudioPlayer.

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

Następnie można dołączyć AVAudioUnitTimePitch.

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

Nie ma dla mnie sensu. Gdzie mam przekazać plik, który chcę odtworzyć? – charlesrockbass

+0

scheduleFile to funciton do użycia. https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerNode_Class/index.html#//apple_ref/occ/cl/AVAudioPlayerNode –