name = "gaming" description = "Latency-first: games bypass the bus, voice chat is processed, notifications tamed per-app." # DSP settings here govern the COMMS path (voice chat), which is the # only thing routed through the bus. Speech-like leveling so teammates # sit at a consistent, intelligible level. [agc] enabled = true target_lufs = -16.0 attack_ms = 600.0 release_ms = 200.0 silence_threshold_lufs = -65.0 max_boost_db = 20.0 max_cut_db = 6.0 [compressor] enabled = true detector = "peak" threshold_db = -22.0 ratio = 3.0 knee_db = 4.0 attack_ms = 3.0 release_ms = 50.0 makeup_db = "auto" [limiter] ceiling_dbtp = -0.3 lookahead_ms = 2.0 release_ms = 50.0 hold_ms = 3.0 oversample = 4 link = "stereo" [limiter.soft] max_psr_db = 10.0 static_ceiling_dbtp = -8.0 attack_ms = 2.0 release_ms = 100.0 [meters] publish_hz = 20.0 # Voice chat goes THROUGH the processor. [[rules]] match = { process_binary = ["Discord", "discord", "element-desktop", "Slack", "zoom", "WEBRTC VoiceEngine", "mumble", "TeamSpeak"] } route = "processed" # Everything unmatched — crucially, the game itself — routes straight # to the real sink for zero added latency. [default_route] route = "bypass" # ---------------------------------------------------------------------- # Layer A does the work the bus can't: it tames Discord notification # blasts and evens out chat volume via channelVolumes, with ZERO # signal-path latency — so it can ride on top of the bypass-routed # comms/game audio without touching the latency-critical path. # ---------------------------------------------------------------------- [per_app] enabled = true default_enabled = false [[per_app.rules]] match = { process_binary = ["Discord", "discord", "element-desktop", "Slack", "zoom", "mumble", "TeamSpeak"] } enabled = true peak_threshold_db = -6.0 rms_target_db = -18.0 max_cut_db = 12.0 peak_attack_ms = 5.0 peak_release_ms = 400.0 # Never level the game or music — they own their mix. [[per_app.rules]] match = { process_binary = ["spotify", "mpv", "vlc"] } enabled = false