My situation is such that my Linux computers have elaborate Graphical User Interfaces, as well as the Pulse Audio Server, for use in multimedia. Yet, to adapt them to my own needs, I have done some customizing of the Audio Server, specifically, giving it a ‘Loop-Back’ module, so that when I play music from my FM Receiver, to the Line Input jack of the PC in question, that music is ‘looped back’, to my speaker amp, for my enjoyment. Such configuration changes can have consequences on how to perform other multimedia tasks, such as Screen Recording, which, on the computer named ‘Phosphene’, requires that I plug a microphone into the Front Mic Jack because that Tower-PC has no internal Web-Cam or Mic.
Ever since I made the ‘loopback’ configuration change, I never retested the ability to plug in a Mic into the front jack, until only a few days ago. But when I finally did, it was with the initial purpose of testing whether certain Screen-Recording software works, which is different software from the software I’d normally use, which was not designed primarily for use with Linux, but the ability of which to connect to my sound inputs is as good, as that of the Web-browser (Chrome) that the extension runs within.
I got a rude surprise when running this test, in that plugging in an input, to the Front Mic Jack, borked my sound, at least until I restarted Pulse Audio. But beyond that, I learned that my sound issue was not due to this browser extension, but rather due to the way I had configured Pulse Audio, as well as perhaps, due to hardware limitations of the ‘Creative Sound Blaster X-Fi Xtreme’ sound card. I.e., Even if I did nothing to relaunch this extension I was first testing, but only plugged in a mike to the Front Mic Jack, during a clean Pulse Audio Server session, the malfunction came back.
So, what was the nature of this malfunction?
According to Pulse Audio, a computer could have one or more Sound Devices, which corresponds to the number of Analog-to-Digital Converters it has, in the case of capture devices, but each of those could have more than one Port, which would be the specific analog input, that is feeding the Sound Device in question. And, Pulse Audio supports the H/W feature of modern sound cards, to detect whether a plug has in fact been inserted into each jack, thus making the Port available. By default, what Pulse Audio would do is simple: Switch the input of the Sound Device, to the newly-plugged analog input. But, it doesn’t work.
When I plugged my external mike into the Front Jack for any reason, while the Line Input in the back of the computer was also active, which it is by default, just so that I could turn on my FM Receiver and hear music,
- I got no sound input from the Front Mic, even though the GUI shows that the input has been switched,
- Switching the input manually produced no difference in behaviour,
- The loopback module will go into a corrupted state, in which it will loop back sound from the Line Input, but with a 10-30 second time delay. I was hearing music, long after I had turned my FM Receiver off…
I took numerous, lengthy steps to find out why this was happening, but my conclusion was, that the actual hardware is unable to activate the Front Mic Jack, as long as the (rear) Line Input is plugged in simultaneously. And this cannot be corrected from the software side, with my present H/W. And so, what I needed to do was, to develop a workflow that would ease switching from ‘Music Enjoyment Mode’, to ‘Screen Recording Mode’, and back again, in the fastest time possible, and without requiring excessive restarts…
In other words, even if I was setting up a Screen-Recording to be created using the native application I’d normally use, because either solution is at the application level, I’d need to follow the same steps to make them work.
Basically, in the configuration file ‘
/etc/pulse/default.pa‘, I first needed to replace a line that read:
load-module module-loopback rate=44100 latency_msec=1 source=alsa_input.pci-0000_07_00.0.analog-stereo
To a line that read:
load-module module-loopback rate=44100 latency_msec=1 source=alsa_input.pci-0000_07_00.0.analog-stereo source_dont_move=true
And this second activation can also be made manually, in my case through a desktop icon, by prepending ‘
pacmd‘ to it. The effect that added parameter has is that, when I physically pull out the Line Input plug, which I’ll need to do each time, that module detects that its input has changed, and just quits. After that, I can just plug in my Front Mic, and do whatever Screen Recording. And after I’m done with that, I can unplug the Front Mic, then plug in the Line Input again, and then click on my desktop icon again, to restart my loopback module.
Other ways of solving the problem did not work, even though their logic was also sound, such as:
- Muting the loopback first,
- Unplugging the Line Input, with the loopback module running, but before plugging in the Front Mic,
- Manually unloading the loopback module, and then plugging in the Front Mic, while the Line Input was still plugged in.
None of this caused much distress, because at least on my boxes, Pulse Audio runs in user mode, and can be restarted trivially, thus ending whatever corruption may have taken place, especially after testing 10 solutions that did not work. After a while, I was only needing to unload and then reload the loopback module, no longer the Pulse Audio Server.