Re: Recipe: recording sound card input and output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Joel,

In this particular case I'm working on integrating the VARA-FM digital mode into the Pat Winlink client. However, I'm excited that this approach will work for other similar use cases. With just a little more work, I can feed pre-recorded audio into decoder/modem programs for automated tests! This was already possible in some modem programs (e.g. WSJT-X) that had built in such functionality, but doing it through PulseAudio makes the approach repeatable for pretty much any software modem!

Chris

On Fri, Oct 15, 2021 at 4:20 AM Joel <jm-hotmail@xxxxxxxxxxx> wrote:
Chris -

Are you operating an SDR rig or one of the digital modes (e.g., JTx, FTx, etc.)?

Joel W2TQ

973 736 8306


From: pulseaudio-discuss <pulseaudio-discuss-bounces@xxxxxxxxxxxxxxxxxxxxx> on behalf of Chris Keller <xylo04@xxxxxxxxx>
Sent: Thursday, October 14, 2021 9:25 PM
To: pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx <pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx>
Subject: Recipe: recording sound card input and output
 
Hi folks,

I just spent a while figuring out how to solve a particular need and want to save it in the mailing list for posterity.

I'm an amateur radio operator, and we make extensive use of external sound cards for interfacing computers with radios for digital communication modes. I was experiencing a problem where I really wanted to record received audio (RX) to the left channel of a file, and transmitted audio (TX) to the right channel. Doing so would let me hear exactly what the modem program heard and sent.

After much fussing, I found an arrangement that worked: set up a null-sink to represent the rx-tx stream I wanted, then use two loopbacks, one each for RX and TX. Once that was set up, recording the file was simple.

BurrBrown chipset used in SignaLink USB
SOUND_CARD="BurrBrown" 
RADIO_RX=$(pacmd list-sources | egrep "input.*$SOUND_CARD" | grep -oP "<\K[^ >]+")
RADIO_TX=$(pacmd list-sources | egrep "output.*$SOUND_CARD.*monitor" | grep -oP "<\K[^ >]+")
pactl load-module module-null-sink sink_name=rxtx sink_properties=device.description=RXTX
pactl load-module module-loopback source=$RADIO_RX sink=rxtx channels=1 channel_map=left
pactl load-module module-loopback source=$RADIO_TX sink=rxtx channels=1 channel_map=right

Radio Interface Source_Sink.jpg

Hopefully this will help someone in the future looking to record both the input and output to a sound card!

Chris Keller, K0SWE

[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux