Firehammer Audio
A downloadable system
Firehammer Audio is here!
Firehammer Audio is a new system and way to handle your audio needs in Gamemaker. It has plenty of functions to handle things you would normally have to write extra code for. The three primary focus points are providing functions for playing music, sound effects, and 3d sound. The music system handles things like tracking the current music playing, fading between tracks, and more. The sound system has things for creating automatic variation when playing sound effects, so you no longer have to avoid things like footstep sounds since now they won’t be so repetitive. Finally, the 3d sound system combines the 3d audio system with the sound effects goodies, along with automatic tracking of instances for the listener and 3d sound emitter positions. Finally, there is a whole system for volume control, and a sound grouping category system making things easier to handle.
Note that this system is all done with native GML. There are no external code sources, DLLs, or anything of that sort. This means that the system will work anywhere that gamemaker will work, excepting certain things that simply don’t work on certain platforms(HTML5 is notorious for this). The following list contains a breakdown of the included features.
- Music system
- Plays and tracks music
- Crossfades between music tracks
- Swapfades between like(but different music tracks)
- Can automatically remember what point of the track the music is on when you pause or switch tracks, and will automatically start the music there(unless you tell it not to).
- Can also remember which music was the last one you were playing and can begin playing that one again without you specifying it
- Supports loop points, where the music will loop between the set points automatically
- Automatic music changes when you change rooms Can also remember which music was the last one you were playing and can begin playing that one again without you specifying it
- Sound system
- Automation of volume and pitch variance when you play a sound
- Automation of choosing different actual sound effects for a single sound(in combination with pitch and volume variance), including 3 different behaviors for choosing which sound to play
- Easy usage of the mentioned sound systems for 3d sounds
- Automatic instance tracking for both the listener and 3d sound emitters(both position and velocity)
- Can make sounds fade out over time instead of stopping mid-loop, useful to avoid clipping noise that happen with instant stops not at full-zero of the sound wave
- Volume system
- Expansive volume control, starting with global Master Volume, down to Music Volume, and then Sound Category Volume
- Automatically adjusts music and sounds that are playing(as long as they are looping) when you adjust volumes.
- Automatic saving of all volume settings into a file, which is then loaded the next time the game is ran, if you choose to leave the setting on.
- Category system
- Which groups like sounds that can be controlled as a group, including setting volume and pausing all looping sounds within a category(and resuming them).
- Basic settings are accessible via single script with #macros.
- Extensive Debug Mode(enabled by default) which gives nice messages if you make a mistake calling the system's functions so you know exactly what happened. This can be turned off and the GML compiler will compile out all of those safety checks for performance.
- Easy identification of which arguments to a function are optional, using an underscore before the names.
- ZERO Feather errors as shipped. I applied workarounds/tricks to reference optional arguments to functions so that you never get unused argument errors, and I make sure to reference all functions and macros that aren't already referenced from within the system so you don't get syntax errors for unused functions/macros, even if you delete the examples.
- Uses a double underscore prefix to all internal functions and objects so that only what you need to use shows up in the code editor's auto-complete window.
- Uses "fhAudio" as a prefix for all functions that you will ever need to call so they can easily be found and filtered in the auto-complete window
- Support for Gamemaker's Audio Effects
- Three examples that show the basics of what the system handles for you
Support is provided via the Yoyogames forums(user "kburkhart84"), via e-mail "admin@firehammergames.com," or on the Firehammer Games Discord server https://discord.gg/6VrZkP2
Status | Released |
Category | Other |
Rating | Rated 5.0 out of 5 stars (2 total ratings) |
Author | Firehammer Games |
Tags | Audio, GameMaker, sourcecode |
Download
Click download now to get access to the following files:
Comments
Log in with itch.io to leave a comment.
I'm looking for some help setting up the audio emitters. Everything else is fine, and I've set up my emitters like I usually would. But I can't get it to work. I'm not sure I understand the documentation in regards to listeners and emitters here, I think the wording is throwing me off. Is there somewhere I can contact you, because otherwise this script removes all audio headaches.
Thank you.
The easiest way is via Discord but if you don't have Discord you can use the topic on the Gamemaker Forum as well.
What's changed in this update?
*Changed name of "sound" to "fhfx"
*Made it have zero Feather issues as shipped
*Made the examples all into a single room(better for the room order listing)
*Switched to GM's loop point system so you no longer need the hacky workaround
*Made emitters be able to destroy themselves if the instance they follow gets destroyed
The docs have more details.
I've see the GM new loop point system but never used because i'm using FH, what's your toughs about it? Is it finally doing loops the right way? I will keep the old FH version bc the project is being developed on LTS but i'm curious about it.
So Firehammer Audio originally did loop points with a hacky workaround(involving adding a buffer of the beginning of the loop to the end of the sound). This was the only good way I could get loops working.
Now, since GM actually can do loop points the right way, without the hack involved, I converted FHAudio to using it instead. It's all internal as far as the changes go(except it uses seconds instead of milliseconds since that's used by GM's functions).
As far as changes go, you may be able to use the system in the later LTS versions if it has the loop point function(and I think it does). You would have to re-author your music without the hack(optimally but not necessarily). And your sound definition calls would need to use the new fhfx naming ones, though if you put them all into a single place it wouldn't be too hard to fix. And the functions for actually playing sounds were left alone(only renaming arguments which doesn't affect the code calling them).
Feel free to hit me up on the Discord for help or more questions if upgrading interests you.