0
0

When reading more docs, I found in System::setSpeakerMode that FMOD in Linux does not support surround, only raw, mono, stereo and prologic.

I was working on a project that should use a surround setup at performance time. Does that mean I’m out of options with FMOD? Or is there some way to get surround with another function?

RAW, if I read correctly, is meant for multichannel cards, but then I read someplace else that mono sounds are always played through the first speaker, stereo sounds through the first 2 etc… If that’s true, it isn’t much help…

regards,

yvan

  • You must to post comments
0
0

Normally you just set the speaker mode for FMOD and everything will work fine. Although with Linux you may need to go the extra step of choosing a device from the enumerated list that supports surround. For instance if you wanted 5.1 output, you would choose FMOD_SPEAKERMODE_5POINT1 and the device called surround51.

You can use System::getNumDrivers() and System::getDriverInfo() to iterate through the driver list and find the "surround" device.

  • You must to post comments
0
0

Thank you, Mathew. I cannot try that out just yet, because my current sound card (X-Fi) has not linux support yet. I’ll have to find another one soon.

Nevertheless, if what you’re saying is correct, the API reference is wrong. This is taken from the entry about System::setSpeakerMode:

[quote:3tpohjpk]Remarks

Speaker modes that are supported on each platform are as follows.

Win32 – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_QUAD, FMOD_SPEAKERMODE_SURROUND, FMOD_SPEAKERMODE_5POINT1, FMOD_SPEAKERMODE_7POINT1, FMOD_SPEAKERMODE_PROLOGIC.
Win64 – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_QUAD, FMOD_SPEAKERMODE_SURROUND, FMOD_SPEAKERMODE_5POINT1, FMOD_SPEAKERMODE_7POINT1, FMOD_SPEAKERMODE_PROLOGIC.
Linux – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_PROLOGIC.
Mac – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_PROLOGIC.
Xbox – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_5POINT1, FMOD_SPEAKERMODE_PROLOGIC.
PS2 – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_PROLOGIC.
GC – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_PROLOGIC.
Xbox 360 – FMOD_SPEAKERMODE_5POINT1 only. The user cannot change the speaker mode on this platform.
PS3 – FMOD_SPEAKERMODE_7POINT1 only. The user cannot change the speaker mode on this platform.
Wii – FMOD_SPEAKERMODE_RAW, FMOD_SPEAKERMODE_MONO, FMOD_SPEAKERMODE_STEREO, FMOD_SPEAKERMODE_PROLOGIC.[/quote:3tpohjpk]

So that would mean no 5 or 7point1 on linux. Hopefully the API reference is just a bit outdated :-)

  • You must to post comments
0
0

Yes that information in the docs is out of date, the supported platforms section often gets neglected. I will get that fixed up for a future version.

  • You must to post comments
0
0

meanwhile i have a working 5.1 suround card, a terratec aureon 5.1 pci. I’ve set [code:2n1j9483]system->setSpeakerMode(FMOD_SPEAKERMODE_5POINT1);[/code:2n1j9483] which does not give me any error message.

BUT!! The sound is still coming only from my front speakers. I am using the alsa drivers, and the alsa command [code:2n1j9483] "speaker-test -Dplug:surround51 -c6 -twav"[/code:2n1j9483] is working as expected, so no hardware issue.

Is there something else i must do before I FMOD uses my surround speakers?

  • You must to post comments
0
0

Are you selecting the surround51 device for FMOD to output to?

Use getNumDrivers() and getDriverInfo() to enumerate the list of output devices, then select the driver named "surround51" using setDriver(). This must be done in addition to setting the speaker mode to 5POINT1.

  • You must to post comments
0
0

This was indeed my problem. Everything is working now.

thanks!

  • You must to post comments
0
0

Mathew,

I am having the exact same problem, yet when I use getNumDrivers() and getDriverInfo(), all that is listed is 1 output device named "/dev/dsp". I just don’t know how to make my "surround51" driver visible to FMOD b/c the same speaker test that worked for yvan is also working for me.

[code:28jthlbg] "speaker-test -Dplug:surround51 -c6 -twav" [/code:28jthlbg]

I’m really new to using fmod on linux and don’t really know what else to try.

Thanks for your help in advance.

  • Christian
  • You must to post comments
0
0

Did you set the output first? Like this:
[code:2pibsuil]
FMOD::System_Create(&system);
system->setOutput(FMOD_OUTPUTTYPE_ALSA);[/code:2pibsuil]
Autodetect did not work for me, on linux.

  • You must to post comments
0
0

FMOD will automatically choose an output mode for you if you don’t specify one. The default for Linux is OSS, which doesn’t have the same driver listing as ALSA.

I would recommend using ALSA these days, it seems to be more robust. The code listed above by yvanvds is what you need.

  • You must to post comments
Showing 9 results
Your Answer

Please first to submit.