3D sound with 22 speakers


I’m looking if it would be possible to have 3D sound with 14 + 8 speakers (14 for 3D positional sound, 8 for ambient background).

From what I could find so far I could setup support for enough speakers by using SPEAKERMODE_RAW and then using indices instead of the enums, which is fine.

Now my main problem is, how do I setup things correctly in the 3D world. The setup is as follows:

We’ve got a cube with big displays on the outside, so that people can walk around it (not a room). Around this cube in the ceiling we’ve got the 14 positional audio speakers, one for each display. We will have various content on the displays, such as objects generating sound effects, but also videos. The idea is that the content that is showing on a display will be loudest on the speaker that’s right above that display, with a sharp falloff so that maybe only the speakers right next to it still get a little bit of volume from the sound, but not much. Also, when moving content from one display to the other, the audio should move along.

In principle, I guess having a 2D pan across 14 speakers would be enough for this installation. We could just treat them as one line of speakers going from left to right, with perhaps a bit of extra work so that the sound at the end wraps around to the beginning.

The other 8 speakers will be used for ambient background music, so don’t need any additional positioning.

Is there currently any way of doing this with FMOD?


It should work assuming you can get the ALSA or PulseAudio drivers to support that many channels on your hardware.

SPEAKERMODE_RAW requires you to do all your own panning by passing matrices to Channel::setMixMatrix() and ChannelGroup::setMixMatrix(). None of the other 3D or 2D apis such as set3DAttributes() or setPan() work.