How do you get positional audio to work in SceneKit?

I am having trouble getting positional audio to work in SceneKit. Starting with the SceneKit game template generated by Xcode I have added the following code to the end of the handleTap method:

let ship = scnView.scene!.rootNode.childNode(withName: "ship", recursively: true)!  
if let source = SCNAudioSource(fileNamed: "art.scnassets/monoAudioTest.wav")  
    source.volume = 1  
    source.isPositional = true  
    source.shouldStream = true  
    source.loops = true  
    let player = SCNAudioPlayer(source: source)  

ship.runAction(SCNAction.move(to: SCNVector3(0, 0, -10000), duration: 8)) 

The audio plays but the volume doesn’t decrease as the jet moves away from the camera. Am I missing some steps or making some wrong assumptions?

  • SceneKit shader modifiers with GLSL arrays
  • How to rotate an SCNBox
  • Make a line thicker in 3D?
  • How to create realistic .scn files?
  • How to use multiple cameras for the same scene in Scene Kit
  • How to use a pan gesture to rotate a camera in SceneKit using quaternions
  • Cross-posted to the Apple Developer Forums.

    2 Solutions Collect From Internet About “How do you get positional audio to work in SceneKit?”

    You should be able to get positional audio with source.shouldStream = false.

    As mentioned by Jed Soane, and confirmed by Apple in a Radar, the issue was my audio file was stereo instead of mono. Only mono audio files will work for positional audio.