profiles: ship an extended set of default profiles

This commit is contained in:
atagen 2026-05-24 19:20:29 +10:00
parent c8c221ba45
commit 28aa099e80
11 changed files with 564 additions and 1 deletions

75
profiles/gaming.toml Normal file
View file

@ -0,0 +1,75 @@
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