ajustar el volumen máximo posible en pulseaudio

26

A veces, algo de sonido / película / música en mi sistema Ubuntu_12.04 tiene un volumen muy bajo por sí solo. De ahora en adelante, aumento el volumen de la salida de sonido. Puedo usar la siguiente configuración (ver captura de pantalla) ingrese la descripción de la imagen aquí

Por lo tanto, parece que pulseaudio puede aumentar el volumen más allá del máximo que parece posible simplemente usando los botones de "aumento de volumen" de la máquina. ¿Mi pregunta es cómo puedo ajustar Pulseaudio para permitir un rango mayor o un aumento de volumen máximo más alto?

Especialmente con algo de material de audio que tiene un volumen muy bajo para comenzar, sería bueno poder aumentar rápidamente el volumen de salida (encendido) a un ajuste más alto de lo que quizás sea necesario para otro material que ya es bastante alto.

humanidad y paz
fuente

Respuestas:

24

El nivel de volumen máximo posible que podemos obtener deslizando el control de volumen a más del 100% es de aprox. 153% por encima del límite máximo normal. Siempre que hayamos configurado el volumen ALSA con alsamixer a 100, estos 100% son el nivel por encima del cual el audio se recortará o distorsionará. Esto también sucederá al amplificar al 153% con el control deslizante.

Sin embargo, es posible aumentar aún más este nivel configurando el nivel de sumidero utilizando el siguiente comando en una terminal:

pacmd set-sink-volume <sink> <value>

Reemplace <sink>con su nombre o índice de sumidero como se indica en

pacmd list-sinks

El límite inferior para <value>obviamente es 0, un valor lineal de 100% es un valor de 65536, cualquier cosa mayor se amplificará aún más. Un valor de 512000 dará lugar a una sobreamplificación del 781%.

Este es un método muy burdo para amplificar la salida de sonido de nivel variable, ya que la amplificación excesiva conducirá no solo a un recorte y una distorsión fea, sino que también puede dañar los altavoces.

Por lo tanto, sería una mejor manera de normalizar su salida de audio. Consulte la siguiente pregunta sobre cómo hacer esto con pulseaudio:

Takkat
fuente
Lo he usado pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% , ya que aún no podía tener éxito con pacmd. De todos modos, la idea ya ayudó mucho. De esta manera, es posible aumentar el nivel de salida a más del 100% o 153% que permite la GUI, gracias.
humanityANDpeace
2
Su gran respuesta permitió configurar el volumen a valores mayores (como 781% de amplificación), lo cual es excelente. Parte de mi pregunta también es cómo cambiar la escala utilizada originalmente para que no sea del 0% al 100% (a través de la GUI) sino del 0% al 781%. ¿Alguna información adicional sobre cómo lograr esto, tal vez? ¡También sería genial! gracias
humanityANDpeace
No tengo idea de cómo aumentar este valor para el control deslizante de volumen. Puede estar codificado, por lo tanto, no se puede cambiar más que parchear la fuente y volver a compilar.
Takkat
No funciona: un programa todavía puede hacerlo al 100%, incluso si lo configuro al 12% de esa manera.
panzi
También destruí los altavoces de mi computadora portátil al usar el volumen al 150%. Tuve que reemplazarlos. Tenga en cuenta que la posible advertencia de daños está justificada.
brett
7

Intenté este comando:

pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%

Y fue muy útil. Uno puede cambiar el 150% a cualquier valor.

whahmad
fuente
Debe mencionar que deshabilita el control de volumen.
Verde
4

Video de demostración


yo suelo

pactl set-sink-volume 0 100%

¿De dónde 0es el número de receptor pacmd list-sinksy 100%es el volumen sin refuerzo predeterminado? Puede ingresar valores superiores al 100% para obtener un aumento de audio ( 200%por ejemplo).

Mina Michael
fuente
Deshabilita el control de volumen.
Verde
¿por qué? No, no lo hace. Lo intenté y está bien. La cuestión es que eleva el volumen por encima del volumen máximo que puede alcanzar la barra de volumen. Una barra completa probablemente sea alrededor del 150%, por lo que no se puede hacer el 200% con la barra. @Green
Mina Michael
2

Aquí hay un pequeño script para hacer el cálculo y establecer el volumen por usted (simplemente pase el volumen como argumento). Por ejemplo: vol 105establecerá el volumen al 105%.

  • Crea un archivo

    $> file=/usr/bin/vol;sudo touch $file && \
    sudo chmod u+x $file && sudo chown $USER:$USER $file && \
    gedit $file
    
  • Copiar y pegar:

    #!/bin/bash
    SetPacmdSinkVol()
    {
        #default index of 0 - can be changed
        local mySinkIndex=0
        #if you want to ignore pacmd output
        local ignoreOutput=true
        local num=$1
        local vol=$((num * 655)); 
        vol=$((num * 36 / 100 + vol));
        echo -e "\033[0;32mVol - ${num}:${vol}\033[0;m"
        if $ignoreOutput; then
            pacmd set-sink-volume $mySinkIndex $vol > /dev/null
        else
            pacmd set-sink-volume $mySinkIndex $vol
        fi
    }
    SetPacmdSinkVol $@
    
Sparkida
fuente
1

Inserté la siguiente línea en un script de shell y la configuré para que se ejecute al inicio ya que la computadora portátil de mi padre (12.04 32 bit) no estaba guardando la configuración de volumen máximo.

pacmd set-sink-volume 0 99999

Si solo hay una tarjeta de sonido, probablemente sea el índice 0 y no es necesario que escriba el nombre completo. Veo arriba que el valor se basa en que 65536 es 100%. Cuando usé 99999, estaba disparando en la oscuridad. 153% en realidad sería 100270 logrando el mismo resultado que usar la interfaz gráfica de usuario.

Antonios Hadjigeorgalis
fuente
0
#!/bin/bash

FILE=/tmp/currentVolume

interval=15
minVolume=10
maxVolume=140

if [ -f "$FILE" ];
then
   CurrentVolume=$(cat $FILE )
else
   CurrentVolume=50
fi

        if [ $CurrentVolume -lt 60 ]; then
            interval=3
        elif [ $CurrentVolume -lt 80 ]; then
            interval=5
        elif [ $CurrentVolume -lt 110 ]; then
            interval=10
        else
            interval=15
        fi

if [ "$1" == "UP" ] 
then
    CurrentVolume=$(echo "$CurrentVolume + $interval" | bc)
    if (( $(echo "$maxVolume < $CurrentVolume" | bc -l) ))
    then
        CurrentVolume=$maxVolume
    fi  
else
    CurrentVolume=$(echo "$CurrentVolume - $interval" | bc)
    if (( $(echo "$minVolume > $CurrentVolume" | bc -l) ))
    then
        CurrentVolume=$minVolume
    fi
fi

echo "CurrentVolume:" $CurrentVolume >> /tmp/currentVolume.log
echo $CurrentVolume > $FILE


for i in {1..20}
do
   pactl -- set-sink-volume $i $(echo $CurrentVolume)%
done
MarkL
fuente
1
Gracias por su respuesta. Si es posible, ¿podría editar su respuesta para elaborar un poco más al respecto? Siempre es útil que las personas sepan por qué se supone que una solución funciona, en lugar de simplemente copiar ciegamente y codificar código que no entienden. Eso también ayuda a adaptar soluciones a diferentes problemas.
Henning Kockerbeck