Maximale Lautstärke in pulseaudio einstellen


26

Manchmal ist auf meinem Ubuntu_12.04-System die Lautstärke für sich genommen sehr niedrig. Von nun an erhöhe ich die Lautstärke der Tonausgabe. Ich kann die folgende Einstellung verwenden (siehe Screenshot) Bildbeschreibung hier eingeben

Es scheint daher, dass pulseaudio in der Lage ist, die Lautstärke über das scheinbare Maximum hinaus zu erhöhen, indem lediglich die "Lautstärke erhöhen" -Tasten des Geräts verwendet werden. Meine Fragen sind, wie ich Pulseaudio einstellen kann, um eine größere Reichweite oder eine höhere maximale Lautstärke zu ermöglichen?

Insbesondere bei Audiomaterial, das zu Beginn sehr leise ist, wäre es schön, die Ausgangslautstärke (Powerup) schnell auf einen höheren Wert als bei bereits recht lautem Material erhöhen zu können.

Antworten:


24

Der maximal mögliche Lautstärkepegel, den wir durch Schieben des Lautstärkereglers auf mehr als 100% erzielen können, liegt bei ca. 153% über der normalen Höchstgrenze. Vorausgesetzt, wir haben die ALSA-Lautstärke mit alsamixer auf 100 eingestellt, sind diese 100% der Pegel, über dem Audio abgeschnitten oder verzerrt wird. Dies geschieht auch, wenn Sie mit dem Schieberegler auf 153% verstärken.

Es ist jedoch möglich, diesen Pegel weiter zu erhöhen, indem der Sink-Pegel mit dem folgenden Befehl in einem Terminal eingestellt wird:

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

Ersetzen Sie <sink>durch Ihren Sinkennamen oder Senkenindex wie folgt:

pacmd list-sinks

Die Untergrenze für <value>offensichtlich ist 0, ein lineares Volumen von 100% ist ein Wert von 65536, alles, was höher ist, wird weiter verstärkt. Ein Wert von 512000 führt somit zu einer Überverstärkung von 781%.

Dies ist eine sehr grobe Methode zum Verstärken der Tonausgabe mit unterschiedlichem Pegel, da eine Überverstärkung nicht nur zu Übersteuerungen und hässlichen Verzerrungen führt, sondern auch Ihre Lautsprecher beschädigen kann.

Daher ist es eine bessere Möglichkeit, die Audioausgabe zu normalisieren. Siehe die folgende Frage, wie dies mit pulseaudio gemacht wird:


Ich habe verwendet pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - da ich mit pacmd noch nicht erfolgreich sein konnte. Jedenfalls hat die Idee schon sehr geholfen. Auf diese Weise ist es möglich, den Ausgangspegel auf mehr als die 100% oder 153% zu erhöhen, die die GUI zulässt. Vielen Dank.
humanityANDpeace

2
Ihre großartige Antwort erlaubte es, die Lautstärke auf höhere Werte (wie 781% Verstärkung) einzustellen, was großartig ist. Ein Teil meiner Frage ist auch, wie man die ursprünglich verwendete Skala so ändert, dass sie nicht von 0% auf 100% (über die GUI), sondern von 0% auf 781% geht. Gibt es vielleicht zusätzliche Informationen, wie dies erreicht werden kann? es wäre zusätzlich toll! danke
humanityANDpeace

Keine Ahnung, wie man diesen Wert für den Lautstärkeregler erhöht. Es ist möglicherweise hartcodiert und kann daher nur durch Patchen der Quelle und erneutes Kompilieren geändert werden.
Takkat

Funktioniert nicht: Ein Programm kann es immer noch zu 100% machen, auch wenn ich es so auf 12% gesetzt habe.
Panzi

Ich hatte meine Laptop-Lautsprecher zerstört, indem ich die Lautstärke auf die 150% erlaubte. Ich musste sie ersetzen. Beachten Sie, dass die mögliche Schadenswarnung gerechtfertigt ist.
Brett

7

Ich habe diesen Befehl ausprobiert:

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

und es war sehr hilfreich. Man kann die 150% auf jeden Wert ändern.


Sie sollten erwähnen, dass die Lautstärkeregelung deaktiviert ist.
Grün

4

Video-Demonstration


ich benutze

pactl set-sink-volume 0 100%

Woher 0stammt die Sink-Nummer pacmd list-sinksund 100%ist das Standardvolumen ohne Aufladung. Sie können Werte über 100% eingeben, um beispielsweise eine Audioverstärkung zu erhalten 200%.


Es deaktiviert die Lautstärkeregelung.
Grün

Warum? Nein, tut es nicht. Ich habe es gerade ausprobiert und es ist in Ordnung. Die Sache ist, dass es die Lautstärke über die maximale Lautstärke erhöht, die der Lautstärkebalken erreichen kann. Ein voller Balken würde wahrscheinlich ungefähr 150% betragen, so dass 200% mit dem Balken nicht möglich sind. @ Green
Mina Michael

2

Hier ist ein kleines Skript, mit dem Sie die Berechnung durchführen und die Lautstärke einstellen können (übergeben Sie die Lautstärke einfach als Argument). Beispiel: vol 105Stellt die Lautstärke auf 105% ein.

  • Erstelle Datei

    $> file=/usr/bin/vol;sudo touch $file && \
    sudo chmod u+x $file && sudo chown $USER:$USER $file && \
    gedit $file
    
  • Kopieren und Einfügen:

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

Ich habe die folgende Zeile in ein Shell-Skript eingefügt und festgelegt, dass es beim Start ausgeführt wird, da der Laptop meines Vaters (12.04 32 Bit) die maximale Lautstärkeeinstellung nicht speichert.

pacmd set-sink-volume 0 99999

Wenn es nur eine Soundkarte gibt, ist sie wahrscheinlich Index 0, und Sie müssen nicht den vollständigen Namen eingeben. Ich sehe oben, dass der Wert auf 65536 basiert, das 100% ist. Als ich 99999 benutzte, schoss ich im Dunkeln. 153% wären tatsächlich 100270 und würden dasselbe Ergebnis erzielen wie mit der 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
Vielen Dank für Ihre Antwort. Könnten Sie, wenn möglich, Ihre Antwort bearbeiten, um etwas mehr darüber zu sagen? Es ist immer hilfreich , wenn die Leute wissen, warum eine Lösung funktionieren soll, anstatt Code, den sie nicht verstehen, nur blind zu kopieren und zu kopieren. Das hilft auch, Lösungen an unterschiedliche Probleme anzupassen.
Henning Kockerbeck
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.