In fmorbis.h the enum value FMOD_THREAD_MAX is incorrect.
typedef enum
{
FMOD_THREAD_DEFAULT,
FMOD_THREAD_CORE0 = 1 << 0,
// ...
FMOD_THREAD_CORE5 = 1 << 5,
FMOD_THREAD_MAX
} FMOD_THREAD;
The enum should really be…
typedef enum
{
FMOD_THREAD_DEFAULT,
FMOD_THREAD_CORE0 = 1 << 0,
// ...
FMOD_THREAD_CORE5 = 1 << 5,
FMOD_THREAD_ANYCORE = ... (bit-or all previous enum values),
FMOD_THREAD_MAX
} FMOD_THREAD;
As a result of its current value, fmod returns ‘invalid parameter’ if you try to set a cpu affinity mask for FMOD_THREAD_CORE0|1|2|3|4|5, even though that is a valid affinity mask.