Windows Specific Starter Guide

FMOD Studio API

Firelight Technologies FMOD Studio API

Windows Specific Starter Guide

SDK Version

FMOD is compiled using the following tools.

  • Visual Studio - version 2012 targeting platform toolset v110_xp.

Compatibility

FMOD supports the below architectures back to Windows XP.

  • x86 - optimized with SSE3.
  • x86_64 - optimized with SSE3 (and AVX if detected at runtime).

Libraries

The provided libs are import libraries which require the corresponding DLL to be present at runtime.

FMOD Low level library

  • /api/lowlevel/lib/fmod_vc.lib - Release 32-bit binary for production code (requires fmod.dll at runtime).
  • /api/lowlevel/lib/fmodL_vc.lib - Release 32-bit binary with logging enabled for development (requires fmodL.dll at runtime).
  • /api/lowlevel/lib/fmod64_vc.lib - Release 64-bit binary for production code (requires fmod64.dll at runtime).
  • /api/lowlevel/lib/fmodL64_vc.lib - Release 64-bit binary with logging enabled for development (requires fmodL64.dll at runtime).

FMOD Studio Runtime library (used in conjunction with low level library)

  • /api/studio/lib/fmodstudio_vc.lib - Release 32-bit binary for production code (requires fmodstudio.dll at runtime).
  • /api/studio/lib/fmodstudioL_vc.lib - Release 32-bit binary with logging enabled for development (requires fmodstudioL.dll at runtime).
  • /api/studio/lib/fmodstudio64_vc.lib - Release 64-bit binary for production code (requires fmodstudio64.dll at runtime).
  • /api/studio/lib/fmodstudioL64_vc.lib - Release 64-bit binary with logging enabled for development (requires fmodstudioL64.dll at runtime).

COM

Before calling any FMOD functions it is important to ensure COM is initialized. You can achieve this by calling CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED) on each thread that will interact with the FMOD API. This is balanced with a call to CoUninitialize() when you are completely finished with all calls to FMOD.

If you fail to initialize COM, FMOD will perform this on-demand for you issuing a warning. FMOD will not uninitialize COM in this case so it will be considered a memory leak.

To ensure correct behavior FMOD assumes when using the WASAPI output mode (default for Windows Vita and newer) that you call output related functions from your UI thread. This ensures that any platform specific dialogs that need to be presented can do so. This recommendation comes from the IAudioClient interface docs on MSDN which state:

In Windows 8, the first use of IAudioClient to access the audio device should be on the STA thread. Calls from an MTA thread may result in undefined behavior.

Known Issues

No known issues, please contact [email protected] if you discover a problem.