• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

How to make lots of sounds less noisy?

TheBroman90

Member
In my game I'm adding a few sound effects to my enemies using audio emitters. When it's just the player and one enemy in combat the sound is really good. But as soon as I add more enemies of different types with various sound effects, combined with some ambience it all just become a noisy mess...

I like how sounds make my game feel so alive, but I have no idea how to make good sound balance. If you have played Overwatch you know what I mean. Do you have any suggestions on how to make it sound less noisy when playing alot of sounds at the same time?
 
Iirc, Destiny assigned sound effects to a hierarchy of importance, and then cut out/lowered the volume of the less important sounds when too many were playing at once. I'd look up some of their documentary things on youtube, and see if you can find a more exact answer from them. For me, I haven't done much besides trying to stop two instances of the same sound playing at once, since GM's sound engine thinks that 5+5 on the volume scale should equal 10, when realistically it should equal a 6 or 7. I'm surprised I haven't already blown out my speakers thanks to GM's awesome sound design, lol.
 
B

Braffolk

Guest
Don't play a lot of the same sound. If you have 50 monsters with the same sound only a few of them should really be playing it. Plus try to play around with sound volumes to make the more important sounds louder and less important sounds not so loud.

If you are using audio_play_sound then stop, you should be using audio_play_sound_at.

Maybe the problem is in the sounds themselves though? maybe they are all really similar or actually noisy.
 
S

seanm

Guest
What you're talking about is something called mixing/mastering

Basically, its difficult to do inside of music making software; and downright impossible in game engines.

Ideally you would:
  • Learn some music/audio theory
  • Get some external dll's that have more advanced audio handling capability.

But apart from that I would just recommend something like this.

If you are going to play a sound, stop all instances of that sound that are currently playing. This will clean up your audio and prevent the sounds from stacking.
Code:
audio_stop_sound(sndShoot)
audio_play_sound(sndShoot,0,0)

Also, look up the gm dev log on 3d Audio. Just the panning and dynamic volume will vastly improve the sound of your game
 

TheBroman90

Member
Thanks for your replies! I am already using audio amitter which plays the sound at the enemies position. And yes, that makes it better.
I will try to make only a few of the closest enemies play sounds and also stop sounds before playing a new one of the same type.
Some of the enemies have looping sounds. I made them have random pitch, but it's still a bit noisy.
How do I set sounds to be important or less important? I know I can set a priority, but I guess that's not the same thing.
Also, I know nothing about dll's. Where can I find audio dll's?
 

NightFrost

Member
An aside; if you're hearing some noise artifacts when you audio_stop_sound() you can fix that by first setting its audio_sound_gain() to zero and only then stopping the sound.
 
X

Xskode

Guest
like seanm mention mixing/master plays a big part. lucky I have ( and still is) dealing with both studio work and audio editing/engineering.

you can use alot of softwares- but i recommend using a software that offers at-least a 7-band equalizer.

and you would want to remove unwanted frequencies and clear/remove clashing frequencies. just that alone will clear up the frequency's ranges
allow sound to be heard more clear- which in turn, gives more room for sound to breath and people's ears to capture.

another thing you can do is play around with stereo separation and stereo panning and stereo depth. all of that will create room for sound, clarity and frequencies.
which will all allow more sounds without the *noisy mess*.

example:
if you have alot of explosions and background music that has heavy kick drums
you would first findout if you want explosion rumble or resonant kick drum ( you can't have both and achieve best clearity, because both are using [around] the same frequencies)

if you want rumble on explosion then take the explosion sound into a software ( any with at-least a 7-band equalizer) and cut out the low-end which is around 53Hz to 70Hz (do not cut the resonant which is around 14Hz - 48Hz) cut the low-end by -3 or -4
then add some clearity/presence by add between the 1k and 2.4k (around 1,577K)
and then take the background music into the software and cut out the resonant from 37Hz (or 44Hz) to 0Hz and cut all of that frequency out.

then you can play them both together and it WILL NOT be a noisy mess nor will the sounds clash.

as you can see that is not even the basics, nevertheless, i would recommend looking into some basics equalizing and sound editing books (or tutorial videos)
this type of stuff is what I doing daily and for over 12years. it's not as hard as some might think- but it does require listening and paying attention.


if you don't want to go that route you can try this ( it will not be nowhere near as effective, but it will help )

figure out what sounds are most important then set those volume at 0.7 or 0.64 ( never set a 100% you then will not have room for the sound to breath )
then figure out the second most important sounds set that volume around 0.4 thru 0.53
then all less important sounds set volume around 0.2 - 0.33

not as effective- but it will help.
 
Last edited:

TheBroman90

Member
Thanks for your reply @Xskode !
I will look into equalizing. For now, I made a script where the 2 closest enemies of a type shares volume, the rest is silent.
I'm also stopping sound effects before playing a new one. This made everything a bit less noisy!
 
B

Brandon Gale

Guest
If you have played Overwatch you know what I mean. Do you have any suggestions on how to make it sound less noisy when playing alot of sounds at the same time?
I solved a similar problem (however, I'm not sure if you are primarily concerned with overall 'volume' or simply the number of noises), where I was having too many collision sounds occurring all at once. I wanted a large number of sounds (for the ambiance affect), but I wanted it limited before it overwhelmed the other sounds from playing. For some reason, priority wasn't working like I hoped and all my other sounds were getting cutoff or diminished in volume.

Finally, I just decided to set a variable to increase with each added collision sound. I set an alarm to have this variable decrease after 120 steps plus a variable number for each sound. I set an 'if' statement in front of the 'play collision' code so that it would only play a new sound if the variable was low enough. This seemed to keep things under control, albeit, letting a good number of sounds still occur.

Probably a ridiculous and overly convoluted way to handle things, but I couldn't find anyone giving me an answer I wanted in my research (I am new to GM).

Here is the code:

Code:
// If Variable
if(soundcount <= 2)
{
    // Assign Variable
    soundcount += 1;

    // Randomize Pitch for sound variation
    audio_sound_pitch(snd_crackle, random_range(0.7,1.3));
  
    // Play Audio
    audio_play_sound(snd_crackle, 1, 0);

    // Set Alarm Countdown
    alarm_set(0, 120 + global.soundcount);
}
Again, in the alarm event, I decreased the variable.

(Edit: I realize this is an old post, but I frequently end up using old posts for information on how to solve current problems. So, I figured my 2 cents could end up helping).
 

Phil Strahl

Member
Have you looked into creating a dedicated object that plays audio? I would make an object such as obj_audio_player that has a ds_queue every instance writes to when it wants to play a sound, instead of playing it itself.
In the EndStep event, obj_audio_player would dequeue all items and disregard any multiple entries. So if 50 entities write "snd_attack" to the queue, it would only run once per frame. You could also write some logic that only allows the same sound to be played when it's not already playing, for example.
 
Last edited:
I

icuurd12b42

Guest
^ Good Idea

Generally you don't really want to play more than 20 sounds. so you may want to stop and dequeue to oldest soun... with all the noise no one would notice...

You should also design your sound system to allow different sound types. because music should never stop and ambient sounds, like rain and waterfall and birds chirping should not be mixed with special effects sounds like explosions... even effects should be categorized to have their own limits, like no more than 10 bullets, no more than 5 explosions and so on..
 
Top