[pulseaudio-discuss] Audio Capture ( recording a Skype conversation )

Colin Guthrie gmane at colin.guthr.ie
Tue Apr 27 05:01:03 PDT 2010

'Twas brillig, and Chris cowden at 27/04/10 12:27 did gyre and gimble:
> Dear PulseAudio community,
> My apologies if this is either a double post or simply a stupid
> question.  As the subject line suggests I'm interested in recording
> something like a Skype conversation.  I say something like a Skype
> conversation because I work with some similar voip teleconferencing
> programs other than Skype.
> I've been looking in several places for some information.  Hopefully I'm
> close to having a solution, but I'm not quite there.
> pacat -r -d alsa_output.pci-0000_00_14.2.analog-stereo.monitor
> I've used the above command to capture audio passing through my sound
> server. 

Good so far.

> I've also added a virtual device in my
> /etc/alas/pulse-default.conf file.  So I can also capture that audio
> with other programs such as Audacity.

THis is not really correct. For one you should not really edit the
system files, but instead edit your own users' ~/.asoundrc file.

Secondly, what definition did you add here? In theory you should need
none. You generally should just tell audacity to "use pulse" then when
it is recording fire up an application like pavucontrol, go to the
"Recording tab" and locate the Audacity recroding stream, then move it
so that it is recording from the monitor device you want. This choice
will be remembered for next time.

>  So I need to include my
> microphone to the recording. 
> I've found the following command, which doesn't work for me, to pass two
> streams:
> pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo | pacat -p -d 
> alsa_output.pci-0000_00_14.2.analog-stereo.monitor

This will certainly not work. YOu are trying to record from your input
device (mic) and then play it back via another input device (the monitor
of you output is an input!).

If you were to play it back properly, it would sound awful to the person
speaking on the VoIP app in question.

I'll outline my recommendation below.

> The above results in:
> Stream error: No such entity
> write() failed: Broken pipe
> for me.
> So, is there a way to combine my two devices?  I'm assuming something
> like a pacmd script will do the trick, but I don't yet understand how
> the module-combine statements work. 

Well module-combine is technially module-combine-sink. i.e. is allows
you to combine multiple outputs, but not multiple inputs.

What you want to do is take two inputs (your mic and the monitor of your
output) and combine then and record them. There is not (currently) a
module-combine-source so this is impossible.

However you can do soemthing that approximates this.

Firstly load a null sink:

pactl load-module module-null-sink sink_name='foo'

Then load two module loops backs:

pactl load-module module-loopback
pactl load-module module-loopback

Using pavucontrol, connect the output of the two loopbacks to the null
sink. Connect the input of the two loopbacks to:

This means that you will effectively be recording both your mic and the
output of your sound card and playing back both streams on the null
sink. As it is a null sink you wont be able to hear it, but you should
be able to see the VU meter in the playback tab of pavucontrol.

Then in order to record the combined result, you will simply select

pacat -r -d foo.monitor

Jobs a good 'un! :p




Colin Guthrie

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mandriva Linux Contributor [http://www.mandriva.com/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]

More information about the pulseaudio-discuss mailing list