A Weird Imagination

Volume via shell

Posted in

The problem

Sometimes a GUI is not the best way to control a computer's volume. Usually if you care about the volume of your computer, you're probably nearby but perhaps would rather be using a remote or other shortcut way of changing the volume. The specific use case that prompted this blog post was binding the volume up and volume down keys on my keyboard to the global volume control (as opposed to separately binding them in each application).

Read more…

Application bypassing PulseAudio

Posted in

The problem

Recently I ran a game1 and instead of the expected music, got distorted noise. At first I thought there was something physically wrong with my speakers or the connection to them, but running any other program resulted in normal sound, albeit mixed with the distorted sound of the game. Even more strangely, changing the volume in the game changed the volume of the distorted noise, implying the game was in fact generating the right thing but it was being misinterpreted, so the culprit was neither the game nor the sound driver but somewhere in between them.

As I had recently set up PulseAudio2, I suspected it was to blame. I opened up pavucontrol to find the game omitted from the list of applications producing sound, which suggested the problem was caused by the game trying to use some way to produce sound that PulseAudio was not capturing.

The solution

The short version is that the problem was solved by restarting PulseAudio:

$ killall -9 pulseaudio

Read more…

PulseAudio

Posted in

PulseAudio is what most modern Linux distributions use as a sound server, the part of the sound subsystem that sits between applications and the sound driver supporting features like allowing multiple applications to output sound simultaneously. PulseAudio adds various features not present in other Linux sound servers like per-application volume controls and easily outputting to different audio devices (for instance, using HDMI audio instead of the normal audio jack).

PulseAudio can be controlled using pavucontrol, which is a GUI audio mixer. It shows a volume meter and control for every application producing sound as well as an option to choose which audio device it is outputting to. It additionally lists all of the hardware input and output devices, as you would expect from an audio mixer.

Fixing problems

Restarting PulseAudio

If PulseAudio is not working properly, you can restart it by running

$ killall -9 pulseaudio

No, really, that's what Debian's PulseAudio page says to do.

When I initially installed PulseAudio, it didn't have my sound cards listed and just had the default null outuput, making it not very useful. Running that command to restart it fixed it.

Muted devices

PulseAudio seems to mute my sound card all by itself. Currently, I just go into pavucontrol and unmute it.

Detachable X sessions

X forwarding

Normally with X, it's easy to run an application on a remote computer just by using X forwarding:

local:~$ ssh -X host
host:~$ echo $DISPLAY
localhost:20.0
host:~$ xterm

The xterm will appear on your local computer.

But if you want to continue working with that application on a different remote computer (or once you are physically in front of the computer it is running on), then you're out of luck.

For an application running in the terminal, you can start it inside a GNU Screen (or tmux) session which you can detach and then attach to again on another ssh connection.

GNU Screen for X

xpra (X Persistent Remote Applications) lets you move graphical applications from one computer to another in addition to fixing other problems with X forwarding. If you instead use xpra for the forwarding, then you can detach and reattach to the session at will.

Read more…