From 781cb922c5576db6177967af9ed833599c261668 Mon Sep 17 00:00:00 2001 From: tiyn Date: Tue, 31 Mar 2026 08:18:49 +0200 Subject: [PATCH] Pipewire: Added more virtual devices including virtual microphones --- ...0-sink-null_1.conf => 00-sink-null_1.conf} | 1 + ...ink-null_2.conf => 10-sink-virtual_1.conf} | 4 ++-- ...ink-null_3.conf => 11-sink-virtual_2.conf} | 4 ++-- .../20-loopback-application_1.conf | 4 ++-- .../21-loopback-application_2.conf | 4 ++-- .../22-loopback-application_3.conf | 16 --------------- .../pipewire.conf.d/30-loopback-device_1.conf | 4 ++-- .../pipewire.conf.d/31-loopback-device_2.conf | 4 ++-- .../pipewire.conf.d/32-loopback-device_3.conf | 20 ------------------- .../40-microphone-virtual_1.conf | 20 +++++++++++++++++++ .../41-microphone-virtual_2.conf | 20 +++++++++++++++++++ 11 files changed, 53 insertions(+), 48 deletions(-) rename .config/pipewire/pipewire.conf.d/{10-sink-null_1.conf => 00-sink-null_1.conf} (99%) rename .config/pipewire/pipewire.conf.d/{11-sink-null_2.conf => 10-sink-virtual_1.conf} (82%) rename .config/pipewire/pipewire.conf.d/{12-sink-null_3.conf => 11-sink-virtual_2.conf} (82%) delete mode 100644 .config/pipewire/pipewire.conf.d/22-loopback-application_3.conf delete mode 100644 .config/pipewire/pipewire.conf.d/32-loopback-device_3.conf create mode 100644 .config/pipewire/pipewire.conf.d/40-microphone-virtual_1.conf create mode 100644 .config/pipewire/pipewire.conf.d/41-microphone-virtual_2.conf diff --git a/.config/pipewire/pipewire.conf.d/10-sink-null_1.conf b/.config/pipewire/pipewire.conf.d/00-sink-null_1.conf similarity index 99% rename from .config/pipewire/pipewire.conf.d/10-sink-null_1.conf rename to .config/pipewire/pipewire.conf.d/00-sink-null_1.conf index 68aa3aa..47c0188 100644 --- a/.config/pipewire/pipewire.conf.d/10-sink-null_1.conf +++ b/.config/pipewire/pipewire.conf.d/00-sink-null_1.conf @@ -1,3 +1,4 @@ + context.objects = [ { factory = adapter args = { diff --git a/.config/pipewire/pipewire.conf.d/11-sink-null_2.conf b/.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf similarity index 82% rename from .config/pipewire/pipewire.conf.d/11-sink-null_2.conf rename to .config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf index dc2e6f1..2cf42a2 100644 --- a/.config/pipewire/pipewire.conf.d/11-sink-null_2.conf +++ b/.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf @@ -2,8 +2,8 @@ context.objects = [ { factory = adapter args = { factory.name = support.null-audio-sink - node.name = "null-sink-2" - node.description = "Null Sink 2" + node.name = "virtual-sink-1" + node.description = "Virtual Sink 1" media.class = Audio/Sink audio.position = [ FL FR ] monitor.channel-volumes = true diff --git a/.config/pipewire/pipewire.conf.d/12-sink-null_3.conf b/.config/pipewire/pipewire.conf.d/11-sink-virtual_2.conf similarity index 82% rename from .config/pipewire/pipewire.conf.d/12-sink-null_3.conf rename to .config/pipewire/pipewire.conf.d/11-sink-virtual_2.conf index 3531b75..a6311b9 100644 --- a/.config/pipewire/pipewire.conf.d/12-sink-null_3.conf +++ b/.config/pipewire/pipewire.conf.d/11-sink-virtual_2.conf @@ -2,8 +2,8 @@ context.objects = [ { factory = adapter args = { factory.name = support.null-audio-sink - node.name = "null-sink-3" - node.description = "Null Sink 3" + node.name = "virtual-sink-2" + node.description = "Virtual Sink 2" media.class = Audio/Sink audio.position = [ FL FR ] monitor.channel-volumes = true diff --git a/.config/pipewire/pipewire.conf.d/20-loopback-application_1.conf b/.config/pipewire/pipewire.conf.d/20-loopback-application_1.conf index 7e960d9..252ed5b 100644 --- a/.config/pipewire/pipewire.conf.d/20-loopback-application_1.conf +++ b/.config/pipewire/pipewire.conf.d/20-loopback-application_1.conf @@ -5,12 +5,12 @@ context.modules = [{ capture.props = { media.class = "Audio/Sink" node.name = "application-loopback-1-sink" - node.description = "Application-Loopback 1 Sink" + node.description = "Application Loopback 1 Sink" } playback.props = { media.class = "Stream/Output/Audio" node.name = "application-loopback-1-playback" - node.description = "Application-Loopback 1 Playback" + node.description = "Application Loopback 1 Playback" } } }] diff --git a/.config/pipewire/pipewire.conf.d/21-loopback-application_2.conf b/.config/pipewire/pipewire.conf.d/21-loopback-application_2.conf index beef4bc..5ecbb38 100644 --- a/.config/pipewire/pipewire.conf.d/21-loopback-application_2.conf +++ b/.config/pipewire/pipewire.conf.d/21-loopback-application_2.conf @@ -5,12 +5,12 @@ context.modules = [{ capture.props = { media.class = "Audio/Sink" node.name = "application-loopback-2-sink" - node.description = "Application-Loopback 2 Sink" + node.description = "Application Loopback 2 Sink" } playback.props = { media.class = "Stream/Output/Audio" node.name = "application-loopback-2-playback" - node.description = "Application-Loopback 2 Playback" + node.description = "Application Loopback 2 Playback" } } }] diff --git a/.config/pipewire/pipewire.conf.d/22-loopback-application_3.conf b/.config/pipewire/pipewire.conf.d/22-loopback-application_3.conf deleted file mode 100644 index eab1fc7..0000000 --- a/.config/pipewire/pipewire.conf.d/22-loopback-application_3.conf +++ /dev/null @@ -1,16 +0,0 @@ -context.modules = [{ - name = libpipewire-module-loopback - args = { - audio.position = [ FL FR ] - capture.props = { - media.class = "Audio/Sink" - node.name = "application-loopback-3-sink" - node.description = "Application-Loopback 3 Sink" - } - playback.props = { - media.class = "Stream/Output/Audio" - node.name = "application-loopback-3-playback" - node.description = "Application-Loopback 3 Playback" - } - } -}] diff --git a/.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf b/.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf index df3a1c9..2cb19f6 100644 --- a/.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf +++ b/.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf @@ -6,12 +6,12 @@ context.modules = [ capture.props = { media.class = "Stream/Input/Audio" node.name = "device-loopback-1-recording" - node.description = "Device-Loopback 1 Recording" + node.description = "Device Loopback 1 Recording" } playback.props = { media.class = "Stream/Output/Audio" node.name = "device-loopback-1-playback" - node.description = "Device-Loopback 1 Playback" + node.description = "Device Loopback 1 Playback" } audio.volume = 0.5 audio.mute = true diff --git a/.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf b/.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf index 4d69e80..95b68cb 100644 --- a/.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf +++ b/.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf @@ -6,12 +6,12 @@ context.modules = [ capture.props = { media.class = "Stream/Input/Audio" node.name = "device-loopback-2-recording" - node.description = "Device-Loopback 2 Recording" + node.description = "Device Loopback 2 Recording" } playback.props = { media.class = "Stream/Output/Audio" node.name = "device-loopback-2-playback" - node.description = "Device-Loopback 2 Playback" + node.description = "Device Loopback 2 Playback" } audio.volume = 0.5 audio.mute = true diff --git a/.config/pipewire/pipewire.conf.d/32-loopback-device_3.conf b/.config/pipewire/pipewire.conf.d/32-loopback-device_3.conf deleted file mode 100644 index cd485ad..0000000 --- a/.config/pipewire/pipewire.conf.d/32-loopback-device_3.conf +++ /dev/null @@ -1,20 +0,0 @@ -context.modules = [ - { - name = libpipewire-module-loopback - args = { - audio.position = [ FL FR ] - capture.props = { - media.class = "Stream/Input/Audio" - node.name = "device-loopback-3-recording" - node.description = "Device-Loopback 3 Recording" - } - playback.props = { - media.class = "Stream/Output/Audio" - node.name = "device-loopback-3-playback" - node.description = "Device-Loopback 3 Playback" - } - audio.volume = 0.5 - audio.mute = true - } - } -] diff --git a/.config/pipewire/pipewire.conf.d/40-microphone-virtual_1.conf b/.config/pipewire/pipewire.conf.d/40-microphone-virtual_1.conf new file mode 100644 index 0000000..7becb52 --- /dev/null +++ b/.config/pipewire/pipewire.conf.d/40-microphone-virtual_1.conf @@ -0,0 +1,20 @@ +context.modules = [ + { + name = libpipewire-module-loopback + args = { + audio.position = [ FL FR ] + + capture.props = { + media.class = "Stream/Input/Audio" + node.name = "virtual-microphone-1-recording" + node.description = "Virtual Microphone 1 Recording" + } + + playback.props = { + media.class = "Audio/Source" + node.name = "virtual-microphone-1-source" + node.description = "Virtual Microphone 1 Source" + } + } + } +] diff --git a/.config/pipewire/pipewire.conf.d/41-microphone-virtual_2.conf b/.config/pipewire/pipewire.conf.d/41-microphone-virtual_2.conf new file mode 100644 index 0000000..be6c16c --- /dev/null +++ b/.config/pipewire/pipewire.conf.d/41-microphone-virtual_2.conf @@ -0,0 +1,20 @@ +context.modules = [ + { + name = libpipewire-module-loopback + args = { + audio.position = [ FL FR ] + + capture.props = { + media.class = "Stream/Input/Audio" + node.name = "virtual-microphone-2-recording" + node.description = "Virtual Microphone 2 Recording" + } + + playback.props = { + media.class = "Audio/Source" + node.name = "virtual-microphone-2-source" + node.description = "Virtual Microphone 2 Source" + } + } + } +]