Ubuntu – Setting microphone input volume using the command line

command linepulseaudio

I have a USB mic I keep plugging into my laptop dock. When I drop into the dock I'd like the mic setup as my current audio input automatically. I do have a "I'm docked" script I run which sets xrandr/etc items, I'd just need some method perform the action of:

gnome-volume-control, input tab, choose mic

but from the cmd line/script.

Any hints on how I can automate/script this?

Best Answer

If you are using ALSA, amixer can be helpful for your script programming.

When dropping the amixer --help command in a terminal you will see something like this:

enter image description here

Depending on your soundcard, levels may be different than mine, but you can use alsamixer in the terminal in order to check which levels and which features in your sound card you can call in a command to set the volume as you wish.

enter image description here

In my example, with my principal sound card (I have 2: the embedded and a PCI audio card), levels are from 0 to 100, this way I can change the volume of a desired input/output in my soundcard by dropping in a terminal the next command:

amixer -c 0 set Front 50DB 
amixer -c 0 set Front 64DB 

In the first command, the result will set the Front panel output to 78% level and the second one will set the Front panel output to 100% level.

In order to gather information related to your mixer controls, drop the amixer command with no parameters and you will get a list. Or indicate which audio device you wish to see a list of controls with amixer -c X (where "X" is the number of your audio device).

BTW: Remember that DB values are calculated logarithmically and not linearly.