ASIO device init. DSP buffer size error


(Zibarov Volodymyr) #1

Hello.
I am trying to init ASIO device FCA610 (Behringer) with FMOD low level API version 11005 (also tried with 10913 - same error):

[LOG] SystemI::init : Initialize version=11005 (94661), maxchannels=100, flags=0x00000000
[WRN] OutputASIO::init : Requested DSP buffer count of 4 is being forced to 2.
[ERR] OutputASIO::init : DSP buffer size 1024 must be between 480 and 480 or a divisor of 480.
[LOG] SystemI::close : Closed.

FMOD_System_Init returns error:
FMOD error (51): Error initializing output device.

If I set DSP buffer size to 480 - it initializes and works OK, but I can’t get desired DSP buffer size for different devices. Also, some devices require default buffer size 1024.
One time this same device requested buffer size 528.

Same device (FCA610 through ASIO) initializes and works OK using fmodEX.

What could be solution to this?


(Zibarov Volodymyr) #2

Tested on FMOD 10620 - works OK. 10722, 10826, 10913 - same error.


(Cameron Baron) #3

This is currently a known issue, ASIO requires a specific buffer size to be used and the only way to know the correct size is from that error message.

We do have a task in the works to allow ASIO to work for all buffer sizes, although this will increase latency.

Have you considered using WASAPI? It is what we would recommend.


(Zibarov Volodymyr) #4

Thank you for this answer.
Is there a way to receive that error message at runtime? (For me to be able to workaround this.) I mean, it’s only outputting to console when running with debug version of DLL.
ASIO is crucial for me to be able to play multichannel (5.1 or 7.1) through external USB audio cards. Through WASAPI they often presents as 4 separate stereo audio cards, while through ASIO - one multichannel device.


(Cameron Baron) #5

At the moment, you will only be able to get this information at runtime when using the logging libs.

By calling FMOD_Debug_Initialize with mode ‘FMOD_DEBUG_MODE_CALLBACK’ will allow you to also pass in a callback that will receive the error message.

The planned task sounds like it is what you want, but I can’t give you an ETA on it just yet unfortunately.