Can't control volume of virtual pipewire device

I created a virtual device:

context.objects = [
    {   factory = adapter
        args = {
       = support.null-audio-sink
          = "my-virtual-device"
            media.class      = Audio/Sink
            audio.position   = [ FL FR ]
   = {
                mode = dsp
                monitor = true
                position = preserve

And select it as default audio device. (The idea is, that I want to do some processing (convolution) on all sound before I hear it. Moreover, I want to have different effects for different outputs, so I create several sinks and select them instead of the actual output.)

However, this renders my volume control useless, because changing the volume of the virtual device (this is what is changed by default if I use hotkeys) does nothing at all. I can even mute it, and the volume stays the same. I have to change the volume of my actual output in order for the volume to be adjusted.

Any idea how this could be changed? Hardcoding the device that is to be changed is not an option, because I want to be able to switch between several outputs. I’m using KDE Plasma, in case that changes anything.

1 Like

Null nodes in PipeWire don’t have volume controls by default. This sounds like an oversight, as Null devices in PulseAudio have working volume controls, just like a few other virtual PipeWire devices (using a few other modules). I’ve reported this bug to PipeWire.

The solution is to add = true as one of the args.