This commit is contained in:
atagen 2026-05-19 16:33:09 +10:00
commit ca1910de60
39 changed files with 6328 additions and 0 deletions

24
profiles/bypass-all.toml Normal file
View file

@ -0,0 +1,24 @@
name = "bypass-all"
description = "Kill switch. Everything routes to the bypass sink; limiter stands by."
[agc]
enabled = false
[compressor]
enabled = false
[limiter]
# Still configured as a fail-safe in case a stream lands on the
# processed sink anyway.
ceiling_dbtp = -0.1
lookahead_ms = 2.0
release_ms = 80.0
hold_ms = 5.0
oversample = 4
link = "stereo"
[meters]
publish_hz = 10.0
[default_route]
route = "bypass"

64
profiles/default.toml Normal file
View file

@ -0,0 +1,64 @@
name = "default"
description = "Gentle transparent processing for everyday use."
[agc]
enabled = true
target_lufs = -18.0
attack_ms = 2000.0
release_ms = 800.0
silence_threshold_lufs = -70.0
max_boost_db = 12.0
max_cut_db = 12.0
[compressor]
enabled = true
detector = "peak"
threshold_db = -24.0
ratio = 2.5
knee_db = 6.0
attack_ms = 10.0
release_ms = 100.0
makeup_db = "auto"
[limiter]
ceiling_dbtp = -0.1
lookahead_ms = 2.0
release_ms = 80.0
hold_ms = 5.0
oversample = 4
link = "stereo"
# Soft-tier (musical, dynamic). Targets program_lufs + max_psr_db so
# transients don't shock the listener even though they're under the
# hard ceiling. Omit `[limiter.soft]` to get pure brickwall behavior.
[limiter.soft]
max_psr_db = 14.0
static_ceiling_dbtp = -6.0
attack_ms = 5.0
release_ms = 200.0
[meters]
publish_hz = 20.0
# Music players and DAWs are routed around the processor.
[[rules]]
match = { process_binary = ["spotify", "mpv", "vlc", "ardour", "reaper", "qpwgraph", "carla", "bitwig-studio"] }
route = "bypass"
# Browsers and voice chat are processed.
[[rules]]
match = { process_binary = [
"firefox",
"chromium",
"google-chrome",
"Discord",
"discord",
"element-desktop",
"Slack",
"zoom",
"WEBRTC VoiceEngine",
] }
route = "processed"
[default_route]
route = "processed"

47
profiles/night.toml Normal file
View file

@ -0,0 +1,47 @@
name = "night"
description = "Aggressive narrow-dynamic listening for late hours."
[agc]
enabled = true
target_lufs = -20.0
attack_ms = 1000.0
release_ms = 400.0
silence_threshold_lufs = -70.0
max_boost_db = 18.0
max_cut_db = 6.0
[compressor]
enabled = true
detector = "peak"
threshold_db = -28.0
ratio = 4.0
knee_db = 8.0
attack_ms = 5.0
release_ms = 60.0
makeup_db = "auto"
[limiter]
ceiling_dbtp = -1.0
lookahead_ms = 3.0
release_ms = 60.0
hold_ms = 5.0
oversample = 4
link = "stereo"
# Tight dynamic range: 8 dB max PSR keeps transients from disturbing
# others at low listening volume.
[limiter.soft]
max_psr_db = 8.0
static_ceiling_dbtp = -10.0
attack_ms = 3.0
release_ms = 150.0
[meters]
publish_hz = 20.0
[[rules]]
match = { process_binary = ["ardour", "reaper", "qpwgraph", "carla", "bitwig-studio"] }
route = "bypass"
[default_route]
route = "processed"

49
profiles/speech.toml Normal file
View file

@ -0,0 +1,49 @@
name = "speech"
description = "VoIP-focused: fast envelopes, controlled dynamic range."
[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"
# Speech-tuned: moderate PSR cap so plosives are controlled without
# losing diction sparkle.
[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
# Mark common VoIP apps explicitly so this profile makes sense even
# without a daemon-wide rule.
[[rules]]
match = { process_binary = ["Discord", "discord", "element-desktop", "Slack", "zoom", "WEBRTC VoiceEngine"] }
route = "processed"
[default_route]
route = "processed"

25
profiles/transparent.toml Normal file
View file

@ -0,0 +1,25 @@
name = "transparent"
description = "Limiter only. Compressor and AGC bypassed; the safety net."
[agc]
enabled = false
[compressor]
enabled = false
[limiter]
ceiling_dbtp = -0.1
lookahead_ms = 2.0
release_ms = 80.0
hold_ms = 5.0
oversample = 4
link = "stereo"
# Note: no [limiter.soft] section. Pure brickwall behavior: anything
# under -0.1 dBTP passes untouched. Use this profile when you want
# only the safety net and accept transients can hit the ceiling.
[meters]
publish_hz = 20.0
[default_route]
route = "processed"