ヌル受信機とオーディオデバイス間のパイプ接続の作成

ヌル受信機とオーディオデバイス間のパイプ接続の作成

2つのオーディオカードを持つシステムがあります。 Scarlett 2i2には2つのスピーカーが接続され、ヘッドフォンはHDMIモニターに接続されています。いつかBluetoothヘッドフォンを接続する機会もあります。

すべてのオーディオアプリケーションを接続する空の受信機を作成し、この空の受信機をハードウェアオーディオデバイスに自動的に接続しようとしています。 Bluetoothヘッドセットがシステムに存在する場合と存在しない可能性があるため、動的に行う必要があると思われるので、Wireplumberが必要ですが、どうすればよいかわかりません。

Pipewireグラフを追加しました。青い部分は、シンプルなエフェクト入力に接続されたオーディオを再生するアプリケーションです。赤は出力ヌル受信機に接続されたシンプルなエフェクトパイプです。白はハードウェアオーディオデバイスです。 Null レシーバーからオーディオを取得します。これで、コンピュータの起動時に手動で接続する必要があるため、自動的に作成したい接続です(黄色、マイクパイプ)。

ここに画像の説明を入力してください。

ヌル受信機からハードウェアデバイスへの接続をどのように自動化するのですか?

ベストアンサー1

LUAスクリプトとパイプライン構成で実際に何も達成できなかったので、他の答えを追加しました...しかし...うまくいきました...次の場所で~/.config/systemd/user

  1. ファイルを追加custom.target<<
[Unit]
Description=Custom Target
Requires=default.target
After=default.target
AllowIsolate=yes
  1. 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
  1. 実行(内部にSIMリンクを作成する必要がありますsystemctl --user set-default custom.target)* default.targetが設定されていることを確認するには、systemctl --user get-defaultを実行する必要があります。.config/systemd/user/default.targetcustom.target

  2. 実行すると、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

おすすめ記事