filter-chain: add biquads to filter-chain

Add some biquad filters to the builtin filters.
Add an example 6 band equalizer sink filter chain.
This commit is contained in:
Wim Taymans 2021-05-10 18:09:55 +02:00
parent 8911e22793
commit bfbd6d74ef
7 changed files with 798 additions and 2 deletions

View file

@ -1,5 +1,6 @@
conf_files = [
[ 'demonic.conf', 'demonic.conf' ],
[ 'sink-eq6.conf', 'sink-eq6.conf' ],
[ 'source-rnnoise.conf', 'source-rnnoise.conf' ],
]

View file

@ -0,0 +1,88 @@
# 6 band sink equalizer
#
# start with pipewire -c filter-chain/sink-eq6.conf
#
context.properties = {
log.level = 0
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rtkit
args = {
#nice.level = -11
#rt.prio = 88
#rt.time.soft = 200000
#rt.time.hard = 200000
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-filter-chain
args = {
node.name = "eq_sink"
node.description = "Equalizer Sink"
media.name = "Equalizer Sink"
filter.graph = {
nodes = [
{
type = builtin
name = eq_band_1
label = bq_lowshelf
control = { "Freq" = 100.0 "Q" = 1.0 "Gain" = 0.0 }
}
{
type = builtin
name = eq_band_2
label = bq_peaking
control = { "Freq" = 100.0 "Q" = 1.0 "Gain" = 0.0 }
}
{
type = builtin
name = eq_band_3
label = bq_peaking
control = { "Freq" = 500.0 "Q" = 1.0 "Gain" = 0.0 }
}
{
type = builtin
name = eq_band_4
label = bq_peaking
control = { "Freq" = 2000.0 "Q" = 1.0 "Gain" = 0.0 }
}
{
type = builtin
name = eq_band_5
label = bq_peaking
control = { "Freq" = 5000.0 "Q" = 1.0 "Gain" = 0.0 }
}
{
type = builtin
name = eq_band_6
label = bq_highshelf
control = { "Freq" = 5000.0 "Q" = 1.0 "Gain" = 0.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" }
]
}
capture.props = {
media.class = Audio/Sink
}
playback.props = {
node.passive = true
}
}
}
]