title: AVAudioEngine playing multi channel audio
body: <p>Simple question. How do I play multi channel audio files (>2 channels) using AVAudioEngine so that I can hear all channels on default 2-channel output (headphones/speaker). Following code (stripped of error checking for presenting) plays the file first two channels but I can only hear it when headphones are plugged in.</p>
  
  <pre><code>AVAudioFile *file = [[AVAudioFile alloc] initForReading:[[NSBundle mainBundle] URLForResource:@"nums6ch" withExtension:@"wav"] error:nil];
  AVAudioEngine *engine = [[AVAudioEngine alloc] init];
  AVAudioPlayerNode *player = [[AVAudioPlayerNode alloc] init];
  AVAudioMixerNode *mixer = [[AVAudioMixerNode alloc] init];
  [engine attachNode:player];
  [engine attachNode:mixer];
  AVAudioFormat *processingFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32 sampleRate:file.processingFormat.streamDescription-&gt;mSampleRate channels:2 interleaved:false];
  [engine connect:player to:mixer format:processingFormat];
  [engine connect:mixer to:engine.outputNode format:processingFormat];
  [engine startAndReturnError:nil];
  [player scheduleFile:file atTime:nil completionHandler:nil];
  [player play];
  </code></pre>
  
  <p>I tried a lot of combinations with formats for both player->mixer and mixer->output connections but they either result with same thing as code above or more likely a crash with either:</p>
  
  <pre><code>ERROR:     [0x19c392310] AVAudioNode.mm:495: AUGetFormat: required condition is false: nil != channelLayout &amp;&amp; channelLayout.channelCount == asbd.mChannelsPerFrame
  *** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: nil != channelLayout &amp;&amp; channelLayout.channelCount == asbd.mChannelsPerFrame'
  </code></pre>
  
  <p>or AUSetFormat OSStatus code -10868 (which is format not supported if I'm not mistaken). Using file.processingFormat for any connection crashes app with the first error above. Also, the crash occurs on <code>[player play];</code></p>
  
  <p>There must be some way of playing it like I want because I'm able to do it without problem using AUGraph, however, since AVAudioEngine provides one feature I have to include, I'm stuck with it.</p>
  
  <p>Multi channel audio files I use to check my code can be found <a href="http://www.jensign.com/bdp95/7dot1voiced/" rel="nofollow">here</a></p>
  
  <p><strong>UPDATE</strong>
  Ok, so hearing audio in headphones only was probably due to me forgetting setting audio session to active in my test app. But I still only hear first two channels...</p>