pipewire: Add a Parametric equalizer using filter-chain
EQ Preset used is from Oratory1990 with Harman target and worn earpads. https://old.reddit.com/r/oratory1990/wiki/index/list_of_presets https://www.dropbox.com/s/mejnlwpqm7uxtly/Beyerdynamic%20DT770%20%28old%20earpads%29.pdf?dl=0
This commit is contained in:
parent
90f94b527f
commit
42799da2d1
101
pipewire/.config/pipewire/pipewire.conf.d/dt770-sink.conf
Normal file
101
pipewire/.config/pipewire/pipewire.conf.d/dt770-sink.conf
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
# 10 band sink equalizer for DT 770 80 Ohms
|
||||||
|
context.modules = [
|
||||||
|
{ name = libpipewire-module-filter-chain
|
||||||
|
args = {
|
||||||
|
node.description = "DT770 Equalizer Sink"
|
||||||
|
media.name = "DT770 Equalizer Sink"
|
||||||
|
filter.graph = {
|
||||||
|
nodes = [
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_1
|
||||||
|
label = bq_highshelf
|
||||||
|
control = { "Freq" = 0 "Q" = 1.0 "Gain" = -2.6 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_2
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 45.0 "Q" = 0.2 "Gain" = -5.2 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_3
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 75.0 "Q" = 1.4 "Gain" = 2.0 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_4
|
||||||
|
label = bq_lowshelf
|
||||||
|
control = { "Freq" = 105.0 "Q" = 0.71 "Gain" = 5.5 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_5
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 210.0 "Q" = 1.4 "Gain" = 4.0 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_6
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 2400.0 "Q" = 3.5 "Gain" = -2.3 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_7
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 3800.0 "Q" = 1.0 "Gain" = 3.0 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_8
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 4200.0 "Q" = 4.0 "Gain" = -1.3 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_9
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 6400.0 "Q" = 4.0 "Gain" = -6.2 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_10
|
||||||
|
label = bq_peaking
|
||||||
|
control = { "Freq" = 8400.0 "Q" = 4.0 "Gain" = -1.4 }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = builtin
|
||||||
|
name = eq_band_11
|
||||||
|
label = bq_highshelf
|
||||||
|
control = { "Freq" = 10000.0 "Q" = 0.71 "Gain" = -4.0 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
links = [
|
||||||
|
{ output = "eq_band_1:Out" input = "eq_band_2:In" }
|
||||||
|
{ output = "eq_band_2:Out" input = "eq_band_3:In" }
|
||||||
|
{ output = "eq_band_3:Out" input = "eq_band_4:In" }
|
||||||
|
{ output = "eq_band_4:Out" input = "eq_band_5:In" }
|
||||||
|
{ output = "eq_band_5:Out" input = "eq_band_6:In" }
|
||||||
|
{ output = "eq_band_6:Out" input = "eq_band_7:In" }
|
||||||
|
{ output = "eq_band_7:Out" input = "eq_band_8:In" }
|
||||||
|
{ output = "eq_band_8:Out" input = "eq_band_9:In" }
|
||||||
|
{ output = "eq_band_9:Out" input = "eq_band_10:In" }
|
||||||
|
{ output = "eq_band_10:Out" input = "eq_band_11:In" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
audio.channels = 2
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
capture.props = {
|
||||||
|
node.name = "dt770_effect_input.eq11"
|
||||||
|
media.class = Audio/Sink
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
node.name = "dt770_effect_output.eq11"
|
||||||
|
node.passive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
|
@ -84,18 +84,11 @@ context.modules = [
|
||||||
# flags = [ ifexists nofail ]
|
# flags = [ ifexists nofail ]
|
||||||
#}
|
#}
|
||||||
|
|
||||||
# The native communication protocol.
|
|
||||||
{ name = libpipewire-module-protocol-native }
|
|
||||||
|
|
||||||
# The profile module. Allows application to access profiler
|
# The profile module. Allows application to access profiler
|
||||||
# and performance data. It provides an interface that is used
|
# and performance data. It provides an interface that is used
|
||||||
# by pw-top and pw-profiler.
|
# by pw-top and pw-profiler.
|
||||||
{ name = libpipewire-module-profiler }
|
{ name = libpipewire-module-profiler }
|
||||||
|
|
||||||
# Allows applications to create metadata objects. It creates
|
|
||||||
# a factory for Metadata objects.
|
|
||||||
{ name = libpipewire-module-metadata }
|
|
||||||
|
|
||||||
# Creates a factory for making devices that run in the
|
# Creates a factory for making devices that run in the
|
||||||
# context of the PipeWire server.
|
# context of the PipeWire server.
|
||||||
{ name = libpipewire-module-spa-device-factory }
|
{ name = libpipewire-module-spa-device-factory }
|
||||||
|
@ -104,15 +97,6 @@ context.modules = [
|
||||||
# context of the PipeWire server.
|
# context of the PipeWire server.
|
||||||
{ name = libpipewire-module-spa-node-factory }
|
{ name = libpipewire-module-spa-node-factory }
|
||||||
|
|
||||||
# Allows creating nodes that run in the context of the
|
|
||||||
# client. Is used by all clients that want to provide
|
|
||||||
# data to PipeWire.
|
|
||||||
{ name = libpipewire-module-client-node }
|
|
||||||
|
|
||||||
# Allows creating devices that run in the context of the
|
|
||||||
# client. Is used by the session manager.
|
|
||||||
{ name = libpipewire-module-client-device }
|
|
||||||
|
|
||||||
# The portal module monitors the PID of the portal process
|
# The portal module monitors the PID of the portal process
|
||||||
# and tags connections with the same PID as portal
|
# and tags connections with the same PID as portal
|
||||||
# connections.
|
# connections.
|
||||||
|
@ -188,55 +172,4 @@ context.objects = [
|
||||||
node.freewheel = true
|
node.freewheel = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# This creates a new Source node. It will have input ports
|
|
||||||
# that you can link, to provide audio for this source.
|
|
||||||
#{ factory = adapter
|
|
||||||
# args = {
|
|
||||||
# factory.name = support.null-audio-sink
|
|
||||||
# node.name = "my-mic"
|
|
||||||
# node.description = "Microphone"
|
|
||||||
# media.class = "Audio/Source/Virtual"
|
|
||||||
# audio.position = "FL,FR"
|
|
||||||
# }
|
|
||||||
#}
|
|
||||||
|
|
||||||
# This creates a single PCM source device for the given
|
|
||||||
# alsa device path hw:0. You can change source to sink
|
|
||||||
# to make a sink in the same way.
|
|
||||||
#{ factory = adapter
|
|
||||||
# args = {
|
|
||||||
# factory.name = api.alsa.pcm.source
|
|
||||||
# node.name = "alsa-source"
|
|
||||||
# node.description = "PCM Source"
|
|
||||||
# media.class = "Audio/Source"
|
|
||||||
# api.alsa.path = "hw:0"
|
|
||||||
# api.alsa.period-size = 1024
|
|
||||||
# api.alsa.headroom = 0
|
|
||||||
# api.alsa.disable-mmap = false
|
|
||||||
# api.alsa.disable-batch = false
|
|
||||||
# audio.format = "S16LE"
|
|
||||||
# audio.rate = 48000
|
|
||||||
# audio.channels = 2
|
|
||||||
# audio.position = "FL,FR"
|
|
||||||
# }
|
|
||||||
#}
|
|
||||||
]
|
|
||||||
|
|
||||||
context.exec = [
|
|
||||||
#{ path = <program-name> [ args = "<arguments>" ] }
|
|
||||||
#
|
|
||||||
# Execute the given program with arguments.
|
|
||||||
#
|
|
||||||
# You can optionally start the session manager here,
|
|
||||||
# but it is better to start it as a systemd service.
|
|
||||||
# Run the session manager with -h for options.
|
|
||||||
#
|
|
||||||
#{ path = "/usr/bin/pipewire-media-session" args = "" }
|
|
||||||
#
|
|
||||||
# You can optionally start the pulseaudio-server here as well
|
|
||||||
# but it is better to start it as a systemd service.
|
|
||||||
# It can be interesting to start another daemon here that listens
|
|
||||||
# on another address with the -a option (eg. -a tcp:4713).
|
|
||||||
#
|
|
||||||
#{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
|
|
||||||
]
|
]
|
Loading…
Reference in a new issue