name = "music" description = "Inter-track loudness leveling for music players. Even volume, dynamics mostly preserved." # Slow AGC to a music-friendly target so tracks and albums sit at a # consistent loudness without per-track volume fiddling. Long envelopes # keep it musical — it leans on program loudness, not transients. [agc] enabled = true target_lufs = -16.0 attack_ms = 3000.0 release_ms = 1500.0 silence_threshold_lufs = -70.0 max_boost_db = 12.0 max_cut_db = 12.0 # Very light, soft-knee RMS leveling. Ratio is barely above 1:1 — this # is glue, not compression. Most material passes near-untouched. [compressor] enabled = true detector = "rms" threshold_db = -22.0 ratio = 1.5 knee_db = 10.0 attack_ms = 20.0 release_ms = 300.0 makeup_db = "auto" rms_window_ms = 50.0 [limiter] ceiling_dbtp = -0.3 lookahead_ms = 2.0 release_ms = 100.0 hold_ms = 5.0 oversample = 4 link = "stereo" # Wide PSR cap preserves musical dynamics; the soft tier only catches # the rare track that's wildly hotter than its neighbours. [limiter.soft] max_psr_db = 16.0 static_ceiling_dbtp = -5.0 attack_ms = 6.0 release_ms = 250.0 [meters] publish_hz = 20.0 # IMPORTANT: unlike default/night, this profile routes music players # THROUGH the processor — otherwise it would have nothing to act on. [[rules]] match = { process_binary = [ "spotify", "mpv", "vlc", "strawberry", "rhythmbox", "clementine", "audacious", "mpd", ] } route = "processed" # DAWs are never leveled — they're trusted to set their own gain. [[rules]] match = { process_binary = ["ardour", "reaper", "qpwgraph", "carla", "bitwig-studio"] } route = "bypass" [[rules]] match = { media_role = ["Music"] } route = "processed" [default_route] route = "processed"