Joel, In this particular case I'm working on integrating the VARA-FM digital mode into the Pat <https://getpat.io/> 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-hotm...@hotmail.com> 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-boun...@lists.freedesktop.org> on behalf of Chris > Keller <xyl...@gmail.com> > *Sent:* Thursday, October 14, 2021 9:25 PM > *To:* pulseaudio-discuss@lists.freedesktop.org < > pulseaudio-discuss@lists.freedesktop.org> > *Subject:* [pulseaudio-discuss] 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 > > [image: 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 >