2014-09-06 16 views
11

Şu anda Apple'ın yeni ses motorunu geçerli ses kurulumumla çalışmaya çalışıyorum. Spesifik olarak, this post'a göre görünüşe göre mümkün olan Audio Engine ile sahayı değiştirmeye çalışıyorum.Pitch of AudioPlayer sesini değiştirmek için Apple'ın yeni AudioEngine'ini kullanma

Ayrıca Dirac ve ObjectAL dahil olmak üzere diğer zift değiştirme çözümlerine baktım, ama ne yazık ki ikisi de kullandığım Swift ile çalışmak açısından oldukça berbat görünüyor.

Sorum, Apple'ın yeni ses motorunu kullanarak bir ses dosyasının sesini nasıl değiştirebilirim. AVAudioPlayer kullanarak sesleri çalabiliyorum, ancak sesEngine'de dosyaya nasıl başvurulur anlamıyorum. Bağlantılı sayfadaki kodda ses dosyasına atıfta bulunulan bir 'format' var ancak bir formatın nasıl oluşturulduğunu veya ne yaptığını anlamıyorum.

Ben bu basit kod ile sesleri oynuyorum:

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

cevap

14

Bir AVAudioPlayerNode değil, bir AVAudioPlayer kullanırlar. Daha sonra bir AVAudioUnitTimePitch ekleyebilirsiniz.

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

Bana göre bir anlam ifade etmiyor. Oynamak istediğim dosyayı nerede bulabilirim? – charlesrockbass

+0

scheduleFile kullanımı eğlenceli. https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerNode_Class/index.html#//apple_ref/occ/cl/AVAudioPlayerNode –

İlgili konular