[pulseaudio-discuss] Routing sink to source

Daniel windseeker at gmx.de
Fri Nov 9 08:39:23 UTC 2018


I'm not sure if I understood completely, but If your recording app cannot
record via pulseaudio at all, then I don't know how to solve this with
pulseaudio.

If your recording app CAN record via pulseaudio, then of course you can
also use "pactl" to move sinks and sources with "move-sink-input" and
"move-source-output" commands headless from command line/script/whatever.

Example: I have my audio player "audacious" playing to pulseaudio, have
"pacat -r " recording from pulseaudio and I've loaded a null-sink module.

Let's look around in pulseaudio

$ pactl list clients short
[...]
36      protocol-native.c       pacat
57      protocol-native.c       audacious
[...]

$ pactl list sinks short
0       alsa_output.pci-0000_00_1f.3.analog-stereo      module-alsa-card.c
    s16le 2ch 44100Hz       RUNNING
[...]
4       null    module-null-sink.c      s16le 2ch 44100Hz       IDLE

$ pactl list sources short
0       alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
module-alsa-card.c      s16le 2ch 44100HzRUNNING
[...]
4       null.monitor    module-null-sink.c      s16le 2ch 44100Hz
 RUNNING

Now lets see where audacious (Client 57) is playing to:

$ pactl list sink-inputs short
[...]
8       0       57      protocol-native.c       float32le 2ch 44100Hz

Well client 57 has a sink-input 8 which it uses to play to sink 0. That's
my soundcard, d'oh! So let's move it to sink 4, the null sink.

$ pactl move-sink-input 8 4

Now audacious plays to the null sink. Good. Now let's look at the recording
app pacat, client 36:

$ pactl list source-outputs short
[...]
16      0       36      protocol-native.c       s16le 2ch 44100Hz
[...]

Okay, with its source-output 16 it records from my soundcard (source 0)
instead of null.monitor (source 4). So let's move this, too:

$ pactl move-source-output 16 4

Et voila, I'm recording with pacat, what my audacious player is playing.

Hope that helps.

Regards,
Daniel

Am Fr., 9. Nov. 2018 um 08:41 Uhr schrieb Zoltán Szabó <zoell at zoell.us>:

> Hi Daniel,
>
> I am running these in console. I don't have GUI. app01 that should use the
> monitor is Chrome in headless mode and it just simply not able to open the
> monitor. It can open and use a pipe source or virtual source but not a null
> sink's monitor :(
>
> Zoltan
>
> On Fri, Nov 9, 2018 at 5:30 AM Daniel <windseeker at gmx.de> wrote:
>
>> Hi Zoltán,
>>
>> Since years now I successfully use the way you mentioned in "P.S.". I
>> play to a null sink and record from its monitor.
>>
>> I'm not sure why app02 should not be able to connect to this monitor. If
>> app02 is recording from PA in general, independent of "from where", then it
>> should show in pavucontrol in the "recording" tab. There you can set it's
>> input source to the null sink monitor where app01 plays to.
>>
>> Regards,
>> Daniel
>>
>> Am Do., 8. Nov. 2018, 19:50 hat Zoltán Szabó <zoell at zoell.us>
>> geschrieben:
>>
>>> Hi,
>>>
>>> I would like to connect my app01's audio output to my app02's microphone.
>>>
>>> Here is what I have tried so far:
>>>
>>> I create a file pipe sink for my app01:
>>> load-module module-pipe-sink sink_name=pa_speaker_app01
>>> file=/home/pulseaudio/pa_speaker_app01 format=ulaw rate=8000 channels=1
>>>
>>> I create a file pipe sink for my app02:
>>> load-module module-pipe-sink sink_name=pa_speaker_app02
>>> file=/home/pulseaudio/pa_speaker_app02 format=ulaw rate=8000 channels=1
>>>
>>> This way both of my apps have an available output device.
>>>
>>> I create a virtual source as a mic for my other app01 and 02:
>>> load-module module-virtual-source source_name=pa_virtual_source_app01
>>> uplink_sink=pa_speaker_app02
>>> load-module module-virtual-source source_name=pa_virtual_source_app02
>>> uplink_sink=pa_speaker_app01
>>>
>>> This way anything played on pa_speaker_app02 should be routed to the
>>> app01's microphone pa_virtual_source_app01, right? Also should be true for
>>> app01 to app02.
>>>
>>> So I start my app01 and 2:
>>> PULSE_SOURCE=pa_virtual_source_app01 PULSE_SINK=pa_speaker_app01
>>> ./startapp01
>>> PULSE_SOURCE=pa_virtual_source_app02 PULSE_SINK=pa_speaker_app02
>>> ./startapp01
>>>
>>> But this is not working at all. Is this not the right approach? I can
>>> see in the PA logs that the apps are connected successfully to PA.
>>>
>>> PS: I also tried to crate a null sink, but app01 (it is actually chrome)
>>> is not able to open the null sink's monitor as a mic.
>>>
>>> Thanks
>>> zoell
>>>
>>> _______________________________________________
>>> pulseaudio-discuss mailing list
>>> pulseaudio-discuss at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>>>
>> _______________________________________________
>> pulseaudio-discuss mailing list
>> pulseaudio-discuss at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>>
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20181109/5bcbd9d1/attachment-0001.html>


More information about the pulseaudio-discuss mailing list