exAudio is a battle tested free abstraction layer for the audio_* functions of GameMaker Studio, plus it contains some additional functionality.


  • Getters & Setters: exAudio keeps track of audio data. Getters include position, velocity, falloff, volume, pitch and more. For sounds and the listener

  • Audio Classes: You can create classes and add sounds to them in order to manipulate them all together at the same time

  • Fade Volume & Pitch: exAudio contains functions for fading both volume & pitch. It is also done by using steps instead of milliseconds for better sync with alarms and timelines.

  • Suspend Audio: You can Suspend all the sounds when e.g. the game loses focus. audio_pause_all() function is not really good use in our case, as the developer might have paused some sounds intentionally so audio_resume_all() will resume ALL the sounds, even the ones we don't want to. ex_audio_suspend_all() and ex_audio_restore_all() intelligently checks if the sounds are paused intentionally and leaves those alone.

  • Unique Sounds: Classes can be used to store a series of sounds which can be played later on using the function ex_audio_class_play_unique(). That will choose a random sound from the class to play but the next time it will not play the same sound again. This functionality works best if you have lots of sounds in the particular group (e.g. around 10 or more) and reduces repetition of sound effects plus provides a better immersion especially for games that demand realism.

  • Easing: Fading in/out the volume or pitch of the sound can have easing applied to it, so it fades much smoother or with e.g. an "elastic" effect.

  • Fully Documented

End User Licence Agreement (EULA).

Changes in 1.0.0

Faster performance when using unique sounds using DS lists internally, no longer recursion in script

Fix for correct audio unloading

Version 1.0.0. Published September 15, 2016

Created with GameMaker: Studio v1.4.1760

Age Rating: 4+

Average Rating

Your review

You can only review assets you've bought.


Grzegorz K 31 January 2018

exAudio causes crash on MacOS - GM2


this product is cool, but I've found that it causes crash on macOS. This is caused by ex_audio_load function if you comment function out everything works and the game stats up. Because show_debug_message still doesn't work on macOS it's difficult to debug it, I will try my best anyway.

Apple error:

Exception Codes: EXC_I386_DIV (divide by zero)

Termination Signal: Floating point exception: 8
Termination Reason: Namespace SIGNAL, Code 0x8
Terminating Process: exc handler [0]


Anonymous 04 November 2017

Very good, just one little thing...

If you just create an class and tries to set it's volume when there's no sound associated to it:

ex_audio_class_set_volume("test", 1, 0);

It show this warning:

Grid 1, index out of bounds writing [0,0] - size is [5,0]

But besides this, no problem using it at all.

Edit: To not have the warning not appear, I did this:

var soundCount = ds_grid_height( ex_audio_class_get_index(className));
//ex_audio_class_count_sounds give the same warning, so can't use it either

if(soundCount > 0)
ex_audio_class_set_volume(className, volume, 0);


alexandervrs (Publisher) 09 December 2017

Ah yes, a class needs to have content first before you can manipulate it. It's not a bad feature to add so you can initialize class volume/pitch etc easier.
I will fix the sounds counting bug though in the next version, I had to check first the length of the DS grid, then check its contents. Thanks for the report


Anonymous 10 June 2017


Ross M 03 October 2016


Mark T 14 September 2016

This review was left for a previous version of this asset.


Wizio G 24 January 2016

Very good and useful!

Very well designed extension and it's like a dream. Controlling sound is a really headache in gamemaker. But with this extension GM sound system is now very professional :)
I've a question about memory usage. After loading a sound; memory usage increases approx. 5 mb and after unloading same sound; memory decreases approx 2 mb. Is there anyway to clear all memory for this sound?
I've have some objects in different positions. I want to control their volumes by distance from player..
I use this code for create event of these objects;
ex_audio_load(string(id), snd_01);
and in destroy eventof this object

Did I do something wrong?

This review was left for a previous version of this asset.


alexandervrs (Publisher) 15 September 2016

ex_audio_unload() should clear the sound from memory. However, if your sound is part of an Audio Group, it will not be unloaded unless all other sounds are unloaded as well.
I also noticed that I wasn't deleting items from the grid correctly in some other code of mine, so I updated this as well with a better method, unloading should not have any problems now.


davide m 09 November 2015


This asset is fantastic, i don't know how to thank the publisher for sharing it for free. It unlocks so many doors, if you like to play with sounds and music :)

This review was left for a previous version of this asset.


Waldemar R 31 August 2015

quality software, great idea

Your code is very well thought over and designed. Apart from the core functionalities, one can learn a lot from You.

I think you have provided the GM community with a very useful educational resource.

Thank You.

Kind regards.

This review was left for a previous version of this asset.


Brad L 20 November 2014

Couldn't be better!

I was able to make a ryhthm game similar to guitar hero and tap tap revenge using this extension! Was exactly what I needed and easy to learn how to use. If you are wanting to make any kind of ryhthm game, the functions this extension provides are a must.

This review was left for a previous version of this asset.


ENDESGA S 03 November 2014


This is a fantastic system you have here! I love it's high functionality!

This review was left for a previous version of this asset.


Fredy C 18 August 2014

Amazing, just what I wanted.

works like a charm with HTML5, includes easy to understand example.

Thank you.

This review was left for a previous version of this asset.

Package contents

Total size 3.35 MB 49.2 KB exAudio
exAudio.gml 73 KB Assets
exAudio Documentation
Manual.html 10.2 KB Manual_files
ex_audio_class_add_sound.html 1.17 KB ex_audio_class_clear.html 1.17 KB ex_audio_class_count.html 922 Bytes ex_audio_class_count_sounds.html 1.24 KB ex_audio_class_create.html 1.28 KB ex_audio_class_destroy.html 1.09 KB ex_audio_class_exists.html 1.32 KB ex_audio_class_get_index.html 1.35 KB ex_audio_class_get_name.html 1.48 KB ex_audio_class_pause.html 1.09 KB ex_audio_class_play.html 1.44 KB ex_audio_class_play_unique.html 1.87 KB ex_audio_class_remove_sound.html 1.19 KB ex_audio_class_resume.html 1.16 KB ex_audio_class_set_pitch.html 1.7 KB ex_audio_class_set_pitch_ext.html 1.72 KB ex_audio_class_set_position.html 1.41 KB ex_audio_class_set_volume.html 1.67 KB ex_audio_class_set_volume_ext.html 1.69 KB ex_audio_class_stop.html 1.12 KB ex_audio_copy.html 1.56 KB ex_audio_count.html 949 Bytes ex_audio_exists.html 1.17 KB ex_audio_get_asset_index.html 1.16 KB ex_audio_get_asset_name.html 1.19 KB ex_audio_get_channel.html 1.29 KB ex_audio_get_channel_number.html 971 Bytes ex_audio_get_debug_mode.html 1.03 KB ex_audio_get_emitter.html 1.29 KB ex_audio_get_falloff_factor.html 1.14 KB ex_audio_get_falloff_max.html 1.19 KB ex_audio_get_falloff_model.html 960 Bytes ex_audio_get_falloff_ref.html 1.15 KB ex_audio_get_group.html 1.15 KB ex_audio_get_index.html 1.31 KB ex_audio_get_name.html 1.43 KB ex_audio_get_pitch.html 1.11 KB ex_audio_get_position_x.html 1.12 KB ex_audio_get_position_y.html 1.12 KB ex_audio_get_position_z.html 1.15 KB ex_audio_get_priority.html 1.15 KB ex_audio_get_track_duration.html 1.19 KB ex_audio_get_track_position.html 1.29 KB ex_audio_get_velocity_x.html 1.12 KB ex_audio_get_velocity_y.html 1.15 KB ex_audio_get_velocity_z.html 1.12 KB ex_audio_get_volume.html 1.12 KB ex_audio_group_get_load_progress.html 1.36 KB ex_audio_group_is_loaded.html 1.24 KB ex_audio_group_unload.html 1.16 KB ex_audio_has_class.html 1.31 KB ex_audio_installation.html 726 Bytes ex_audio_is_loaded.html 1.26 KB ex_audio_is_looping.html 1.17 KB ex_audio_is_paused.html 1.16 KB ex_audio_is_playing.html 1.2 KB ex_audio_is_suspended.html 1.2 KB ex_audio_license.html 2.16 KB ex_audio_listener_get_orientation_lookat_x.html 1.03 KB ex_audio_listener_get_orientation_lookat_y.html 1.01 KB ex_audio_listener_get_orientation_lookat_z.html 1.01 KB ex_audio_listener_get_orientation_up_x.html 1 KB ex_audio_listener_get_orientation_up_y.html 1003 Bytes ex_audio_listener_get_orientation_up_z.html 1003 Bytes ex_audio_listener_get_position_x.html 1003 Bytes ex_audio_listener_get_position_y.html 981 Bytes ex_audio_listener_get_position_z.html 1003 Bytes ex_audio_listener_get_velocity_x.html 981 Bytes ex_audio_listener_get_velocity_y.html 981 Bytes ex_audio_listener_get_velocity_z.html 981 Bytes ex_audio_listener_reset_position.html 912 Bytes ex_audio_listener_set_orientation.html 2.11 KB ex_audio_listener_set_position.html 1.22 KB ex_audio_listener_set_velocity.html 2.13 KB ex_audio_load.html 3.47 KB ex_audio_pause.html 1.02 KB ex_audio_pause_all.html 813 Bytes ex_audio_play.html 1.45 KB ex_audio_rename.html 1.25 KB ex_audio_restore_all.html 960 Bytes ex_audio_resume.html 1.06 KB ex_audio_resume_all.html 819 Bytes ex_audio_set_channel_number.html 1.66 KB ex_audio_set_debug_mode.html 1.38 KB ex_audio_set_falloff.html 2.25 KB ex_audio_set_falloff_model.html 1.88 KB ex_audio_set_pitch.html 1.78 KB ex_audio_set_pitch_all.html 1.7 KB ex_audio_set_position.html 1.33 KB ex_audio_set_track_position.html 1.25 KB ex_audio_set_velocity.html 2.35 KB ex_audio_set_volume.html 1.81 KB ex_audio_set_volume_all.html 1.63 KB ex_audio_stop.html 1.04 KB ex_audio_stop_all.html 786 Bytes ex_audio_suspend_all.html 992 Bytes ex_audio_unload.html 1.45 KB ex_audio_welcome.html 2.51 KB
fonts images javascripts stylesheets
Fonts Objects Rooms Scripts Sounds Time Lines

What is the issue?

Back to Top