Last active
April 16, 2025 20:35
-
-
Save tapir/2c90f06e8a1cf4490d9d912d5a88a20c to your computer and use it in GitHub Desktop.
Setup of my audio devices, system-wide eq and qpwgraph
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ~/.config/wireplumber/wireplumber.conf.d/51-alsa-custom.conf | |
wireplumber.settings = { | |
# make sure volumes are always 100% by default | |
device.routes.default-sink-volume = 1.0 | |
device.routes.default-source-volume = 1.0 | |
node.stream.default-playback-volume = 1.0 | |
node.stream.default-playback-volume = 1.0 | |
# make sure no automatic change happens | |
# we rely on qpwgraph and our config files for proper setup | |
device.restore-profile = false | |
device.restore-routes = false | |
node.stream.restore-props = false | |
node.stream.restore-target = false | |
node.restore-default-targets = false | |
} | |
monitor.alsa.rules = [ | |
{ | |
matches = [ | |
{ | |
# match all devices | |
device.name = "~alsa_card.*" | |
} | |
] | |
actions = { | |
update-props = { | |
api.alsa.use-acp = true | |
api.alsa.soft-mixer = true | |
api.acp.auto-profile = false | |
api.acp.auto-port = false | |
api.alsa.start-delay = 128 | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
device.name = "~alsa_card.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# this disables S/PDIF digital outputs in system menu | |
device.profile-set = "analog-only.conf" | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
device.name = "~alsa_card.usb-Solid_State_Logic_SSL_2_Mk_II-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# this enables pro-audio profile | |
# without this I get crackling and random buffer size changes | |
device.profile = "pro-audio" | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
node.name = "~usb-Solid_State_Logic_SSL_2_Mk_II-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# jack clients supposed to use these settings | |
# however none of these work in a stable way if the card is not set to pro-audio profile | |
audio.format = S32LE | |
audio.rate = 48000 | |
api.alsa.period-size = 256 | |
api.alsa.period-num = 2 | |
api.alsa.headroom = 0 | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
node.name = "~alsa_output.usb-Solid_State_Logic_SSL_2_Mk_II-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# lower driver priority node will re-sample to higher driver priority node if they are routed together | |
priority.driver = 1000 | |
# higher session priority node will be the default node for new sessions | |
priority.session = 999 | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
node.name = "~alsa_input.usb-Solid_State_Logic_SSL_2_Mk_II-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# recommended source max priority is 2000 | |
priority.driver = 2000 | |
priority.session = 1999 | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
node.name = "~alsa_output.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
# recommended sink max priority is 1500 | |
priority.driver = 999 | |
priority.session = 1000 | |
} | |
} | |
} | |
{ | |
matches = [ | |
{ | |
node.name = "~alsa_input.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00*" | |
} | |
] | |
actions = { | |
update-props = { | |
priority.driver = 1999 | |
priority.session = 2000 | |
} | |
} | |
} | |
{ | |
matches = [ | |
# put all the devices that you don't want to use here like the integrated audio device on the motherboard or HDMI in GPU | |
# putting matches in the same scope means AND, creating a new scope means OR | |
{ | |
device.name = "~alsa_card.pci-0000*" | |
} | |
] | |
actions = { | |
update-props = { | |
device.disabled = true | |
} | |
} | |
} | |
] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE patchbay> | |
<patchbay name="ardour-patch" version="0.8.3"> | |
<items> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:output_FR"/> | |
<input node="SSL 2 Mk II Pro" port="SSL 2 Mk II:playback_AUX1"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="SSL 2 Mk II Pro" port="SSL 2 Mk II:capture_AUX1"/> | |
<input node="Carla" port="Carla:audio-in2"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Carla" port="Carla:audio-out2"/> | |
<input node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:input_FR"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Arctis Nova Pro Wireless Analog Stereo [Monitor]" port="Arctis Nova Pro Wireless:monitor_FL"/> | |
<input node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:input_FL"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:output_FL"/> | |
<input node="SSL 2 Mk II Pro" port="SSL 2 Mk II:playback_AUX0"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Carla" port="Carla:audio-out1"/> | |
<input node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:input_FL"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="SSL 2 Mk II Pro" port="SSL 2 Mk II:capture_AUX0"/> | |
<input node="Carla" port="Carla:audio-in1"/> | |
</item> | |
<item node-type="pipewire" port-type="pipewire-audio"> | |
<output node="Arctis Nova Pro Wireless Analog Stereo [Monitor]" port="Arctis Nova Pro Wireless:monitor_FR"/> | |
<input node="Oratory1990 HD599 EQ" port="Oratory1990 HD599 EQ:input_FR"/> | |
</item> | |
</items> | |
</patchbay> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ~/.config/pipewire/pipewire.conf.d/sink-eq10.conf | |
# | |
# 10 band sink equalizer for Sennheiser HD599 | |
# https://www.dropbox.com/scl/fi/xo3o8ge30qe23vat3ybd5/Sennheiser-HD599.pdf?rlkey=3u94biy0ewk8txko3lqs4tx0x&dl=0 | |
context.modules = [{ | |
name = libpipewire-module-filter-chain | |
args = { | |
node.description = "Oratory1990 HD599 EQ" | |
media.name = "Oratory1990 HD599 EQ" | |
audio.channels = 2 | |
audio.position = [ FL FR ] | |
capture.props = { | |
node.name = "effect_input.eq10" | |
# put this to Audio/Sink if you want to see the sink in the system menu | |
media.class = Audio/Filter | |
} | |
playback.props = { | |
node.name = "effect_output.eq10" | |
node.passive = true | |
} | |
filter.graph = { | |
nodes = [ | |
{ | |
type = builtin | |
name = eq_band_1 | |
label = bq_highshelf | |
control = { "Freq" = 0.0 "Q" = 1.0 "Gain" = -5.5 } | |
} | |
{ | |
type = builtin | |
name = eq_band_2 | |
label = bq_lowshelf | |
control = { "Freq" = 105.0 "Q" = 0.71 "Gain" = 5.5 } | |
} | |
{ | |
type = builtin | |
name = eq_band_3 | |
label = bq_peaking | |
control = { "Freq" = 165.0 "Q" = 0.45 "Gain" = -5.0 } | |
} | |
{ | |
type = builtin | |
name = eq_band_4 | |
label = bq_peaking | |
control = { "Freq" = 1150.0 "Q" = 1.4 "Gain" = -1.1 } | |
} | |
{ | |
type = builtin | |
name = eq_band_5 | |
label = bq_peaking | |
control = { "Freq" = 1700.0 "Q" = 1.5 "Gain" = 3.6 } | |
} | |
{ | |
type = builtin | |
name = eq_band_6 | |
label = bq_highshelf | |
control = { "Freq" = 3000.0 "Q" = 0.35 "Gain" = 1.0 } | |
} | |
{ | |
type = builtin | |
name = eq_band_7 | |
label = bq_peaking | |
control = { "Freq" = 3100.0 "Q" = 3.5 "Gain" = -2.6 } | |
} | |
{ | |
type = builtin | |
name = eq_band_8 | |
label = bq_peaking | |
control = { "Freq" = 4350.0 "Q" = 3.5 "Gain" = -2.6 } | |
} | |
{ | |
type = builtin | |
name = eq_band_9 | |
label = bq_peaking | |
control = { "Freq" = 5800.0 "Q" = 3.5 "Gain" = -3.0 } | |
} | |
{ | |
type = builtin | |
name = eq_band_10 | |
label = bq_highshelf | |
control = { "Freq" = 10000.0 "Q" = 0.71 "Gain" = 3.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" } | |
] | |
} | |
} | |
}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment