Quick answer: Check the effect’s enable toggle (red when disabled), the AudioStreamPlayer’s bus property matches the effect-laden bus exactly, and no bus in the chain is muted/soloed. Effects apply in-order — if a silencing effect is first, later effects have nothing to process.
Here is how to fix Godot audio bus effect not applying. You add a reverb to the “Music” bus. You play music. No reverb. You increase the wet mix — still nothing. You expected lush halls and got dry studio. Audio routing has a few layers where signal can get lost.
The Symptom
AudioEffect (reverb, EQ, compressor, etc.) on a bus has no audible impact. The effect’s parameters are set, the sound plays, but the effect does not color it. Bypassing the effect produces identical output.
What Causes This
Effect disabled. Next to each effect in the Audio panel is a toggle (red when off). If clicked accidentally, the effect is in the bus but not active.
Player not routed to bus. AudioStreamPlayer.bus must match the bus name. Default is “Master” — any effects you set up on “Music” are skipped unless the player sets bus = “Music”.
Bus muted or bypassed. Each bus has Mute and Bypass buttons. Bypass routes audio past the effects; Mute silences entirely. Easy to click when testing.
Solo on another bus. Clicking Solo on one bus silences all others. Your music bus might be perfectly configured but inaudible because Solo is on SFX.
Master bus bypassed. Master can also have Bypass clicked, skipping all Master-level effects. Everything routes through Master eventually, so Master bypass affects the whole game.
Effect order wrong. Effects process top-to-bottom. If a low-pass filter at the top cuts out highs before the reverb downstream, the reverb has low-frequency input to process. Rearrange order by dragging effects in the panel.
The Fix
Step 1: Verify effect is enabled. Open the Audio panel (bottom-left tab). Click the bus with the effect. Each effect row has a small toggle on the left. Make sure it is not red (disabled state). Click to re-enable if needed.
Step 2: Route player to bus.
extends AudioStreamPlayer
func _ready():
bus = "Music"
# Verify at runtime:
print("My bus: ", bus, ", exists: ",
AudioServer.get_bus_index(bus) >= 0)
If the index lookup returns -1, the bus name is wrong. Check for typos, case sensitivity, and trailing whitespace.
Step 3: Clear Solo / Mute / Bypass buttons. In the Audio panel, click through each bus. Any S (solo), M (mute), or B (bypass) button that is highlighted is affecting your signal. Click to toggle off.
Pay attention to the Master bus specifically — its bypass affects everything.
Step 4: Verify effect order. Effects process top-first. For reverb, you typically want:
- EQ (tonal shaping)
- Compressor (dynamics)
- Reverb (ambient tail)
- Limiter (output safety)
Drag effects to rearrange. A reverb positioned before an EQ/low-pass might produce reverb content that gets low-passed away.
Code-Controlled Effects
For dynamic effect changes (reverb intensity based on room size):
func set_reverb_amount(wet: float):
var bus_idx = AudioServer.get_bus_index("Music")
var effect = AudioServer.get_bus_effect(bus_idx, 0) as AudioEffectReverb
if effect:
effect.wet = clamp(wet, 0.0, 1.0)
Adjust effect parameters on the fly. Same pattern as SpatialEffect or any other AudioEffect subclass.
“Audio buses are like a mixer board. Every button does something. Check them all before blaming the code.”
Related Issues
For pitch/speed coupling, see AudioStreamPlayer Pitch Scale Affects Speed. For general audio-mixer issues, Unity Audio Mixer Snapshot covers analogous setup.
Effect enabled, bus matches, no mute/solo/bypass. Three-step checklist every time.