ChannelGroup::setMixMatrix Mono -> 5.1, not working as expected


I’m having trouble with the ChannelGroup::setMixMatrix method.

I would like to patch a Mono sound through to different speakers on a 5.1 setup.

I’m working in Unity in C#, with a Studio Event.
I retrieve the ChannelGroup from the EventInstance, no problem.
I then call group.setMixMatrix();

My code works fine if the event is 6 channel sound.

But with stereo or mono sounds, no matter what I put into the matrix I only get sound out on the FrontLeft and FrontRight speakers. With Mono sounds, FrontLeft and FrontRight are always equalled mixed no matter what values I put into the matrix. With Stereo sounds, I can pan between the FrontLeft or FrontRight speakers (as desired), but cannot produce output on any other speakers.
Even if I enter a 6 x 6 matrix full of 1’s I only get output on the FrontLeft and FrontRight speakers.

Interesting to note that getMixMatrix() always returns 6 inchannels and 6 outchannels, even for mono and stereo sounds. So it seems to me my mono and stereo sounds are being mixed up to 6 channels before they get to my mixMatrix? Even still, entering a matrix full of 1’s should output sound on all speakers, no?

Any help whatsoever greatly appreciated.


I made some progress. Two things are required:

First, I don’t use the ChannelGroup.SetMixMatrix, but the FMOD.DSPConnection.SetMixMatrix

Second, it only works if I first add the “Channel Mix” Effect filter to the Event in FMOD Studio, and set it there to 5.1 Grouping.

So the SetMixMatrix() method works to patch channels through to different speakers, but by itself it doesn’t seem capable of doing any up-mixing (from less channels to more). For this, it seems a separate filter is required.

Am I understanding correctly?

The main reason trying to modify an event’s low level channelgroup, is that the event system is already setting that stuff itself. Using the low level API assumes you know that the higher level event system will be manipulating everything to get it to sound right.

In this case it will be setting the format of the channelgroup , as set by the track format in the UI (ie in the effect deck, you can select ‘mono/stereo/surround/auto’ for input format or output format when right clicking on the VU levels.

Trying to change studio’s signal speaker mode format will usually just have studio API trying to force it back to what it expects it should be.

You can insert extra DSPs in the chain, and do down/upmixing there, as long as the output is what studio expected fromt he sound designer’s point of view.

1 Like