# Audio Buses per-bus volume, mute/solo, and bus effects ```{raw} html ▶ Run in browser ``` **Tags:** `audio` `buses` `effects` `mixing` `ui` A synthesised arpeggio loop plays on the "Music" bus while periodic blips fire on "SFX". Sliders set each bus's volume_db live, M/S check boxes drive mute and solo (solo silences every bus off the soloed bus's routing path, so a group bus keeps whatever is routed into it audible), and two toggles put effects on the Music bus: a LowPassFilter whose cutoff sweeps continuously, and a ReverbEffect switched on and off whole. Only the five built-in buses (Master, Music, SFX, Voice, UI) are routable; a player's `bus` property rejects any other name. Bus effects are silently inert on the pure-Python fallback audio backend. ## What it demonstrates - Routing players to buses via the `bus` property (set before play()). - `AudioBusLayout.get_default()` and live `volume_db` / `mute` / `solo`. - `effective_volume`: the dB chain walked through `send_to` up to Master. - `send_to` as signal routing: a bus's output runs through its target's gain and effects, so an effect on Master processes every bus under it. - Bus effects: `add_effect` / `remove_effect`, sweeping a biquad's `cutoff_hz` (clean), toggling a ReverbEffect whole (its parameters are never swept: changing them rebuilds the native chain audibly). Controls: Sliders - per-bus volume_db M / S - mute / solo a bus (solo is ignored on Master) Toggles - low-pass cutoff sweep and reverb on the Music bus B - fire a blip on the SFX bus (or click the Blip button) ESC - Quit Run: uv run python examples/features/audio/buses.py Headless self-check: uv run python examples/features/audio/buses.py --test ## Source ```{literalinclude} ../../examples/features/audio/buses.py :language: python :linenos: ```