You are not logged in.
Hi all,
I'm deep in trying to make my workstation work the way I want. For starters pipewire, wireplumber and pipewire-jack are all installed and setup. They work as expected. So my problem is not about setting those up.
I have 2 audio interfaces on my computer:
Arctis Nova (gaming headset)
Behringer UMC202HD (guitar interface)
I'm trying to achieve
I want every application including GNOME to default to Arctis Nova as this is my default output and input interface.
I want Behringer to default to "pro-audio" profile.
I want Behringer to default to 48kHz and 256 sample buffer.
I want all other audio devices to be disabled.
I want Arctis Nova's monitor output to be routed to Behringer playback at all times.
When I open up a Jack client (or more specifically Ardour) I don't want it to be routed automatically to Arctis Nova even though it's set as system-wide default.
Now good news is I achieved 1, 2, 3, 4 via the wireplumber config file below and 5,6 manually each time I open Ardour via Helvum or qpwgraph. However I have no idea how to make 5,6 persistent. Any pointers would be highly appreciated.
monitor.alsa.rules = [
{
matches = [
{
device.name = "~usb-BEHRINGER_UMC202HD_192k-00*"
}
]
actions = {
update-props = {
device.profile = "pro-audio"
device.routes.default-sink-volume = 1.0 ^ 3
}
}
}
{
matches = [
{
# you can use regex to match strings
# for both sink and source
node.name = "~usb-BEHRINGER_UMC202HD_192k-00*"
}
]
actions = {
update-props = {
# pipewire-jack will use these
# alternatively you can set these in .config/pipewire/jack.conf.d/51-jack-custom.conf
# jack.properties = {
# node.latency = 512/48000
# node.lock-quantum = true
# node.force-quantum = 512
# }
audio.rate = 48000
api.alsa.period-size = 256
api.alsa.period-num = 2
}
}
}
{
matches = [
{
node.name = "~alsa_output.usb-BEHRINGER_UMC202HD_192k-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-BEHRINGER_UMC202HD_192k-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
}
}
}
]Bonus question: GNOME somehow shows devices/nodes that don't exist in pw-cli ls Node or pw-cli ls Device. When I try to select them my whole wireplumber setup gets borked until I delete local wireplumber state and restart it. This is 99% caused by some kind of bug where GNOME can't retrieve the most recent nodes for some reason but if you know how to get rid of those devices in the audio device selector, it would be much appreciated.
Last edited by cb951303 (2025-01-23 20:54:19)
Offline