[Solved][LINUX] FMOD Studio lowlevel API error

I’m new to the FMOD world, and have started using FMOD Studio (1.04.00) lowlevel API on Linux today, but I’m getting the following error when running my application:

ALSA lib pcm.c:6984:(snd_pcm_slave_conf) missing field rate
FMOD error! (58) Error initializing output device.

I’ve also tried to run some examples (play_sound, effects) and they are failing too:

[i]A fatal error has occurred…

FMOD error 58 - Error initializing output device.

Press Q to quit[/i]

My machine is running Slackware-current 64 bits, with ALSA (no PulseAudio installed) version 1.0.27 and g++ version 4.8.3. Both my application (a simple test, since I’ll use it on a game I’m developing) and the FMOD examples had no errors when compiling (tried release and debug), and I have tried forcing the output to use ALSA and AUTODETECT, without luck.

Anyone having the same problem on Linux?

Nice! I was trying to figure out how to test if a driver is valid or not, but with this latest release it’s working now.

Thank you!

Thanks Mathew, 1.04.02 is working great for me too. (And sorry for hijacking the thread with a separate issue. :oops: )

Still getting the same problem with latest version (1.04.01)

I’ve found the cause of the problem. I have installed alsa-plugins on my machine (as I need a custom sound system running on my machine, that uses samplerate and downmix).

The alsa-plugins is optional, but when it’s installed, FMOD fails to start. As a temporally workaround I’ve removed alsa-plugins from on of my machines and now it’s working. but it isn’t really solve the problem.

Thank you both for your log output, you have revealed two bugs.

MDK: The issue you have discovered is the device order can be changed by installing plugins. Device order is largely irrelevant to FMOD, except the first device is the default, so unless you call System::setDriver you will get whatever is enumerated first. I’ve fixed this now so the appropriate default is used when no specific driver is requested.

dphrygian: This is a different issue that can be caused if you call System::getDriverInfo or System::getNumDrivers before System::init. I’ve fixed this issue as well for our next release.

These fixes are scheduled for 1.04.02 which should be available tomorrow.

For what it’s worth, I also just recently installed 1.04.00 and I’m getting a Pulse Audio assert and crash when calling System::init. (Ubuntu 12.04 LTS; never had any problems with FMOD Ex before.)

I’ll link against the debug library later tonight and see if FMOD is reporting any problems before that occurs. (Edit: I tried ALSA, and that works for me if I manually switch to it.)

Edit:
The error in Pulse is:
Assertion ‘m’ failed at pulse/mainloop.c:793, function pa_mainloop_wakeup(). Aborting.

The log is:
FMOD: OutputPulseAudio::registerLib : Loaded PulseAudio version 1.1.0.
FMOD: OutputPulseAudio::enumOutput : Found output device NAME:alsa_output.pci-0000_00_1b.0.analog-stereo DESC:Built-in Audio Analog Stereo CHANNELS:2 RATE:44100.
FMOD: OutputPulseAudio::enumInput : Found input device NAME:alsa_output.pci-0000_00_1b.0.analog-stereo.monitor DESC:Monitor of Built-in Audio Analog Stereo CHANNELS:2 RATE:44100.
FMOD: OutputPulseAudio::enumInput : Found input device NAME:alsa_input.pci-0000_00_1b.0.analog-stereo DESC:Built-in Audio Analog Stereo CHANNELS:2 RATE:44100.
FMOD: SystemI::init : FMOD Studio Version: 00010400 (54777)
FMOD: SystemI::init : maxchannels = 1000, flags = 00000000, extradriverdata = (nil)
FMOD: SystemI::close :
FMOD: SystemI::close : Stop all sounds
FMOD: SystemI::close : Shut down output.

Good mention, I forget to post the debug info:

[i]FMOD: SystemI::init : FMOD Studio Version: 00010400 (54777)
FMOD: SystemI::init : maxchannels = 32, flags = 00000000, extradriverdata = (nil)
FMOD: SystemI::close :
FMOD: SystemI::close : Stop all sounds
FMOD: SystemI::close : Shut down output.
FMOD: SystemI::close : Remove miscllaneous DSP stuff.
FMOD: SystemI::close : done.

FMOD: SystemI::init : Set up software engine
FMOD: OutputALSA::registerLib : Loaded ALSA version 1.0.27.2.
FMOD: OutputALSA::enumerate : Found device NAME:null IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:my_rate IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:jack IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:oss IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:upmix51 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:surround51 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:surround40 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:default:CARD=PCH IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:sysdefault:CARD=PCH IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:front:CARD=PCH,DEV=0 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:surround41:CARD=PCH,DEV=0 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:surround50:CARD=PCH,DEV=0 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:surround71:CARD=PCH,DEV=0 IOID:(null).
FMOD: OutputALSA::enumerate : Found device NAME:hdmi:CARD=PCH,DEV=0 IOID:Output.
FMOD: OutputALSA::init : snd_pcm_open returned -22 = Invalid argument.
FMOD: Debug_OutputTrace : …/…/…/lowlevel_api/src/fmod_systemi.cpp(6260) : FMOD error (58) : Error initializing output device.

FMOD: Global::decRef : Shut down streamer and FMOD_NONBLOCKING and FileSystem thread.
FMOD: Global::decRef : Shut down profiler.
FMOD: Global::decRef : Shut down file system.
FMOD: SystemI::close :
FMOD: SystemI::close : Stop all sounds
FMOD: SystemI::close : Shut down output.
FMOD: SystemI::close : Free software output.
FMOD: SystemI::close : Remove miscllaneous DSP stuff.
FMOD: SystemI::close : done.[/i]