Audio Configuration (stereo, 5.1 surround etc)

FAudioMixerDevice::GetNumDeviceChannels(). Looks like that’s not exported, so you won’t be able to called that from outside the Engine module. Should be easily exported though.

Alternatively you could create an ISubmixBufferListener implementation and register it to the master submix. Then you’ll get callbacks on new master submix buffers, which also has the NumChannels. Also gives you the entire audio buffer to do what you will with it. Including mix into it if you wanted (e.g. if you want to tap in an entire audio engine output, could do it there). Notably you can do this on ANY submix by the way.

As for what it uses:

Console: Always renders to surround sound (7.1). The hardware does the down-mixing if the user is configured to use stereo (hardware down-mixing is preferable where available).

Linux: Always renders to 5.1 (what is max supported by SDL2, which also does the downmix).

PC: It uses whatever the OS default audio device is using. This is hooked up to listen to a IMMNotificationClient.

Android/IOS/Switch/Mac: Uses stereo.

If you’re working with submixes, the submix effect callback indicates what the channel count is always.

Hopefully that helps! I’d be more than happy to answer any other questions about the C++ code.