¿Cómo configurar los receptores PulseAudio en grupos?

¿Cómo configurar los receptores PulseAudio en grupos?

Me gustaría configurar algún tipo de receptor virtual o grupo de fuentes que me permita cambiar un receptor para varios flujos de entrada activos. Hasta ahora, he estado usando el siguiente script para configurar todos los flujos de entrada en la fuente predeterminada:

#!/bin/bash
pacmd set-default-sink "$1"
pacmd list-sink-inputs | grep index | while read input
do
  pacmd move-sink-input "${input##* }" "$1"
done

O para mover solo las entradas al último receptor predeterminado:

#!/bin/bash
pacmd list-sinks |
grep -e "* index:" |
tr -dc "[:digit:]\n" |
{
  read old_sink
  pacmd set-default-sink "$1"
  pacmd list-sink-inputs  |
  grep -e "index:" -e "sink:" |
  grep -B 1 -e "sink: $old_sink" |
  grep -e "index:" |
  tr -dc "[:digit:]\n" |
  while read i
  do
    pacmd move-sink-input "$i" "$1"
  done
}

Sin embargo, esto no se adapta a mis necesidades. Soluciones similares suponen que quiero que todos los flujos de entrada que apuntan a un receptor de destino se muevan a otro. Me gustaría una solución que proporcione el siguiente comportamiento:

# previous state
sourceA -> (virtualSink -> sinkA)
sourceB -> (virtualSink -> sinkA)
sourceC -> sinkA

$ set-sink (virtualSink -> sinkB)
sourceA -> (virtualSink -> sinkB)
sourceB -> (virtualSink -> sinkB)
sourceC -> sinkA

Lo ideal set-sinksería mover todos los flujos de entrada activos al nuevo sumidero, pero iterar sobre los flujos de entrada que apuntan virtualSinksería perfectamente aceptable.

información relacionada