Canonical format is noninterleaved, so each buffer only has one channel so .mBytesPerPacket and .mBytesPerFrame should be sizeof(Float32). Then you need to create multiple (busCount) buffers to pass into the AudioUnit with something like

thanks. i will give this a try. meanwhile would this approache have to change if i use any of these other formatflags? kAudioFormatFlagIsSignedInteger kAudioFormatFlagsNativeEndian kAudioFormatFlagIsNonMixable i don't really know what they stand for. thanks again.
–
stephanschulzMar 2 '13 at 13:07

kAudioFormatFlagsAudioUnitCanonical includes NativeEndian. Yes, it would change if you used SignedInteger because SignedInteger seems to put everything into one buffer. I don't know what IsNonMixable is for :)
–
iainMar 2 '13 at 13:15