Sndctl-plugin
Inhaltsverzeichnis |
Beschreibung
Autor: Thomas Hildebrandt
Dieses Plugin wurde inspiriert und neuentwickelt aus dem avolctl-plugin von Martin Prochnow (vielen Dank dafür). Es steuert die Lautstärke verschiedener Regler der Soundkarte in Abhängigkeit von der Lautstärkeregelung des VDR.
Diese Anforderung allein ist durch das avolctl-plugin bereits gut abgebildet. Darüberhinaus kann es jedoch verschiedene Wege geben, wie die Regler der Soundkarte von der VDR-Lautstärke abhängen. Diese Wege (oder Profile) nenne ich Soundsets.
Ein Soundset für 'normales' Stereo unterscheidet sich von einem Dolby Digital Soundset, sprich, andere Soundkarten-Regler bewegen sich, wenn sich die VDR-Lautstärke ändert.
Mit sndctl lassen sich beliebig viele Soundsets anlegen, zwischen denen aus dem VDR-Menü umgeschaltet werden kann.
Status
Version:
- 0.1.2
Kompiliert und getestet unter:
Entwicklungsumgebung
- Linux 2.6.8.1 (LFS 6.0)
- VDR 1.5.1
- ALSA-Lib 1.0.10
- g++ (GCC) 3.4.1
Bedienung
Im VDR-Hauptmenü gibt es einen Eintrag Sound control (kann anders lauten, wenn die Standard-Einstellung verändert wurde). Dieser liefert eine Liste der derzeit konfigurierten Soundsets. Das derzeit aktive Soundset ist gekennzeichnet. Mit 'Hoch' und 'Runter' wählt man das gewünschte Soundset, 'Ok' oder 'Rot' aktivieren das Soundset (und beenden das Menü).
Ein neues Soundset wird mit 'Blau' angelegt, ein bestehendes mit 'Grün' verändert und mit 'Gelb' entfernt.
SVDRP Befehle
Das Plugin stellt die folgenden SVDR Kommandos zur Verfügung.
SSET [ name ]
- setzt oder zeigt das aktive Soundset (mittels Name)
SSID [ id ]
- setzt oder zeigt das aktive Soundset (mittels ID)
LIST [ names | all ]
- zeigt ohne Parameter eine Liste der ID's aller Soundsets, mit 'names' eine Namensliste und mit 'all' eine Liste mit ID und Name
Beispiele
svdrpsend.pl plug sndctl list svdrpsend.pl plug sndctl list all svdrpsend.pl plug sndctl sset svdrpsend.pl plug sndctl sset Stereo
Hardwareanforderungen
- von ALSA unterstützte Soundkarte
Softwareanforderungen
Installation
Source
cd $SOURCEDIR tar xzf vdr-sndctl-<VERSION>.tgz ln -sf sndctl-<VERSION> sndctl make plugins make install-plugins
Konfiguration
Die Konfiguration teilt sich in zwei Bereiche. Allgemeine Einstellungen finden sich wie üblich im VDR Einstellungsmenü für Plugins. Die Konfiguration der Soundsets selbst erreicht man über den Hauptmenüeintrag.
Allgemeine Einstellungen
Eintrag im Hauptmenü verstecken
Wenn auf 'ja' gesetzt, wird das Plugin im VDR-Hauptmenü nicht angezeigt.
Menü Name
Unter diesem Namen taucht das Plugin im VDR-Hauptmenue auf. (Ich bevorzuge es z.B., den Eintrag 'Sound Manager' zu nennen.)
Lautstärke beim Start
-1: Die VDR-Lautstärke wird beim Start gesetzt 0..100: Statt der VDR-Lautstärke wird diese Lautstärke gesetzt. Das erste Betätigen der VDR-Lautstärke stellt diese dann ein Wozu ist das gut? Wenn der VDR sich allein einschaltet (z.B. wegen anstehender Aufnahme[n]) und sich (wie bei mir) die 5.1-Boxen gleich dazuschalten, soll natürlich der Ton ausgeschaltet bleiben. Dazu könnte man den VDR auf eine Startlautstärke von 0 stellen. Wenn man den VDR aber manuell einschaltet und fernsehen möchte, muss man jetzt die Lautstärke erst bis auf ein 'normales' Maß regeln. Lösung: Ist der Startwert des Plugins auf 0 gesetzt, ergibt sich der Effekt eines stumm startenden VDR, der aber bei der ersten Lautstärkenbetätigung sofort auf die VDR-Lautstärke geht.
Standard Soundset
Dieses Soundset wird beim Start des Plugins aktiviert. Sollte die Dolby Digital Automatik eingeschaltet sein, ist das auch das Soundset, auf das geschaltet wird, wenn ein Nicht-Dolby-Digital-Audio-Kanal gewählt wird.
DD Automatik
Wenn aktiv, versucht das Plugin zu erkennen, ob der Audio-Kanal auf Dolby Digital geschaltet wird und aktiviert ein entsprechendes Soundset.
DD Automatik Soundset
siehe vorher ... Dieses Soundset wird im Falle eines erkannten Dolby Digital Kanals benutzt.
Soundflash aktivieren
Aktiviert die 'Soundflash'-Funktion. Wenn unmittelbar hintereinander die Lautstärke hoch und wieder herunter geregelt wird, setzt das Plugin die Lautstärke kurz sehr laut und gleich wieder auf den Normalwert. Wozu ist das gut? Eine evt. an den Ausgängen der Soundkarte hängende Gerätschaft mag eine automatische Standbyfunktion haben; sie schaltet sich bei allzu leisen Lautstärken aus. Man muss dann die Lautstärke soweit erhöhen, dass sich alles wieder einschaltet und wieder heruntersetzen, falls man es so laut gar nicht wollte. Lösung: Soundflash -> Lautstärke kurz hoch und wieder runter und durch die ebenso kurze Lautstärkenerhöhung schaltet sich das Equipment wieder ein. Die kurzzeitige hohe Lautstärke ist nicht zu hören; bis die externe Technik soweit ist, ist die Lautstärke längst wieder normal.
Stumm beim Beenden
Schaltet beim Beenden des VDR auf stumm.
Soundset Einstellungen
Name
Der Name des Soundsets.
Alle weiteren Parameter sind die Namen der einzelnen Regler der Soundkarte. (Nicht alle, sondern nur 'sinnvolle'). Jeder Regler hat einen zugeordneten Wert, welcher festlegt, was mit ihm getan wird, wenn sich die VDR-Lautstärke ändert.
Der Aufbau dieses Wertes ist immer gleich und muss STRIKT eingehalten werden.
Operand (bestimmt, die Rechenoperation) | | Minimum (der Regler geht nicht unter diesen Wert) | | =80;1;90 | | | Maximum (der Regler geht nicht über diesen Wert) | Wert (VDR-Lautstärke wird per Operand mit diesem Wert verknüpft)
Bis auf den Operand können die anderen Werte u.U. wegfallen.
Ein paar Beispiele, die das Verfahren demonstrieren:
~
tut gar nichts, der Regler wird nicht 'angefasst' (Standardwert für alle Regler in einem neuen Soundset)
=0
setzt den Regler dauerhaft auf den angegebenen Wert (hier 0) (bei mir z.B. Bass =40 / Treble =60)
+10
addiert den Wert (hier 10) zur VDR-Lautstärke hinzu (z.B. folgt "+0" der VDR-Lautstärke direkt)
-5
subtrahiert den Wert (hier 5) von der VDR-Lautstärke
%10
der Reglerwert ist immer 10% von der VDR-Lautstärke
+10;1
plus 10, aber nie weniger als 1 Wozu dies? Der 'LFE' Regler meiner Soundkarte, der den Subwoofer bedient, ist mit nur 32 Stufen nicht so fein aufgelöst, was zur Folge hat, dass die Hardware bei kleinen Werten den Regler schon mal ganz auf 0 zieht, obwohl vielleicht 5% gemeint waren. Die Minimum-Einstellung verhindert das.
Hinweise
- sndctl rechnet mit Lautstärkewerten von 0 bis 100
- die folgenden Operationen (erstes Zeichen) sind möglich:
- ~ > gar nichts tun (so ein Regler wird aus den Parametern entfernt)
- = > Regler wird immer auf denselben Wert gesetzt (gut für 'Bass' und 'Treble' oder um einen Regler "still"zulegen)
- + > Regler bekommt die VDR Lautstärke, erhöht um diesen Wert
- - > Regler bekommt die VDR Lautstärke abzüglich dieses Wertes
- % > Regler bekommt x Prozent vom VDR Lautstärke-Wert
- falls dein VDR nicht mit root-Rechten läuft, benötigt der VDR user Rechte für den Zugriff auf den Mixer der Soundkarte; evt. muss der VDR user Mitglied der Gruppe 'audio' sein
Bugs
- beim Versuch, ein Soundset zu ändern, das gerade nicht aktiv ist, stürzt das Plugin ab (und nimmt den VDR gleich mit)