Advertisement
Game Audio

Making Your Platformer Jump Sound Sit in the Mix Without Fighting the Soundtrack

A jump sound that vanishes under the music is almost never too quiet. It is in the same frequency range as something louder. The fix is a hierarchy, a carved band, and a duck that lasts exactly as long as the jump.

A jump sound that disappears under the soundtrack is almost never too quiet. It is almost always in the same frequency range as something louder. The instinct to raise the fader makes the jump louder without making it clearer, and after a few minutes the louder version is just as buried at a higher volume. The problem is not level. It is spectral collision.

The fix has three parts, and they are applied in order. First, a hierarchy that decides which element is allowed to win at a given moment. Second, a carved band that gives the jump a place in the spectrum the music has left open. Third, a duck that moves the music aside for exactly as long as the jump is audible, and then lets it return. Each part solves a different failure, and skipping any one of them leaves the jump either buried, unnaturally loud, or pumping the music.

The Jump Is Not Competing With the Music: It Is Competing With the Music’s Frequency Range

Music is dense by design. A typical platformer track fills the low, mid, and high range across the whole timeline, and the low-mid region — roughly 150–500 Hz — is often where kick, bass, synth pads, and the body of the melody all overlap. A jump sound that places its identity in that region is not fighting the music’s level; it is fighting the music’s arrangement.

The documented principle is direct: “An effect that vanishes under a track is almost never too quiet. It is usually in the same frequency range as something louder” . The same source gives the three options that actually work: roll off the frequencies in the effect that the music already covers, choose or generate an effect that sits in a gap, or thin the music slightly in the range where the key effect lives.

For a jump, the third option is the one that is usually skipped. The music is treated as untouchable, and the jump is pushed up until it cuts through. That works for one jump and fails for the hundredth, because the jump is now loud enough to be tiring and the music is still in the same place. The better move is to accept a small, static dip in the music where the jump lives, so the jump can stay at a natural level.

Step One: Set the Hierarchy Before Touching a Fader

The hierarchy is not a mix preference. It is a statement about what the player needs to hear at the moment the jump fires. A documented hierarchy for game audio puts dialogue on top, sound effects under it, and music under both . Ambience sits at the bottom, felt more than heard.

The jump is a sound effect, which means it sits under dialogue and above music. That ordering is the permission structure for everything that follows: the jump is allowed to move the music, and the music is not allowed to bury the jump. If the project has no dialogue in the scene, the jump is effectively the top priority, and the music should be mixed as a bed rather than as a co-equal element.

The failure mode is a hierarchy where music and SFX are set at the same level because both “sound good” in isolation. That is not a hierarchy; it is a tie, and a tie is resolved by frequency masking rather than by design. The audio mix hierarchy guide covers the bus structure that makes the hierarchy survive into the game; the jump-specific point is that the jump belongs above the music on the bus tree, not beside it.

Step Two: Carve a Static Band, Then Check That It Is Inaudible

The static carve is a small EQ cut on the music bus, centred on the band the jump occupies. It is the cheapest fix and the one that most projects can apply without touching the jump asset at all. The cut does not need to be deep: a 2–4 dB reduction over a moderate Q — roughly half an octave to an octave — is often enough to lift the jump without making the music sound thin.

The carve has a failure mode, and it is the opposite of the one it solves. A carve that is too deep or too wide removes music energy even when the jump is not playing, and the music sounds hollow. The check is a comparison: play the music alone with the carve engaged, then bypass the carve, and listen for whether the difference is noticeable. If the carved version sounds like it has a hole, the carve is too deep. If the difference is inaudible, the carve is either not working or not needed.

The working state is in between: the music sounds slightly fuller with the carve bypassed, but not enough that a player would notice. The jump is audible when it fires, and the music does not feel damaged when it does not. The sound effects versus music guide covers the carve-versus-duck choice in more detail; the jump-specific point is that a jump fires often enough that a static carve is usually the right tool, because a dynamic duck on every jump would pump the music continuously.

Step Three: Duck the Music Only for the Length of the Jump

