FAQ#

This chapter collects common issues encountered when using Godot-FmodPlayer. For questions about FMOD licensing, platform publishing, or commercial projects, always rely on the official FMOD documentation and your actual project agreement.

What licenses apply when using Godot-FmodPlayer?#

The Godot-FmodPlayer plugin itself uses the MIT license. This means you can freely use, modify, and distribute the plugin, but you must keep the original copyright and license notice.

Note that Godot-FmodPlayer depends on FMOD Engine. FMOD is a proprietary audio engine by Firelight Technologies Pty Ltd and does not become open source through this plugin. If your project will be published, commercialized, or distributed on a specific platform, read FMOD Licensing and FMOD Legal Information.

Does Godot-FmodPlayer support FMOD Studio Events or Banks?#

Currently, Godot-FmodPlayer mainly targets the FMOD Core API. Its focus is lower-level functionality such as audio file playback, channel control, mixing, DSP effects, and 3D audio.

It is not the same as an FMOD Studio integration and does not provide a complete Studio Event workflow. If your project depends on FMOD Studio events, parameters, Bank builds, or an audio-designer workflow, consider fmod-gdextension.

Why does Godot report that a specified module cannot be found after importing the plugin?#

Check whether you manually placed the FMOD runtime library, such as fmod.dll on Windows, under res://addons/fmod_player/. If you have not downloaded the FMOD runtime libraries, download them from FMOD.

Godot-FmodPlayer cannot redistribute the FMOD runtime libraries because of the FMOD EULA.

Why is there no sound during playback?#

Check the following in order:

  1. Make sure the scene uses FmodAudioStreamPlayer or the corresponding FMOD playback node.

  2. Make sure stream is set correctly and the audio path exists.

  3. Make sure the player’s playing state, volume, and paused state are not being overwritten by a script.

  4. Make sure the master channel group or target channel group is not muted and its volume is not set to 0.

  5. Check Godot’s Output panel for FMOD initialization, file loading, or decoding errors.

If you load audio from code, first test with a simple res:// path to rule out path, import, and packaging issues.

Which loading mode should I use for background music and short sound effects?#

The general recommendation is:

  • Use MODE_STREAM for longer audio such as background music, voice, and ambience.

  • Use MODE_SAMPLE for short sound effects such as clicks, attacks, and explosions.

MODE_STREAM reads audio data on demand, so it is suitable for longer files and reduces memory usage. MODE_SAMPLE loads audio into memory, which gives lower playback latency and is better for frequently triggered short sounds.

Why does audio fail to play after export?#

Export playback failures are usually related to paths, resource packaging, or dynamic libraries:

  1. Make sure the audio files are included in the Godot export package.

  2. Prefer res:// paths for project resources and avoid absolute paths from the development machine.

  3. Make sure the target platform includes the FMOD runtime library and GDExtension files for the correct architecture.

  4. Check that the export template, platform architecture, and plugin binaries match.

  5. Enable logs in the exported build and check for missing files or dynamic library loading failures.

If playback works in the development environment but fails after export, first check resource filters in the export preset and the plugin binary files.

Can Godot AudioStreamPlayer and FmodAudioStreamPlayer be used together?#

Yes, but they belong to different audio systems. Godot’s built-in AudioStreamPlayer goes through Godot’s audio server, while FmodAudioStreamPlayer goes through the FMOD system.

If both systems are used in the same project, manage their volume, pause behavior, buses, and lifetimes separately. For sounds that need FMOD DSP, channel groups, or 3D audio control, prefer using FMOD playback nodes consistently so the mixing logic stays in one place.

When do I need to release audio resources manually?#

Most Godot resources are cleaned up automatically when references are released, but active management is recommended in these cases:

  • You dynamically load many audio files at runtime.

  • You preload many short sound effects with MODE_SAMPLE.

  • You need to release audio resources that are only used by the current level during a level transition.

  • You create temporary players, emitters, DSPs, or channel groups.

For nodes that are no longer used, call queue_free(). For audio resources, if the documentation or API provides cleanup methods such as clear(), call them only after confirming that no player is still using the resource.

What should I do if a DSP effect does not work?#

First confirm that the DSP was added to the correct place. A DSP can be attached to the master channel group, a specific channel group, or a currently playing channel. If it is added to the wrong channel group, the target sound will not pass through the effect.

Also check:

  1. Whether the DSP was created successfully.

  2. Whether the parameter index and parameter type are correct.

  3. Whether the DSP is bypassed.

  4. Whether the target sound is playing through that channel or channel group.

  5. Whether the DSP insertion order matches your expectation.

When debugging, first add the DSP to the master channel group to confirm that the effect itself works, then move it to a more specific channel group.

What should I watch out for on mobile platforms?#

Mobile platforms are more sensitive to memory, CPU, and file I/O speed. Recommended practices:

  • Use MODE_STREAM for background music.

  • Use MODE_SAMPLE for high-frequency short sound effects and load them ahead of time.

  • Avoid creating too many DSP effects at once, especially heavier effects such as reverb, convolution, and complex filters.

  • Control the number of channels playing at the same time.

  • Test latency, performance, and exported package contents on a real device.

Behavior in the editor or emulator does not fully represent a real device. Use target-device test results as the source of truth before release.

How should I investigate crashes or FMOD errors?#

Start by collecting:

  1. Godot version, plugin version, and target platform.

  2. A minimal reproduction scene.

  3. The full error output from Godot’s Output panel.

  4. The audio format, loading mode, and playback method being used.

  5. Whether the issue only appears in exported builds or on specific devices.

If the issue can be reproduced consistently, create a minimal project containing only the necessary scene and audio files. This makes it easier to determine whether the cause is a path, import setting, platform binary, FMOD initialization, or a specific API call.

If you cannot solve the issue, you can open a GitHub issue or look for help there.