I can control volume using this command through terminal
amixer -D pulse sset Master 0% .
My question that how can I do the same thing using python script.
You can use
call from the
from subprocess import call call(["amixer", "-D", "pulse", "sset", "Master", "0%"])
Of course, you can use the normal python code with it:
valid = False while not valid: volume = input('What volume? > ') try: volume = int(volume) if (volume <= 100) and (volume >= 0): call(["amixer", "-D", "pulse", "sset", "Master", str(volume)+"%"]) valid = True except ValueError: pass
This code will loop untill the user gives a valid input - between 0 and 100, and will then set the volume to that.
This will run in Python 3. Change the
raw_input for Python 2.
To increase by 10% when the script is run you can do one of two things.
You can use the
First, install with
sudo apt-get install python-alsaaudio
and then import it:
we can get the volume:
>>> m = alsaaudio.Mixer() >>> vol = m.getvolume() >>> vol [50L]
we can also set the volume:
>>> m.setvolume(20) >>> vol = m.getvolume() >>> vol [20L]
This number is a long integer in a list. So to make it into a usable number, we can do
So to increase by 10% when it is run?
import alsaaudio m = alsaaudio.Mixer() vol = m.getvolume() vol = int(vol) newVol = vol + 10 m.setvolume(newVol)
Or we can stick with the
subprocess module and default Ubuntu commands:
from subprocess import call call(["amixer", "-D", "pulse", "sset", "Master", "10%+"])
will increase by 10%.
For me, Tim's code didn't quite work. I had to do this:
import alsaaudio m = alsaaudio.Mixer(alsaaudio.mixers) # alsaaudio.mixers = ["PCM"] for me. m.setvolume(90) # Or whatever
It may be due to my weird / broken
.asoundrc config file. But given that there is no actual reference documentation for
.asoundrc - just some random examples - I don't think you can blame me.
Also please don't call out to command line programs to do it. That is ugly and error-prone.