PULSEUADIO to PIPEWIRE default.pa -> pipewire.conf
context.objects = { adapter = { args = { factory.name = api.alsa.pcm.sink # The ALSA sinks object on Pipewire node.name = line_output # A name for the device node.description = "Line Output" # A visible name for the device in the tray (mandatory quotes) media.class = Audio/Sink # Another sink parameter on Pipewire api.alsa.path = "hw:PCH,0" # Finally the sink location. Quotes are mandatory. } } adapter = { args = { factory.name = api.alsa.pcm.source # Here we did the same thing, just change "sink" to "source" and the names. node.name = microphone_input node.description = "Microphone Input" media.class = Audio/Source api.alsa.path = "hw:PCH,0" } } adapter = { args = { factory.name = api.alsa.pcm.source node.name = line_input node.description = "Line Input" media.class = Audio/Source api.alsa.path = "hw:PCH,2" } } }
Here is what the above code is Doing:
1. We’re creating a new context called “alsa-pcm”
2. We’re creating three objects in that context:
a. A sink called “line_output”
b. A source called “microphone_input”
c. A source called “line_input”
3. We’re setting the parameters for each object.
a. The factory.name is the type of object we’re creating.
b. The node.name is the name of the object.
c. The node.description is the name of the object that will be displayed in the tray.
d. The media.class is the type of object we’re creating.
e. The api.alsa.path is the location of the object.