regola il volume massimo possibile in pulseaudio


26

A volte un po 'di suono / film / musica sul mio sistema Ubuntu_12.04 ha un volume molto basso da solo. Da quel momento in poi aumento il volume dell'uscita audio. Posso usare la seguente impostazione (vedi screenshot) inserisci qui la descrizione dell'immagine

Sembra quindi che pulseaudio sia in grado di aumentare il volume oltre il massimo che appare possibile semplicemente usando i pulsanti "aumenta volume" della macchina. Le mie domande sono: come posso regolare Pulseaudio per consentire un intervallo maggiore o un aumento massimo del volume massimo ???

Soprattutto con del materiale audio che ha un volume molto basso all'inizio sarebbe bello poter aumentare rapidamente il volume di uscita (accensione) a un'impostazione più alta di quella forse necessaria ad altri materiali già abbastanza rumorosi.

Risposte:


24

Il livello di volume massimo possibile che possiamo ottenere facendo scorrere il controllo del volume a più del 100% è di ca. 153% al di sopra del limite di picco normale. A condizione che avessimo impostato il volume ALSA con alsamixer su 100, questo 100% è il livello al di sopra del quale l'audio verrà tagliato o distorto. Questo accadrà anche quando si amplifica al 153% con il cursore.

Tuttavia è possibile aumentare ulteriormente questo livello impostando il livello del sink usando il comando follwing in un terminale:

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

Sostituisci <sink>con il nome o l'indice del sink come indicato da:

pacmd list-sinks

Il limite inferiore per <value>ovviamente è che 0un volume lineare del 100% è un valore di 65536, qualsiasi cosa più alta verrà ulteriormente amplificata. Un valore di 512000 porterà quindi a una sovraamplificazione del 781%.

Questo è un metodo molto rozzo per amplificare l'uscita del suono di livello variabile poiché l'amplificazione eccessiva non solo causerà il clipping e la brutta distorsione, ma potrebbe anche danneggiare gli altoparlanti.

Pertanto sarebbe un modo migliore per normalizzare l'uscita audio. Vedi la seguente domanda su come eseguire questa operazione con pulseaudio:


Ho usato pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - dal momento che non potevo ancora avere successo con Pacmd. Comunque l'idea ha già aiutato molto. In questo modo è possibile aumentare il livello di uscita oltre il 100% o il 153% consentito dalla GUI, grazie.
umanità e

2
La tua grande risposta ha permesso di impostare il volume su valori maggiori (come l'amplificazione del 781%), il che è fantastico. Parte della mia domanda è anche come modificare la scala utilizzata originariamente in modo che non sia dallo 0% al 100% (tramite GUI) ma dallo 0% al 781%. Qualche informazione aggiuntiva su come raggiungere questo obiettivo, forse? sarebbe inoltre fantastico! grazie
umanità e

Non ho idea di come aumentare questo valore per il dispositivo di scorrimento del volume. Può essere hardcoded, quindi non può essere modificato se non patching del sorgente e ricompilazione.
Takkat,

Non funziona: un programma può ancora farlo al 100% anche se lo imposto al 12% in quel modo.
Panzi,

Ho potuto distruggere i miei altoparlanti per laptop usando il volume al 150%. Ho dovuto sostituirli. Si informa che l'eventuale avviso di danno è giustificato.
Brett

7

Ho provato questo comando:

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

ed è stato molto utile. Si può cambiare il 150% su qualsiasi valore.


Dovresti dire che disabilita il controllo del volume.
Verde

4

Dimostrazione video


Io uso

pactl set-sink-volume 0 100%

Da dove 0proviene il numero di sink pacmd list-sinksed 100%è il volume non potenziato predefinito. È possibile inserire valori superiori al 100% per ottenere un aumento dell'audio ( 200%ad esempio).


disabilita il controllo del volume.
Verde

perché? no non lo fa. L'ho appena provato e va bene. Il fatto è che alza il volume al di sopra del volume massimo che può raggiungere la barra del volume. Una barra piena sarebbe probabilmente circa il 150% forse, quindi il 200% non può essere fatto con la barra. @Verde
Mina Michael,

2

Ecco un piccolo script per fare il calcolo e impostare il volume per te (basta passare il volume come argomento). Ad esempio: vol 105imposterà il volume al 105%.

  • Crea file

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

    #!/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 $@
    

1

Ho inserito la seguente riga in uno script della shell e l'ho impostato per essere eseguito all'avvio poiché il laptop di mio padre (12.04 32 bit) non stava salvando l'impostazione del volume massimo.

pacmd set-sink-volume 0 99999

se esiste una sola scheda audio, è probabilmente indice 0 e quindi non è necessario digitare il nome completo. Vedo sopra che il valore si basa su 65536 pari al 100%. Quando ho usato 99999 stavo girando al buio. Il 153% sarebbe in realtà 100270 ottenendo lo stesso risultato dell'utilizzo della GUI.


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

1
La ringrazio per la risposta. Se possibile, potresti modificare la tua risposta per elaborarne un po 'di più? È sempre utile per le persone sapere perché una soluzione dovrebbe funzionare, invece di copiare alla cieca il codice di degustazione che non capiscono. Ciò aiuta anche ad adattare le soluzioni a diversi problemi.
Henning Kockerbeck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.