From e8bccb5bbc9204e6d499e6cdac632f2ef1cbffaa Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Wed, 8 May 2024 10:25:00 +0530 Subject: [PATCH] wireplumber: Add equalizer for Beyerdynamic DT1990 with balanced pads Parametric Equalizer configuration was generated by running the below command. ```bash python -m autoeq --input-file="measurements/oratory1990/data/over-ear/Beyerdynamic DT 1990 (balanced earpads).csv" --output-dir="dt1990-results" --target="targets/Diffuse field 5128.csv" --parametric-eq --fs=44100,48000 ``` --- .../wireplumber.conf.d/custom.conf | 5 + .../equalizer/dt1990-balanced-diffuse.lua | 111 ++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 wireplumber/.local/share/wireplumber/scripts/equalizer/dt1990-balanced-diffuse.lua diff --git a/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf b/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf index 735b237..476f191 100644 --- a/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf +++ b/wireplumber/.config/wireplumber/wireplumber.conf.d/custom.conf @@ -3,6 +3,10 @@ wireplumber.components = [ name = equalizer/dt770.lua, type = script/lua provides = equalizer.dt770 } + { + name = equalizer/dt1990-balanced-diffuse.lua, type = script/lua + provides = equalizer.dt1990-bd + } { name = equalizer/input-denoise.lua, type = script/lua provides = equalizer.input-denoise @@ -16,6 +20,7 @@ wireplumber.components = [ wireplumber.profiles = { main = { equalizer.dt770 = required + equalizer.dt1990-bd = required equalizer.input-denoise = required equalizer.zero2 = required } diff --git a/wireplumber/.local/share/wireplumber/scripts/equalizer/dt1990-balanced-diffuse.lua b/wireplumber/.local/share/wireplumber/scripts/equalizer/dt1990-balanced-diffuse.lua new file mode 100644 index 0000000..ae0bbe8 --- /dev/null +++ b/wireplumber/.local/share/wireplumber/scripts/equalizer/dt1990-balanced-diffuse.lua @@ -0,0 +1,111 @@ +-- Generated by EQ'ing DT1990 (balanced pads) frequency response to the +-- Diffuse Field target curve using AutoEq. +-- luacheck: ignore 111 113 +local args = { + ["node.description"] = "DT1990 (Balanced) Diffuse Field", + ["media.name"] = "DT1990 (Balanced) Diffuse Field", + ["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 = -6.1, Q = 1.0 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_2", + label = "bq_lowshelf", + control = Json.Object { Freq = 105, Gain = -5.2, Q = 0.7 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_3", + label = "bq_peaking", + control = Json.Object { Freq = 206, Gain = -5.3, Q = 0.51 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_4", + label = "bq_peaking", + control = Json.Object { Freq = 4532, Gain = 5.5, Q = 0.41 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_5", + label = "bq_peaking", + control = Json.Object { Freq = 791, Gain = 2.0, Q = 1.43 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_6", + label = "bq_peaking", + control = Json.Object { Freq = 6829, Gain = -3.8, Q = 2.04 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_7", + label = "bq_highshelf", + control = Json.Object { Freq = 10000, Gain = 3.1, Q = 0.70 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_8", + label = "bq_peaking", + control = Json.Object { Freq = 8944, Gain = -1.4, Q = 2.88 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_9", + label = "bq_peaking", + control = Json.Object { Freq = 3751, Gain = -1.6, Q = 5.97 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_10", + label = "bq_peaking", + control = Json.Object { Freq = 4458, Gain = 1.5, Q = 6.00 }, + }, + Json.Object { + type = "builtin", + name = "eq_band_11", + label = "bq_peaking", + control = Json.Object { Freq = 39, Gain = -0.2, Q = 1.88 }, + }, + }, + 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" }, + Json.Object { output = "eq_band_9:Out" , input = "eq_band_10:In" }, + Json.Object { output = "eq_band_10:Out", input = "eq_band_11:In" }, + }, +} + +args["capture.props"] = Json.Object { + ["node.name"] = "dt1990_balanced_diffuse_effect_input.eq11", + ["media.class"] = "Audio/Sink", +} + +args["playback.props"] = Json.Object { + ["node.name"] = "dt1990_balanced_diffuse_effect_output.eq11", + ["node.passive"] = true, +} + +local args_json = Json.Object(args) +local args_string = args_json:get_data() +local properties = {} + +print("Loading DT1990 Diffuse Field Equalizer Sink with arguments = ") +print(args_string) + +filter_chain = LocalModule("libpipewire-module-filter-chain", args_string, properties)