mikebrady / shairport-sync

AirPlay and AirPlay 2 audio player
Other
7.24k stars 573 forks source link

[Problem]: Stuttering #1884

Closed microfx closed 2 months ago

microfx commented 2 months ago

What happened?

Everytime a new connection is made the first bits come in chopped ... it stutters. I kinda always had this... but now I successively tried all out options (I had soxr best for a long time ... and dialed that down to fast and now tried basic instead of soxr). Anyhow... all options I tried show this phenomenon.

Can I try something else? Maybe I'm searching in the wrong spot?

Relevant log output

-

System Information.

Rpi 5 + Bookworm 6.1.0 aarch64 with jack2 + pisound DAC + nvme SSD

Configuration Information.

Linux MICROLABS-P5 6.1.0-rpi8-rpi-2712 #1 SMP PREEMPT Debian 1:6.1.73-1+rpt1 (2024-01-25) aarch64 GNU/Linux

4.3.2-2-g165431a8-AirPlay2-smi10-OpenSSL-Avahi-ALSA-jack-soxr-sysconfdir:/etc

PulseAudio or PipeWire installed?

How did you install Shairport Sync?

Built from source

Check previous issues

mikebrady commented 2 months ago

Thanks for the post. There are a few things. It would be helpful if you could post the results from

$ shairport-sync --displayConfig

Secondly, what sound server is being used -- is it PipeWire or PulseAudio?

microfx commented 2 months ago

{
        interpolation = "basic"; // aka "stuffing". Default is "auto". Alternatives are "basic" or "soxr". Choose "soxr" only if you have a reasonably fast processor and Shairport Sync has been built with "soxr" support.
        output_backend = "jack"; // Run "shairport-sync -h" to get a list of all output_backends, e.g. "alsa", "pipe", "stdout". The default is the first one.
        volume_control_profile = "dasl_tapered" ; // use this advanced setting to specify how the airplay volume is transferred to the mixer volume.
//      audio_backend_buffer_desired_length = 9845;
        audio_backend_buffer_desired_length_in_seconds = 1; // If set too small, buffer underflow occurs on low-powered machines.
        dbus_service_bus = "system"; // The Shairport Sync dbus interface, if selected at compilation, will appear
        audio_backend_buffer_interpolation_threshold_in_seconds = 0.075; // Advanced feature. If the buffer size drops below this, stop using time-consuming interpolation like soxr to avoid dropouts due to underrun.
        default_airplay_volume = -20.0;
        high_threshold_airplay_volume = -30.0;
        high_volume_idle_timeout_in_minutes = 10;
};

sessioncontrol =
{
        run_this_before_entering_active_state = "/bin/bash /MiCROLABS-SCRIPTS/p5_audio_start.sh"; // make sure the application has executable permission. If it's a script, include the shebang (#!/bin/...) on the first line
        run_this_after_exiting_active_state = "/bin/bash /MiCROLABS-SCRIPTS/p5_audio_stop.sh"; // make sure the application has executable permission. If it's a script, include the shebang (#!/bin/...) on the first line
        active_state_timeout = 50.0; // wait for this number of seconds after play ends before leaving the active state, unless another play session begins.
        allow_session_interruption = "yes"; // set to "yes" to allow another device to interrupt Shairport Sync while it's playing from an existing audio source
        session_timeout = 300; // wait for this number of seconds after a source disappears before terminating the session and becoming available again.
};

alsa =
{
        output_device = "default"; // the name of the alsa output device. Use "shairport-sync -h" to discover the names of ALSA hardware devices. Use "alsamixer" or "aplay" to find out the names of devices, mixers, etc.
};

jack =
{
        client_name = "shairport-sync"; // Set this to the name of the client that should appear in "Connections" when Shairport Sync is active.
        autoconnect_pattern = "system:playback_[12]"; // Set this to a POSIX regular expression pattern that describes the ports you would like to connect to
        soxr_resample_quality = "quick"; // Enable resampling by setting this to "very high", "high", "medium", "low" or "quick"
};

dsp =
{
        loudness = "yes";                      // Set this to "yes" to activate the loudness filter
        loudness_reference_volume_db = -18.0; // Above this level the filter will have no effect anymore. Below this level it will gradually boost the low frequencies.

};

metadata =
{
};

diagnostics =
{
        log_verbosity = 0; // "0" means no debug verbosity, "3" is most verbose.
        log_output_to = "syslog";
};```

I am using jack rodeo backend (I think), custom compiled
mikebrady commented 2 months ago

Thanks. And what about the sound server in the Pi? If it has a GUI, it has a sound server...

microfx commented 2 months ago

hmm... good point! I guess you are talking about alsa 😅 so maybe the 44.1 to 48kHz conversion could be causing this?

cat .asoundrc               ����������������
pcm.!default
{
  type plug
  slave sl1
}

ctl.!default
{
  type hw
  card pisound
}

pcm_slave.sl1
{
  pcm "hw:pisound"
  format S16_LE
  channels 2
  rate 48000
}

pcm_slave.pisound
{
    pcm "hw:pisound"
    rate 48000
}
mikebrady commented 2 months ago

Thanks. What I'm trying to discover is whether PipeWire or PulseAudio are running. If they are, they can interfere with Shairport Sync.

To see if PulseAudio is running, enter:

$ pact

and if it's not installed, we can reasonably conclude that PulseAudio is not running. If something comes back, please post it here.

To see if PipeWire is running, enter:

$ pw-mon

and again, if it generates a response, please post it here...

microfx commented 2 months ago

pact                               21:02
zsh: correct 'pact' to 'pactl' [nyae]? n
zsh: command not found: pact
~/  
pw-mon21:02
        type: PipeWire:Interface:Core
        cookie: 2092503645
        user-name: "jan"
        host-name: "MICROLABS-P5"
        version: "0.3.65"
        name: "pipewire-0"
*       properties:
*               config.name = "pipewire.conf"
*               link.max-buffers = "16"
*               core.daemon = "true"
*               core.name = "pipewire-0"
*               default.clock.min-quantum = "16"
*               cpu.max-align = "16"
*               default.clock.rate = "48000"
*               default.clock.quantum = "1024"
*               default.clock.max-quantum = "2048"
*               default.clock.quantum-limit = "8192"
*               default.video.width = "640"
*               default.video.height = "480"
*               default.video.rate.num = "25"
*               default.video.rate.denom = "1"
*               log.level = "2"
*               clock.power-of-two-quantum = "true"
*               mem.warn-mlock = "false"
*               mem.allow-mlock = "true"
*               settings.check-quantum = "false"
*               settings.check-rate = "false"
*               object.id = "0"
*               object.serial = "0"
added:
        id: 0
        permissions: rwxm
        type: PipeWire:Interface:Core (version 3)
        properties:
                object.serial = "0"
                core.name = "pipewire-0"
added:
        id: 4
        permissions: rwxm
        type: PipeWire:Interface:Profiler (version 3)
        properties:
                object.serial = "4"
added:
        id: 30
        permissions: rwxm
        type: PipeWire:Interface:Metadata (version 3)
        properties:
                object.serial = "30"
                metadata.name = "settings"
added:
        id: 35
        permissions: rwxm
        type: PipeWire:Interface:Metadata (version 3)
        properties:
                factory.id = "6"
                module.id = "5"
                metadata.name = "default"
                client.id = "33"
                object.serial = "35"
added:
        id: 36
        permissions: rwxm
        type: PipeWire:Interface:Metadata (version 3)
        properties:
                metadata.name = "route-settings"
                factory.id = "6"
                module.id = "5"
                client.id = "33"
                object.serial = "36"
added:
        id: 1
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-rt"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-rt.so"
        args: "{
            nice.level    = -11
            #rt.prio      = 88
            #rt.time.soft = -1
            #rt.time.hard = -1
        }"
        properties:
                module.name = "libpipewire-module-rt"
                object.id = "1"
                object.serial = "1"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Use realtime thread scheduling, falling back to RTKit"
                module.usage = "[nice.level=<priority: default 20(don't change)>] [rt.prio=<priority: default 88>] [rt.time.soft=<in usec: default -1] [rt.time.hard=<in usec: default -1] "
                module.version = "0.3.65"
                nice.level = "-11"
added:
        id: 2
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-protocol-native"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-protocol-native.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-protocol-native"
                object.id = "2"
                object.serial = "2"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Native protocol using unix sockets"
                module.version = "0.3.65"
added:
        id: 3
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-profiler"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-profiler.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-profiler"
                object.id = "3"
                object.serial = "3"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Generate Profiling data"
                module.version = "0.3.65"
added:
        id: 5
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-metadata"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-metadata.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-metadata"
                object.id = "5"
                object.serial = "5"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Allow clients to create metadata store"
                module.version = "0.3.65"
added:
        id: 6
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "metadata"
        object-type: PipeWire:Interface:Metadata/3
        properties:
                module.id = "5"
                object.id = "6"
                object.serial = "6"
                factory.name = "metadata"
                factory.type.name = "PipeWire:Interface:Metadata"
                factory.type.version = "3"
added:
        id: 7
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-spa-device-factory"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-spa-device-factory.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-spa-device-factory"
                object.id = "7"
                object.serial = "7"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Provide a factory to make SPA devices"
                module.version = "0.3.65"
added:
        id: 8
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "spa-device-factory"
        object-type: PipeWire:Interface:Device/3
        properties:
                module.id = "7"
                object.id = "8"
                object.serial = "8"
                factory.name = "spa-device-factory"
                factory.type.name = "PipeWire:Interface:Device"
                factory.type.version = "3"
added:
        id: 9
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-spa-node-factory"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-spa-node-factory.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-spa-node-factory"
                object.id = "9"
                object.serial = "9"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Provide a factory to make SPA nodes"
                module.version = "0.3.65"
added:
        id: 10
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "spa-node-factory"
        object-type: PipeWire:Interface:Node/3
        properties:
                module.id = "9"
                object.id = "10"
                object.serial = "10"
                factory.name = "spa-node-factory"
                factory.type.name = "PipeWire:Interface:Node"
                factory.type.version = "3"
added:
        id: 11
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-client-node"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-client-node.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-client-node"
                object.id = "11"
                object.serial = "11"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Allow clients to create and control remote nodes"
                module.version = "0.3.65"
added:
        id: 12
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "client-node"
        object-type: PipeWire:Interface:ClientNode/4
        properties:
                module.id = "11"
                object.id = "12"
                object.serial = "12"
                factory.name = "client-node"
                factory.type.name = "PipeWire:Interface:ClientNode"
                factory.type.version = "4"
added:
        id: 13
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-client-device"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-client-device.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-client-device"
                object.id = "13"
                object.serial = "13"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Allow clients to create and control remote devices"
                module.version = "0.3.65"
added:
        id: 14
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "client-device"
        object-type: Spa:Pointer:Interface:Device/0
        properties:
                factory.usage = "[device.name=<string>]"
                module.id = "13"
                object.id = "14"
                object.serial = "14"
                factory.name = "client-device"
                factory.type.name = "Spa:Pointer:Interface:Device"
                factory.type.version = "0"
added:
        id: 15
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-portal"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-portal.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-portal"
                object.id = "15"
                object.serial = "15"
added:
        id: 16
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-access"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-access.so"
        args: "{
            # access.allowed to list an array of paths of allowed
            # apps.
            #access.allowed = [
            #    /usr/bin/pipewire-media-session
            #]

            # An array of rejected paths.
            #access.rejected = [ ]

            # An array of paths with restricted access.
            #access.restricted = [ ]

            # Anything not in the above lists gets assigned the
            # access.force permission.
            #access.force = flatpak
        }"
        properties:
                module.name = "libpipewire-module-access"
                object.id = "16"
                object.serial = "16"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Perform access check"
                module.usage = "[ access.force=flatpak ] [ access.allowed=<cmd-line> ] [ access.rejected=<cmd-line> ] [ access.restricted=<cmd-line> ] "
                module.version = "0.3.65"
added:
        id: 17
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-adapter"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-adapter.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-adapter"
                object.id = "17"
                object.serial = "17"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Manage adapter nodes"
                module.version = "0.3.65"
added:
        id: 18
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "adapter"
        object-type: PipeWire:Interface:Node/3
        properties:
                factory.usage = "factory.name=<factory-name> [library.name=<library-name>] node.name=<string> "
                module.id = "17"
                object.id = "18"
                object.serial = "18"
                factory.name = "adapter"
                factory.type.name = "PipeWire:Interface:Node"
                factory.type.version = "3"
added:
        id: 19
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-link-factory"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-link-factory.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-link-factory"
                object.id = "19"
                object.serial = "19"
                module.author = "Wim Taymans <wim.taymans@gmail.com>"
                module.description = "Allow clients to create links"
                module.version = "0.3.65"
added:
        id: 20
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "link-factory"
        object-type: PipeWire:Interface:Link/3
        properties:
                factory.usage = "link.output.node=<output-node> [link.output.port=<output-port>] link.input.node=<input-node> [link.input.port=<input-port>] [object.linger=<bool>] [link.passive=<bool>]"
                module.id = "19"
                object.id = "20"
                object.serial = "20"
                factory.name = "link-factory"
                factory.type.name = "PipeWire:Interface:Link"
                factory.type.version = "3"
added:
        id: 21
        permissions: rwxm
        type: PipeWire:Interface:Module (version 3)
        name: "libpipewire-module-session-manager"
        filename: "/usr/lib/aarch64-linux-gnu/pipewire-0.3/libpipewire-module-session-manager.so"
        args: "(null)"
        properties:
                module.name = "libpipewire-module-session-manager"
                object.id = "21"
                object.serial = "21"
                module.author = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
                module.description = "Implements objects for session management"
                module.version = "0.3.65"
added:
        id: 22
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "client-endpoint"
        object-type: PipeWire:Interface:ClientEndpoint/0
        properties:
                module.id = "21"
                object.id = "22"
                object.serial = "22"
                factory.name = "client-endpoint"
                factory.type.name = "PipeWire:Interface:ClientEndpoint"
                factory.type.version = "0"
added:
        id: 23
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "client-session"
        object-type: PipeWire:Interface:ClientSession/0
        properties:
                module.id = "21"
                object.id = "23"
                object.serial = "23"
                factory.name = "client-session"
                factory.type.name = "PipeWire:Interface:ClientSession"
                factory.type.version = "0"
added:
        id: 24
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "session"
        object-type: PipeWire:Interface:Session/0
        properties:
                module.id = "21"
                object.id = "24"
                object.serial = "24"
                factory.name = "session"
                factory.type.name = "PipeWire:Interface:Session"
                factory.type.version = "0"
added:
        id: 25
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "endpoint"
        object-type: PipeWire:Interface:Endpoint/0
        properties:
                module.id = "21"
                object.id = "25"
                object.serial = "25"
                factory.name = "endpoint"
                factory.type.name = "PipeWire:Interface:Endpoint"
                factory.type.version = "0"
added:
        id: 26
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "endpoint-stream"
        object-type: PipeWire:Interface:EndpointStream/0
        properties:
                module.id = "21"
                object.id = "26"
                object.serial = "26"
                factory.name = "endpoint-stream"
                factory.type.name = "PipeWire:Interface:EndpointStream"
                factory.type.version = "0"
added:
        id: 27
        permissions: rwxm
        type: PipeWire:Interface:Factory (version 3)
        name: "endpoint-link"
        object-type: PipeWire:Interface:EndpointLink/0
        properties:
                module.id = "21"
                object.id = "27"
                object.serial = "27"
                factory.name = "endpoint-link"
                factory.type.name = "PipeWire:Interface:EndpointLink"
                factory.type.version = "0"
added:
        id: 31
        permissions: rwxm
        type: PipeWire:Interface:Client (version 3)
        properties:
                pipewire.protocol = "protocol-native"
                pipewire.sec.pid = "2022"
                pipewire.sec.uid = "1000"
                pipewire.sec.gid = "1000"
                module.id = "2"
                object.id = "31"
                object.serial = "31"
                config.name = "pipewire-pulse.conf"
                cpu.max-align = "16"
                default.clock.rate = "48000"
                default.clock.quantum = "1024"
                default.clock.min-quantum = "32"
                default.clock.max-quantum = "2048"
                default.clock.quantum-limit = "8192"
                default.video.width = "640"
                default.video.height = "480"
                default.video.rate.num = "25"
                default.video.rate.denom = "1"
                log.level = "2"
                clock.power-of-two-quantum = "true"
                link.max-buffers = "64"
                mem.warn-mlock = "false"
                mem.allow-mlock = "true"
                settings.check-quantum = "false"
                settings.check-rate = "false"
                application.name = "pipewire"
                application.process.binary = "pipewire"
                application.language = "en_GB.UTF-8"
                application.process.id = "2022"
                application.process.user = "jan"
                application.process.host = "MICROLABS-P5"
                core.version = "0.3.65"
                core.name = "pipewire-jan-2022"
                pipewire.access = "unrestricted"
added:
        id: 33
        permissions: rwxm
        type: PipeWire:Interface:Client (version 3)
        properties:
                pipewire.protocol = "protocol-native"
                pipewire.sec.pid = "2021"
                pipewire.sec.uid = "1000"
                pipewire.sec.gid = "1000"
                module.id = "2"
                object.id = "33"
                object.serial = "33"
                config.name = "/usr/share/wireplumber/wireplumber.conf"
                application.name = "WirePlumber"
                wireplumber.daemon = "true"
                wireplumber.export-core = "true"
                log.level = "2"
                wireplumber.script-engine = "lua-scripting"
                cpu.max-align = "16"
                default.clock.rate = "48000"
                default.clock.quantum = "1024"
                default.clock.min-quantum = "32"
                default.clock.max-quantum = "2048"
                default.clock.quantum-limit = "8192"
                default.video.width = "640"
                default.video.height = "480"
                default.video.rate.num = "25"
                default.video.rate.denom = "1"
                clock.power-of-two-quantum = "true"
                link.max-buffers = "64"
                mem.warn-mlock = "false"
                mem.allow-mlock = "true"
                settings.check-quantum = "false"
                settings.check-rate = "false"
                application.process.binary = "wireplumber"
                application.language = "en_GB.UTF-8"
                application.process.id = "2021"
                application.process.user = "jan"
                application.process.host = "MICROLABS-P5"
                core.version = "0.3.65"
                core.name = "pipewire-jan-2021"
                pipewire.access = "unrestricted"
added:
        id: 34
        permissions: rwxm
        type: PipeWire:Interface:Client (version 3)
        properties:
                pipewire.protocol = "protocol-native"
                pipewire.sec.pid = "2021"
                pipewire.sec.uid = "1000"
                pipewire.sec.gid = "1000"
                module.id = "2"
                object.id = "34"
                object.serial = "34"
                application.name = "WirePlumber [export]"
                config.name = "/usr/share/wireplumber/wireplumber.conf"
                wireplumber.daemon = "true"
                wireplumber.export-core = "true"
                log.level = "2"
                wireplumber.script-engine = "lua-scripting"
                cpu.max-align = "16"
                default.clock.rate = "48000"
                default.clock.quantum = "1024"
                default.clock.min-quantum = "32"
                default.clock.max-quantum = "2048"
                default.clock.quantum-limit = "8192"
                default.video.width = "640"
                default.video.height = "480"
                default.video.rate.num = "25"
                default.video.rate.denom = "1"
                clock.power-of-two-quantum = "true"
                link.max-buffers = "64"
                mem.warn-mlock = "false"
                mem.allow-mlock = "true"
                settings.check-quantum = "false"
                settings.check-rate = "false"
                application.process.binary = "wireplumber"
                application.language = "en_GB.UTF-8"
                application.process.id = "2021"
                application.process.user = "jan"
                application.process.host = "MICROLABS-P5"
                core.version = "0.3.65"
                core.name = "pipewire-jan-2021"
                pipewire.access = "unrestricted"
added:
        id: 65
        permissions: rwxm
        type: PipeWire:Interface:Client (version 3)
        properties:
                pipewire.protocol = "protocol-native"
                pipewire.sec.pid = "3282"
                pipewire.sec.uid = "1000"
                pipewire.sec.gid = "1000"
                module.id = "2"
                object.id = "65"
                object.serial = "65"
                log.level = "0"
                cpu.max-align = "16"
                default.clock.rate = "48000"
                default.clock.quantum = "1024"
                default.clock.min-quantum = "32"
                default.clock.max-quantum = "2048"
                default.clock.quantum-limit = "8192"
                default.video.width = "640"
                default.video.height = "480"
                default.video.rate.num = "25"
                default.video.rate.denom = "1"
                clock.power-of-two-quantum = "true"
                link.max-buffers = "64"
                mem.warn-mlock = "false"
                mem.allow-mlock = "true"
                settings.check-quantum = "false"
                settings.check-rate = "false"
                application.name = "pw-mon"
                application.process.binary = "pw-mon"
                application.language = "en_GB.UTF-8"
                application.process.id = "3282"
                application.process.user = "jan"
                application.process.host = "MICROLABS-P5"
                application.process.session-id = "5"
                core.version = "0.3.65"
                core.name = "pipewire-jan-3282"
                pipewire.access = "unrestricted"
added:
        id: 28
        permissions: rwxm
        type: PipeWire:Interface:Node (version 3)
        params:
        input ports: 0/0
        output ports: 0/0
        state: "suspended"
        properties:
                factory.name = "support.node.driver"
                node.name = "Dummy-Driver"
                node.group = "pipewire.dummy"
                priority.driver = "20000"
                factory.id = "10"
                clock.quantum-limit = "8192"
                node.driver = "true"
                object.id = "28"
                object.serial = "28"
added:
        id: 29
        permissions: rwxm
        type: PipeWire:Interface:Node (version 3)
        params:
        input ports: 0/0
        output ports: 0/0
        state: "suspended"
        properties:
                factory.name = "support.node.driver"
                node.name = "Freewheel-Driver"
                priority.driver = "19000"
                node.group = "pipewire.freewheel"
                node.freewheel = "true"
                factory.id = "10"
                clock.quantum-limit = "8192"
                node.driver = "true"
                object.id = "29"
                object.serial = "29"
added:
        id: 32
        permissions: rwxm
        type: PipeWire:Interface:Node (version 3)
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/raw
                     format : (Id) { F32P, F32LE }
                       rate : (Int) 48000
                   channels : (Int) 2
                   position : (Array) < FL, FR >
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65539    (Spa:Pod:Object:Param:Props:volume)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 104, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65540    (Spa:Pod:Object:Param:Props:mute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65544    (Spa:Pod:Object:Param:Props:channelVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65547    (Spa:Pod:Object:Param:Props:channelMap)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Channel Map"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Id 0        (Spa:)
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65548    (Spa:Pod:Object:Param:Props:monitorMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65549    (Spa:Pod:Object:Param:Props:monitorVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 112, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65551    (Spa:Pod:Object:Param:Props:softMute)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Mute"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 136, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 65552    (Spa:Pod:Object:Param:Props:softVolumes)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Soft Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 1.000000
                Float 0.000000
                Float 10.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:container (5), flags 00000000
              Id 13       (Spa:Array)
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "monitor.channel-volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Monitor channel volume"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Channel mixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.normalize"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Normalize Volumes"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.mix-lfe"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Mix LFE into channels"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Enable upmixing"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool true
                Bool true
                Bool false
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.lfe-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "LFE cutoff frequency"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 150.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.fc-cutoff"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "FC cutoff frequency (Hz)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 12000.000000
                Float 0.000000
                Float 48000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.rear-delay"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rear channels delay (ms)"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 12.000000
                Float 0.000000
                Float 1000.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.stereo-widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Stereo widen"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Float 0.000000
                Float 0.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 168, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.hilbert-taps"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Taps for phase shift of rear"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 255
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 288, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "channelmix.upmix-method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Upmix method to use"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "psd"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 136
                String "none"
                String "Disabled"
                String "simple"
                String "Simple upmixing"
                String "psd"
                String "Passive Surround Decoding"
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 120, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 268      (Spa:Pod:Object:Param:Props:rate)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Rate scaler"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 40 8
                Double 1.000000
                Double 0.000000
                Double 10.000000
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 184, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 269      (Spa:Pod:Object:Param:Props:quality)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Resample Quality"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 4
                Int 0
                Int 14
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 160, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "resample.disable"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Disable Resampling"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 144, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.noise"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "Add noise bits"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              Choice: type Spa:Enum:Choice:Range, flags 00000000 28 4
                Int 0
                Int 0
                Int 16
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 464, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:name (2), flags 00000000
              String "dither.method"
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The dithering method"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "none"
            Prop: key Spa:Pod:Object:Param:PropInfo:params (6), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PropInfo:labels (4), flags 00000000
              Struct: size 320
                String "none"
                String "Disabled"
                String "rectangular"
                String "Rectangular dithering"
                String "triangular"
                String "Triangular dithering"
                String "triangular-hf"
                String "Sloped Triangular dithering"
                String "wannamaker3"
                String "Wannamaker 3 dithering"
                String "shaped5"
                String "Lipshitz 5 dithering"
*         id:2 (Spa:Enum:ParamId:Props)
          Object: size 952, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:volume (65539), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:mute (65540), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:channelVolumes (65544), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:channelMap (65547), flags 00000000
              Array: child.size 4, child.type Spa:Id
                Id 3        (Spa:Enum:AudioChannel:FL)
                Id 4        (Spa:Enum:AudioChannel:FR)
            Prop: key Spa:Pod:Object:Param:Props:softMute (65551), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:softVolumes (65552), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:monitorMute (65548), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:Props:monitorVolumes (65549), flags 00000000
              Array: child.size 4, child.type Spa:Float
                Float 1.000000
                Float 1.000000
            Prop: key Spa:Pod:Object:Param:Props:params (524289), flags 00000000
              Struct: size 704
                String "monitor.channel-volumes"
                Bool true
                String "channelmix.disable"
                Bool false
                String "channelmix.normalize"
                Bool false
                String "channelmix.mix-lfe"
                Bool true
                String "channelmix.upmix"
                Bool true
                String "channelmix.lfe-cutoff"
                Float 150.000000
                String "channelmix.fc-cutoff"
                Float 12000.000000
                String "channelmix.rear-delay"
                Float 12.000000
                String "channelmix.stereo-widen"
                Float 0.000000
                String "channelmix.hilbert-taps"
                Int 0
                String "channelmix.upmix-method"
                String "psd"
                String "resample.quality"
                Int 4
                String "resample.disable"
                Bool false
                String "dither.noise"
                Int 0
                String "dither.method"
                String "none"
*         id:10 (Spa:Enum:ParamId:EnumPortConfig)
          Object: size 192, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:EnumPortConfig (10)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 32 4
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 0        (Spa:Enum:ParamPortConfigMode:none)
                Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
                Id 2        (Spa:Enum:ParamPortConfigMode:convert)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Choice: type Spa:Enum:Choice:Enum, flags 00000000 28 4
                Bool false
                Bool false
                Bool true
*         id:11 (Spa:Enum:ParamId:PortConfig)
          Object: size 272, type Spa:Pod:Object:Param:PortConfig (262152), id Spa:Enum:ParamId:PortConfig (11)
            Prop: key Spa:Pod:Object:Param:PortConfig:direction (1), flags 00000000
              Choice: type Spa:Enum:Choice:None, flags 00000000 20 4
                Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:PortConfig:mode (2), flags 00000000
              Id 3        (Spa:Enum:ParamPortConfigMode:dsp)
            Prop: key Spa:Pod:Object:Param:PortConfig:monitor (3), flags 00000000
              Bool true
            Prop: key Spa:Pod:Object:Param:PortConfig:control (4), flags 00000000
              Bool false
            Prop: key Spa:Pod:Object:Param:PortConfig:format (5), flags 00000000
              Object: size 136, type Spa:Pod:Object:Param:Format (262147), id Spa:Enum:ParamId:Buffers (5)
                Prop: key Spa:Pod:Object:Param:Format:mediaType (1), flags 00000000
                  Id 1        (Spa:Enum:MediaType:audio)
                Prop: key Spa:Pod:Object:Param:Format:mediaSubtype (2), flags 00000000
                  Id 1        (Spa:Enum:MediaSubtype:raw)
                Prop: key Spa:Pod:Object:Param:Format:Audio:format (65537), flags 00000000
                  Id 518      (Spa:Enum:AudioFormat:F32P)
                Prop: key Spa:Pod:Object:Param:Format:Audio:channels (65540), flags 00000000
                  Int 2
                Prop: key Spa:Pod:Object:Param:Format:Audio:position (65541), flags 00000000
                  Array: child.size 4, child.type Spa:Id
                    Id 3        (Spa:Enum:AudioChannel:FL)
                    Id 4        (Spa:Enum:AudioChannel:FR)
        input ports: 2/65
        output ports: 2/0
        state: "suspended"
        properties:
                node.name = "auto_null"
                node.description = "Dummy Output"
                audio.rate = "48000"
                audio.channels = "2"
                audio.position = "FL,FR"
                media.class = "Audio/Sink"
                factory.name = "support.null-audio-sink"
                node.virtual = "true"
                monitor.channel-volumes = "true"
                factory.id = "18"
                clock.quantum-limit = "8192"
                client.id = "31"
                node.driver = "true"
                factory.mode = "merge"
                audio.adapt.follower = ""
                library.name = "audioconvert/libspa-audioconvert"
                object.id = "32"
                object.serial = "32"
added:
        id: 37
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "input"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/dsp
                     format : (Id) F32P
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "32 bit float mono audio"
                audio.channel = "FL"
                port.id = "0"
                port.physical = "true"
                port.terminal = "true"
                object.path = "Dummy Output:playback_0"
                port.name = "playback_FL"
                port.alias = "Dummy Output:playback_FL"
                port.direction = "in"
                node.id = "32"
                object.id = "37"
                object.serial = "37"
added:
        id: 38
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "output"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/dsp
                     format : (Id) F32P
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "32 bit float mono audio"
                audio.channel = "FL"
                port.monitor = "true"
                port.id = "0"
                object.path = "Dummy Output:monitor_0"
                port.name = "monitor_FL"
                port.alias = "Dummy Output:monitor_FL"
                port.direction = "out"
                node.id = "32"
                object.id = "38"
                object.serial = "38"
added:
        id: 39
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "input"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/dsp
                     format : (Id) F32P
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "32 bit float mono audio"
                audio.channel = "FR"
                port.id = "1"
                port.physical = "true"
                port.terminal = "true"
                object.path = "Dummy Output:playback_1"
                port.name = "playback_FR"
                port.alias = "Dummy Output:playback_FR"
                port.direction = "in"
                node.id = "32"
                object.id = "39"
                object.serial = "39"
added:
        id: 40
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "output"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           audio/dsp
                     format : (Id) F32P
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "32 bit float mono audio"
                audio.channel = "FR"
                port.monitor = "true"
                port.id = "1"
                object.path = "Dummy Output:monitor_1"
                port.name = "monitor_FR"
                port.alias = "Dummy Output:monitor_FR"
                port.direction = "out"
                node.id = "32"
                object.id = "40"
                object.serial = "40"
added:
        id: 41
        permissions: rwxm
        type: PipeWire:Interface:Node (version 3)
        params:
*         id:1 (Spa:Enum:ParamId:PropInfo)
          Object: size 152, type Spa:Pod:Object:Param:PropInfo (262145), id Spa:Enum:ParamId:PropInfo (1)
            Prop: key Spa:Pod:Object:Param:PropInfo:id (1), flags 00000000
              Id 257      (Spa:Pod:Object:Param:Props:device)
            Prop: key Spa:Pod:Object:Param:PropInfo:description (7), flags 00000000
              String "The ALSA device"
            Prop: key Spa:Pod:Object:Param:PropInfo:type (3), flags 00000000
              String "default"
*         id:2 (Spa:Enum:ParamId:Props)
          Object: size 96, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
            Prop: key Spa:Pod:Object:Param:Props:device (257), flags 00000000
              String "default"
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 3        (Spa:Enum:IO:Clock)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 160
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 7        (Spa:Enum:IO:Position)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 1688
        input ports: 2/256
        output ports: 2/256
        state: "suspended"
        properties:
                factory.name = "api.alsa.seq.bridge"
                node.name = "Midi-Bridge"
                factory.id = "10"
                client.id = "34"
                clock.quantum-limit = "8192"
                device.api = "alsa"
                media.class = "Midi/Bridge"
                node.driver = "true"
                object.id = "41"
                object.serial = "41"
added:
        id: 42
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "input"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           application/control
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "8 bit raw midi"
                object.path = "alsa:seq:default:client_14:playback_0"
                port.name = "Midi Through:(playback_0) Midi Through Port-0"
                port.alias = "Midi Through:Midi Through Port-0"
                port.id = "0"
                port.physical = "true"
                port.terminal = "true"
                port.direction = "in"
                node.id = "41"
                object.id = "42"
                object.serial = "42"
added:
        id: 43
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "input"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           application/control
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "8 bit raw midi"
                object.path = "alsa:seq:default:client_16:playback_0"
                port.name = "pisound:(playback_0) pisound MIDI PS-3ZAP7QN"
                port.alias = "pisound:pisound MIDI PS-3ZAP7QN"
                api.alsa.card = "0"
                port.id = "1"
                port.physical = "true"
                port.terminal = "true"
                port.direction = "in"
                node.id = "41"
                object.id = "43"
                object.serial = "43"
added:
        id: 44
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "output"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           application/control
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "8 bit raw midi"
                object.path = "alsa:seq:default:client_14:capture_0"
                port.name = "Midi Through:(capture_0) Midi Through Port-0"
                port.alias = "Midi Through:Midi Through Port-0"
                port.id = "0"
                port.physical = "true"
                port.terminal = "true"
                port.direction = "out"
                node.id = "41"
                object.id = "44"
                object.serial = "44"
added:
        id: 45
        permissions: rwxm
        type: PipeWire:Interface:Port (version 3)
        direction: "output"
        params:
*         id:3 (Spa:Enum:ParamId:EnumFormat)
           application/control
*         id:6 (Spa:Enum:ParamId:Meta)
          Object: size 56, type Spa:Pod:Object:Param:Meta (262149), id Spa:Enum:ParamId:Meta (6)
            Prop: key Spa:Pod:Object:Param:Meta:type (1), flags 00000000
              Id 1        (Spa:Pointer:Meta:Header)
            Prop: key Spa:Pod:Object:Param:Meta:size (2), flags 00000000
              Int 32
*         id:7 (Spa:Enum:ParamId:IO)
          Object: size 56, type Spa:Pod:Object:Param:IO (262150), id Spa:Enum:ParamId:IO (7)
            Prop: key Spa:Pod:Object:Param:IO:id (1), flags 00000000
              Id 1        (Spa:Enum:IO:Buffers)
            Prop: key Spa:Pod:Object:Param:IO:size (2), flags 00000000
              Int 8
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 0        (Spa:Enum:Direction:Input)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 0.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
*         id:15 (Spa:Enum:ParamId:Latency)
          Object: size 176, type Spa:Pod:Object:Param:Latency (262155), id Spa:Enum:ParamId:Latency (15)
            Prop: key Spa:Pod:Object:Param:Latency:direction (1), flags 00000000
              Id 1        (Spa:Enum:Direction:Output)
            Prop: key Spa:Pod:Object:Param:Latency:minQuantum (2), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:maxQuantum (3), flags 00000000
              Float 1.000000
            Prop: key Spa:Pod:Object:Param:Latency:minRate (4), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:maxRate (5), flags 00000000
              Int 0
            Prop: key Spa:Pod:Object:Param:Latency:minNs (6), flags 00000000
              Long 0
            Prop: key Spa:Pod:Object:Param:Latency:maxNs (7), flags 00000000
              Long 0
        properties:
                format.dsp = "8 bit raw midi"
                object.path = "alsa:seq:default:client_16:capture_0"
                port.name = "pisound:(capture_0) pisound MIDI PS-3ZAP7QN"
                port.alias = "pisound:pisound MIDI PS-3ZAP7QN"
                api.alsa.card = "0"
                port.id = "1"
                port.physical = "true"
                port.terminal = "true"
                port.direction = "out"
                node.id = "41"
                object.id = "45"
                object.serial = "45"
added:
        id: 46
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video19"
                device.api = "v4l2"
                device.bus-path = "platform-1000800000.codec"
                device.capabilities = ":"
                device.description = "rpivid"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000800000.codec"
                device.plugged.usec = "5595368"
                device.product.name = "rpivid"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000800000.codec/video4linux/video19"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "46"
                object.serial = "46"
                object.path = "v4l2:/dev/video19"
                api.v4l2.cap.driver = "rpivid"
                api.v4l2.cap.card = "rpivid"
                api.v4l2.cap.bus_info = "platform:rpivid"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "84204000"
                api.v4l2.cap.device-caps = "04204000"
added:
        id: 47
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video20"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be"
                device.plugged.usec = "5596918"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video20"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "47"
                object.serial = "47"
                object.path = "v4l2:/dev/video20"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 48
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video21"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.2"
                device.plugged.usec = "5595773"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video21"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "48"
                object.serial = "48"
                object.path = "v4l2:/dev/video21"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 49
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video22"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.3"
                device.plugged.usec = "5600938"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video22"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "49"
                object.serial = "49"
                object.path = "v4l2:/dev/video22"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 50
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video23"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.4"
                device.plugged.usec = "5595766"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video23"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "50"
                object.serial = "50"
                object.path = "v4l2:/dev/video23"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04a00000"
added:
        id: 51
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video24"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.5"
                device.plugged.usec = "5623975"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video24"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "51"
                object.serial = "51"
                object.path = "v4l2:/dev/video24"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 52
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video25"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.6"
                device.plugged.usec = "5614765"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video25"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "52"
                object.serial = "52"
                object.path = "v4l2:/dev/video25"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 53
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video26"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.7"
                device.plugged.usec = "5599975"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video26"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "53"
                object.serial = "53"
                object.path = "v4l2:/dev/video26"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 54
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video27"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.8"
                device.plugged.usec = "5599977"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video27"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "54"
                object.serial = "54"
                object.path = "v4l2:/dev/video27"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 55
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video28"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.9"
                device.plugged.usec = "5600959"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video28"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "55"
                object.serial = "55"
                object.path = "v4l2:/dev/video28"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "0c200000"
added:
        id: 56
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video29"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.10"
                device.plugged.usec = "5603507"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video29"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "56"
                object.serial = "56"
                object.path = "v4l2:/dev/video29"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 57
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video30"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.11"
                device.plugged.usec = "5626524"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video30"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "57"
                object.serial = "57"
                object.path = "v4l2:/dev/video30"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 58
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video31"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":video_output:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.12"
                device.plugged.usec = "5626431"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video31"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "58"
                object.serial = "58"
                object.path = "v4l2:/dev/video31"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04202000"
added:
        id: 59
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video32"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.13"
                device.plugged.usec = "5628645"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video32"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "59"
                object.serial = "59"
                object.path = "v4l2:/dev/video32"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04a00000"
added:
        id: 60
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video33"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.14"
                device.plugged.usec = "5631126"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video33"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "60"
                object.serial = "60"
                object.path = "v4l2:/dev/video33"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 61
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video34"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.15"
                device.plugged.usec = "5606952"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video34"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "61"
                object.serial = "61"
                object.path = "v4l2:/dev/video34"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 62
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video35"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.16"
                device.plugged.usec = "5609309"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video35"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "62"
                object.serial = "62"
                object.path = "v4l2:/dev/video35"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 63
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video36"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":capture:"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.17"
                device.plugged.usec = "5616835"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video36"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "63"
                object.serial = "63"
                object.path = "v4l2:/dev/video36"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "04201000"
added:
        id: 64
        permissions: rwxm
        type: PipeWire:Interface:Device (version 3)
        params:
        properties:
                api.v4l2.path = "/dev/video37"
                device.api = "v4l2"
                device.bus-path = "platform-1000880000.pisp_be"
                device.capabilities = ":"
                device.description = "pispbe"
                device.enum.api = "udev"
                device.name = "v4l2_device.platform-1000880000.pisp_be.18"
                device.plugged.usec = "5631739"
                device.product.name = "pispbe"
                device.subsystem = "video4linux"
                device.sysfs.path = "/devices/platform/axi/1000880000.pisp_be/video4linux/video37"
                media.class = "Video/Device"
                factory.id = "14"
                client.id = "34"
                object.id = "64"
                object.serial = "64"
                object.path = "v4l2:/dev/video37"
                api.v4l2.cap.driver = "pispbe"
                api.v4l2.cap.card = "pispbe"
                api.v4l2.cap.bus_info = "platform:1000880000.pisp_be"
                api.v4l2.cap.version = "6.1.73"
                api.v4l2.cap.capabilities = "8ca03000"
                api.v4l2.cap.device-caps = "0c200000"
mikebrady commented 2 months ago

Thanks -- so you have PipeWire installed. Actually, the PipeWire backend of Shairport Sync is quite good now. Have you a special reason for using Jack?

microfx commented 2 months ago

Yeah... I mean I want to... but this jack setup was a few years to learn / build.

I have audio input on that DAC and librespot setup in jack ... and I am happy it works. I have no clue if I am proficient enough to switch to PipeWire. I think I tried it once... but since I am not using it I guess I have failed 🤪

mikebrady commented 2 months ago

Just thinking about this -- Shairport Sync's PipeWire backend was completely rebuilt some time ago and it pretty good now, and really pretty easy to use. I guess -- but don't know -- that Librespot's use of the Jack interface is bridged into PipeWire anyway.

Overall, therefore, it might not be too hard to experiment with using Shairport Sync's PipeWire backend without disturbing the Librespot setup. (Note that Shairport Sync's PipeWire backend is pw. It is not pipe, which is for a standard Unix pipe output.)

microfx commented 2 months ago

Yes, ... I will do a fresh system soon. This linux is completely misconfigured ... also ARM (RT ... for realtime) kernel etc. pp. ... built around low latency in JACK. There are a few threads about PW in the forum from  blokas labs / for pisound ... where nobody helped them .. so I figured it's work of a few days / weeks when I try it as well. I will definitely... thanks for coming back / rhinking about this!Am 04.08.2024 um 13:27 schrieb Mike Brady @.***>: Just thinking about this -- Shairport Sync's PipeWire backend was completely rebuilt some time ago and it pretty good now, and really pretty easy to use. I guess -- but don't know -- that Librespot's use of the Jack interface is bridged into PipeWire anyway. Overall, therefore, it might not be too hard to experiment with using Shairport Sync's PipeWire backend without disturbing the Librespot setup. (Note that Shairport Sync's PipeWire backend is pw. It is not pipe, which is for a standard Unix pipe output.)

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

microfx commented 2 months ago

removed 'audio_backend_buffer_desired_length_in_seconds' from my config and now it's gone! huray!