atagen

headroom

public
Star0
Watch0
c19702ae09bef745bdf668114c7fb23c209733d5
1
ssh://brewery@pls.lobotomise.me:33/atagen/headroom.git
profiles/music.tomlToml68 lines1.4 KB
1
name = "music"
2
description = "Inter-track loudness leveling for music players. Even volume, dynamics mostly preserved."
3
4
# slow agc to a music target; long envelopes, leans on program loudness not transients
5
[agc]
6
enabled = true
7
target_lufs = -16.0
8
attack_ms = 3000.0
9
release_ms = 1500.0
10
silence_threshold_lufs = -70.0
11
max_boost_db = 12.0
12
max_cut_db = 12.0
13
14
# very light soft-knee rms; glue not compression
15
[compressor]
16
enabled = true
17
detector = "rms"
18
threshold_db = -22.0
19
ratio = 1.5
20
knee_db = 10.0
21
attack_ms = 20.0
22
release_ms = 300.0
23
makeup_db = "auto"
24
rms_window_ms = 50.0
25
26
[limiter]
27
ceiling_dbtp = -0.3
28
lookahead_ms = 2.0
29
release_ms = 100.0
30
hold_ms = 5.0
31
oversample = 4
32
link = "stereo"
33
34
# wide psr cap preserves dynamics; soft tier only catches the rare hot track
35
[limiter.soft]
36
max_psr_db = 16.0
37
static_ceiling_dbtp = -5.0
38
attack_ms = 6.0
39
release_ms = 250.0
40
41
[meters]
42
publish_hz = 20.0
43
44
# music players processed here (default/night bypass them) — else nothing to act on
45
[[rules]]
46
match = { process_binary = [
47
    "spotify",
48
    "mpv",
49
    "vlc",
50
    "strawberry",
51
    "rhythmbox",
52
    "clementine",
53
    "audacious",
54
    "mpd",
55
] }
56
route = "processed"
57
58
# daws bypass — trusted to set their own gain
59
[[rules]]
60
match = { process_binary = ["ardour", "reaper", "qpwgraph", "carla", "bitwig-studio"] }
61
route = "bypass"
62
63
[[rules]]
64
match = { media_role = ["Music"] }
65
route = "processed"
66
67
[default_route]
68
route = "processed"