PulseAudio シンクをグループで設定するにはどうすればいいですか?

PulseAudio シンクをグループで設定するにはどうすればいいですか?

複数のアクティブな入力ストリームのシンクを変更できる、ある種の仮想シンクまたはソース グループを設定したいと考えています。これまで、次のスクリプトを使用して、すべての入力ストリームをデフォルトのソースに設定してきました。

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

または、入力を最後のデフォルト シンクにのみ移動するには、次のようにします。

#!/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
}

しかし、これは私のニーズには合いません。同様のソリューションでは、1 つのターゲット シンクを指すすべての入力ストリームを別のターゲット シンクに移動することを前提としています。次の動作を提供するソリューションが必要です。

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

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

理想的には、set-sinkすべてのアクティブな入力ストリームを新しいシンクに移動しますが、指している入力ストリームを反復処理することもvirtualSink完全に許容されます。

関連情報