disasters :: dated :: notes

I use pipewire as my audio driver, since I'm a computer musician and kind of need low-latency audio handling/complex routing

Creating a virtual device

I had this idea to create a couple of sinks and then set up auto-connection with them

# ~/.config/pipewire/pipewire.conf.d/virtual-sink.conf:
context.modules = [
    {   
      name = libpipewire-module-loopback
      args = {
        audio.position = [ FL FR ]
        node.description = "System Sound Loopback"
        capture.props = {
          media.class = Audio/Sink
          node.name = SystemSound
          node.description = "System Sound"
        }
        playback.props = {
          node.name = "SystemSound.output"
          node.passive = true
          target.object = "my-default-sink"
        }
      }
    }
    {   
      name = libpipewire-module-loopback
      args = {
        audio.position = [ FL FR ]
        node.description = "Outboard Gear Loopback"
        capture.props = {
          media.class = Audio/Sink
          node.name = OutboardGear
          node.description = "Outboard Gear"
        }
        playback.props = {
          node.name = "OutboardGear.output"
          node.passive = true
          target.object = "my-default-sink"
        }
      }
    }
]

useful links

Commands

wpexec     # run a lua script
wpctl      # get wireplumber runtime info
pipewire   # start pipewire daemon, using default config

Config

# pipewire
~/.config/pipewire/pipewire.conf
~/.config/pipewire/pipewire.conf.d/*
# wireplumber
~/.config/

Discovered Oddities

Pulseaudio config is in "$HOME/.config/pulse", and on my system it looks like that's where my default sink is configured. That will have to change.