control volume using python script
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 subprocess
module:
from subprocess import call
call(["amixer", "-D", "pulse", "sset", "Master", "0%"])
Source
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 input
to 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 alsaaudio
module.
First, install with
sudo apt-get install python-alsaaudio
and then import it:
import alsaaudio
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 int(vol[0])
.
So to increase by 10% when it is run?
import alsaaudio
m = alsaaudio.Mixer()
vol = m.getvolume()
vol = int(vol[0])
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%.
My pronouns are He / Him
For me, Tim's code didn't quite work. I had to do this:
import alsaaudio
m = alsaaudio.Mixer(alsaaudio.mixers[0]) # 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.