.TH "libpipewire-module-parametric-equalizer" 7 "1.4.2" "PipeWire" \" -*- nroff -*- .ad l .nh .SH NAME libpipewire-module-parametric-equalizer \- Parametric-Equalizer .SH DESCRIPTION .PP The \fCparametric-equalizer\fP module loads parametric equalizer configuration generated from the AutoEQ project or Squiglink\&. .PP Both the projects allow equalizing headphones or an in-ear monitor to a target curve\&. While these generate a file for parametric equalization for a given target, but this is not a format that can be directly given to filter chain module\&. .PP A popular example of the above being EQ'ing to the Harman target curve or EQ'ing one headphone/IEM to another\&. .PP For AutoEQ, see https://github.com/jaakkopasanen/AutoEq\&. For SquigLink, see https://squig.link/\&. .PP Parametric equalizer configuration generated from AutoEQ or Squiglink looks like below\&. .PP .PP .nf 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 .fi .PP .PP Fc, Gain and Q specify the frequency, gain and Q factor respectively\&. The fourth column can be one of PK, LSC or HSC specifying peaking, low shelf and high shelf filter respectively\&. More often than not only peaking filters are involved\&. .PP This module parses a configuration like above and loads the filter chain module with the above configuration translated to filter chain arguments\&. .PP .SH "MODULE NAME" .PP .PP \fClibpipewire-module-parametric-equalizer\fP .PP .SH "MODULE OPTIONS" .PP .PP Options specific to the behaviour of this module .PP .IP "\(bu" 2 \fCequalizer\&.filepath = <str>\fP path of the file with parametric EQ .IP "\(bu" 2 \fCequalizer\&.description = <str>\fP: Name which will show up in .IP "\(bu" 2 \fCaudio\&.channels = <int>\fP: Number of audio channels, default 2 .IP "\(bu" 2 \fCaudio\&.position = <str>\fP: Channel map, default '[FL, FR]' .IP "\(bu" 2 \fCremote\&.name = <str>\fP: environment with remote name, default 'pipewire-0' .IP "\(bu" 2 \fCcapture\&.props = {}\fP: properties passed to the input stream, default \fC{ media\&.class = 'Audio/Sink', node\&.name = 'effect_input\&.eq<number of nodes>' }\fP .IP "\(bu" 2 \fCplayback\&.props = {}\fP: properties passed to the output stream, default \fC{ node\&.passive = true, node\&.name = 'effect_output\&.eq<number of nodes>' }\fP .PP .PP .SH "GENERAL OPTIONS" .PP .PP Options with well-known behaviour: .PP .IP "\(bu" 2 \fBaudio.channels\fP .IP "\(bu" 2 \fBaudio.position\fP .IP "\(bu" 2 \fBremote.name\fP .PP .PP .SH "EXAMPLE CONFIGURATION" .PP .PP .PP .nf # ~/\&.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" #} } } ] .fi .PP .PP \fBSince\fP .RS 4 1\&.0\&.6 .RE .PP