FMOD Godot
Note: Fmod is a commercial library. This is an Unofficial integration with the godot engine. Check Licensing for more info. For official downloads of the library files check Downloads
About
Note: This is beta software. While it should be mostly stable. You may encounter bugs. So please take the time to submit a bug report.
Fmod-Godot is a GDExtension library that integrates the Fmod API with the Godot Engine. The library provides a way for C# to interact directly with the same FMOD Studio/Core system instances the FmodAudioServer uses. So, it is not limited to what the integration handles explicitly.
Unlike FMOD GDExtension This extension doesn't expose the low-level FMOD and FMOD Studio APIs to GDScript. The initial design Goal/Motivation of this was to add a high-level integration with the Godot Engine while allowing C# to use the official FMOD C# wrapper. GDScript can only directly interact with the newly added nodes
Features
Event tags
Add a FmodEvent tag to strings or Vector4Is to choose an FMOD_Event from the inspector to be passed to FMOD API Functions *Convert will Vector4i to an FMOD::GUID with an implicit cast and vice versa
[Export(PropertyHint.None,"FmodEvent")]
public string soundFX1;
[Export(PropertyHint.None,"FmodEvent")]
public Vector4I soundFX2;
@export_custom(PROPERTY_HINT_NONE, "FmodEvent")
var soundfx1 : String
@export_custom(PROPERTY_HINT_NONE, "FmodEvent")
var soundfx2 : Vector4I

Event Browser
The editor will load all of the banks in the banks folder. and cache them at startup. to be referenced by inspectors. You can drag and drop events from the browser
Class Overview
FmodAudioServer: API to play events. and attach events to objects for specialization, updating positions and velocity.
FmodBankLoader: This node loads the banks in its bank list when it enters the scene tree. and unload them if no other bank loader node is loading the bank. Banks loaded this way are reference counted.
FmodBank: Fmod Bank files are imported into Godot and exported automatically. Banks can be opened in the inspector to view what events they contain and their GUID.

FmodEventEmitter2D/3D: Plays a selected sound effect. Edit parameters, spatialize the audio, and more
FmodListener2D/3D: place listeners into the scene that automatically update their position.
Supported Platforms
| Platform | Support | Notes |
|---|---|---|
| Linux | ✅ | Manually Tested |
| Windows | ✅ | Manually Tested |
| Other | ❌ | Untested/Unsupported |
Installation and Getting Started
Open project Settings to adjust settings like error logging, banks loaded at runtime and more.
Compiling From Source
Note: you will need python installed and the requests library
You will need to add the FMOD headers and libraries to the appropriate location. A helper script "fmod_installer.py" is provided. you will need to pass your fmod credentials either as arguments or interactively.
python3 fmod_installer.py setup --username <username> --password <password> setup <fmod-version>
use --help for more info and other options.
The simplest way to compile this addon to your project is to run the export.py script example below.
#builds the extension into the plugin_template folder and copies dependencies over.
python3 export.py build -p <platform> -a <architecture>
#copys output of build to destination folder
python3 export.py export /path/to/godot_project/addons
Alternatively refer to Introduction to the buildsystem
C# Set-Up Automatic Set-up[!Note] you must have python installed to run the installer and requests
To run the install go to Project > Tools > Finish FMOD Godot setup

Enter your fmod account info and the installer will close once complete
Manual Set-UpYou must download the FMOD files from FMOD's website and place the *.cs files somewhere in your project directory.
It is necessary to replace FMOD.VERSION.dll and FMOD.Studio.STUDIO_VERSION.dll constants to use the proper fmod library version. Which will be found in fmod.cs and fmod_studio.cs. .so.14 will change depending on what so file you are using. snippets below
public partial class VERSION
{
public const int number = 0x00020309;
#if DEBUG || TOOLS
public const string logging = "L";
#else
public const string logging = "";
#endif
#if GODOT_LINUXBSD
public const string dll = $"fmod{logging}.so.14";
#else
public const string dll = "fmod{logging}";
#endif
}
public partial class STUDIO_VERSION
{
#if DEBUG || TOOLS
public const string logging = "L";
#else
public const string logging = "";
#endif
#if GODOT_LINUXBSD
public const string dll = $"fmodstudio{logging}.so.14";
#else
public const string dll = $"fmodstudio{logging};
#endif
}
Pre-built packages
C# API/Plans
C# is currently able to interact with the FmodAudioServer and from there interact interact with FMOD_Studio_System and FMOD_Core_System objects. A module version of this extension is in consideration for more natural C# support
Changelog for version v0.3.1
No changelog provided for this version.