Lautstärke unter Linux „hardcoden“

Es gab mal eine Zeit, in der hatten Soundkarten neben dem normalen Stereo-Ausgang (grün), einen extra Line-Out Ausgang (blau oder schwarz), an dem man Verstärker oder Aktivlautsprecher anschließen konnte. Irgendwann haben die Hersteller diesen Wegrationalisiert – vermutlich der digitalen Ausgänge wegen. Deshalb bleibt mindestens nur noch der grüne Stereo-Ausgang. Das Problem ist, wenn man hier Aktivlautsprecher anschließt, kann man die Lautstärke sowohl an den Lautsprechern, als auch in Linux regeln. Eigentlich blöd, denn wenn man so eine tolle Tastatur mit Lautstärkeregler hat, der sich leicht verstellt, dann fallen einem plötzlich entweder die Ohren ab oder man braucht zusätzlich ein Hörgerät.
Ich habe nun eine Methode entdeckt, mit der man die Softwarelautstärke „hardcoden“ kann. Das bedeutet, dass die Lautstärke alle 5 Sekunden überprüft wird. Verstellt man sie versehentlich, stellt sie sich wieder auf den Line-Out-Typischen Pegel zurück.
Scripterstellung
Als erstes erstellst Du ein Script. Dieses Script sorgt dann später zusammen mit einem systemd-Service dafür, dass die Lautstärke auch immer auf dem selben Pegel bleibt.
Erstelle in Deinem Home-Verzeichnis (z.B. /home/USERNAME/) eine Datei namens set_volume.sh. In diese kommt dann folgender Code:
#!/bin/bash
TARGET=40 # gewünschter Pegel in %.
while true; do
# aktuellen Pegel holen
CURRENT=$(amixer get Master | grep -oP '\[\d+%\]' | head -1 | tr -d '[]%')
# prüfen, ob der Pegel vom Ziel abweicht
if [ "$CURRENT" -ne "$TARGET" ]; then
amixer sset Master ${TARGET}%
fi
# CPU-schonend: 5 Sekunden warten
sleep 5
done
Code-Sprache: Bash (bash)
Ich habe hier 40 angegeben, da 40% ca. dem 1V RMS Line-Out-Pegel entsprechen. Das ist auch so der Pegel der empfohlen wird, wenn man Aktivlautsprecher an einem variablen Audioausgang anschließt. Das Script macht hier alle 5 Sekunden einen Check, ob die Lautstärke noch die ist, die sie sein soll und passt sie ggf. an.
Erstellen des systemd-Service
Als nächstes erstellst Du in Deinem Benutzerkonfigurationsordner ~/.config/systemd/user/ die Datei set_volume.service. Hier schreibst Du folgenden Code rein:
[Unit]
Description=Keep ALSA Master volume at 40%
[Service]
ExecStart=/home/USERNAME/set_volume.sh
Restart=always
RestartSec=2
Type=simple
[Install]
WantedBy=default.target
Code-Sprache: JavaScript (javascript)
Bedenke, dass Du hier USERNAME durch Deinen Benutzernamen tauschen musst. Nun im Terminal noch folgende Kommandos im Benutzerkonfigurationsordner eingeben:
systemctl --user daemon-reload
systemctl --user enable set_volume.service
systemctl --user start set_volume.serviceCode-Sprache: Bash (bash)
Nun sollte die Lautstärke bei Dir „hardcoded“ sein. Du kannst sie mal testweise verändern und schauen, ob’s geht.

Kommentare zu 'Lautstärke unter Linux „hardcoden“' (0)
Kommentar-Feed