2つのオーディオカードを持つシステムがあります。 Scarlett 2i2には2つのスピーカーが接続され、ヘッドフォンはHDMIモニターに接続されています。いつかBluetoothヘッドフォンを接続する機会もあります。
すべてのオーディオアプリケーションを接続する空の受信機を作成し、この空の受信機をハードウェアオーディオデバイスに自動的に接続しようとしています。 Bluetoothヘッドセットがシステムに存在する場合と存在しない可能性があるため、動的に行う必要があると思われるので、Wireplumberが必要ですが、どうすればよいかわかりません。
Pipewireグラフを追加しました。青い部分は、シンプルなエフェクト入力に接続されたオーディオを再生するアプリケーションです。赤は出力ヌル受信機に接続されたシンプルなエフェクトパイプです。白はハードウェアオーディオデバイスです。 Null レシーバーからオーディオを取得します。これで、コンピュータの起動時に手動で接続する必要があるため、自動的に作成したい接続です(黄色、マイクパイプ)。
ヌル受信機からハードウェアデバイスへの接続をどのように自動化するのですか?
ベストアンサー1
LUAスクリプトとパイプライン構成で実際に何も達成できなかったので、他の答えを追加しました...しかし...うまくいきました...次の場所で~/.config/systemd/user
:
- ファイルを追加
custom.target
<<
[Unit]
Description=Custom Target
Requires=default.target
After=default.target
AllowIsolate=yes
custom.service
<< 追加
[Unit]
Description=Custom Service
After=default.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/script #(i did ln -s, don't know about /path/to/script)
[Install]
WantedBy=custom.target
実行(内部にSIMリンクを作成する必要があります
systemctl --user set-default custom.target
)* default.targetが設定されていることを確認するには、systemctl --user get-defaultを実行する必要があります。.config/systemd/user/default.target
custom.target
実行すると、
systemctl --user enable custom.service
次へのSIMリンクを作成する必要があります。custom.target.wants
[編集] プロセスをよりよく説明するためにシェルスクリプトを公開しました。
#!/bin/sh
#Static Names
APPLDUALSINK=sink.Dual_Apple_Inc._Display_Audio.analog-stereo
APPLDUAL_L=alsa_output.usb-Apple_Inc._Display_Audio_27711502-00.analog-stereo
APPLDUAL_R=alsa_output.usb-Apple_Inc._Display_Audio_27711702-00.analog-stereo
function __link () {
#link monitor left to playback left
/usr/bin/pw-link $APPLDUALSINK:monitor_FL $APPLDUAL_L:playback_FL
#link monitor left to playback right
/usr/bin/pw-link $APPLDUALSINK:monitor_FL $APPLDUAL_L:playback_FR
#link monitor right to playback left
/usr/bin/pw-link $APPLDUALSINK:monitor_FR $APPLDUAL_R:playback_FL
#link monitor right to playback right
/usr/bin/pw-link $APPLDUALSINK:monitor_FR $APPLDUAL_R:playback_FR
}
#wait for pipewire sink
sleep 5
__link