A downloadable GameMaker extension for Windows, macOS, and Linux

GameMaker: Studio and GameMaker Studio 2 extension that provides GML bindings to the FMOD Studio low-level API. Compatible with Windows and Linux games.

CURRENT STATUS OF PROJECT

This project has been officially retired. YoYo Games has released their own official FMOD extension for GameMaker, GMEXT-FMOD, that is more up-to-date and works with both FMOD Core and FMOD Studio. You can find the extension here:

https://github.com/YoYoGames/GMEXT-FMOD

This repo will remain up for archival purposes. I would like to thank Gitle Mikkelsen (Grix)rissole, and BPzeBanshee for their past contributions to the project.

Stable: 0.9.1

  • Platforms: Windows, Ubuntu
  • FMOD Studio API: 1.10.07
  • GMS 2 Runtime: v.2.1.4.218
  • GM:S Runtime: v.1.4.1804

Preview: 0.10.0

  • Platforms: macOS, Ubuntu
  • FMOD Studio API: 1.10.07
  • GMS 2 Runtime: v.2.1.4.218
  • GM:S Runtime: v.1.4.1804

Features

  • Load and play a wide variety of audio formats not natively supported by GameMaker:Studio (e.g. MP3, MIDI, MOD, S3M, XM, IT, etc.).
  • Add custom loop points to sounds. This allows, for example, a music track to have an intro section that can seamlessly transition into an infinitely looping main section without having to break them up into two separate files.
  • Dynamically change to volume, playback frequency and relative pitch of a sound.
  • Analyze an audio stream using Fast Fourier Transform (FFT) and obtain its spectrum data.
  • Support for DSP effects such as flange, reverb and filters.
  • Extract tag information from audio files (e.g. ID3 tags from MP3s and Vorbis tags from OGGs).
  • Supports various audio output modes (e.g. ASIO, WASAPI, ALSA).

View this project on GitHub

Updated 22 days ago
StatusIn development
CategoryTool
PlatformsWindows, macOS, Linux
Rating
Rated 4.4 out of 5 stars
(7 total ratings)
AuthorM.S.T.O.P.
Made withGameMaker
TagsAudio, fmod-studio, GameMaker, gamemaker-studio, sourcecode
Code licenseBSD 2-clause 'Simplified' License
Average sessionA few seconds
LanguagesEnglish
InputsKeyboard
LinksSource code

Download

Download
FMODGMS Extension (for GMS 2) 1 MB
Download
FMODGMS Extension (for GM:S 1.4) 1 MB
Download
FMODGMS Demo v.1.5.2 30 MB
Download
FMODGMS Demo v.1.5.2 29 MB
Download
FMODGMS Demo v.1.5.3 (Preview) 37 MB
Download
FMODGMS Demo v.1.5.3 (Preview) 30 MB
Download
FMODGMS Starter Project (for GMS 2) 2 MB
Download
FMODGMS Starter Project (for GM:S 1.4) 1 MB

Install instructions

Basic Usage


// Optional: Check to see if FMODGMS has loaded properly
if (FMODGMS_Util_Handshake() == "FMODGMS is working.")
  show_message_async("Success! FMODGMS has been loaded.");
else {
  show_message_async("Error! FMODGMS was not loaded prorperly.");
  exit; 
}
// Create the system
FMODGMS_Sys_Create();
// Initialize the system
FMODGMS_Sys_Initialize(32);
// Load sound
sound = FMODGMS_Snd_LoadSound(working_directory + "sound.ogg");
// Create a channel
channel = FMODGMS_Chan_CreateChannel();
// Play sound
FMODGMS_Snd_PlaySound(sound,channel);

How to get a game using FMODGMS running on Ubuntu (v.0.9.1 or older)

1) Open up the Terminal and install OpenAL:

sudo apt-get install libopenal1

This is required to run any game made with GameMaker:Studio. Currently, there is no way to disable OpenAL in favour of using FMOD Studio just by itself.

2) Download FMOD Studio Programmer's API and Low Level Programmer API 1.09 for Linux from the FMOD website. Extract the contents of the tar file to a folder.

3) If you have a previous version of FMOD Studio installed, remove the old libraries typing into the Terminal:

cd /usr/local/lib/
sudo rm libfmod*

