| 1 | name = "gaming" |
| 2 | description = "Latency-first: games bypass the bus, voice chat is processed, notifications tamed per-app." |
| 3 | |
| 4 | # dsp here governs the comms path (voice chat) — the only thing on the bus. |
| 5 | # speech-like leveling |
| 6 | [agc] |
| 7 | enabled = true |
| 8 | target_lufs = -16.0 |
| 9 | attack_ms = 600.0 |
| 10 | release_ms = 200.0 |
| 11 | silence_threshold_lufs = -65.0 |
| 12 | max_boost_db = 20.0 |
| 13 | max_cut_db = 6.0 |
| 14 | |
| 15 | [compressor] |
| 16 | enabled = true |
| 17 | detector = "peak" |
| 18 | threshold_db = -22.0 |
| 19 | ratio = 3.0 |
| 20 | knee_db = 4.0 |
| 21 | attack_ms = 3.0 |
| 22 | release_ms = 50.0 |
| 23 | makeup_db = "auto" |
| 24 | |
| 25 | [limiter] |
| 26 | ceiling_dbtp = -0.3 |
| 27 | lookahead_ms = 2.0 |
| 28 | release_ms = 50.0 |
| 29 | hold_ms = 3.0 |
| 30 | oversample = 4 |
| 31 | link = "stereo" |
| 32 | |
| 33 | [limiter.soft] |
| 34 | max_psr_db = 10.0 |
| 35 | static_ceiling_dbtp = -8.0 |
| 36 | attack_ms = 2.0 |
| 37 | release_ms = 100.0 |
| 38 | |
| 39 | [meters] |
| 40 | publish_hz = 20.0 |
| 41 | |
| 42 | # voice chat processed |
| 43 | [[rules]] |
| 44 | match = { process_binary = ["Discord", "discord", "element-desktop", "Slack", "zoom", "WEBRTC VoiceEngine", "mumble", "TeamSpeak"] } |
| 45 | route = "processed" |
| 46 | |
| 47 | # everything else (incl. the game) bypasses → zero added latency |
| 48 | [default_route] |
| 49 | route = "bypass" |
| 50 | |
| 51 | # layer a tames notification blasts + evens chat via channelVolumes, |
| 52 | # zero signal-path latency — rides on top of the bypass-routed audio |
| 53 | [per_app] |
| 54 | enabled = true |
| 55 | default_enabled = false |
| 56 | |
| 57 | [[per_app.rules]] |
| 58 | match = { process_binary = ["Discord", "discord", "element-desktop", "Slack", "zoom", "mumble", "TeamSpeak"] } |
| 59 | enabled = true |
| 60 | peak_threshold_db = -6.0 |
| 61 | rms_target_db = -18.0 |
| 62 | max_cut_db = 12.0 |
| 63 | peak_attack_ms = 5.0 |
| 64 | peak_release_ms = 400.0 |
| 65 | |
| 66 | # never level game or music — they own their mix |
| 67 | [[per_app.rules]] |
| 68 | match = { process_binary = ["spotify", "mpv", "vlc"] } |
| 69 | enabled = false |