npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pactljson

v1.0.1

Published

A fully featured pactl wrapper that outputs JSON instead of pactl's native format.

Downloads

22

Readme

Description

This is a wrapper cli and library for pactl. It's main purpose is to provide a reasonable JSON output format.

Known issues

  • module.value in the output of pactl list modules is kept as a string because I had no good idea for a JSON representation:
    module.value: "[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]"
  • I have only tested list, info and stat All the other methods are implemented and probably work, but the output might not be formatted in a way that makes sense For list I have verified all possible types: modules, sinks, sources, sink-inputs, source-outputs, clients, samples, cards, message-handler

CLI usage exapmles

Install via npm i -g pactljson, then use it exactly like pactl. E.g. to get all sound cards in JSON format:

pactljson list cards

Code usage Examples

import { info } from 'pactljson';

async function main() {
    const infoObj = await info();
    const infoJson = JSON.stringify(infoObj, null, '  ');
    console.log(infoJson);
}

main().catch(console.error);
import { list } from 'pactljson';

async function main() {
    const sourcesObj = await list({type: 'sources'});
    const sourcesJson = JSON.stringify(sourcesObj, null, '  ');
    console.log(sourcesJson);

    const cardsObj = await list({type: 'cards'});
    const cardsJson = JSON.stringify(cardsObj, null, '  ');
    console.log(cardsJson);
}

main().catch(console.error);
import { setCardProfile } from 'pactljson';

async function main() {
    try {
        await setCardProfile({card: 1, profile: 'output:analog-stereo'});
        console.log('Card profile set successfully');
    } catch (e) {
        console.error(e);
    }
}

main().catch(console.error);

Available methods

async function stat({ server, clientName })
async function info({ server, clientName })
async function list({ server, clientName, short, type })
async function exit({ server, clientName })
async function uploadSample({ server, clientName, filename, name })
async function playSample({ server, clientName, name, sink })
async function removeSample({ server, clientName, name })
async function loadModule({ server, clientName, name, args = [] })
async function unloadModule({ server, clientName, name, n })
async function moveSinkInput({ server, clientName, n, sink })
async function moveSourceOutput({ server, clientName, n, source })
async function suspendSink({ server, clientName, name, n, state })
async function suspendSource({ server, clientName, name, n, state })
async function setCardProfile({ server, clientName, card, profile })
async function getDefaultSink({ server, clientName })
async function getDefaultSource({ server, clientName })
async function setDefaultSink({ server, clientName, name })
async function setDefaultSource({ server, clientName, name })
async function setSinkPort({ server, clientName, name, n, port })
async function setSourcePort({ server, clientName, name, n, port })
async function getSinkVolume({ server, clientName, name, n })
async function getSourceVolume({ server, clientName, name, n })
async function getSinkMute({ server, clientName, name, n })
async function getSourceMute({ server, clientName, name, n })
async function setSinkVolume({ server, clientName, name, n, volume, volumes = [] })
async function setSourceVolume({ server, clientName, name, n, volume, volumes = [] })
async function setSinkInputVolume({ server, clientName, name, n, volume, volumes = [] })
async function setSourceOutputVolume({ server, clientName, name, n, volume, volumes = [] })
async function setSinkMute({ server, clientName, name, n, state })
async function setSourceMute({ server, clientName, name, n, state })
async function setSinkInputMute({ server, clientName, n, state })
async function setSourceOutputMute({ server, clientName, n, state })
async function setSinkFormats({ server, clientName, n, formats })
async function setPortLatencyOffset({ server, clientName, cardName, cardN, port, offset })
async function sendMessage({ server, clientName, recipient, message, messageParameters })
async function subscribe({ server, clientName })

// You can also use any of these for more direct pactl access, e.g. in case pactl implements new methods that this library doesn't support yet:
async function _pactlRaw(args=[])
async function _pactlObj(args=[])
async function pactl({server, clientName, args = [] })
function rawPactlToObj(rawPactlOutput)

Example outputs

Example output of await info(); and pactljson info:

{
  "Server String": "/run/user/1000/pulse/native",
  "Library Protocol Version": "35",
  "Server Protocol Version": "35",
  "Is Local": "yes",
  "Client Index": "990",
  "Tile Size": "65472",
  "User Name": "fedora",
  "Host Name": "fedora",
  "Server Name": "PulseAudio (on PipeWire 0.3.56)",
  "Server Version": "15.0.0",
  "Default Sample Specification": {
    "name": "float32le",
    "sampleSize": 32,
    "samplingRate": 48000,
    "endianess": "Little",
    "dataType": "Float",
    "channelCount": 2
  },
  "Default Channel Map": [
    "front-left",
    "front-right"
  ],
  "Default Sink": "alsa_output.pci-0000_00_1f.3.analog-stereo",
  "Default Source": "alsa_output.pci-0000_00_1f.3.analog-stereo.monitor",
  "Cookie": "81ed:b81d"
}

Example output of await list({type: 'cards'}); and pactljson list cards:

