I'm having an annoying issue with pipewire. I have a Scarlett 8i6 audio interface. I have it set to Pro Audio so that I can access all the input and output channels, and I have virtual devices defined to allow applications to access groups of channels as discrete devices.
For some reason, all applications keep automatically switching to my secondary (mono) output. I can sometimes get them to switch to my primary stereo output, but it's only ever a one-off and they will switch back when the current media is done playing. any thoughts?
config:
context.modules = [
{ name = libpipewire-module-loopback
args = {
node.description = "Primary - Focusrite Scarlett 8i6"
capture.props = {
node.name = "scarlett_8i6_primary"
media.class = "Audio/Sink"
audio.position = [ FL FR ]
}
playback.props = {
node.name = "playback.scarlett_8i6_primary"
audio.position = [ AUX0 AUX1 ]
target.object = "alsa_output.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-output-0"
stream.dont-remix = true
node.passive = true
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Secondary (Mono) - Focusrite Scarlett 8i6"
capture.props = {
node.name = "scarlett_8i6_secondary"
media.class = "Audio/Sink"
audio.position = [ MONO ]
}
playback.props = {
node.name = "playback.scarlett_8i6_secondary"
audio.position = [ AUX2 ]
target.object = "alsa_output.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-output-0"
stream.dont-remix = true
node.passive = true
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Microphone - Focusrite Scarlett 8i6"
capture.props = {
node.name = "capture.scarlett_8i6_mic"
audio.position = [ AUX0 ]
stream.dont-remix = true
target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
node.passive = true
}
playback.props = {
node.name = "scarlett_8i6_mic"
media.class = "Audio/Source"
audio.position = [ MONO ]
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Instrument - Focusrite Scarlett 8i6"
capture.props = {
node.name = "capture.scarlett_8i6_inst"
audio.position = [ AUX1 ]
stream.dont-remix = true
target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
node.passive = true
}
playback.props = {
node.name = "scarlett_8i6_inst"
media.class = "Audio/Source"
audio.position = [ MONO ]
}
}
}
{ name = libpipewire-module-loopback
args = {
node.description = "Mix - Focusrite Scarlett 8i6"
capture.props = {
node.name = "capture.scarlett_8i6_mix"
audio.position = [ AUX2 AUX3 ]
stream.dont-remix = true
target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
node.passive = true
}
playback.props = {
node.name = "scarlett_8i6_mix"
media.class = "Audio/Source"
audio.position = [ FL FR ]
}
}
}
]
I recently started using compose2nix, and I'm enjoying it.
https://github.com/aksiksi/compose2nix