... | ... | @@ -63,11 +63,10 @@ Single nodes are the smallest building block and are often used to create the in |
|
|
|
|
|
They are usually created from a `support.null-audio-sink` factory, either in a config file or with pw-cli.
|
|
|
|
|
|
From a config file, add this to the `context.objects` section:
|
|
|
Merge the following `context.objects` section into a config file or a conf.d directory:
|
|
|
|
|
|
```
|
|
|
context.objects = [
|
|
|
...
|
|
|
{ factory = adapter
|
|
|
args = {
|
|
|
factory.name = support.null-audio-sink
|
... | ... | @@ -77,7 +76,6 @@ context.objects = [ |
|
|
audio.position = [ FL FR FC LFE RL RR ]
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
|
... | ... | @@ -175,11 +173,10 @@ They however have a slightly higher overhead because they have the logic to do c |
|
|
|
|
|
Coupled streams are created by loading the `libpipewire-module-loopback` module or by running the `pw-loopback` tool.
|
|
|
|
|
|
Copy a config file (like `/etc/pipewire/client-rt.conf`) to `/etc/pipewire/virtual-sink.conf` and add in the modules section:
|
|
|
Place the following config section into a separate file in a .conf.d directory or merge with an existing .conf file:
|
|
|
|
|
|
```
|
|
|
context.modules = [
|
|
|
...
|
|
|
{ name = libpipewire-module-loopback
|
|
|
args = {
|
|
|
audio.position = [ FL FR ]
|
... | ... | @@ -205,10 +202,15 @@ context.modules = [ |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
Run with `pipewire -c virtual-sink.conf` to load and run the loopback sink.
|
|
|
|
|
|
It copy a config file (like `/etc/pipewire/client-rt.conf`) to `/etc/pipewire/virtual-sink.conf` and merge
|
|
|
the above secion in it, you can also run it separately with:
|
|
|
|
|
|
```
|
|
|
pipewire -c virtual-sink.conf
|
|
|
```
|
|
|
|
|
|
Or with pw-loopback:
|
|
|
|
... | ... | @@ -318,11 +320,11 @@ See [JConvolver](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Simple |
|
|
There is a native echo-cancel module available in pipewire. it can be loaded as a pulseaudio module or as a native module with the following `context.modules` entry:
|
|
|
|
|
|
```
|
|
|
...
|
|
|
context.modules = [
|
|
|
{ name = libpipewire-module-echo-cancel
|
|
|
args = { }
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
You can use pavucontrol to redirect the echo canceled recording and playback stream to the source/sink to be echo canceled.
|
|
|
|
... | ... | @@ -335,7 +337,7 @@ The following example snippets need to be placed in `pipewire.conf` or `media-se |
|
|
This is an example of how to make a new source that makes a mono channel from the Front Left channel:
|
|
|
|
|
|
```
|
|
|
...
|
|
|
context.modules = [
|
|
|
{ name = libpipewire-module-loopback
|
|
|
args = {
|
|
|
node.description = "C920 Front Left"
|
... | ... | @@ -353,7 +355,7 @@ This is an example of how to make a new source that makes a mono channel from th |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
|
|
|
The `stream.dont-remix` property makes sure that only the FL port of the capture device is linked (and not all ports mixed into FL).
|
... | ... | @@ -365,7 +367,7 @@ The `node.passive` property instructs the session manager to create passive link |
|
|
Some Pro cards have many independent inputs but you would only like to use a certain pair for media playback. This snippet will set up 2 stereo sinks on the first and second pair of channels of a 7.1 surround device.
|
|
|
|
|
|
```
|
|
|
...
|
|
|
context.modules = [
|
|
|
{ name = libpipewire-module-loopback
|
|
|
args = {
|
|
|
node.description = "CM106 Stereo Pair 1"
|
... | ... | @@ -400,7 +402,7 @@ Some Pro cards have many independent inputs but you would only like to use a cer |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
|
|
|
## Behringer UMC404HD speakers/headphones virtual sinks
|
... | ... | @@ -408,7 +410,7 @@ Some Pro cards have many independent inputs but you would only like to use a cer |
|
|
The card is placed in the "Pro Audio" profile and 2 sinks are created, one for each stereo pair. The Behringer has an option to route the second stereo pair to the headphones.
|
|
|
|
|
|
```
|
|
|
...
|
|
|
context.modules = [
|
|
|
{ name = libpipewire-module-loopback
|
|
|
args = {
|
|
|
node.description = "UMC Speakers"
|
... | ... | @@ -443,7 +445,7 @@ The card is placed in the "Pro Audio" profile and 2 sinks are created, one for e |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
```
|
|
|
|
|
|
## Behringer UMC404HD mic/guitar virtual sources
|
... | ... | @@ -453,7 +455,7 @@ A condenser microphone is plugged into the first input port, the output of a gui |
|
|
The card is placed in the "Pro Audio" profile and 2 sources are created. One for the microphone and another for the guitar signal.
|
|
|
|
|
|
```
|
|
|
...
|
|
|
context.modules = [
|
|
|
{ name = libpipewire-module-loopback
|
|
|
args = {
|
|
|
node.description = "UMC Microphone"
|
... | ... | @@ -488,7 +490,5 @@ The card is placed in the "Pro Audio" profile and 2 sources are created. One for |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
...
|
|
|
]
|
|
|
``` |
|
|
|
|
|
|