A duck is a temporary reduction in the music’s level, triggered by the jump and released when the jump ends. It is the dynamic version of the static carve, and it is the tool that lets the jump cut through without a permanent EQ change to the music.

The parameters that matter are attack, release, depth, and duration. A documented ducking implementation for game audio uses an attack of 0.1–0.3 s and a release of 0.3–0.8 s, with a reduction of roughly −12 dB and a priority order of dialogue > SFX > music > ambience . A separate source gives faster values for important SFX: attack 0.05 s, release 0.3 s . A sidechain ducking reference puts the general attack range at 1–10 ms for an instant dip and 50–200 ms for a softer fade, with release 50–200 ms for fast recovery and 500–1500 ms for a smoother return.

For a jump, the relevant numbers are the fast ones. A jump lasts roughly 100–150 ms, and the duck has to engage before the jump’s attack and release before the next jump. An attack of 5–20 ms and a release of 50–150 ms keeps the duck tied to the jump rather than to the music’s bar. A slower attack lets the jump’s onset through before the music moves, which defeats the purpose. A slower release leaves the music down after the jump has finished, which reads as pumping.

The depth is the parameter that is easiest to overdo. A 3–6 dB dip is enough to make the jump audible without the music sounding like it was muted. A −12 dB dip is appropriate for dialogue, which is longer and carries more information, but it is too much for a jump that fires every few seconds. The ducking and sidechain guide covers the full parameter set; the jump-specific point is that the duck should be shallow and fast, because the event is short and frequent.

What Changes in Unity, Unreal, and a Custom Engine

The three steps are engine-neutral, but the implementation differs. The table below gives the node or asset that corresponds to each step in the three environments most platformers use.

Step Unity Unreal Engine 5 Custom / Web Audio
Hierarchy AudioMixer groups: Master → Music, SFX, Dialogue, Ambience Sound Classes and Submixes Named buses with gain in dB
Static carve EQ effect on the Music group EQ effect on the music Submix BiquadFilter on the music bus
Duck Duck Volume effect, or a compressor with a sidechain Send from the jump bus Volume ducking via Sound Mix, or a sidechain compressor on the music Submix Gain automation triggered by the jump event
Parameter timing Attack/release on the Duck Volume or compressor Attack/release on the Submix compressor Exponential ramp on the music gain

In Unity, the documented setup is an Audio Mixer with child groups for Music, SFX, Dialogue, and Ambience, and a Duck Volume effect that lets one group compress another . Unreal’s audio engine implements volume ducking as a passive mix modifier, applied when a sound from a designated Sound Class plays, and it also supports parameter modulation that can target filter cutoff and pitch in addition to volume . A custom engine or a browser-based game uses gain automation on the music bus, triggered by the jump event, with an exponential ramp for the attack and release.

The implementation detail that is easy to miss is that the duck trigger should be the jump event, not the music’s playback state. A duck that is tied to a “music is playing” condition will stay engaged for as long as the music runs, which is the opposite of a short dip. The trigger belongs to the same event that fires the jump sound, and it should be cleared when the jump’s envelope closes.

The Check: Does the Jump Read When the Music Is at Its Densest?

The three steps are correct when the jump is audible in the busiest section of the game, not in the quietest. The test is a scene where the music is at full arrangement, the footsteps are running, and the jump fires at the player’s normal rate. If the jump is still audible without being louder than the music, the hierarchy, the carve, and the duck are working together. If it is not, one of the three is missing.

The specific failure to listen for is the jump that is audible once and then disappears on the next trigger. That is usually a duck that has not released before the next jump, so the music is already down and the second jump has no further dip to benefit from. The fix is a shorter release, not a deeper duck. The phone speaker guide covers the device-side version of the same problem: a duck that works on studio monitors can be inaudible on a laptop speaker if the jump’s identity band is below the speaker’s low-frequency limit.

A jump sound that sits in the mix is not a louder jump sound. It is a jump sound that has been given a hierarchy, a band, and a short window in which the music is allowed to move. The prototype versus polish guide covers the point where the mix is functional and the work shifts from “can the player hear it” to “does the mix feel right.”

Advertisement