{
  "Card #40": {
    "Name": "alsa_card.pci-0000_00_1f.3",
    "Driver": "alsa",
    "Owner Module": "n/a",
    "Properties": {
      "device.enum.api": "udev",
      "device.api": "alsa",
      "media.class": "Audio/Device",
      "api.alsa.path": "hw:0",
      "api.alsa.card": "0",
      "api.alsa.card.name": "HDA Intel PCH",
      "api.alsa.card.longname": "HDA Intel PCH at 0xec510000 irq 153",
      "device.plugged.usec": "22073351",
      "device.bus_path": "pci-0000:00:1f.3",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1f.3/sound/card0",
      "device.bus": "pci",
      "device.subsystem": "sound",
      "device.vendor.id": "0x8086",
      "device.vendor.name": "Intel Corporation",
      "device.product.id": "0xa171",
      "device.product.name": "CM238 HD Audio Controller",
      "device.form_factor": "internal",
      "device.name": "alsa_card.pci-0000_00_1f.3",
      "device.description": "Built-in Audio",
      "device.nick": "HDA Intel PCH",
      "device.icon_name": "audio-card-pci",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio0",
      "factory.id": "14",
      "client.id": "31",
      "object.id": "40",
      "object.serial": "40",
      "object.path": "alsa:pcm:0",
      "alsa.card": "0",
      "alsa.card_name": "HDA Intel PCH",
      "alsa.long_card_name": "HDA Intel PCH at 0xec510000 irq 153",
      "alsa.driver_name": "snd_hda_intel",
      "device.string": "0"
    },
    "Profiles": {
      "off": {
        "name": "Off",
        "info": {
          "sinks": 0,
          "sources": 0,
          "priority": 0,
          "available": "yes"
        }
      },
      "output:analog-stereo+input:analog-stereo": {
        "name": "Analog Stereo Duplex",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 6565,
          "available": "yes"
        }
      },
      "output:analog-stereo": {
        "name": "Analog Stereo Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 6500,
          "available": "yes"
        }
      },
      "output:hdmi-stereo+input:analog-stereo": {
        "name": "Digital Stereo (HDMI) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 5965,
          "available": "yes"
        }
      },
      "output:hdmi-stereo": {
        "name": "Digital Stereo (HDMI) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 5900,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra1+input:analog-stereo": {
        "name": "Digital Stereo (HDMI 2) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 5765,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra2+input:analog-stereo": {
        "name": "Digital Stereo (HDMI 3) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 5765,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra3+input:analog-stereo": {
        "name": "Digital Stereo (HDMI 4) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 5765,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra4+input:analog-stereo": {
        "name": "Digital Stereo (HDMI 5) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 5765,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra1": {
        "name": "Digital Stereo (HDMI 2) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 5700,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra2": {
        "name": "Digital Stereo (HDMI 3) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 5700,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra3": {
        "name": "Digital Stereo (HDMI 4) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 5700,
          "available": "yes"
        }
      },
      "output:hdmi-stereo-extra4": {
        "name": "Digital Stereo (HDMI 5) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 5700,
          "available": "yes"
        }
      },
      "output:hdmi-surround+input:analog-stereo": {
        "name": "Digital Surround 5.1 (HDMI) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 865,
          "available": "yes"
        }
      },
      "output:hdmi-surround71+input:analog-stereo": {
        "name": "Digital Surround 7.1 (HDMI) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 865,
          "available": "yes"
        }
      },
      "output:hdmi-surround": {
        "name": "Digital Surround 5.1 (HDMI) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 800,
          "available": "yes"
        }
      },
      "output:hdmi-surround71": {
        "name": "Digital Surround 7.1 (HDMI) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 800,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra1+input:analog-stereo": {
        "name": "Digital Surround 5.1 (HDMI 2) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra1+input:analog-stereo": {
        "name": "Digital Surround 7.1 (HDMI 2) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra2+input:analog-stereo": {
        "name": "Digital Surround 5.1 (HDMI 3) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra2+input:analog-stereo": {
        "name": "Digital Surround 7.1 (HDMI 3) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra3+input:analog-stereo": {
        "name": "Digital Surround 5.1 (HDMI 4) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra3+input:analog-stereo": {
        "name": "Digital Surround 7.1 (HDMI 4) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra4+input:analog-stereo": {
        "name": "Digital Surround 5.1 (HDMI 5) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra4+input:analog-stereo": {
        "name": "Digital Surround 7.1 (HDMI 5) Output + Analog Stereo Input",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 665,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra1": {
        "name": "Digital Surround 5.1 (HDMI 2) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra1": {
        "name": "Digital Surround 7.1 (HDMI 2) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra2": {
        "name": "Digital Surround 5.1 (HDMI 3) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra2": {
        "name": "Digital Surround 7.1 (HDMI 3) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra3": {
        "name": "Digital Surround 5.1 (HDMI 4) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra3": {
        "name": "Digital Surround 7.1 (HDMI 4) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround-extra4": {
        "name": "Digital Surround 5.1 (HDMI 5) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "output:hdmi-surround71-extra4": {
        "name": "Digital Surround 7.1 (HDMI 5) Output",
        "info": {
          "sinks": 1,
          "sources": 0,
          "priority": 600,
          "available": "yes"
        }
      },
      "input:analog-stereo": {
        "name": "Analog Stereo Input",
        "info": {
          "sinks": 0,
          "sources": 1,
          "priority": 65,
          "available": "yes"
        }
      },
      "pro-audio": {
        "name": "Pro Audio",
        "info": {
          "sinks": 6,
          "sources": 1,
          "priority": 1,
          "available": "yes"
        }
      }
    },
    "Active Profile": "output:analog-stereo",
    "Ports": {
      "analog-input-internal-mic": {
        "name": "Internal Microphone",
        "info": {
          "type": "Mic",
          "priority": 8900,
          "latency offset": "0",
          "availability group": "Legacy 1",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "mic",
          "port.availability-group": "Legacy 1",
          "device.icon_name": "audio-input-microphone",
          "card.profile.port": "0"
        },
        "Part of profile(s)": [
          "input:analog-stereo",
          "output:analog-stereo+input:analog-stereo",
          "output:hdmi-stereo+input:analog-stereo",
          "output:hdmi-surround+input:analog-stereo",
          "output:hdmi-surround71+input:analog-stereo",
          "output:hdmi-stereo-extra1+input:analog-stereo",
          "output:hdmi-surround-extra1+input:analog-stereo",
          "output:hdmi-surround71-extra1+input:analog-stereo",
          "output:hdmi-stereo-extra2+input:analog-stereo",
          "output:hdmi-surround-extra2+input:analog-stereo",
          "output:hdmi-surround71-extra2+input:analog-stereo",
          "output:hdmi-stereo-extra3+input:analog-stereo",
          "output:hdmi-surround-extra3+input:analog-stereo",
          "output:hdmi-surround71-extra3+input:analog-stereo",
          "output:hdmi-stereo-extra4+input:analog-stereo",
          "output:hdmi-surround-extra4+input:analog-stereo",
          "output:hdmi-surround71-extra4+input:analog-stereo"
        ]
      },
      "analog-input-headphone-mic": {
        "name": "Microphone",
        "info": {
          "type": "Mic",
          "priority": 8700,
          "latency offset": "0",
          "availability group": "Legacy 2",
          "available": "no"
        },
        "Properties": {
          "port.type": "mic",
          "port.availability-group": "Legacy 2",
          "device.icon_name": "audio-input-microphone",
          "card.profile.port": "1"
        },
        "Part of profile(s)": [
          "input:analog-stereo",
          "output:analog-stereo+input:analog-stereo",
          "output:hdmi-stereo+input:analog-stereo",
          "output:hdmi-surround+input:analog-stereo",
          "output:hdmi-surround71+input:analog-stereo",
          "output:hdmi-stereo-extra1+input:analog-stereo",
          "output:hdmi-surround-extra1+input:analog-stereo",
          "output:hdmi-surround71-extra1+input:analog-stereo",
          "output:hdmi-stereo-extra2+input:analog-stereo",
          "output:hdmi-surround-extra2+input:analog-stereo",
          "output:hdmi-surround71-extra2+input:analog-stereo",
          "output:hdmi-stereo-extra3+input:analog-stereo",
          "output:hdmi-surround-extra3+input:analog-stereo",
          "output:hdmi-surround71-extra3+input:analog-stereo",
          "output:hdmi-stereo-extra4+input:analog-stereo",
          "output:hdmi-surround-extra4+input:analog-stereo",
          "output:hdmi-surround71-extra4+input:analog-stereo"
        ]
      },
      "analog-input-headset-mic": {
        "name": "Headset Microphone",
        "info": {
          "type": "Headset",
          "priority": 8800,
          "latency offset": "0",
          "availability group": "Legacy 2",
          "available": "no"
        },
        "Properties": {
          "port.type": "headset",
          "port.availability-group": "Legacy 2",
          "device.icon_name": "audio-input-microphone",
          "card.profile.port": "2"
        },
        "Part of profile(s)": [
          "input:analog-stereo",
          "output:analog-stereo+input:analog-stereo",
          "output:hdmi-stereo+input:analog-stereo",
          "output:hdmi-surround+input:analog-stereo",
          "output:hdmi-surround71+input:analog-stereo",
          "output:hdmi-stereo-extra1+input:analog-stereo",
          "output:hdmi-surround-extra1+input:analog-stereo",
          "output:hdmi-surround71-extra1+input:analog-stereo",
          "output:hdmi-stereo-extra2+input:analog-stereo",
          "output:hdmi-surround-extra2+input:analog-stereo",
          "output:hdmi-surround71-extra2+input:analog-stereo",
          "output:hdmi-stereo-extra3+input:analog-stereo",
          "output:hdmi-surround-extra3+input:analog-stereo",
          "output:hdmi-surround71-extra3+input:analog-stereo",
          "output:hdmi-stereo-extra4+input:analog-stereo",
          "output:hdmi-surround-extra4+input:analog-stereo",
          "output:hdmi-surround71-extra4+input:analog-stereo"
        ]
      },
      "analog-output-speaker": {
        "name": "Speakers",
        "info": {
          "type": "Speaker",
          "priority": 10000,
          "latency offset": "0",
          "availability group": "Legacy 3",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "speaker",
          "port.availability-group": "Legacy 3",
          "device.icon_name": "audio-speakers",
          "card.profile.port": "3"
        },
        "Part of profile(s)": [
          "output:analog-stereo",
          "output:analog-stereo+input:analog-stereo"
        ]
      },
      "analog-output-headphones": {
        "name": "Headphones",
        "info": {
          "type": "Headphones",
          "priority": 9900,
          "latency offset": "0",
          "availability group": "Legacy 2",
          "available": "no"
        },
        "Properties": {
          "port.type": "headphones",
          "port.availability-group": "Legacy 2",
          "device.icon_name": "audio-headphones",
          "card.profile.port": "4"
        },
        "Part of profile(s)": [
          "output:analog-stereo",
          "output:analog-stereo+input:analog-stereo"
        ]
      },
      "hdmi-output-0": {
        "name": "HDMI / DisplayPort",
        "info": {
          "type": "HDMI",
          "priority": 5900,
          "latency offset": "0",
          "availability group": "Legacy 4",
          "available": "no"
        },
        "Properties": {
          "port.type": "hdmi",
          "port.availability-group": "Legacy 4",
          "device.icon_name": "video-display",
          "card.profile.port": "5"
        },
        "Part of profile(s)": [
          "output:hdmi-stereo",
          "output:hdmi-stereo+input:analog-stereo",
          "output:hdmi-surround",
          "output:hdmi-surround+input:analog-stereo",
          "output:hdmi-surround71",
          "output:hdmi-surround71+input:analog-stereo"
        ]
      },
      "hdmi-output-1": {
        "name": "HDMI / DisplayPort 2",
        "info": {
          "type": "HDMI",
          "priority": 5800,
          "latency offset": "0",
          "availability group": "Legacy 5",
          "available": "no"
        },
        "Properties": {
          "port.type": "hdmi",
          "port.availability-group": "Legacy 5",
          "device.icon_name": "video-display",
          "card.profile.port": "6"
        },
        "Part of profile(s)": [
          "output:hdmi-stereo-extra1",
          "output:hdmi-stereo-extra1+input:analog-stereo",
          "output:hdmi-surround-extra1",
          "output:hdmi-surround-extra1+input:analog-stereo",
          "output:hdmi-surround71-extra1",
          "output:hdmi-surround71-extra1+input:analog-stereo"
        ]
      },
      "hdmi-output-2": {
        "name": "HDMI / DisplayPort 3",
        "info": {
          "type": "HDMI",
          "priority": 5700,
          "latency offset": "0",
          "availability group": "Legacy 6",
          "available": "no"
        },
        "Properties": {
          "port.type": "hdmi",
          "port.availability-group": "Legacy 6",
          "device.icon_name": "video-display",
          "card.profile.port": "7"
        },
        "Part of profile(s)": [
          "output:hdmi-stereo-extra2",
          "output:hdmi-stereo-extra2+input:analog-stereo",
          "output:hdmi-surround-extra2",
          "output:hdmi-surround-extra2+input:analog-stereo",
          "output:hdmi-surround71-extra2",
          "output:hdmi-surround71-extra2+input:analog-stereo"
        ]
      },
      "hdmi-output-3": {
        "name": "HDMI / DisplayPort 4",
        "info": {
          "type": "HDMI",
          "priority": 5600,
          "latency offset": "0",
          "availability group": "Legacy 7",
          "available": "no"
        },
        "Properties": {
          "port.type": "hdmi",
          "port.availability-group": "Legacy 7",
          "device.icon_name": "video-display",
          "card.profile.port": "8"
        },
        "Part of profile(s)": [
          "output:hdmi-stereo-extra3",
          "output:hdmi-stereo-extra3+input:analog-stereo",
          "output:hdmi-surround-extra3",
          "output:hdmi-surround-extra3+input:analog-stereo",
          "output:hdmi-surround71-extra3",
          "output:hdmi-surround71-extra3+input:analog-stereo"
        ]
      },
      "hdmi-output-4": {
        "name": "HDMI / DisplayPort 5",
        "info": {
          "type": "HDMI",
          "priority": 5500,
          "latency offset": "0",
          "availability group": "Legacy 8",
          "available": "no"
        },
        "Properties": {
          "port.type": "hdmi",
          "port.availability-group": "Legacy 8",
          "device.icon_name": "video-display",
          "card.profile.port": "9"
        },
        "Part of profile(s)": [
          "output:hdmi-stereo-extra4",
          "output:hdmi-stereo-extra4+input:analog-stereo",
          "output:hdmi-surround-extra4",
          "output:hdmi-surround-extra4+input:analog-stereo",
          "output:hdmi-surround71-extra4",
          "output:hdmi-surround71-extra4+input:analog-stereo"
        ]
      }
    }
  },
  "Card #125": {
    "Name": "alsa_card.usb-Generic_USB_Audio_200810111001-00",
    "Driver": "alsa",
    "Owner Module": "n/a",
    "Properties": {
      "device.enum.api": "udev",
      "device.api": "alsa",
      "media.class": "Audio/Device",
      "api.alsa.path": "hw:1",
      "api.alsa.card": "1",
      "api.alsa.card.name": "WD15 Dock",
      "api.alsa.card.longname": "Dell-WD15-Dock",
      "device.profile-set": "dell-dock-tb16-usb-audio.conf",
      "device.plugged.usec": "9673039371",
      "device.bus_path": "pci-0000:0c:00.0-usb-0:1.5:1.0",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1d.0/0000:04:00.0/0000:05:01.0/0000:07:00.0/0000:08:04.0/0000:0a:00.0/0000:0b:01.0/0000:0c:00.0/usb3/3-1/3-1.5/3-1.5:1.0/sound/card1",
      "device.bus-id": "usb-Generic_USB_Audio_200810111001-00",
      "device.bus": "usb",
      "device.subsystem": "sound",
      "device.vendor.id": "0x0bda",
      "device.vendor.name": "Realtek Semiconductor Corp.",
      "device.product.id": "0x4014",
      "device.product.name": "USB Audio",
      "device.serial": "Generic_USB_Audio_200810111001",
      "device.name": "alsa_card.usb-Generic_USB_Audio_200810111001-00",
      "device.description": "USB Audio",
      "device.nick": "WD15 Dock",
      "device.icon_name": "audio-card-usb",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio1",
      "factory.id": "14",
      "client.id": "31",
      "object.id": "68",
      "object.serial": "125",
      "object.path": "alsa:pcm:1",
      "alsa.card": "1",
      "alsa.card_name": "WD15 Dock",
      "alsa.long_card_name": "Dell-WD15-Dock",
      "alsa.driver_name": "snd_usb_audio",
      "device.string": "1"
    },
    "Profiles": {
      "off": {
        "name": "Off",
        "info": {
          "sinks": 0,
          "sources": 0,
          "priority": 0,
          "available": "yes"
        }
      },
      "HiFi": {
        "name": "Default",
        "info": {
          "sinks": 2,
          "sources": 1,
          "priority": 8000,
          "available": "yes"
        }
      }
    },
    "Active Profile": "HiFi",
    "Ports": {
      "[Out] Line": {
        "name": "Line Out",
        "info": {
          "type": "Line",
          "priority": 200,
          "latency offset": "0",
          "availability group": "Line Out",
          "available": "no"
        },
        "Properties": {
          "port.type": "line",
          "port.availability-group": "Line Out",
          "card.profile.port": "0"
        },
        "Part of profile(s)": "HiFi"
      },
      "[Out] Headphones": {
        "name": "Headphones",
        "info": {
          "type": "Headphones",
          "priority": 100,
          "latency offset": "0",
          "availability group": "Headphone",
          "available": "yes"
        },
        "Properties": {
          "port.type": "headphones",
          "port.availability-group": "Headphone",
          "card.profile.port": "1"
        },
        "Part of profile(s)": "HiFi"
      },
      "[In] Headset": {
        "name": "Headset Microphone",
        "info": {
          "type": "Headset",
          "priority": 100,
          "latency offset": "0",
          "availability group": "Headset Mic",
          "available": "yes"
        },
        "Properties": {
          "port.type": "headset",
          "port.availability-group": "Headset Mic",
          "card.profile.port": "2"
        },
        "Part of profile(s)": "HiFi"
      }
    }
  },
  "Card #687": {
    "Name": "alsa_card.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00",
    "Driver": "alsa",
    "Owner Module": "n/a",
    "Properties": {
      "device.enum.api": "udev",
      "device.api": "alsa",
      "media.class": "Audio/Device",
      "api.alsa.path": "hw:2",
      "api.alsa.card": "2",
      "api.alsa.card.name": "FLOW 8",
      "api.alsa.card.longname": "Behringer FLOW 8 at usb-0000:00:14.0-2, high speed",
      "device.plugged.usec": "29743386072",
      "device.bus_path": "pci-0000:00:14.0-usb-0:2:1.0",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/sound/card2",
      "device.bus-id": "usb-Behringer_FLOW_8_05-FF-01-01-73-71-00",
      "device.bus": "usb",
      "device.subsystem": "sound",
      "device.vendor.id": "0x1397",
      "device.vendor.name": "BEHRINGER International GmbH",
      "device.product.id": "0x050c",
      "device.product.name": "FLOW 8",
      "device.serial": "Behringer_FLOW_8_05-FF-01-01-73-71",
      "device.name": "alsa_card.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00",
      "device.description": "FLOW 8",
      "device.nick": "FLOW 8",
      "device.icon_name": "audio-card-usb",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio2",
      "factory.id": "14",
      "client.id": "31",
      "object.id": "217",
      "object.serial": "687",
      "object.path": "alsa:pcm:2",
      "alsa.card": "2",
      "alsa.card_name": "FLOW 8",
      "alsa.long_card_name": "Behringer FLOW 8 at usb-0000:00:14.0-2, high speed",
      "alsa.driver_name": "snd_usb_audio",
      "device.string": "2"
    },
    "Profiles": {
      "off": {
        "name": "Off",
        "info": {
          "sinks": 0,
          "sources": 0,
          "priority": 0,
          "available": "yes"
        }
      },
      "Direct": {
        "name": "Direct Flow8 Recording",
        "info": {
          "sinks": 1,
          "sources": 1,
          "priority": 1,
          "available": "yes"
        }
      },
      "Recording": {
        "name": "Recording Mode (4 chan output, 10 chan input)",
        "info": {
          "sinks": 2,
          "sources": 11,
          "priority": 1,
          "available": "yes"
        }
      }
    },
    "Active Profile": "Direct",
    "Ports": {
      "[Out] Direct": {
        "name": "Direct FLOW 8",
        "info": {
          "type": "Unknown",
          "priority": 1000,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "unknown",
          "card.profile.port": "0"
        },
        "Part of profile(s)": "Direct"
      },
      "[In] Direct": {
        "name": "Direct FLOW 8",
        "info": {
          "type": "Unknown",
          "priority": 1000,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "unknown",
          "card.profile.port": "1"
        },
        "Part of profile(s)": "Direct"
      },
      "[Out] Line2": {
        "name": "USB-34 L/R",
        "info": {
          "type": "Line",
          "priority": 200,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "2"
        },
        "Part of profile(s)": "Recording"
      },
      "[Out] Line1": {
        "name": "USB-12 L/R",
        "info": {
          "type": "Line",
          "priority": 100,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "3"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] LineMaster": {
        "name": "Master/Monitor L/R",
        "info": {
          "type": "Unknown",
          "priority": 110,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "unknown",
          "card.profile.port": "4"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line78": {
        "name": "Line-78 L/R",
        "info": {
          "type": "Line",
          "priority": 109,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "5"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line56": {
        "name": "Line-56 L/R",
        "info": {
          "type": "Line",
          "priority": 108,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "6"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line8": {
        "name": "Line/Inst(HiZ) 8 (R)",
        "info": {
          "type": "Line",
          "priority": 107,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "7"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line7": {
        "name": "Line/Inst 7 (L)",
        "info": {
          "type": "Line",
          "priority": 106,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "8"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line6": {
        "name": "Line/Inst(HiZ) 6 (R)",
        "info": {
          "type": "Line",
          "priority": 105,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "9"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Line5": {
        "name": "Line/Inst 5 (L)",
        "info": {
          "type": "Line",
          "priority": 104,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "line",
          "card.profile.port": "10"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Mic4": {
        "name": "Mic 4",
        "info": {
          "type": "Mic",
          "priority": 103,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "mic",
          "card.profile.port": "11"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Mic3": {
        "name": "Mic 3",
        "info": {
          "type": "Mic",
          "priority": 102,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "mic",
          "card.profile.port": "12"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Mic2": {
        "name": "Mic 2",
        "info": {
          "type": "Mic",
          "priority": 101,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "mic",
          "card.profile.port": "13"
        },
        "Part of profile(s)": "Recording"
      },
      "[In] Mic1": {
        "name": "Mic 1",
        "info": {
          "type": "Mic",
          "priority": 100,
          "latency offset": "0",
          "available": "unknown"
        },
        "Properties": {
          "port.type": "mic",
          "card.profile.port": "14"
        },
        "Part of profile(s)": "Recording"
      }
    }
  }
}

Example output of await list(); and pactljson list:

{
  "Module #1": {
    "Name": "libpipewire-module-rt",
    "Argument": "{\n    nice.level    = -11\n    #rt.prio      = 88\n    #rt.time.soft = -1\n    #rt.time.hard = -1\n}",
    "Properties": {
      "module.name": "libpipewire-module-rt",
      "object.id": "1",
      "object.serial": "1",
      "module.author": "Wim Taymans <[email protected]>",
      "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.56",
      "nice.level": "-11"
    }
  },
  "Module #2": {
    "Name": "libpipewire-module-protocol-native",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-protocol-native",
      "object.id": "2",
      "object.serial": "2",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Native protocol using unix sockets",
      "module.version": "0.3.56"
    }
  },
  "Module #3": {
    "Name": "libpipewire-module-profiler",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-profiler",
      "object.id": "3",
      "object.serial": "3",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Generate Profiling data",
      "module.version": "0.3.56"
    }
  },
  "Module #5": {
    "Name": "libpipewire-module-metadata",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-metadata",
      "object.id": "5",
      "object.serial": "5",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Allow clients to create metadata store",
      "module.version": "0.3.56"
    }
  },
  "Module #7": {
    "Name": "libpipewire-module-spa-device-factory",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-spa-device-factory",
      "object.id": "7",
      "object.serial": "7",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Provide a factory to make SPA devices",
      "module.version": "0.3.56"
    }
  },
  "Module #9": {
    "Name": "libpipewire-module-spa-node-factory",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-spa-node-factory",
      "object.id": "9",
      "object.serial": "9",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Provide a factory to make SPA nodes",
      "module.version": "0.3.56"
    }
  },
  "Module #11": {
    "Name": "libpipewire-module-client-node",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-client-node",
      "object.id": "11",
      "object.serial": "11",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Allow clients to create and control remote nodes",
      "module.version": "0.3.56"
    }
  },
  "Module #13": {
    "Name": "libpipewire-module-client-device",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-client-device",
      "object.id": "13",
      "object.serial": "13",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Allow clients to create and control remote devices",
      "module.version": "0.3.56"
    }
  },
  "Module #15": {
    "Name": "libpipewire-module-portal",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-portal",
      "object.id": "15",
      "object.serial": "15"
    }
  },
  "Module #16": {
    "Name": "libpipewire-module-access",
    "Argument": "{\n    # access.allowed to list an array of paths of allowed\n    # apps.\n    #access.allowed = [\n    #    /usr/bin/pipewire-media-session\n    #]\n}",
    "#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",
          "}": {}
        }
      }
    },
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-access",
      "object.id": "16",
      "object.serial": "16",
      "module.author": "Wim Taymans <[email protected]>",
      "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.56"
    }
  },
  "Module #17": {
    "Name": "libpipewire-module-adapter",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-adapter",
      "object.id": "17",
      "object.serial": "17",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Manage adapter nodes",
      "module.version": "0.3.56"
    }
  },
  "Module #19": {
    "Name": "libpipewire-module-link-factory",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-link-factory",
      "object.id": "19",
      "object.serial": "19",
      "module.author": "Wim Taymans <[email protected]>",
      "module.description": "Allow clients to create links",
      "module.version": "0.3.56"
    }
  },
  "Module #21": {
    "Name": "libpipewire-module-session-manager",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.name": "libpipewire-module-session-manager",
      "object.id": "21",
      "object.serial": "21",
      "module.author": "George Kiagiadakis <[email protected]>",
      "module.description": "Implements objects for session management",
      "module.version": "0.3.56"
    }
  },
  "Module #536870912": {
    "Name": "module-always-sink",
    "Argument": {},
    "Usage counter": "n/a",
    "Properties": {
      "module.author": "Pauli Virtanen <[email protected]>",
      "module.description": "Always keeps at least one sink loaded even if it's a null one",
      "module.usage": "sink_name=<name of sink>",
      "module.version": "0.3.56"
    }
  },
  "Sink #126": {
    "State": "IDLE",
    "Name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink",
    "Description": "USB Audio Line Out",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s24le",
      "sampleSize": 24,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 2
    },
    "Channel Map": [
      "front-left",
      "front-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 26826,
          "percent": 41,
          "decibels": -23.28
        },
        "front-right": {
          "raw": 26826,
          "percent": 41,
          "decibels": -23.28
        }
      },
      "balance": "0.00"
    },
    "Base Volume": {
      "raw": 65536,
      "percent": 100,
      "decibels": 0
    },
    "Monitor Source": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink.monitor",
    "Latency": {
      "actual": 0,
      "configured": 0
    },
    "Flags": [
      "HARDWARE",
      "DECIBEL_VOLUME",
      "LATENCY"
    ],
    "Properties": {
      "object.path": "alsa:pcm:1:hw:Dock,1:playback",
      "api.alsa.path": "hw:Dock,1",
      "api.alsa.open.ucm": "true",
      "api.alsa.pcm.card": "1",
      "api.alsa.pcm.stream": "playback",
      "audio.channels": "2",
      "audio.position": [
        "FL",
        "FR"
      ],
      "device.routes": "1",
      "alsa.mixer_device": "_ucm0003.hw:Dock",
      "alsa.resolution_bits": "24",
      "device.api": "alsa",
      "device.class": "sound",
      "alsa.class": "generic",
      "alsa.subclass": "generic-mix",
      "alsa.name": "USB Audio #1",
      "alsa.id": "USB Audio",
      "alsa.subdevice": "0",
      "alsa.subdevice_name": "subdevice #0",
      "alsa.device": "1",
      "alsa.card": "1",
      "alsa.card_name": "WD15 Dock",
      "alsa.long_card_name": "Dell-WD15-Dock",
      "alsa.driver_name": "snd_usb_audio",
      "device.profile.name": "HiFi: hw:Dock,1: sink",
      "device.profile.description": "Line Out",
      "card.profile.device": "0",
      "device.id": "68",
      "factory.name": "api.alsa.pcm.sink",
      "priority.driver": "664",
      "priority.session": "664",
      "media.class": "Audio/Sink",
      "node.nick": "WD15 Dock",
      "node.name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink",
      "device.description": "USB Audio",
      "device.icon_name": "audio-card",
      "device.bus": "usb",
      "device.bus_path": "pci-0000:0c:00.0-usb-0:1.5:1.0",
      "node.pause-on-idle": "false",
      "factory.id": "18",
      "clock.quantum-limit": "8192",
      "client.id": "32",
      "node.driver": "true",
      "factory.mode": "merge",
      "audio.adapt.follower": "",
      "library.name": "audioconvert/libspa-audioconvert",
      "object.id": "66",
      "object.serial": "126",
      "node.max-latency": "16384/48000",
      "device.enum.api": "udev",
      "api.alsa.card": "1",
      "api.alsa.card.name": "WD15 Dock",
      "api.alsa.card.longname": "Dell-WD15-Dock",
      "device.profile-set": "dell-dock-tb16-usb-audio.conf",
      "device.plugged.usec": "9673039371",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1d.0/0000:04:00.0/0000:05:01.0/0000:07:00.0/0000:08:04.0/0000:0a:00.0/0000:0b:01.0/0000:0c:00.0/usb3/3-1/3-1.5/3-1.5:1.0/sound/card1",
      "device.bus-id": "usb-Generic_USB_Audio_200810111001-00",
      "device.subsystem": "sound",
      "device.vendor.id": "0x0bda",
      "device.vendor.name": "Realtek Semiconductor Corp.",
      "device.product.id": "0x4014",
      "device.product.name": "USB Audio",
      "device.serial": "Generic_USB_Audio_200810111001",
      "device.name": "alsa_card.usb-Generic_USB_Audio_200810111001-00",
      "device.nick": "WD15 Dock",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio1",
      "device.string": "1"
    },
    "Ports": {
      "[Out] Line": {
        "name": "Line Out",
        "info": {
          "type": "Line",
          "priority": 200,
          "availability group": "Line Out",
          "available": "no"
        }
      }
    },
    "Active Port": "[Out] Line",
    "Formats": [
      "pcm"
    ]
  },
  "Sink #127": {
    "State": "IDLE",
    "Name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock__sink",
    "Description": "USB Audio Headphones",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s24le",
      "sampleSize": 24,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 2
    },
    "Channel Map": [
      "front-left",
      "front-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 65412,
          "percent": 100,
          "decibels": -0.05
        },
        "front-right": {
          "raw": 65412,
          "percent": 100,
          "decibels": -0.05
        }
      },
      "balance": "0.00"
    },
    "Base Volume": {
      "raw": 65536,
      "percent": 100,
      "decibels": 0
    },
    "Monitor Source": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock__sink.monitor",
    "Latency": {
      "actual": 0,
      "configured": 0
    },
    "Flags": [
      "HARDWARE",
      "DECIBEL_VOLUME",
      "LATENCY"
    ],
    "Properties": {
      "object.path": "alsa:pcm:1:hw:Dock:playback",
      "api.alsa.path": "hw:Dock",
      "api.alsa.open.ucm": "true",
      "api.alsa.pcm.card": "1",
      "api.alsa.pcm.stream": "playback",
      "audio.channels": "2",
      "audio.position": [
        "FL",
        "FR"
      ],
      "device.routes": "1",
      "alsa.mixer_device": "_ucm0003.hw:Dock",
      "alsa.resolution_bits": "24",
      "device.api": "alsa",
      "device.class": "sound",
      "alsa.class": "generic",
      "alsa.subclass": "generic-mix",
      "alsa.name": "USB Audio",
      "alsa.id": "USB Audio",
      "alsa.subdevice": "0",
      "alsa.subdevice_name": "subdevice #0",
      "alsa.device": "0",
      "alsa.card": "1",
      "alsa.card_name": "WD15 Dock",
      "alsa.long_card_name": "Dell-WD15-Dock",
      "alsa.driver_name": "snd_usb_audio",
      "device.profile.name": "HiFi: hw:Dock: sink",
      "device.profile.description": "Headphones",
      "card.profile.device": "1",
      "device.id": "68",
      "factory.name": "api.alsa.pcm.sink",
      "priority.driver": "680",
      "priority.session": "680",
      "media.class": "Audio/Sink",
      "node.nick": "WD15 Dock",
      "node.name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock__sink",
      "device.description": "USB Audio",
      "device.icon_name": "audio-card",
      "device.bus": "usb",
      "device.bus_path": "pci-0000:0c:00.0-usb-0:1.5:1.0",
      "node.pause-on-idle": "false",
      "factory.id": "18",
      "clock.quantum-limit": "8192",
      "client.id": "32",
      "node.driver": "true",
      "factory.mode": "merge",
      "audio.adapt.follower": "",
      "library.name": "audioconvert/libspa-audioconvert",
      "object.id": "71",
      "object.serial": "127",
      "node.max-latency": "16384/48000",
      "device.enum.api": "udev",
      "api.alsa.card": "1",
      "api.alsa.card.name": "WD15 Dock",
      "api.alsa.card.longname": "Dell-WD15-Dock",
      "device.profile-set": "dell-dock-tb16-usb-audio.conf",
      "device.plugged.usec": "9673039371",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1d.0/0000:04:00.0/0000:05:01.0/0000:07:00.0/0000:08:04.0/0000:0a:00.0/0000:0b:01.0/0000:0c:00.0/usb3/3-1/3-1.5/3-1.5:1.0/sound/card1",
      "device.bus-id": "usb-Generic_USB_Audio_200810111001-00",
      "device.subsystem": "sound",
      "device.vendor.id": "0x0bda",
      "device.vendor.name": "Realtek Semiconductor Corp.",
      "device.product.id": "0x4014",
      "device.product.name": "USB Audio",
      "device.serial": "Generic_USB_Audio_200810111001",
      "device.name": "alsa_card.usb-Generic_USB_Audio_200810111001-00",
      "device.nick": "WD15 Dock",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio1",
      "device.string": "1"
    },
    "Ports": {
      "[Out] Headphones": {
        "name": "Headphones",
        "info": {
          "type": "Headphones",
          "priority": 100,
          "availability group": "Headphone",
          "available": "yes"
        }
      }
    },
    "Active Port": "[Out] Headphones",
    "Formats": [
      "pcm"
    ]
  },
  "Sink #547": {
    "State": "RUNNING",
    "Name": "alsa_output.pci-0000_00_1f.3.analog-stereo",
    "Description": "Built-in Audio Analog Stereo",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s32le",
      "sampleSize": 32,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 2
    },
    "Channel Map": [
      "front-left",
      "front-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 47184,
          "percent": 72,
          "decibels": -8.56
        },
        "front-right": {
          "raw": 47184,
          "percent": 72,
          "decibels": -8.56
        }
      },
      "balance": "0.00"
    },
    "Base Volume": {
      "raw": 65536,
      "percent": 100,
      "decibels": 0
    },
    "Monitor Source": "alsa_output.pci-0000_00_1f.3.analog-stereo.monitor",
    "Latency": {
      "actual": 0,
      "configured": 0
    },
    "Flags": [
      "HARDWARE",
      "HW_MUTE_CTRL",
      "HW_VOLUME_CTRL",
      "DECIBEL_VOLUME",
      "LATENCY"
    ],
    "Properties": {
      "object.path": "alsa:pcm:0:front:0:playback",
      "api.alsa.path": "front:0",
      "api.alsa.pcm.card": "0",
      "api.alsa.pcm.stream": "playback",
      "audio.channels": "2",
      "audio.position": [
        "FL",
        "FR"
      ],
      "device.routes": "2",
      "alsa.resolution_bits": "16",
      "device.api": "alsa",
      "device.class": "sound",
      "alsa.class": "generic",
      "alsa.subclass": "generic-mix",
      "alsa.name": "ALC3271 Analog",
      "alsa.id": "ALC3271 Analog",
      "alsa.subdevice": "0",
      "alsa.subdevice_name": "subdevice #0",
      "alsa.device": "0",
      "alsa.card": "0",
      "alsa.card_name": "HDA Intel PCH",
      "alsa.long_card_name": "HDA Intel PCH at 0xec510000 irq 153",
      "alsa.driver_name": "snd_hda_intel",
      "device.profile.name": "analog-stereo",
      "device.profile.description": "Analog Stereo",
      "card.profile.device": "8",
      "device.id": "40",
      "factory.name": "api.alsa.pcm.sink",
      "priority.driver": "1009",
      "priority.session": "1009",
      "media.class": "Audio/Sink",
      "node.nick": "HDA Intel PCH",
      "node.name": "alsa_output.pci-0000_00_1f.3.analog-stereo",
      "device.description": "Built-in Audio",
      "device.icon_name": "audio-card-analog",
      "device.bus": "pci",
      "device.bus_path": "pci-0000:00:1f.3",
      "device.form_factor": "internal",
      "node.pause-on-idle": "false",
      "factory.id": "18",
      "clock.quantum-limit": "8192",
      "client.id": "32",
      "node.driver": "true",
      "factory.mode": "merge",
      "audio.adapt.follower": "",
      "library.name": "audioconvert/libspa-audioconvert",
      "object.id": "187",
      "object.serial": "547",
      "node.max-latency": "16384/48000",
      "device.enum.api": "udev",
      "api.alsa.card": "0",
      "api.alsa.card.name": "HDA Intel PCH",
      "api.alsa.card.longname": "HDA Intel PCH at 0xec510000 irq 153",
      "device.plugged.usec": "22073351",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1f.3/sound/card0",
      "device.subsystem": "sound",
      "device.vendor.id": "0x8086",
      "device.vendor.name": "Intel Corporation",
      "device.product.id": "0xa171",
      "device.product.name": "CM238 HD Audio Controller",
      "device.name": "alsa_card.pci-0000_00_1f.3",
      "device.nick": "HDA Intel PCH",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio0",
      "device.string": "0"
    },
    "Ports": {
      "analog-output-speaker": {
        "name": "Speakers",
        "info": {
          "type": "Speaker",
          "priority": 10000,
          "availability group": "Legacy 3",
          "available": "unknown"
        }
      },
      "analog-output-headphones": {
        "name": "Headphones",
        "info": {
          "type": "Headphones",
          "priority": 9900,
          "availability group": "Legacy 2",
          "available": "no"
        }
      }
    },
    "Active Port": "analog-output-speaker",
    "Formats": [
      "pcm"
    ]
  },
  "Sink #688": {
    "State": "IDLE",
    "Name": "alsa_output.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00.Direct__hw_F8__sink",
    "Description": "FLOW 8 Direct FLOW 8",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s32le",
      "sampleSize": 32,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 4
    },
    "Channel Map": [
      "front-left",
      "front-right",
      "rear-left",
      "rear-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 48287,
          "percent": 74,
          "decibels": -7.96
        },
        "front-right": {
          "raw": 48287,
          "percent": 74,
          "decibels": -7.96
        },
        "rear-left": {
          "raw": 48287,
          "percent": 74,
          "decibels": -7.96
        },
        "rear-right": {
          "raw": 48287,
          "percent": 74,
          "decibels": -7.96
        }
      },
      "balance": "0.00"
    },
    "Base Volume": {
      "raw": 65536,
      "percent": 100,
      "decibels": 0
    },
    "Monitor Source": "alsa_output.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00.Direct__hw_F8__sink.monitor",
    "Latency": {
      "actual": 0,
      "configured": 0
    },
    "Flags": [
      "HARDWARE",
      "DECIBEL_VOLUME",
      "LATENCY"
    ],
    "Properties": {
      "object.path": "alsa:pcm:2:hw:F8:playback",
      "api.alsa.path": "hw:F8",
      "api.alsa.open.ucm": "true",
      "api.alsa.pcm.card": "2",
      "api.alsa.pcm.stream": "playback",
      "audio.channels": "4",
      "audio.position": [
        "FL",
        "FR",
        "RL",
        "RR"
      ],
      "device.routes": "1",
      "alsa.mixer_device": "_ucm0004.hw:F8",
      "alsa.resolution_bits": "32",
      "device.api": "alsa",
      "device.class": "sound",
      "alsa.class": "generic",
      "alsa.subclass": "generic-mix",
      "alsa.name": "USB Audio",
      "alsa.id": "USB Audio",
      "alsa.subdevice": "0",
      "alsa.subdevice_name": "subdevice #0",
      "alsa.device": "0",
      "alsa.card": "2",
      "alsa.card_name": "FLOW 8",
      "alsa.long_card_name": "Behringer FLOW 8 at usb-0000:00:14.0-2, high speed",
      "alsa.driver_name": "snd_usb_audio",
      "device.profile.name": "Direct: hw:F8: sink",
      "device.profile.description": "Direct FLOW 8",
      "card.profile.device": "0",
      "device.id": "217",
      "factory.name": "api.alsa.pcm.sink",
      "priority.driver": "872",
      "priority.session": "872",
      "media.class": "Audio/Sink",
      "node.nick": "FLOW 8",
      "node.name": "alsa_output.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00.Direct__hw_F8__sink",
      "device.description": "FLOW 8",
      "device.icon_name": "audio-card",
      "device.bus": "usb",
      "device.bus_path": "pci-0000:00:14.0-usb-0:2:1.0",
      "node.pause-on-idle": "false",
      "factory.id": "18",
      "clock.quantum-limit": "8192",
      "client.id": "32",
      "node.driver": "true",
      "factory.mode": "merge",
      "audio.adapt.follower": "",
      "library.name": "audioconvert/libspa-audioconvert",
      "object.id": "205",
      "object.serial": "688",
      "node.max-latency": "16384/48000",
      "device.enum.api": "udev",
      "api.alsa.card": "2",
      "api.alsa.card.name": "FLOW 8",
      "api.alsa.card.longname": "Behringer FLOW 8 at usb-0000:00:14.0-2, high speed",
      "device.plugged.usec": "29743386072",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/sound/card2",
      "device.bus-id": "usb-Behringer_FLOW_8_05-FF-01-01-73-71-00",
      "device.subsystem": "sound",
      "device.vendor.id": "0x1397",
      "device.vendor.name": "BEHRINGER International GmbH",
      "device.product.id": "0x050c",
      "device.product.name": "FLOW 8",
      "device.serial": "Behringer_FLOW_8_05-FF-01-01-73-71",
      "device.name": "alsa_card.usb-Behringer_FLOW_8_05-FF-01-01-73-71-00",
      "device.nick": "FLOW 8",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio2",
      "device.string": "2"
    },
    "Ports": {
      "[Out] Direct": {
        "name": "Direct FLOW 8",
        "info": {
          "type": "Unknown",
          "priority": 1000,
          "available": "unknown"
        }
      }
    },
    "Active Port": "[Out] Direct",
    "Formats": [
      "pcm"
    ]
  },
  "Source #126": {
    "State": "RUNNING",
    "Name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink.monitor",
    "Description": "Monitor of USB Audio Line Out",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s24le",
      "sampleSize": 24,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 2
    },
    "Channel Map": [
      "front-left",
      "front-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 65536,
          "percent": 100,
          "decibels": 0
        },
        "front-right": {
          "raw": 65536,
          "percent": 100,
          "decibels": 0
        }
      },
      "balance": "0.00"
    },
    "Base Volume": {
      "raw": 65536,
      "percent": 100,
      "decibels": 0
    },
    "Monitor of Sink": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink",
    "Latency": {
      "actual": 0,
      "configured": 0
    },
    "Flags": [
      "HARDWARE",
      "DECIBEL_VOLUME",
      "LATENCY"
    ],
    "Properties": {
      "object.path": "alsa:pcm:1:hw:Dock,1:playback",
      "api.alsa.path": "hw:Dock,1",
      "api.alsa.open.ucm": "true",
      "api.alsa.pcm.card": "1",
      "api.alsa.pcm.stream": "playback",
      "audio.channels": "2",
      "audio.position": [
        "FL",
        "FR"
      ],
      "device.routes": "1",
      "alsa.mixer_device": "_ucm0003.hw:Dock",
      "alsa.resolution_bits": "24",
      "device.api": "alsa",
      "device.class": "monitor",
      "alsa.class": "generic",
      "alsa.subclass": "generic-mix",
      "alsa.name": "USB Audio #1",
      "alsa.id": "USB Audio",
      "alsa.subdevice": "0",
      "alsa.subdevice_name": "subdevice #0",
      "alsa.device": "1",
      "alsa.card": "1",
      "alsa.card_name": "WD15 Dock",
      "alsa.long_card_name": "Dell-WD15-Dock",
      "alsa.driver_name": "snd_usb_audio",
      "device.profile.name": "HiFi: hw:Dock,1: sink",
      "device.profile.description": "Line Out",
      "card.profile.device": "0",
      "device.id": "68",
      "factory.name": "api.alsa.pcm.sink",
      "priority.driver": "664",
      "priority.session": "664",
      "media.class": "Audio/Sink",
      "node.nick": "WD15 Dock",
      "node.name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock_1__sink",
      "device.description": "USB Audio",
      "device.icon_name": "audio-card",
      "device.bus": "usb",
      "device.bus_path": "pci-0000:0c:00.0-usb-0:1.5:1.0",
      "node.pause-on-idle": "false",
      "factory.id": "18",
      "clock.quantum-limit": "8192",
      "client.id": "32",
      "node.driver": "true",
      "factory.mode": "merge",
      "audio.adapt.follower": "",
      "library.name": "audioconvert/libspa-audioconvert",
      "object.id": "66",
      "object.serial": "126",
      "node.max-latency": "16384/48000",
      "device.enum.api": "udev",
      "api.alsa.card": "1",
      "api.alsa.card.name": "WD15 Dock",
      "api.alsa.card.longname": "Dell-WD15-Dock",
      "device.profile-set": "dell-dock-tb16-usb-audio.conf",
      "device.plugged.usec": "9673039371",
      "sysfs.path": "/sys/devices/pci0000:00/0000:00:1d.0/0000:04:00.0/0000:05:01.0/0000:07:00.0/0000:08:04.0/0000:0a:00.0/0000:0b:01.0/0000:0c:00.0/usb3/3-1/3-1.5/3-1.5:1.0/sound/card1",
      "device.bus-id": "usb-Generic_USB_Audio_200810111001-00",
      "device.subsystem": "sound",
      "device.vendor.id": "0x0bda",
      "device.vendor.name": "Realtek Semiconductor Corp.",
      "device.product.id": "0x4014",
      "device.product.name": "USB Audio",
      "device.serial": "Generic_USB_Audio_200810111001",
      "device.name": "alsa_card.usb-Generic_USB_Audio_200810111001-00",
      "device.nick": "WD15 Dock",
      "api.alsa.use-acp": "true",
      "api.acp.auto-profile": "false",
      "api.acp.auto-port": "false",
      "api.dbus.ReserveDevice1": "Audio1",
      "device.string": "1"
    },
    "Formats": [
      "pcm"
    ]
  },
  "Source #127": {
    "State": "RUNNING",
    "Name": "alsa_output.usb-Generic_USB_Audio_200810111001-00.HiFi__hw_Dock__sink.monitor",
    "Description": "Monitor of USB Audio Headphones",
    "Driver": "PipeWire",
    "Sample Specification": {
      "name": "s24le",
      "sampleSize": 24,
      "samplingRate": 48000,
      "endianess": "Little",
      "dataType": "Signed Integer",
      "channelCount": 2
    },
    "Channel Map": [
      "front-left",
      "front-right"
    ],
    "Owner Module": "4294967295",
    "Mute": "no",
    "Volume": {
      "channels": {
        "front-left": {
          "raw": 65536,
          "percent": 100,
          "decibels": 0