dwww Home | Manual pages | Find package

libpipew...-loopback(7) Miscellaneous Information Manuallibpipew...-loopback(7)

NAME
       libpipewire-module-loopback - Loopback

DESCRIPTION
       The loopback module passes the output of a capture stream unmodified to
       a playback stream.

       It can be used to construct a link between a source and sink but also to
       create new virtual sinks or sources or to remap channel between streams.

       Because both ends of the loopback are built with streams, the session
       manager can manage the configuration and connection with the sinks and
       sources.

MODULE NAME
       libpipewire-module-loopback

MODULE OPTIONS
       • node.description: a human readable name for the loopback streams

       • target.delay.sec: delay in seconds as float (Since 0.3.60)

       • capture.props = {}: properties to be passed to the input stream

       • playback.props = {}: properties to be passed to the output stream

GENERAL OPTIONS
       Options  with  well-known  behavior.  Most  options  can be added to the
       global configuration or the individual streams:

       • remote.name

       • audio.rate

       • audio.channels

       • audio.position

       • media.name

       • node.latency

       • node.description

       • node.group

       • node.link.group

       • node.virtual

       • node.name : See notes below. If not specified, defaults to  'loopback-
         PID-MODULEID'.

       Stream only properties:

       • media.class

       • node.name  :  if  not  given  per stream, the global node.name will be
         prefixed with  'input.'  and  'output.'  to  generate  a  capture  and
         playback stream node.name respectively.

CHANNEL HANDLING
       Channels  from  the capture stream are copied, in order, to the channels
       of the output stream. The remaining streams are  ignored  (when  capture
       has  more  channels)  or  filled  with  silence  (when playback has more
       channels).

       When a global channel position is set, both capture and playback will be
       converted to and from this common channel layout. This can  be  used  to
       implement up or downmixing loopback sinks/sources.

EXAMPLE CONFIGURATION OF SOURCE TO SINK LINK
       This  loopback  links  a  source node to a sink node. You can change the
       target.object properties to match your source/sink node.name.

       # ~/.config/pipewire/pipewire.conf.d/my-loopback-0.conf

       context.modules = [
       {   name = libpipewire-module-loopback
           args = {
               capture.props = {
                   #  if you want to capture sink monitor ports,
                   #  uncomment the next line and set the target.object
                   #  to the sink name.
                   #stream.capture.sink = true
                   target.object = "alsa_input.usb-C-Media_Electronics_Inc._TONOR_TC-777_Audio_Device-00.mono-fallback"
                   node.passive = true
                   node.dont-reconnect = true
               }
               playback.props = {
                   target.object = "alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71"
                   node.dont-reconnect = true
                   node.passive = true
               }
           }
       }
       ]

EXAMPLE CONFIGURATION OF A VIRTUAL SINK
       This Virtual sink routes stereo input to the  rear  channels  of  a  7.1
       sink.

       # ~/.config/pipewire/pipewire.conf.d/my-loopback-1.conf

       context.modules = [
       {   name = libpipewire-module-loopback
           args = {
               node.description = "CM106 Stereo Pair 2"
               #target.delay.sec = 1.5
               capture.props = {
                   node.name = "CM106_stereo_pair_2"
                   media.class = "Audio/Sink"
                   audio.position = [ FL FR ]
               }
               playback.props = {
                   node.name = "playback.CM106_stereo_pair_2"
                   audio.position = [ RL RR ]
                   target.object = "alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71"
                   node.dont-reconnect = true
                   stream.dont-remix = true
                   node.passive = true
               }
           }
       }
       ]

EXAMPLE CONFIGURATION OF A VIRTUAL SOURCE
       This  Virtual  source  routes  the front-left channel of a multi-channel
       input to a mono channel. This is useful for splitting  up  multi-channel
       inputs  from  USB  audio  interfaces that are not yet fully supported by
       alsa.

       # ~/.config/pipewire/pipewire.conf.d/my-loopback-2.conf

       context.modules = [
       {   name = libpipewire-module-loopback
           args = {
               node.description = "Scarlett Focusrite Line 1"
               capture.props = {
                   audio.position = [ FL ]
                   stream.dont-remix = true
                   node.target = "alsa_input.usb-Focusrite_Scarlett_Solo_USB_Y7ZD17C24495BC-00.analog-stereo"
                   node.passive = true
               }
               playback.props = {
                   node.name = "SF_mono_in_1"
                   media.class = "Audio/Source"
                   audio.position = [ MONO ]
               }
           }
       }
       ]

EXAMPLE CONFIGURATION OF AN UPMIX SINK
       This Virtual sink has 2 input channels and 6 output  channels.  It  will
       perform upmixing using the PSD algorithm on the playback stream.

       # ~/.config/pipewire/pipewire.conf.d/my-loopback-3.conf

       context.modules = [
       {   name = libpipewire-module-loopback
           args = {
               node.description = "Upmix Sink"
               audio.position = [ FL FR ]
               capture.props = {
                   node.name = "effect_input.upmix"
                   media.class = Audio/Sink
               }
               playback.props = {
                   node.name = "effect_output.upmix"
                   audio.position = [ FL FR RL RR FC LFE ]
                   node.passive = true
                   stream.dont-remix = true
                   channelmix.upmix = true
                   channelmix.upmix-method = psd
                   channelmix.lfe-cutoff = 150
                   channelmix.fc-cutoff = 12000
                   channelmix.rear-delay = 12.0
               }
           }
       }
       ]

EXAMPLE CONFIGURATION OF A DOWNMIX SOURCE
       This  Virtual  source has 2 input channels and a mono output channel. It
       will perform downmixing from the two first AUX channels of  a  pro-audio
       device.

       # ~/.config/pipewire/pipewire.conf.d/my-loopback-4.conf

       context.modules = [
       {   name = libpipewire-module-loopback
           args = {
               node.description = "Downmix Source"
               audio.position = [ AUX0 AUX1 ]
               capture.props = {
                   node.name = "effect_input.downmix"
                   target.object = "alsa_input.usb-BEHRINGER_UMC404HD_192k-00.pro-input-0"
                   node.passive = true
                   stream.dont-remix = true
               }
               playback.props = {
                   node.name = "effect_output.downmix"
                   media.class = Audio/Source
                   audio.position = [ MONO ]
               }
           }
       }
       ]

SEE ALSO
       pw-loopback  :  a  tool  that  loads  the  loopback  module  with  given
       parameters.

PipeWire                             1.4.2              libpipew...-loopback(7)

Generated by dwww version 1.16 on Sat Oct 3 07:31:44 CEST 2026.