ShayBox / Mon2Cam

Workaround for multi-monitor Discord screensharing
MIT License
337 stars 33 forks source link

Sound loopback doesn't work on Pipewire :/ #74

Open UnlimitedCookies opened 3 years ago

UnlimitedCookies commented 3 years ago

The sound loopback used to work perfectly until I upgraded from native Pulseaudio to Pipewire :/ Is this expected behavior and is a potential fix a possibility?

$ mon2cam -s -v
DEBUG Starting Mon2Cam with the following options: Options {
  framerate: 60,
  device: 50,
  resolution: "",
  ffmpeg: [],
  border: false,
  sound: true,
  wayland: false,
  loggerOptions: { verbose: true },
  execOptions: { verbose: true, output: 3 }
}
DEBUG Checking if V4L2 device exists
DEBUG V4L2 device found with id 50

Exec Context: 38548766-b69b-4cc7-9edd-e041e0058458
    Exec Options:  { verbose: true, output: 3 }
    Exec Command: pactl list sink-inputs
    Exec Command Splits:  [pactl,list,sink-inputs]
    Exec Result:  { code: 0, success: true },
 output: "Sink Input #64
    Driver: PipeWire
    Owner Module: n/a
    Client: 63
    Sink: 103
    Sample Specification: float32le 2ch 44100Hz
    Channel Map: front-left,front-right
    Format: pcm, format.sample_format = "\"float32le\""  format.rate = "44100"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
    Corked: no
    Mute: no
    Volume: front-left: 47141 /  72% / -8.58 dB,   front-right: 47141 /  72% / -8.58 dB
            balance 0.00
    Buffer Latency: 0 usec
    Sink Latency: 0 usec
    Resample method: PipeWire
    Properties:
        client.api = "pipewire-pulse"
        application.name = "spotify"
        application.process.id = "2393"
        application.process.user = "kevin"
        application.process.host = "omega"
        application.process.binary = "spotify"
        application.language = "en_US.UTF-8"
        window.x11.display = ":1"
        application.process.machine_id = "2479c9f40b6842b28210235e67424972"
        media.role = "music"
        media.name = "Spotify"
        stream.is-live = "true"
        node.name = "spotify"
        node.autoconnect = "true"
        media.class = "Stream/Output/Audio"
        adapt.follower.node = ""
        factory.id = "6"
        audio.adapt.follower = ""
        factory.mode = "split"
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "64"
        client.id = "63"
        node.latency = "43218/44100"
        pulse.attr.maxlength = "4194304"
        pulse.attr.tlength = "705600"
        pulse.attr.prebuf = "0"
        pulse.attr.minreq = "7056"
        module-stream-restore.id = "sink-input-by-media-role:music""
Exec Context: 38548766-b69b-4cc7-9edd-e041e0058458

64: spotify
Choose which applications you want to route(space separated list):
64

Exec Context: d375d829-bf0c-4d1e-836e-8ca1c362b430
    Exec Options:  { verbose: true, output: 3 }
    Exec Command: pactl list sources
    Exec Command Splits:  [pactl,list,sources]
    Exec Result:  { code: 0, success: true },
 output: "Source #65581
    State: SUSPENDED
    Name: alsa_output.pci-0000_0a_00.3.iec958-stereo.monitor
    Description: Monitor of Family 17h (Models 00h-0fh) HD Audio Controller Digital Stereo (IEC958)
    Driver: PipeWire
    Sample Specification: s32le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 4294967295
    Mute: yes
    Volume: front-left: 64695 /  99% / -0.34 dB,   front-right: 64695 /  99% / -0.34 dB
            balance 0.00
    Base Volume: 65536 / 100% / 0.00 dB
    Monitor of Sink: alsa_output.pci-0000_0a_00.3.iec958-stereo
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY 
    Properties:
        object.path = "alsa:pcm:2:iec958:2:playback"
        api.alsa.path = "iec958:2"
        api.alsa.pcm.card = "2"
        api.alsa.pcm.stream = "playback"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "1"
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "ALC887-VD Digital"
        alsa.id = "ALC887-VD Digital"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "1"
        alsa.card = "2"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic at 0xf6700000 irq 67"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "iec958-stereo"
        device.profile.description = "Digital Stereo (IEC958)"
        card.profile.device = "6"
        device.id = "41"
        factory.name = "api.alsa.pcm.sink"
        priority.driver = "608"
        priority.session = "608"
        media.class = "Audio/Sink"
        node.nick = "HD-Audio Generic"
        node.name = "alsa_output.pci-0000_0a_00.3.iec958-stereo"
        device.description = "Family 17h (Models 00h-0fh) HD Audio Controller Digital Stereo (IEC958)"
        node.pause-on-idle = "false"
        factory.id = "18"
        client.id = "30"
        node.driver = "true"
        factory.mode = "merge"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "45"
    Formats:
        pcm

Source #65639
    State: RUNNING
    Name: alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo.monitor
    Description: Monitor of UMC202HD 192k Digital Stereo (IEC958)
    Driver: PipeWire
    Sample Specification: s32le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 4294967295
    Mute: no
    Volume: front-left: 64143 /  98% / -0.56 dB,   front-right: 64438 /  98% / -0.44 dB
            balance 0.00
    Base Volume: 65536 / 100% / 0.00 dB
    Monitor of Sink: alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE DECIBEL_VOLUME LATENCY 
    Properties:
        object.path = "alsa:pcm:0:iec958:0:playback"
        api.alsa.path = "iec958:0"
        api.alsa.pcm.card = "0"
        api.alsa.pcm.stream = "playback"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "1"
        alsa.resolution_bits = "16"
        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 = "0"
        alsa.card_name = "UMC202HD 192k"
        alsa.long_card_name = "BEHRINGER UMC202HD 192k at usb-0000:02:00.0-7, high speed"
        alsa.driver_name = "snd_usb_audio"
        device.profile.name = "iec958-stereo"
        device.profile.description = "Digital Stereo (IEC958)"
        card.profile.device = "5"
        device.id = "97"
        factory.name = "api.alsa.pcm.sink"
        priority.driver = "1008"
        priority.session = "1008"
        media.class = "Audio/Sink"
        node.nick = "UMC202HD 192k"
        node.name = "alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo"
        device.description = "UMC202HD 192k Digital Stereo (IEC958)"
        node.pause-on-idle = "false"
        factory.id = "18"
        client.id = "30"
        node.driver = "true"
        factory.mode = "merge"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "103"
        node.max-latency = "32768/48000"
    Formats:
        pcm

Source #82
    State: SUSPENDED
    Name: alsa_input.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo
    Description: UMC202HD 192k Digital Stereo (IEC958)
    Driver: PipeWire
    Sample Specification: s32le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 4294967295
    Mute: no
    Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
            balance 0.00
    Base Volume: 65536 / 100% / 0.00 dB
    Monitor of Sink: n/a
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE DECIBEL_VOLUME LATENCY 
    Properties:
        object.path = "alsa:pcm:0:iec958:0:capture"
        api.alsa.path = "iec958:0"
        api.alsa.pcm.card = "0"
        api.alsa.pcm.stream = "capture"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "1"
        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 = "0"
        alsa.card_name = "UMC202HD 192k"
        alsa.long_card_name = "BEHRINGER UMC202HD 192k at usb-0000:02:00.0-7, high speed"
        alsa.driver_name = "snd_usb_audio"
        device.profile.name = "iec958-stereo"
        device.profile.description = "Digital Stereo (IEC958)"
        card.profile.device = "3"
        device.id = "97"
        factory.name = "api.alsa.pcm.source"
        priority.driver = "2008"
        priority.session = "2008"
        media.class = "Audio/Source"
        node.nick = "UMC202HD 192k"
        node.name = "alsa_input.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo"
        device.description = "UMC202HD 192k Digital Stereo (IEC958)"
        node.pause-on-idle = "false"
        factory.id = "18"
        client.id = "30"
        node.driver = "true"
        factory.mode = "split"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "82"
        node.max-latency = "32768/48000"
    Ports:
        iec958-stereo-input: Digital Input (S/PDIF) (type: SPDIF, priority: 0, availability unknown)
    Active Port: iec958-stereo-input
    Formats:
        pcm

Source #65580
    State: SUSPENDED
    Name: alsa_output.pci-0000_08_00.1.hdmi-stereo.monitor
    Description: Monitor of GP104 High Definition Audio Controller Digital Stereo (HDMI)
    Driver: PipeWire
    Sample Specification: s32le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 4294967295
    Mute: no
    Volume: front-left: 48287 /  74% / -7.96 dB,   front-right: 48287 /  74% / -7.96 dB
            balance 0.00
    Base Volume: 65536 / 100% / 0.00 dB
    Monitor of Sink: alsa_output.pci-0000_08_00.1.hdmi-stereo
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE DECIBEL_VOLUME LATENCY 
    Properties:
        object.path = "alsa:pcm:1:hdmi:1:playback"
        api.alsa.path = "hdmi:1"
        api.alsa.pcm.card = "1"
        api.alsa.pcm.stream = "playback"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "1"
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "HDMI 0"
        alsa.id = "HDMI 0"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "3"
        alsa.card = "1"
        alsa.card_name = "HDA NVidia"
        alsa.long_card_name = "HDA NVidia at 0xf6080000 irq 65"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "hdmi-stereo"
        device.profile.description = "Digital Stereo (HDMI)"
        card.profile.device = "7"
        device.id = "40"
        factory.name = "api.alsa.pcm.sink"
        priority.driver = "632"
        priority.session = "632"
        media.class = "Audio/Sink"
        node.nick = "HDA NVidia"
        node.name = "alsa_output.pci-0000_08_00.1.hdmi-stereo"
        device.description = "GP104 High Definition Audio Controller Digital Stereo (HDMI)"
        node.pause-on-idle = "false"
        factory.id = "18"
        client.id = "30"
        node.driver = "true"
        factory.mode = "merge"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "44"
    Formats:
        pcm"
Exec Context: d375d829-bf0c-4d1e-836e-8ca1c362b430

ParsedOutputElement { index: -1, arguments: {}, properties: {} }
ParsedOutputElement {
  index: 65581,
  arguments: {
    State: "SUSPENDED",
    Name: "alsa_output.pci-0000_0a_00.3.iec958-stereo.monitor",
    Description: "Monitor of Family 17h (Models 00h-0fh) HD Audio Controller Digital Stereo (IEC958)",
    Driver: "PipeWire",
    "Sample Specification": "s32le 2ch 48000Hz",
    "Channel Map": "front-left,front-right",
    "Owner Module": "4294967295",
    Mute: "yes",
    Volume: "front-left",
    "Base Volume": "65536 / 100% / 0.00 dB",
    "Monitor of Sink": "alsa_output.pci-0000_0a_00.3.iec958-stereo",
    Latency: "0 usec, configured 0 usec"
  },
  properties: {
    "object.path": '"alsa:pcm:2:iec958:2:playback"',
    "api.alsa.path": '"iec958:2"',
    "api.alsa.pcm.card": '"2"',
    "api.alsa.pcm.stream": '"playback"',
    "audio.channels": '"2"',
    "audio.position": '"FL,FR"',
    "device.routes": '"1"',
    "alsa.resolution_bits": '"16"',
    "device.api": '"alsa"',
    "device.class": '"sound"',
    "alsa.class": '"generic"',
    "alsa.subclass": '"generic-mix"',
    "alsa.name": '"ALC887-VD Digital"',
    "alsa.id": '"ALC887-VD Digital"',
    "alsa.subdevice": '"0"',
    "alsa.subdevice_name": '"subdevice #0"',
    "alsa.device": '"1"',
    "alsa.card": '"2"',
    "alsa.card_name": '"HD-Audio Generic"',
    "alsa.long_card_name": '"HD-Audio Generic at 0xf6700000 irq 67"',
    "alsa.driver_name": '"snd_hda_intel"',
    "device.profile.name": '"iec958-stereo"',
    "device.profile.description": '"Digital Stereo (IEC958)"',
    "card.profile.device": '"6"',
    "device.id": '"41"',
    "factory.name": '"api.alsa.pcm.sink"',
    "priority.driver": '"608"',
    "priority.session": '"608"',
    "media.class": '"Audio/Sink"',
    "node.nick": '"HD-Audio Generic"',
    "node.name": '"alsa_output.pci-0000_0a_00.3.iec958-stereo"',
    "device.description": '"Family 17h (Models 00h-0fh) HD Audio Controller Digital Stereo (IEC958)"',
    "node.pause-on-idle": '"false"',
    "factory.id": '"18"',
    "client.id": '"30"',
    "node.driver": '"true"',
    "factory.mode": '"merge"',
    "audio.adapt.follower": '""',
    "library.name": '"audioconvert/libspa-audioconvert"',
    "object.id": '"45"'
  }
}
ParsedOutputElement {
  index: 65639,
  arguments: {
    State: "RUNNING",
    Name: "alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo.monitor",
    Description: "Monitor of UMC202HD 192k Digital Stereo (IEC958)",
    Driver: "PipeWire",
    "Sample Specification": "s32le 2ch 48000Hz",
    "Channel Map": "front-left,front-right",
    "Owner Module": "4294967295",
    Mute: "no",
    Volume: "front-left",
    "Base Volume": "65536 / 100% / 0.00 dB",
    "Monitor of Sink": "alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo",
    Latency: "0 usec, configured 0 usec"
  },
  properties: {
    "object.path": '"alsa:pcm:0:iec958:0:playback"',
    "api.alsa.path": '"iec958:0"',
    "api.alsa.pcm.card": '"0"',
    "api.alsa.pcm.stream": '"playback"',
    "audio.channels": '"2"',
    "audio.position": '"FL,FR"',
    "device.routes": '"1"',
    "alsa.resolution_bits": '"16"',
    "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": '"0"',
    "alsa.card_name": '"UMC202HD 192k"',
    "alsa.long_card_name": '"BEHRINGER UMC202HD 192k at usb-0000:02:00.0-7, high speed"',
    "alsa.driver_name": '"snd_usb_audio"',
    "device.profile.name": '"iec958-stereo"',
    "device.profile.description": '"Digital Stereo (IEC958)"',
    "card.profile.device": '"5"',
    "device.id": '"97"',
    "factory.name": '"api.alsa.pcm.sink"',
    "priority.driver": '"1008"',
    "priority.session": '"1008"',
    "media.class": '"Audio/Sink"',
    "node.nick": '"UMC202HD 192k"',
    "node.name": '"alsa_output.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo"',
    "device.description": '"UMC202HD 192k Digital Stereo (IEC958)"',
    "node.pause-on-idle": '"false"',
    "factory.id": '"18"',
    "client.id": '"30"',
    "node.driver": '"true"',
    "factory.mode": '"merge"',
    "audio.adapt.follower": '""',
    "library.name": '"audioconvert/libspa-audioconvert"',
    "object.id": '"103"',
    "node.max-latency": '"32768/48000"'
  }
}
ParsedOutputElement {
  index: 82,
  arguments: {
    State: "SUSPENDED",
    Name: "alsa_input.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo",
    Description: "UMC202HD 192k Digital Stereo (IEC958)",
    Driver: "PipeWire",
    "Sample Specification": "s32le 2ch 48000Hz",
    "Channel Map": "front-left,front-right",
    "Owner Module": "4294967295",
    Mute: "no",
    Volume: "front-left",
    "Base Volume": "65536 / 100% / 0.00 dB",
    "Monitor of Sink": "n/a",
    Latency: "0 usec, configured 0 usec",
    "Active Port": "iec958-stereo-input"
  },
  properties: {
    "object.path": '"alsa:pcm:0:iec958:0:capture"',
    "api.alsa.path": '"iec958:0"',
    "api.alsa.pcm.card": '"0"',
    "api.alsa.pcm.stream": '"capture"',
    "audio.channels": '"2"',
    "audio.position": '"FL,FR"',
    "device.routes": '"1"',
    "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": '"0"',
    "alsa.card_name": '"UMC202HD 192k"',
    "alsa.long_card_name": '"BEHRINGER UMC202HD 192k at usb-0000:02:00.0-7, high speed"',
    "alsa.driver_name": '"snd_usb_audio"',
    "device.profile.name": '"iec958-stereo"',
    "device.profile.description": '"Digital Stereo (IEC958)"',
    "card.profile.device": '"3"',
    "device.id": '"97"',
    "factory.name": '"api.alsa.pcm.source"',
    "priority.driver": '"2008"',
    "priority.session": '"2008"',
    "media.class": '"Audio/Source"',
    "node.nick": '"UMC202HD 192k"',
    "node.name": '"alsa_input.usb-BEHRINGER_UMC202HD_192k-00.iec958-stereo"',
    "device.description": '"UMC202HD 192k Digital Stereo (IEC958)"',
    "node.pause-on-idle": '"false"',
    "factory.id": '"18"',
    "client.id": '"30"',
    "node.driver": '"true"',
    "factory.mode": '"split"',
    "audio.adapt.follower": '""',
    "library.name": '"audioconvert/libspa-audioconvert"',
    "object.id": '"82"',
    "node.max-latency": '"32768/48000"'
  }
}
ParsedOutputElement {
  index: 65580,
  arguments: {
    State: "SUSPENDED",
    Name: "alsa_output.pci-0000_08_00.1.hdmi-stereo.monitor",
    Description: "Monitor of GP104 High Definition Audio Controller Digital Stereo (HDMI)",
    Driver: "PipeWire",
    "Sample Specification": "s32le 2ch 48000Hz",
    "Channel Map": "front-left,front-right",
    "Owner Module": "4294967295",
    Mute: "no",
    Volume: "front-left",
    "Base Volume": "65536 / 100% / 0.00 dB",
    "Monitor of Sink": "alsa_output.pci-0000_08_00.1.hdmi-stereo",
    Latency: "0 usec, configured 0 usec"
  },
  properties: {
    "object.path": '"alsa:pcm:1:hdmi:1:playback"',
    "api.alsa.path": '"hdmi:1"',
    "api.alsa.pcm.card": '"1"',
    "api.alsa.pcm.stream": '"playback"',
    "audio.channels": '"2"',
    "audio.position": '"FL,FR"',
    "device.routes": '"1"',
    "alsa.resolution_bits": '"16"',
    "device.api": '"alsa"',
    "device.class": '"sound"',
    "alsa.class": '"generic"',
    "alsa.subclass": '"generic-mix"',
    "alsa.name": '"HDMI 0"',
    "alsa.id": '"HDMI 0"',
    "alsa.subdevice": '"0"',
    "alsa.subdevice_name": '"subdevice #0"',
    "alsa.device": '"3"',
    "alsa.card": '"1"',
    "alsa.card_name": '"HDA NVidia"',
    "alsa.long_card_name": '"HDA NVidia at 0xf6080000 irq 65"',
    "alsa.driver_name": '"snd_hda_intel"',
    "device.profile.name": '"hdmi-stereo"',
    "device.profile.description": '"Digital Stereo (HDMI)"',
    "card.profile.device": '"7"',
    "device.id": '"40"',
    "factory.name": '"api.alsa.pcm.sink"',
    "priority.driver": '"632"',
    "priority.session": '"632"',
    "media.class": '"Audio/Sink"',
    "node.nick": '"HDA NVidia"',
    "node.name": '"alsa_output.pci-0000_08_00.1.hdmi-stereo"',
    "device.description": '"GP104 High Definition Audio Controller Digital Stereo (HDMI)"',
    "node.pause-on-idle": '"false"',
    "factory.id": '"18"',
    "client.id": '"30"',
    "node.driver": '"true"',
    "factory.mode": '"merge"',
    "audio.adapt.follower": '""',
    "library.name": '"audioconvert/libspa-audioconvert"',
    "object.id": '"44"'
  }
}
error: Uncaught (in promise) TypeError: Cannot read property 'replace' of undefined
                    let source_name = source.properties["device.product.name"].replace(/"/g, "");
                                                                               ^
    at file:///usr/bin/mon2cam:879:80
    at Array.forEach (<anonymous>)
    at file:///usr/bin/mon2cam:878:30
botiapa commented 3 years ago

Unfortunately I haven't had time to test support on pipewire. I upgraded as well, but haven't tested it yet. So yes, it's probably "expected" behaviour.

botiapa commented 3 years ago

So after reading and debugging a bit, I'm starting to think that the way I implemented sound duplication and streaming isn't possible in pipewire, since it doesn't mirror some functionalities of pulseaudio. I'm trying to figure out the issue, but this might take a while.

ShayBox commented 3 years ago

An easy way I found was to install catia and run pw-jack catia, then you can visually connect programs to discord

botiapa commented 3 years ago

Yeah that's a good workaround, but we should implement loopback properly via cli commands (The way it was implemented with pulseaudio). The least we could do is to detect if pipewire is present on the system, and then display an error.

UnlimitedCookies commented 3 years ago

My friend was also recommending catia to me, but that doesn't seem to work for me either. Either way I do agree that this mon2cam should also receive support for pipewire.

In case you're interested this is the trace back:

$ pw-jack catia
Traceback (most recent call last):
  File "/usr/share/cadence/src/catia.py", line 1428, in <module>
    gui = CatiaMainW()
  File "/usr/share/cadence/src/catia.py", line 169, in __init__
    if self.jackStarted():
  File "/usr/share/cadence/src/catia.py", line 919, in jackStarted
    self.menuJackServer(True)
  File "/usr/share/cadence/src/catia.py", line 998, in menuJackServer
    self.menuA2JBridge(False)
  File "/usr/share/cadence/src/catia.py", line 1012, in menuA2JBridge
    self.ui.act_tools_a2j_export_hw.setEnabled(gDBus.a2j and not gDBus.a2j.is_started())
TypeError: setEnabled(self, bool): argument 1 has unexpected type 'NoneType'
ShayBox commented 3 years ago

You need the pipewire jack packages installed too, and this catia system is much better than any text based selection system, the only problem is no volume adjustment

UnlimitedCookies commented 3 years ago

I do have pipewire-jack package installed. When it works, then I agree that catia does look pretty good.

UnlimitedCookies commented 2 years ago

I've found a replacement for catia which is called helvum and seems to be written in rust instead of python. But this still doesn't resolve the original issue.