Channel::set3DLevel seems incorrect with 5.1 sounds

If I load a 5.1 sound file with FMOD_2D, it plays over the 6 channels of my surround system, as it should.

If I load it with FMOD_3D and position it in 3D space, it only plays over 2 speakers depending on the position.

The behavior I’d expect when using Channel::set3DLevel is to blend between those 2 modes. The sound would play over all 6 speakers, but mostly in the 2 corresponding to its position in space. Instead, it blends between the 3D sound and some sort of stereo mode where it only plays in the front-left and front-right speakers.

To be clear: playing a 5.1 sound loaded with FMOD_3D with set3DLevel(0.0) only plays over 2 speakers, as opposed to the 6 channels you’d get by loading it with FMOD_2D.

Is this a bug? Is there any workaround that I could use?

Hi Adria,
Thanks for looking into this. It does look like the 3d panner sets up a 2d matrix differently to the way a 2d sound would normally be set up. I’ve submitted a change which should be in the next point release.

A work around now is quite simple, on your channel, just use Channel::setMixLevelsOutput,
ie
channel->setMixLevelsOutput(1,1,1,1,1,1,0,0);

regards,