Ubuntu – control volume using python script

14.04alsaamixerpulseaudiopython

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.

Best Answer

  • 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

  • Related Question