pipewire over ethernet howto with VCV Rack

Gespeichert von artbody am Di., 11.06.2024 - 13:16

Hy there

today i'll tell you how i set up my sound system on a gentoo linux

there are :

my main PC , then one older PC and a Laütp

what i have and what i want

pipewire{,-pulse}  wireplumber with its moduls

the older PC is artbodybox the Laptop artbodyLap and the MainPC artbody (naming)

I want that artbodybox and artbodyLap send audio to artbody.

then over rtpmidid and VCV Rack on all 3 a realtime Midi connection

so the VCV Rack on the MainPc controlles 2 other VCV Racks over Midi and gets the sound from these back.

easy ...

BUT

a tonn of documentations was waiting for me

so lets start, first for 2 mashines

first you have to have a running pipewire system

in ~/config/pipewire/pipewire.conf you should add following lines

important : chance the local.ifname to the name of the Ethernet device and the IP to the pipewire.conf under

 context.modules = [
    #{ name = <module-name>
    #    ( args  = { <key> = <value> ... } )
    #    ( flags = [ ( ifexists ) ( nofail ) ] )
    #    ( condition = [ { <key> = <value> ... } ... ] )
    #}
    #  
     {   name = libpipewire-module-rtp-source
     args = {
        local.ifname = "enp9s0"
        source.ip = "0.0.0.0"
        source.port = 46000
        sess.ignore-ssrc = true         # so that we can restart the sender
        stream.props = {
            media.class = "Audio/Source"
            node.name = "rtp-source"
        }
     }
     }
     
     {   name = libpipewire-module-rtp-sink
      args = {
        local.ifname = "enp9s0"
        destination.ip = "192.168.2.103"
        destination.port = 46000
        stream.props = {
            media.class = "Audio/Sink"
            node.name = "rtp-sink"
    }
     }
    }
    

 

 

systemctl --user status pipewire{,-pulse}  wireplumber
● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-06-11 11:17:47 CEST; 47min ago
TriggeredBy: ● pipewire.socket
   Main PID: 4710 (pipewire)
      Tasks: 3 (limit: 77038)
     Memory: 14.0M (peak: 15.7M)
        CPU: 6.159s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─4710 /usr/bin/pipewire

Jun 11 11:17:47 artbody systemd[2195]: Started PipeWire Multimedia Service.

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-06-11 11:23:42 CEST; 41min ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 5105 (pipewire-pulse)
      Tasks: 2 (limit: 77038)
     Memory: 29.3M (peak: 29.7M)
        CPU: 10.603s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─5105 /usr/bin/pipewire-pulse

Jun 11 11:23:42 artbody systemd[2195]: Started PipeWire PulseAudio.

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-06-11 11:17:47 CEST; 47min ago
   Main PID: 4713 (wireplumber)
      Tasks: 5 (limit: 77038)
     Memory: 5.9M (peak: 6.7M)
        CPU: 342ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─4713 /usr/bin/wireplumber

Jun 11 11:17:47 artbody systemd[2195]: Started Multimedia Service Session Manager.
 

loocks like this on the MainPC

same on the other mashines

with

 wpctl status
PipeWire 'pipewire-0' [1.0.5, achim@artbody, cookie:3156980841]
 └─ Clients:
        34. pipewire                            [1.0.5, achim@artbody, pid:8005]
        35. pipewire                            [1.0.5, achim@artbody, pid:8005]
        38. pipewire                            [1.0.5, achim@artbody, pid:8007]
        39. Firefox                             [1.0.5, achim@artbody, pid:2888]
        40. WirePlumber                         [1.0.5, achim@artbody, pid:8006]
        41. WirePlumber [export]                [1.0.5, achim@artbody, pid:8006]
        87. Efl Volume Control                  [1.0.5, achim@artbody, pid:8035]
       110. python3.12                          [1.0.5, achim@artbody, pid:8053]
       115. wpctl                               [1.0.5, achim@artbody, pid:11319]

Audio
 ├─ Devices:
 │      50. Scarlett 2i2 3rd Gen                [alsa]
 │      51. Navi 21/23 HDMI/DP Audio Controller [alsa]
 │      52. CM102-A+/102S+ Audio Controller     [alsa]
 │      53. Starship/Matisse HD Audio Controller [alsa]
 │  
 ├─ Sinks:
 │      37. artbody                             [vol: 1.00]
 │      60. Scarlett 2i2 3rd Gen Headphones / Line 1-2 [vol: 0.62]
 │      63. Navi 21/23 HDMI/DP Audio Controller Digital Stereo (HDMI 3) [vol: 0.33]
 │  *   64. CM102-A+/102S+ Audio Controller Analog Stereo [vol: 0.34]
 │      65. Starship/Matisse HD Audio Controller Analog Stereo [vol: 0.47 MUTED]
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │      36. artbody                             [vol: 1.00]
 │      61. Scarlett 2i2 3rd Gen Input 2 Mic/Inst/Line [vol: 1.00]
 │      62. Scarlett 2i2 3rd Gen Input 1 Mic/Inst/Line [vol: 1.00]
 │  *   66. Starship/Matisse HD Audio Controller Analog Stereo [vol: 0.11]
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:
        88. Efl Volume Control                                          
             92. input_FL        < artbody:receive_FL   [active]
             93. monitor_FL     
             94. input_FR        < artbody:receive_FR   [active]
             95. monitor_FR     
        89. Efl Volume Control                                          
             96. input_MONO      < Scarlett 2i2 USB:capture_MONO        [active]
             97. monitor_MONO   
        90. Efl Volume Control                                          
             98. input_MONO      < Scarlett 2i2 USB:capture_MONO        [active]
             99. monitor_MONO   
        91. Efl Volume Control                                          
            100. input_FL        < ALC1220 Analog:capture_FL    [active]
            101. monitor_FL     
            102. input_FR        < ALC1220 Analog:capture_FR    [active]
            103. monitor_FR     
       118. Efl Volume Control                                          
            119. input_FL        < Audio Advantage MicroII:monitor_FL   [active]
            120. monitor_FL     
            121. input_FR        < Audio Advantage MicroII:monitor_FR   [active]
            122. monitor_FR     

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Settings
 └─ Default Configured Node Names:
         0. Audio/Sink    alsa_output.usb-C-Media_INC._USB_Sound_Device-00.analog-stereo
 

you should see something like this

next step is coming soon