diff --git a/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf b/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf index 62bdd20..ebb9e9c 100644 --- a/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf +++ b/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf @@ -7,6 +7,10 @@ wireplumber.components = [ name = equalizer/dt1990-balanced-diffuse.lua, type = script/lua provides = equalizer.dt1990-bd } + { + name = equalizer/gate.lua, type = script/lua + provides = equalizer.gate + } { name = equalizer/input-denoise.lua, type = script/lua provides = equalizer.input-denoise @@ -17,6 +21,7 @@ wireplumber.profiles = { main = { equalizer.dt770 = required equalizer.dt1990-bd = required + equalizer.gate = required equalizer.input-denoise = required monitor.libcamera = disabled } diff --git a/wireplumber/.local/share/wireplumber/scripts/equalizer/gate.lua b/wireplumber/.local/share/wireplumber/scripts/equalizer/gate.lua new file mode 100644 index 0000000..ee0a6a0 --- /dev/null +++ b/wireplumber/.local/share/wireplumber/scripts/equalizer/gate.lua @@ -0,0 +1,97 @@ +-- Generated by EQ'ing Truthear GATe frequency response to the +-- Diffuse field target curve using Squiglink. +-- luacheck: ignore 111 113 +local args = { + ["node.description"] = "GATe", + ["media.name"] = "GATe", + ["audio.position"] = Json.Array { "FL", "FR" }, + ["audio.channels"] = 2, +} + +args["filter.graph"] = Json.Object { + nodes = Json.Array { + Json.Object { + type = "builtin", + name = "eq_band_1", + label = "bq_highshelf", + control = Json.Object { Freq = 0, Gain = -4.8, Q = 1.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_2", + label = "bq_peaking", + control = Json.Object { Freq = 32, Gain = -4.0, Q = 0.5 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_3", + label = "bq_peaking", + control = Json.Object { Freq = 450, Gain = 2.3, Q = 0.6 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_4", + label = "bq_peaking", + control = Json.Object { Freq = 1600, Gain = -2.8, Q = 1.2 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_5", + label = "bq_peaking", + control = Json.Object { Freq = 5000, Gain = -3.8, Q = 2.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_6", + label = "bq_peaking", + control = Json.Object { Freq = 6700, Gain = 1.8, Q = 2.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_7", + label = "bq_highshelf", + control = Json.Object { Freq = 8000, Gain = -6.6, Q = 2.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_8", + label = "bq_peaking", + control = Json.Object { Freq = 10000, Gain = 9.2, Q = 2.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_9", + label = "bq_peaking", + control = Json.Object { Freq = 14000, Gain = -8.8, Q = 2.0 }, + }, + }, + links = Json.Array { + Json.Object { output = "eq_band_1:Out" , input = "eq_band_2:In" }, + Json.Object { output = "eq_band_2:Out" , input = "eq_band_3:In" }, + Json.Object { output = "eq_band_3:Out" , input = "eq_band_4:In" }, + Json.Object { output = "eq_band_4:Out" , input = "eq_band_5:In" }, + Json.Object { output = "eq_band_5:Out" , input = "eq_band_6:In" }, + Json.Object { output = "eq_band_6:Out" , input = "eq_band_7:In" }, + Json.Object { output = "eq_band_7:Out" , input = "eq_band_8:In" }, + Json.Object { output = "eq_band_8:Out" , input = "eq_band_9:In" }, + }, +} + +args["capture.props"] = Json.Object { + ["node.name"] = "gate_effect_input.eq9", + ["media.class"] = "Audio/Sink", +} + +args["playback.props"] = Json.Object { + ["node.name"] = "gate_effect_output.eq9", + ["node.passive"] = true, +} + +local args_json = Json.Object(args) +local args_string = args_json:get_data() +local properties = {} + +print("Loading GATe Equalizer Sink with arguments = ") +print(args_string) + +filter_chain = LocalModule("libpipewire-module-filter-chain", args_string, properties)