ajustar o volume máximo possível no pulseaudio

26

Às vezes, algum som / filme / música no meu sistema Ubuntu_12.04 está em um volume muito baixo por si só. Doravante eu aumento o volume da saída de som. Eu posso usar a seguinte configuração (veja a captura de tela) insira a descrição da imagem aqui

Parece, portanto, que o pulseaudio é capaz de aumentar o volume além do máximo que parece possível, simplesmente usando os botões "aumentar volume" da máquina. Minhas perguntas é como eu posso ajustar o Pulseaudio para permitir um alcance maior ou um volume máximo maior aumentando ???

Especialmente com alguns materiais de áudio com volume muito baixo, seria bom poder aumentar rapidamente o volume de saída (powerup) para uma configuração mais alta do que o necessário para outros materiais - já bastante altos.

humanidade e paz
fonte

Respostas:

24

O nível máximo de volume possível que podemos obter deslizando o controle de volume para mais de 100% é de aprox. 153% acima do limite de pico normal. Desde que tenhamos definido o volume ALSA com alsamixer para 100, esses 100% são o nível acima do qual o áudio será cortado ou distorcido. Isso também acontecerá ao ampliar para 153% com o controle deslizante.

No entanto, é possível aumentar ainda mais esse nível, definindo o nível do coletor usando o comando follwing em um terminal:

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

Substitua <sink>pelo nome ou índice do coletor, conforme indicado em:

pacmd list-sinks

O limite inferior para <value>obviamente é 0: um volume linear de 100% é um valor de 65536, qualquer valor superior será amplificado ainda mais. Um valor de 512000 resultará em uma super amplificação de 781%.

Este é um método muito rudimentar para amplificar a saída de som de níveis variados, pois a amplificação excessiva levará não apenas ao corte e distorção feia, mas também poderá danificar os alto-falantes.

Portanto, seria uma maneira melhor de normalizar sua saída de áudio. Veja a seguinte pergunta sobre como fazer isso com o pulseaudio:

Takkat
fonte
Eu usei pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - já que ainda não consegui ter sucesso com o pacmd. De qualquer forma, a ideia já ajudou muito. Dessa forma, é possível aumentar o nível de saída para mais de 100% ou 153% que a GUI permite, obrigado.
humanityANDpeace
2
Sua ótima resposta permitiu definir o volume para valores maiores (como 781% de amplificação), o que é ótimo. Parte da minha pergunta também é como alterar a escala usada originalmente para que não seja de 0% a 100% (via GUI), mas de 0% a 781%. Alguma informação adicional sobre como conseguir isso, talvez? seria adicionalmente ótimo! obrigado
humanidadeANDpeace
Não faço ideia de como aumentar esse valor para o controle deslizante de volume. Pode ser codificado, portanto, não pode ser alterado além de corrigir a fonte e recompilar.
21312 Takkat
Não funciona: um programa ainda pode torná-lo 100%, mesmo que eu o defina para 12% dessa maneira.
precisa
Eu tive meus alto-falantes do laptop destruídos usando o volume de 150% também permite. Eu tive que substituí-los. Esteja ciente de que o possível aviso de dano é justificado.
brett
7

Eu tentei este comando:

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

e foi muito útil. Pode-se alterar os 150% para qualquer valor.

whahmad
fonte
Você deve mencionar que ele desabilita o controle de volume.
Verde
4

Demonstração em vídeo


eu uso

pactl set-sink-volume 0 100%

De onde 0é o número do coletor pacmd list-sinkse 100%o volume não aumentado padrão. Você pode inserir valores acima de 100% para obter um aumento de áudio ( 200%por exemplo).

Mina Michael
fonte
desativa o controle de volume.
Verde
porque? não, não faz. Eu apenas tentei e está tudo bem. O problema é que aumenta o volume acima do volume máximo que a barra de volume pode alcançar. Uma barra completa provavelmente seria de cerca de 150%, talvez, então 200% não pode ser feito com a barra. @Green
Mina Michael
2

Aqui está um pequeno script para fazer o cálculo e definir o volume para você (apenas passe o volume como argumento). Por exemplo: vol 105irá definir o volume para 105%.

  • Criar arquivo

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

    #!/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
fonte
1

Inseri a seguinte linha em um script de shell e a configurei para ser executada na inicialização, pois o laptop do meu pai (12,04 32 bits) não estava salvando a configuração de volume máximo.

pacmd set-sink-volume 0 99999

se houver apenas uma placa de som, é provavelmente o índice 0 e você não precisará digitar o nome completo. Vejo acima que o valor é baseado em 65536 sendo 100%. Quando usei o 99999, estava fotografando no escuro. 153% seria 100270 atingindo o mesmo resultado que o uso da GUI.

Antonios Hadjigeorgalis
fonte
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
fonte
1
Obrigado pela sua resposta. Se possível, você poderia editar sua resposta para elaborar um pouco mais sobre isso? É sempre útil que as pessoas saibam por que uma solução deve funcionar, em vez de apenas copiar cegamente e repassar códigos que eles não entendem. Isso também ajuda a adaptar soluções para diferentes problemas.
Henning Kockerbeck