Skip to content
/ FMODGMS Public

🎶 GML bindings to the FMOD Studio low-level API for GM:S and GMS2. Can be used in Windows, macOS, and Linux games.

License

Notifications You must be signed in to change notification settings

mstop4/FMODGMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FMODGMS

A GameMaker: Studio and GameMaker Studio 2 extension that provides GML bindings to the FMOD Studio low-level API. Can be used in Windows, macOS, 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:

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.


Latest - 0.10.0

  • Platform coverage:
Windows macOS Ubuntu
GM:S 1.4 VM ✔️ ⚠️1 ✔️
GM:S 1.4 YYC ✔️ 🚧 ✔️
GMS 2.1 VM ✔️ ⚠️1 ✔️
GMS 2.1 YYC ✔️ ✔️ ✔️

1. Works with "Create Executable" only, not "Run" or "Debug"

  • FMOD Studio API: 1.10.07
  • GMS 2 Runtime: v.2.1.5.246
  • GM:S Runtime: v.1.4.1804

Stable - 0.9.1

  • Platform coverage:
Windows macOS Ubuntu
GM:S 1.4 VM ✔️ ✔️
GM:S 1.4 YYC ✔️ ✔️
GMS 2.1 VM ✔️ ✔️
GMS 2.1 YYC ✔️ ✔️
  • 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.).
  • Play MIDI files using DLS1 sound banks.
  • 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).

What's inside

  • FMODGMS_x64.gmez - FMODGMS GameMaker: Studio extension for GMS 2.
  • FMODGMS_x86.gmez - FMODGMS GameMaker: Studio extension for GM:S 1.4. Contains a 32-bit build of the Linux library for compatibility.
  • FMODGMS_Demo_win.zip - FMODGMS player demo for Windows
  • FMODGMS_Demo_linux.tar.gz - FMODGMS player demo for Linux
  • FMODGMS_Starter.yyz - A minimal FMODGMS project for GMS 2.
  • FMODGMS_Starter.gmz - A minimal FMODGMS project for GM:S 1.4.
  • src - library, player demo, and unpackage starter project source code
    • gms/FMODGMS Test.gmx - GM:S 1.4 project for player demo
    • gms/FMODGMS Starter.gmx - GM:S 1.4 starter project
    • gms2/FMODGMS Test - GMS 2 project for player demo
    • gms2/FMODGMS Starter - GMS 2 starter project
    • linux - FMODGMS source for Linux
    • xcode - Xcode project for macOS. Shares code with Linux.
    • vc/FMODGMS - FMODGMS source for Windows as a Visual Studio project

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 properly.");
    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);

Possible Features in the Future

  • More options for FFT and spectrum data functionality.
  • Android support.

For a list of changes and development history, click here.

Contributors