LIBPIPEWIRE-MODULE-PARAMETRIC-EQUALIZER(7)
β¨ NAME β¨
libpipewire-module-parametric-equalizer β Parametric-Equalizer π§π
(this is page libpipewire-module-parametric-equalizer(7) from the Miscellaneous Information Manual, bestie, and it's giving very niche-but-important energy π
)
πΈ DESCRIPTION πΈ
okay so. the parametric-equalizer module loads parametric equalizer configuration that was generated from the AutoEQ project or Squiglink. that's the whole vibe. π¦
both of those projects let you equalize headphones or an in-ear monitor to a target curve. and the way they do it is: they generate a file for parametric equalization for a given target β but plot twist π β that file is not a format that can be directly given to the filter chain module. the pipeline does not accept it raw. nope.
a super popular example of this whole situation being EQ'ing to the Harman target curve, or EQ'ing one headphone/IEM to another. iconic behavior honestly.
- For AutoEQ, see https://github.com/jaakkopasanen/AutoEq π«
- For SquigLink, see https://squig.link/ π«
so a parametric equalizer configuration generated from AutoEQ or Squiglink looks like this:
Preamp: -6.8 dB
Filter 1: ON PK Fc 21 Hz Gain 6.7 dB Q 1.100
Filter 2: ON PK Fc 85 Hz Gain 6.9 dB Q 3.000
Filter 3: ON PK Fc 110 Hz Gain -2.6 dB Q 2.700
Filter 4: ON PK Fc 210 Hz Gain 5.9 dB Q 2.100
Filter 5: ON PK Fc 710 Hz Gain -1.0 dB Q 0.600
Filter 6: ON PK Fc 1600 Hz Gain 2.3 dB Q 2.700
Fc, Gain and Q specify the frequency, gain and Q factor respectively. and the fourth column? it can be one of PK, LSC or HSC, which specify peaking, low shelf and high shelf filter respectively. more often than not though, only peaking filters are involved. no cap. π
and then β the main character moment β this module parses a configuration like the one above and loads the filter chain module with that configuration translated to filter chain arguments. so it's like... a translator bestie for your EQ. π«Άβ¨
π MODULE NAME π
libpipewire-module-parametric-equalizer
π MODULE OPTIONS π
options specific to the behaviour of this module, babes:
equalizer.filepath= <str> β path of the file with parametric EQ πequalizer.description= <str> β name which will show up inaudio.channels= <int> β number of audio channels, default2audio.position= <str> β channel map, default"[FL, FR]"remote.name= <str> β environment with remote name, default"pipewire-0"capture.props={}β properties passed to the input stream, default{ media.class = "Audio/Sink", node.name = "effect_input.eq<number of nodes>" }playback.props={}β properties passed to the output stream, default{ node.passive = true, node.name = "effect_output.eq<number of nodes>" }
π GENERAL OPTIONS π
options with well-known behaviour (iykyk):
audio.channelsaudio.layoutaudio.positionremote.name
π EXAMPLE CONFIGURATION π
# ~/.config/pipewire/pipewire.conf.d/my-parametric-equalizer.conf
context.modules = [
{ name = libpipewire-module-parametric-equalizer
args = {
#remote.name = "pipewire-0"
#equalizer.filepath = "/a/b/EQ.txt"
#equalizer.description = "Parametric EQ Sink"
#audio.channels = 2
#audio.position = [FL, FR]
#capture.props = {
# node.name = "Parametric EQ input"
#}
#playback.props = {
# node.name = "Parametric EQ output"
#}
}
}
]
β Since β
1.0.6 β yes it's vintage-ish, it ate and left no crumbs π
ok that's the whole page bestie, go forth and equalize responsibly π§π
and this lil love letter comes to you courtesy of PipeWire 1.6.11 β catch you on the next man page, mwah ππ«
π¦ where this page comes from
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms