Trying to get built-in mic running on Pulse to bridge through Jack Source

Optimize your system for ultimate performance.

Moderators: MattKingUSA, khz

Post Reply
AvidReaper
Posts: 2
Joined: Thu Jan 14, 2021 10:33 am

Trying to get built-in mic running on Pulse to bridge through Jack Source

Post by AvidReaper »

Hi

I'm running Jack as my main audio server and use Cadence for configuration. I've Alsa bridged to Pulse and Pulse bridged to Jack as shown in the attachments. I have a audio interface (Scarlett 2i2) which is setup as my main input and output device in Cadence.

As one would hope to expect, all my outputs are correctly going to my audio interface and my inputs from the audio interface are recording correctly.

What I would like to know is whether I can somehow send the input from my built-in webcam microphone through the bridges as well. For example, Google Meet and Microsoft Teams can only pick up Jack Source, so it successfully pics up the microphone plugged into my audio interface, but is completely blind to my built-in mic. For conference calls I'd like to just turn down the volume of my external microphone and turn up the volume from my built-in mic to use that instead, is this possible?
jack_bridges_alsa.png
jack_bridges_alsa.png (21.23 KiB) Viewed 675 times
carla_patchbay.png
carla_patchbay.png (24.16 KiB) Viewed 675 times
cadence_config.png
cadence_config.png (68.15 KiB) Viewed 675 times
arifd
Established Member
Posts: 65
Joined: Sun Nov 29, 2020 11:09 am

Re: Trying to get built-in mic running on Pulse to bridge through Jack Source

Post by arifd »

What you need is to create a channel for your Pulseaudio stream to connect to:

Code: Select all

pactl load-module module-jack-sink client_name=WebcamOUT channels=1
We called this one WebcamOUT (but you can change that to whatever you want) and we're telling pulseaudio we only want it to output mono.

Then you need something* that will monitor your pulseaudio device (the webcam source. Then either from the app or from the PulseAudio Volume Control app you can now select the output of that application to go to the newly created channel that you have called WebcamOUT. From there you can access it inside your Jack aware applications.

*In the aforementioned case, the something is an application, but I'm not happy with this. It means you have to open/run an application just to pull in the audio and send it to Jack. There is a way to do this all from the commandline, using pactl but at the moment I can't figure out how exactly.

edit: I found it!

Code: Select all

pacmd load-module module-loopback latency_msec=1
obviously I went for the lowest latency permitted. Now you can use your PulseAudio Volume Control app, in the Recording tab to select the webcam, and in Playback to select the JACK Webcam channel we created earlier. You can do the routing in the commandline using pactl, but I'll leave that as an exercise for you.
AvidReaper
Posts: 2
Joined: Thu Jan 14, 2021 10:33 am

Re: Trying to get built-in mic running on Pulse to bridge through Jack Source

Post by AvidReaper »

Thanks arifd. This was very useful. I've been playing around with it, though I can't seem to select my webcam mic from the dropdown in the Recording tab in Pavucontrol, it just doesn't show up. So, regarding your point around routing, I take it I need to do something along the lines of

Code: Select all

pactl load-module module-loopback source=<name_or_index> sink=<name_or_index>
, but

Code: Select all

pacmd list-sources
also doesn't show my built-in mic.

Am I misunderstanding something?

Code: Select all

$ pacmd list-sources
3 source(s) available.
    index: 0
        name: <jack_in>
        driver: <module-jack-source.c>
        flags: DECIBEL_VOLUME LATENCY 
        state: RUNNING
        suspend cause: 
        priority: 0
        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
        volume steps: 65537
        muted: no
        current latency: 10.17 ms
        max rewind: 0 KiB
        sample spec: float32le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 2
        linked by: 2
        fixed latency: 5.33 ms
        module: 3
        properties:
                device.api = "jack"
                device.description = "Jack source (PulseAudio JACK Source)"
                jack.client_name = "PulseAudio JACK Source"
                device.icon_name = "audio-input-microphone"
    index: 1
        name: <jack_out.monitor>
        driver: <module-jack-sink.c>
        flags: DECIBEL_VOLUME LATENCY 
        state: RUNNING
        suspend cause: 
        priority: 1000
        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
        volume steps: 65537                                                                                       
        muted: no                                                                                                 
        current latency: 0.00 ms                                                                                  
        max rewind: 0 KiB                                                                                         
        sample spec: float32le 2ch 48000Hz                                                                        
        channel map: front-left,front-right                                                                       
                     Stereo                                                                                       
        used by: 4                                                                                                
        linked by: 4                                                                                              
        fixed latency: 10.67 ms                                                                                   
        monitor_of: 0                                                                                             
        module: 4                                                                                                 
        properties:                                                                                               
                device.description = "Monitor of Jack sink (PulseAudio JACK Sink)"                                
                device.class = "monitor"                                                                          
                device.icon_name = "audio-input-microphone"                                                       
  * index: 2
        name: <jack_out.2.monitor>
        driver: <module-jack-sink.c>
        flags: DECIBEL_VOLUME LATENCY 
        state: RUNNING
        suspend cause: 
        priority: 1000
        volume: mono: 65536 / 100% / 0.00 dB
                balance 0.00
        base volume: 65536 / 100% / 0.00 dB
        volume steps: 65537
        muted: no
        current latency: 0.14 ms
        max rewind: 0 KiB
        sample spec: float32le 1ch 48000Hz
        channel map: mono
                     Mono
        used by: 2
        linked by: 3
        fixed latency: 10.67 ms
        monitor_of: 1
        module: 9
        properties:
                device.description = "Monitor of Jack sink (WebcamOUT)"
                device.class = "monitor"
                device.icon_name = "audio-input-microphone"
arifd
Established Member
Posts: 65
Joined: Sun Nov 29, 2020 11:09 am

Re: Trying to get built-in mic running on Pulse to bridge through Jack Source

Post by arifd »

So I'm a little bit confused because the title says that your mic "is running on Pulse". Are you able to detect the mic in any way? i.e. via an application? The video feed of the webcam is works no problem, right?

If you launch Audacity, on the left most menu is your driver options, typically you can choose ALSA, PulseAudio and JACK, if you select ALSA, can you see the mic then? Image


In my case I can see that my webcam is picked up by PulseAudio Image

Because of this, we can then do what I said before which is to open up an exclusive channel and send it to that, which JACK can then later hook into.

my 'pactl list sources' does detect it, however...

Code: Select all

Source #0
        State: SUSPENDED
        Name: alsa_input.usb-046d_0819_1A679ED0-02.mono-fallback
        Description: Webcam C210 Mono
        ...
Post Reply