4) Copy the x86 (for 32-bit operating systems) or x86_64 (for 64-bit operating systems) libraries to /usr/local/lib using the Terminal:

for 32-bit OS:
cd /path/to/fmodstudioapi110XXlinux/api/lowlevel/lib/x86
sudo cp -a libfmod* /usr/local/lib
For 64-bit OS:
cd /path/to/fmodstudioapi110XXlinux/api/lowlevel/lib/x86_64
sudo cp -a libfmod* /usr/local/lib

5) Add and export the library path:

export LD_LIBRARY_PATH=/usr/local/lib
sudo ldconfig

6) Run the game to verify that FMODGMS is working with it.

Development log

Comments

Log in with itch.io to leave a comment.

Best Audio Engine ever! But, can you add Android Support?

(3 edits)

FMODGMS constantly crashes just after I load a sound from get_open_filename function

(+2)

Hey, this extension is awesome! I've been  using it for almost a year now, but i wanna ask about a x64 support for GMS 2.3.1+, would you plan on update this someday again?

Awesome it help me a lot, but im wonder if it is possible to make it compatible with android, it would be extremely helpful 

Hopefully you'll see this, which file would I need to modify to change the lowpass effect values? I can't notice the effect that much so I want to make it even lower, thanks.

Nevermind I've found the function to change it, for anyone interested FMODGMS_Effect_Set_Parameter(effect, 0, value);

btw amazing extension

Perhaps a bit late to the party. But has anyone found a way to use this extension without exposing all the sound files to the player?

(1 edit)

I believe their is an encrip function in gamemaker

Nice work!

Does it allow for the playback of fmod events?

Is there any way to change the panning and volume of individual sounds without altering an entire channel?

any document for help?

(1 edit) (+1)

Anyone knows if I can play audio directly from the imported resources in Game Maker or it needs to be external files? I'm trying to make it play a file I imported directly to it but it crashes. :(

(+1)(-1)

Currently, FMODGMS can only read external files. I'll try to see if there is a way to play imported sound resources.

(2 edits)

I guess this has long since gone irrelevant. But i thought i'd mention in case anyone else wants to find this out.

If you want to play internal sound files with fmodgms then you can write something like. Granted that the file is set to streamed_compressed in GMS

FMODGMS_Snd_LoadSound(working_directory + "song_name.ogg");

Delay effect? Also can effects be stacked or is it only one per track? And finally how customization are the dsp effects? dry/wet,  reverb time and density?

(2 edits) (+1)(-1)
  • There is an echo effect (FMODGMS_EFFECT_ECHO) you can add to channels to get a delay effect.
  • Multiple effects can be added and chained together for any given channel using FMODGMS_Chan_Add_Effect.
  • Effect parameters can by set with  FMODGMS_Effect_Set_Parameter. I still need to write up the documentation on what effects have which parameters.

I'm running the demo in GMS2 with the yoyo compiler, and haven't change anything in the project, but still i get that FMOD failed to load...

I just uploaded a new build of the extension and demo. Trying running it and see if it works now.

Where can i find a tutorial about this extension?

(+1)(-1)

I don't have a tutorial written up yet (it's on my to-do list), but you can try poking around the source code for the demo program:
GM:S 1.4: https://github.com/mstop4/FMODGMS/tree/master/src/gms/FMODGMS%20Test.gmx
GMS 2: https://github.com/mstop4/FMODGMS/tree/master/src/gms2/FMODGMS%20Test

Uh, allrigth! Thanks a lot!

(1 edit)

The extension is working in GMS 2 with windows(YYC), but i can't get it to work with Ubuntu, it says it cant find FMODGMS.so.

(4 edits)

edit: I didn't see there was a sample project inside the src folder. That should have been clearer! Thank you for your work! :) After a bit of debugging I got a song to play!

<old post edited>

Does this let you import and playback events made in Fmod Studio?

I really would love it... can someone confirm if we can load and play Fmod Studio events ?

Deleted 6 years ago

Is the demo program crashing or is the extension crashing your game?

I got a few crashes because I was trying to play a file that was not loaded. The loading failed because the index was incorrect. It turns out that renaming an included file from explorer.mod to explorer and then back to explorer.mod in game maker makes its name bogus. So I just renamed it back to simply explorer and it worked.

(+1)

Brilliant stuff ^_^