atagen

headroom

public
Star0
Watch0
249c28030dddc03bea091fbc55c98f3e7e84b999
1
ssh://brewery@pls.lobotomise.me:33/atagen/headroom.git

Blame: profiles/music.toml

9de515ea3b07atagen2026-05-27 15:49 UTC1
name = "music"
9de515ea3b07atagen2026-05-27 15:49 UTC2
description = "Inter-track loudness leveling for music players. Even volume, dynamics mostly preserved."
9de515ea3b07atagen2026-05-27 15:49 UTC3
9de515ea3b07atagen2026-05-27 15:49 UTC4
# slow agc to a music target; long envelopes, leans on program loudness not transients
9de515ea3b07atagen2026-05-27 15:49 UTC5
[agc]
9de515ea3b07atagen2026-05-27 15:49 UTC6
enabled = true
9de515ea3b07atagen2026-05-27 15:49 UTC7
target_lufs = -16.0
9de515ea3b07atagen2026-05-27 15:49 UTC8
attack_ms = 3000.0
9de515ea3b07atagen2026-05-27 15:49 UTC9
release_ms = 1500.0
9de515ea3b07atagen2026-05-27 15:49 UTC10
silence_threshold_lufs = -70.0
9de515ea3b07atagen2026-05-27 15:49 UTC11
max_boost_db = 12.0
9de515ea3b07atagen2026-05-27 15:49 UTC12
max_cut_db = 12.0
9de515ea3b07atagen2026-05-27 15:49 UTC13
9de515ea3b07atagen2026-05-27 15:49 UTC14
# very light soft-knee rms; glue not compression
9de515ea3b07atagen2026-05-27 15:49 UTC15
[compressor]
9de515ea3b07atagen2026-05-27 15:49 UTC16
enabled = true
9de515ea3b07atagen2026-05-27 15:49 UTC17
detector = "rms"
9de515ea3b07atagen2026-05-27 15:49 UTC18
threshold_db = -22.0
9de515ea3b07atagen2026-05-27 15:49 UTC19
ratio = 1.5
9de515ea3b07atagen2026-05-27 15:49 UTC20
knee_db = 10.0
9de515ea3b07atagen2026-05-27 15:49 UTC21
attack_ms = 20.0
9de515ea3b07atagen2026-05-27 15:49 UTC22
release_ms = 300.0
9de515ea3b07atagen2026-05-27 15:49 UTC23
makeup_db = "auto"
9de515ea3b07atagen2026-05-27 15:49 UTC24
rms_window_ms = 50.0
9de515ea3b07atagen2026-05-27 15:49 UTC25
9de515ea3b07atagen2026-05-27 15:49 UTC26
[limiter]
9de515ea3b07atagen2026-05-27 15:49 UTC27
ceiling_dbtp = -0.3
9de515ea3b07atagen2026-05-27 15:49 UTC28
lookahead_ms = 2.0
9de515ea3b07atagen2026-05-27 15:49 UTC29
release_ms = 100.0
9de515ea3b07atagen2026-05-27 15:49 UTC30
hold_ms = 5.0
9de515ea3b07atagen2026-05-27 15:49 UTC31
oversample = 4
9de515ea3b07atagen2026-05-27 15:49 UTC32
link = "stereo"
9de515ea3b07atagen2026-05-27 15:49 UTC33
9de515ea3b07atagen2026-05-27 15:49 UTC34
# wide psr cap preserves dynamics; soft tier only catches the rare hot track
9de515ea3b07atagen2026-05-27 15:49 UTC35
[limiter.soft]
9de515ea3b07atagen2026-05-27 15:49 UTC36
max_psr_db = 16.0
9de515ea3b07atagen2026-05-27 15:49 UTC37
static_ceiling_dbtp = -5.0
9de515ea3b07atagen2026-05-27 15:49 UTC38
attack_ms = 6.0
9de515ea3b07atagen2026-05-27 15:49 UTC39
release_ms = 250.0
9de515ea3b07atagen2026-05-27 15:49 UTC40
9de515ea3b07atagen2026-05-27 15:49 UTC41
[meters]
9de515ea3b07atagen2026-05-27 15:49 UTC42
publish_hz = 20.0
9de515ea3b07atagen2026-05-27 15:49 UTC43
9de515ea3b07atagen2026-05-27 15:49 UTC44
# music players processed here (default/night bypass them) — else nothing to act on
9de515ea3b07atagen2026-05-27 15:49 UTC45
[[rules]]
9de515ea3b07atagen2026-05-27 15:49 UTC46
match = { process_binary = [
9de515ea3b07atagen2026-05-27 15:49 UTC47
    "spotify",
9de515ea3b07atagen2026-05-27 15:49 UTC48
    "mpv",
9de515ea3b07atagen2026-05-27 15:49 UTC49
    "vlc",
9de515ea3b07atagen2026-05-27 15:49 UTC50
    "strawberry",
9de515ea3b07atagen2026-05-27 15:49 UTC51
    "rhythmbox",
9de515ea3b07atagen2026-05-27 15:49 UTC52
    "clementine",
9de515ea3b07atagen2026-05-27 15:49 UTC53
    "audacious",
9de515ea3b07atagen2026-05-27 15:49 UTC54
    "mpd",
9de515ea3b07atagen2026-05-27 15:49 UTC55
] }
9de515ea3b07atagen2026-05-27 15:49 UTC56
route = "processed"
9de515ea3b07atagen2026-05-27 15:49 UTC57
9de515ea3b07atagen2026-05-27 15:49 UTC58
# daws bypass — trusted to set their own gain
9de515ea3b07atagen2026-05-27 15:49 UTC59
[[rules]]
9de515ea3b07atagen2026-05-27 15:49 UTC60
match = { process_binary = ["ardour", "reaper", "qpwgraph", "carla", "bitwig-studio"] }
9de515ea3b07atagen2026-05-27 15:49 UTC61
route = "bypass"
9de515ea3b07atagen2026-05-27 15:49 UTC62
9de515ea3b07atagen2026-05-27 15:49 UTC63
[[rules]]
9de515ea3b07atagen2026-05-27 15:49 UTC64
match = { media_role = ["Music"] }
9de515ea3b07atagen2026-05-27 15:49 UTC65
route = "processed"
9de515ea3b07atagen2026-05-27 15:49 UTC66
9de515ea3b07atagen2026-05-27 15:49 UTC67
[default_route]
9de515ea3b07atagen2026-05-27 15:49 UTC68
route = "processed"