2016-10-10 6 views
1

아래 코드로 사운드를 생성하려고합니다. 오류가없는 경우에도 아무 문제가 없습니다. 그러나이 코드를 실행할 때 소리가 들리지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 그런데 AVAudioPlayerNode가 사운드를 재생하지 않습니다.

, 나는이 예제를 사용하고 있습니다 : 그것은 지역 변수처럼 http://www.tmroyal.com/playing-sounds-in-swift-audioengine.html

var ae:AVAudioEngine 
var player:AVAudioPlayerNode? 
var mixer:AVAudioMixerNode 
var buffer:AVAudioPCMBuffer 

ae = AVAudioEngine() 
player = AVAudioPlayerNode() 
mixer = ae.mainMixerNode; 
buffer = AVAudioPCMBuffer(pcmFormat: player!.outputFormat(forBus:0), frameCapacity: 100) 
buffer.frameLength = 100 

// generate sine wave. 
var sr:Float = Float(mixer.outputFormat(forBus:0).sampleRate) 
var n_channels = mixer.outputFormat(forBus:0).channelCount 

var i:Int=0 
while i < Int(buffer.frameLength) { 
    var val = sinf(441.0*Float(i)*2*Float(M_PI)/Float(sr)) 
    buffer.floatChannelData?.pointee[i] = val * 0.5 
    i+=Int(n_channels) 
} 

// setup audio engine 
ae.attach(player!) 
ae.connect(player!, to: mixer, format: player!.outputFormat(forBus: 0)) 

ae.prepare() 
try! ae.start() 
// play player and buffer 
player!.scheduleBuffer(buffer, at: nil, options: .loops, completionHandler: nil) 
player!.play() 

답변

2

귀하의 AVAudioEngine 보인다 - 범위를 벗어나 이동하고 해제 할 수있다. 클래스 인스턴스 변수에 할당하면 어쩌면 약간의 소리가 들립니다.