<div dir="ltr">The docs are bad, but existent. But out of kindness:<br><br>pactl is the command line tool to control PulseAudio. pavucontrol is a graphical one, but it can't load or unload modules.<br><br>Find out stuff with<br>
pactl list modules<br>pactl list sinks # sinks = speakers<br>pactl list sources # sources = microphones<br><br>The PULSE_SINK and PULSE_SOURCE control which sink or source is used as the default. With the syntax I showed, I set the variable for the command that follows it. Alternatively, if your recorder app has an options menu where you can select inputs and outputs, you can use that instead.<br>
<br>Now, the setup.<br><br><div>pactl load-module module-null-sink sink_name="transmit"<br>Every sink comes with a monitor source. Null sinks are exactly that - they're only good for their monitor source. That means they're the way to take the output of an application and use it elsewhere. Now, I could record the monitor of the default sound card, but then I'd also be recording any other beeps and squeaks the system produces. You don't want Skype sounds mixed in your rap songs, right?<div>
<br></div><div>pactl load-module module-combine-sink sink_name="tee" slaves="transmit,<name of your local soundcard>"<br>This is a playback multiplexer. Anything you play to it, will get played on every slave sink. This is the way to, for example, play on multiple sound cards simultaneously. This time, one of the sound cards is a virtual one.</div>
<div><br></div><div>pactl load-module module-loopback source="<name of your microphone source>" sink="transmit"</div><div style>The loopback modules is basically the equivalent of an application that records sound and plays it back immediately. Here, we take the microphone and play it back to the null sink. You could omit the source parameter to record from system's default mic.</div>
<div style><br></div><div style>We're set now. We now must play beats to "tee" and record from "transmit.monitor" and send it over the Internet.</div></div></div>